Repository: maven Updated Branches: refs/heads/MNG-6305-validation-of-ci-friendly ec65d84d6 -> 14bd534ea
[MNG-6305] Validation of CI friendly version incorrect More efficient usage of regular expressions Project: http://git-wip-us.apache.org/repos/asf/maven/repo Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/14bd534e Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/14bd534e Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/14bd534e Branch: refs/heads/MNG-6305-validation-of-ci-friendly Commit: 14bd534ea51893b1ceb19d9a956c69c8aa559127 Parents: ec65d84 Author: rfscholte <rfscho...@apache.org> Authored: Sat Dec 30 19:11:35 2017 +0100 Committer: rfscholte <rfscho...@apache.org> Committed: Sat Dec 30 19:11:35 2017 +0100 ---------------------------------------------------------------------- .../model/validation/DefaultModelValidator.java | 73 +++++++++++++------- 1 file changed, 47 insertions(+), 26 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven/blob/14bd534e/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java ---------------------------------------------------------------------- diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java b/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java index 30c0043..d355454 100644 --- a/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java +++ b/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java @@ -26,6 +26,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.maven.model.Activation; @@ -877,36 +878,56 @@ public class DefaultModelValidator // revision // sha1 // - string = string.trim(); - if ( string.contains( AbstractStringBasedModelInterpolator.CHANGELIST_PROPERTY_EXPRESSION ) - || string.contains( AbstractStringBasedModelInterpolator.REVISION_PROPERTY_EXPRESSION ) - || string.contains( AbstractStringBasedModelInterpolator.SHA1_PROPERTY_EXPRESSION ) ) + + Pattern p = Pattern.compile( "\\$\\{(.+)\\}" ); + + List<String> ciVersions = Arrays.asList( AbstractStringBasedModelInterpolator.REVISION_PROPERTY, + AbstractStringBasedModelInterpolator.CHANGELIST_PROPERTY, + AbstractStringBasedModelInterpolator.SHA1_PROPERTY ); + Matcher m = p.matcher( string.trim() ); + while ( m.find() ) { - //@formatter:off - string = - PATTERN_REVISION_PROPERTY - .matcher( string ) - .replaceAll( AbstractStringBasedModelInterpolator.REVISION_PROPERTY ); - string = - PATTERN_CHANGELIST_PROPERTY - .matcher( string ) - .replaceAll( AbstractStringBasedModelInterpolator.CHANGELIST_PROPERTY ); - string = - PATTERN_SHA1_PROPERTY - .matcher( string ) - .replaceAll( AbstractStringBasedModelInterpolator.SHA1_PROPERTY ); - //@formatter:on - - if ( !hasExpression( string ) ) + if ( !ciVersions.contains( m.group( 1 ) ) ) { - return true; + addViolation( problems, severity, version, fieldName, null, "contains an expression but should be a constant.", + tracker ); + + return false; } } - - addViolation( problems, severity, version, fieldName, null, "contains an expression but should be a constant.", - tracker ); - - return false; + + return true; + +// string = string.trim(); +// if ( string.contains( AbstractStringBasedModelInterpolator.CHANGELIST_PROPERTY_EXPRESSION ) +// || string.contains( AbstractStringBasedModelInterpolator.REVISION_PROPERTY_EXPRESSION ) +// || string.contains( AbstractStringBasedModelInterpolator.SHA1_PROPERTY_EXPRESSION ) ) +// { +// //@formatter:off +// string = +// PATTERN_REVISION_PROPERTY +// .matcher( string ) +// .replaceAll( AbstractStringBasedModelInterpolator.REVISION_PROPERTY ); +// string = +// PATTERN_CHANGELIST_PROPERTY +// .matcher( string ) +// .replaceAll( AbstractStringBasedModelInterpolator.CHANGELIST_PROPERTY ); +// string = +// PATTERN_SHA1_PROPERTY +// .matcher( string ) +// .replaceAll( AbstractStringBasedModelInterpolator.SHA1_PROPERTY ); +// //@formatter:on +// +// if ( !hasExpression( string ) ) +// { +// return true; +// } +// } +// +// addViolation( problems, severity, version, fieldName, null, "contains an expression but should be a constant.", +// tracker ); +// +// return false; } private boolean hasExpression( String value )