You are viewing a plain text version of this content. The canonical link for it is here.
Posted to m2-dev@maven.apache.org by br...@apache.org on 2005/02/23 04:56:25 UTC
cvs commit: maven-components/maven-core/src/test/java/org/apache/maven/project/interpolation RegexBasedProjectInterpolatorTest.java
brett 2005/02/22 19:56:25
Modified: maven-core/src/main/java/org/apache/maven/project/interpolation
RegexBasedModelInterpolator.java
maven-core/src/main/resources/org/apache/maven/project
pom-4.0.0.xml
maven-core/src/test/java/org/apache/maven/project/interpolation
RegexBasedProjectInterpolatorTest.java
Log:
use ${..} style interpolation
Revision Changes Path
1.2 +16 -13 maven-components/maven-core/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java
Index: RegexBasedModelInterpolator.java
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- RegexBasedModelInterpolator.java 23 Feb 2005 03:26:59 -0000 1.1
+++ RegexBasedModelInterpolator.java 23 Feb 2005 03:56:24 -0000 1.2
@@ -23,6 +23,7 @@
import org.apache.maven.util.introspection.ReflectionValueExtractor;
import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.logging.Logger;
+import org.codehaus.plexus.util.StringUtils;
import java.io.StringReader;
import java.io.StringWriter;
@@ -37,12 +38,13 @@
implements ModelInterpolator
{
- private static final Pattern EXPRESSION_PATTERN = Pattern.compile( "#([A-Za-z.]+)" );
+ private static final Pattern EXPRESSION_PATTERN = Pattern.compile( "\\$\\{([^}]+)\\}" );
/**
* Added: Feb 3, 2005 by jdcasey
*/
- public Model interpolate( Model model ) throws ModelInterpolationException
+ public Model interpolate( Model model )
+ throws ModelInterpolationException
{
StringWriter sWriter = new StringWriter();
@@ -51,10 +53,9 @@
{
writer.write( sWriter, model );
}
- catch( Exception e )
+ catch ( Exception e )
{
- throw new ModelInterpolationException(
- "Cannot serialize project model for interpolation.", e );
+ throw new ModelInterpolationException( "Cannot serialize project model for interpolation.", e );
}
String serializedModel = sWriter.toString();
@@ -67,7 +68,7 @@
{
model = modelReader.read( sReader );
}
- catch( Exception e )
+ catch ( Exception e )
{
throw new ModelInterpolationException(
"Cannot read project model from interpolating filter of serialized version.", e );
@@ -83,7 +84,7 @@
{
String result = src;
Matcher matcher = EXPRESSION_PATTERN.matcher( result );
- while( matcher.find() )
+ while ( matcher.find() )
{
String wholeExpr = matcher.group( 0 );
String realExpr = matcher.group( 1 );
@@ -93,19 +94,21 @@
{
value = String.valueOf( ReflectionValueExtractor.evaluate( realExpr, model ) );
}
- catch( Exception e )
+ catch ( Exception e )
{
Logger logger = getLogger();
- if( logger != null )
+ if ( logger != null )
{
- logger.debug( "POM interpolation cannot proceed with expression: " + wholeExpr
- + ". Skipping...", e );
+ logger.debug( "POM interpolation cannot proceed with expression: " + wholeExpr + ". Skipping...", e );
}
}
- if( value != null )
+ if ( value != null )
{
- result = result.replaceAll( wholeExpr, value );
+ result = StringUtils.replace( result, wholeExpr, value );
+ // could use:
+ // result = matcher.replaceFirst( value );
+ // but this could result in multiple lookups of value, and replaceAll is not correct behaviour
matcher.reset( result );
}
}
1.5 +1 -1 maven-components/maven-core/src/main/resources/org/apache/maven/project/pom-4.0.0.xml
Index: pom-4.0.0.xml
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/main/resources/org/apache/maven/project/pom-4.0.0.xml,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- pom-4.0.0.xml 23 Feb 2005 03:27:00 -0000 1.4
+++ pom-4.0.0.xml 23 Feb 2005 03:56:25 -0000 1.5
@@ -32,7 +32,7 @@
<!-- This all may just fold into plugin parameters -->
<directory>target</directory>
<output>target/classes</output>
- <finalName>#artifactId-#version</finalName>
+ <finalName>${artifactId}-${version}</finalName>
<testOutput>target/test-classes</testOutput>
<sourceDirectory>src/main/java</sourceDirectory>
<unitTestSourceDirectory>src/test/java</unitTestSourceDirectory>
1.3 +20 -3 maven-components/maven-core/src/test/java/org/apache/maven/project/interpolation/RegexBasedProjectInterpolatorTest.java
Index: RegexBasedProjectInterpolatorTest.java
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/test/java/org/apache/maven/project/interpolation/RegexBasedProjectInterpolatorTest.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- RegexBasedProjectInterpolatorTest.java 23 Feb 2005 03:27:00 -0000 1.2
+++ RegexBasedProjectInterpolatorTest.java 23 Feb 2005 03:56:25 -0000 1.3
@@ -37,7 +37,7 @@
model.setVersion( "3.8.1" );
Dependency dep = new Dependency();
- dep.setVersion( "#version" );
+ dep.setVersion( "${version}" );
model.addDependency( dep );
@@ -53,13 +53,30 @@
model.setVersion( "3.8.1" );
Dependency dep = new Dependency();
- dep.setVersion( "#something" );
+ dep.setVersion( "${something}" );
model.addDependency( dep );
Model out = new RegexBasedModelInterpolator().interpolate( model );
- assertEquals( "#something", ((Dependency) out.getDependencies().get( 0 )).getVersion() );
+ assertEquals( "${something}", ((Dependency) out.getDependencies().get( 0 )).getVersion() );
+ }
+
+ public void testTwoReferences()
+ throws ModelInterpolationException
+ {
+ Model model = new Model();
+ model.setVersion( "3.8.1" );
+ model.setArtifactId( "foo" );
+
+ Dependency dep = new Dependency();
+ dep.setVersion( "${artifactId}-${version}" );
+
+ model.addDependency( dep );
+
+ Model out = new RegexBasedModelInterpolator().interpolate( model );
+
+ assertEquals( "foo-3.8.1", ((Dependency) out.getDependencies().get( 0 )).getVersion() );
}
}
\ No newline at end of file