You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2008/08/20 04:05:51 UTC
svn commit: r687224 - in /maven/components/branches/maven-2.0.10-RC: ./
maven-project/src/main/java/org/apache/maven/project/interpolation/
maven-project/src/main/resources/META-INF/plexus/
maven-project/src/test/java/org/apache/maven/project/interpola...
Author: jdcasey
Date: Tue Aug 19 19:05:51 2008
New Revision: 687224
URL: http://svn.apache.org/viewvc?rev=687224&view=rev
Log:
Introducing String.indexOf-based interpolator to improve performance, since the regular expressions used in the regex-based interpolator weren't really useful enough to justify the CPU hit.
Added:
maven/components/branches/maven-2.0.10-RC/maven-project/src/main/java/org/apache/maven/project/interpolation/AbstractStringBasedModelInterpolator.java
maven/components/branches/maven-2.0.10-RC/maven-project/src/main/java/org/apache/maven/project/interpolation/StringSearchModelInterpolator.java
maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java (contents, props changed)
- copied, changed from r687095, maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java
maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/StringSearchModelInterpolatorTest.java
Modified:
maven/components/branches/maven-2.0.10-RC/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java
maven/components/branches/maven-2.0.10-RC/maven-project/src/main/resources/META-INF/plexus/components.xml
maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java
maven/components/branches/maven-2.0.10-RC/pom.xml
Added: maven/components/branches/maven-2.0.10-RC/maven-project/src/main/java/org/apache/maven/project/interpolation/AbstractStringBasedModelInterpolator.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.10-RC/maven-project/src/main/java/org/apache/maven/project/interpolation/AbstractStringBasedModelInterpolator.java?rev=687224&view=auto
==============================================================================
--- maven/components/branches/maven-2.0.10-RC/maven-project/src/main/java/org/apache/maven/project/interpolation/AbstractStringBasedModelInterpolator.java (added)
+++ maven/components/branches/maven-2.0.10-RC/maven-project/src/main/java/org/apache/maven/project/interpolation/AbstractStringBasedModelInterpolator.java Tue Aug 19 19:05:51 2008
@@ -0,0 +1,331 @@
+package org.apache.maven.project.interpolation;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.File;
+import java.io.IOException;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.maven.model.Model;
+import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
+import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
+import org.apache.maven.project.DefaultProjectBuilderConfiguration;
+import org.apache.maven.project.ProjectBuilderConfiguration;
+import org.apache.maven.project.path.PathTranslator;
+import org.codehaus.plexus.interpolation.InterpolationException;
+import org.codehaus.plexus.interpolation.Interpolator;
+import org.codehaus.plexus.interpolation.MapBasedValueSource;
+import org.codehaus.plexus.interpolation.ObjectBasedValueSource;
+import org.codehaus.plexus.interpolation.PrefixAwareRecursionInterceptor;
+import org.codehaus.plexus.interpolation.PrefixedObjectValueSource;
+import org.codehaus.plexus.interpolation.PrefixedValueSourceWrapper;
+import org.codehaus.plexus.interpolation.RecursionInterceptor;
+import org.codehaus.plexus.interpolation.ValueSource;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.logging.Logger;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+
+/**
+ * Use a regular expression search to find and resolve expressions within the POM.
+ *
+ * @author jdcasey Created on Feb 3, 2005
+ * @version $Id: RegexBasedModelInterpolator.java 683740 2008-08-07 22:33:15Z jdcasey $
+ * @todo Consolidate this logic with the PluginParameterExpressionEvaluator, minus deprecations/bans.
+ */
+public abstract class AbstractStringBasedModelInterpolator
+ extends AbstractLogEnabled
+ implements ModelInterpolator, Initializable
+{
+ private static final List PROJECT_PREFIXES = Arrays.asList( new String[]{ "pom.", "project." } );
+
+ private static final List TRANSLATED_PATH_EXPRESSIONS;
+
+ static
+ {
+ List translatedPrefixes = new ArrayList();
+
+ // MNG-1927, MNG-2124, MNG-3355:
+ // If the build section is present and the project directory is non-null, we should make
+ // sure interpolation of the directories below uses translated paths.
+ // Afterward, we'll double back and translate any paths that weren't covered during interpolation via the
+ // code below...
+ translatedPrefixes.add( "build.directory" );
+ translatedPrefixes.add( "build.outputDirectory" );
+ translatedPrefixes.add( "build.testOutputDirectory" );
+ translatedPrefixes.add( "build.sourceDirectory" );
+ translatedPrefixes.add( "build.testSourceDirectory" );
+ translatedPrefixes.add( "build.scriptSourceDirectory" );
+ translatedPrefixes.add( "reporting.outputDirectory" );
+
+ TRANSLATED_PATH_EXPRESSIONS = translatedPrefixes;
+ }
+
+ private PathTranslator pathTranslator;
+
+ private Interpolator interpolator;
+
+ private RecursionInterceptor recursionInterceptor;
+
+ // for testing.
+ protected AbstractStringBasedModelInterpolator( PathTranslator pathTranslator )
+ {
+ this.pathTranslator = pathTranslator;
+ }
+
+ /**
+ * @todo: Remove the throws clause.
+ * @throws IOException This exception is not thrown any more, and needs to be removed.
+ */
+ protected AbstractStringBasedModelInterpolator()
+ {
+ }
+
+ public Model interpolate( Model model, Map context )
+ throws ModelInterpolationException
+ {
+ return interpolate( model, context, true );
+ }
+
+ /**
+ * Serialize the inbound Model instance to a StringWriter, perform the regex replacement to resolve
+ * POM expressions, then re-parse into the resolved Model instance.
+ * <br/>
+ * <b>NOTE:</b> This will result in a different instance of Model being returned!!!
+ *
+ * @param model The inbound Model instance, to serialize and reference for expression resolution
+ * @param context The other context map to be used during resolution
+ * @return The resolved instance of the inbound Model. This is a different instance!
+ *
+ * @deprecated Use {@link ModelInterpolator#interpolate(Model, File, ProjectBuilderConfiguration, boolean)} instead.
+ */
+ public Model interpolate( Model model, Map context, boolean strict )
+ throws ModelInterpolationException
+ {
+ Properties props = new Properties();
+ props.putAll( context );
+
+ return interpolate( model,
+ null,
+ new DefaultProjectBuilderConfiguration().setExecutionProperties( props ),
+ true );
+ }
+
+ public Model interpolate( Model model,
+ File projectDir,
+ ProjectBuilderConfiguration config,
+ boolean debugEnabled )
+ throws ModelInterpolationException
+ {
+ StringWriter sWriter = new StringWriter( 1024 );
+
+ MavenXpp3Writer writer = new MavenXpp3Writer();
+ try
+ {
+ writer.write( sWriter, model );
+ }
+ catch ( IOException e )
+ {
+ throw new ModelInterpolationException( "Cannot serialize project model for interpolation.", e );
+ }
+
+ String serializedModel = sWriter.toString();
+ serializedModel = interpolate( serializedModel, model, projectDir, config, debugEnabled );
+
+ StringReader sReader = new StringReader( serializedModel );
+
+ MavenXpp3Reader modelReader = new MavenXpp3Reader();
+ try
+ {
+ model = modelReader.read( sReader );
+ }
+ catch ( IOException e )
+ {
+ throw new ModelInterpolationException(
+ "Cannot read project model from interpolating filter of serialized version.", e );
+ }
+ catch ( XmlPullParserException e )
+ {
+ throw new ModelInterpolationException(
+ "Cannot read project model from interpolating filter of serialized version.", e );
+ }
+
+ return model;
+ }
+
+ /**
+ * Interpolates all expressions in the src parameter.
+ * <p>
+ * The algorithm used for each expression is:
+ * <ul>
+ * <li>If it starts with either "pom." or "project.", the expression is evaluated against the model.</li>
+ * <li>If the value is null, get the value from the context.</li>
+ * <li>If the value is null, but the context contains the expression, don't replace the expression string
+ * with the value, and continue to find other expressions.</li>
+ * <li>If the value is null, get it from the model properties.</li>
+ * <li>
+ * @param overrideContext
+ * @param outputDebugMessages
+ */
+ public String interpolate( String src,
+ Model model,
+ final File projectDir,
+ ProjectBuilderConfiguration config,
+ boolean debug )
+ throws ModelInterpolationException
+ {
+ Logger logger = getLogger();
+
+ String timestampFormat = DEFAULT_BUILD_TIMESTAMP_FORMAT;
+
+ Properties modelProperties = model.getProperties();
+ if ( modelProperties != null )
+ {
+ timestampFormat = modelProperties.getProperty( BUILD_TIMESTAMP_FORMAT_PROPERTY, timestampFormat );
+ }
+
+ ValueSource modelValueSource1 = new PrefixedObjectValueSource( PROJECT_PREFIXES, model, false );
+ ValueSource modelValueSource2 = new ObjectBasedValueSource( model );
+
+ ValueSource basedirValueSource = new PrefixedValueSourceWrapper( new ValueSource(){
+ public Object getValue( String expression )
+ {
+ if ( projectDir != null && "basedir".equals( expression ) )
+ {
+ return projectDir.getAbsolutePath();
+ }
+
+ return null;
+ }
+ },
+ PROJECT_PREFIXES, true );
+
+ PathTranslatingPostProcessor pathTranslatingPostProcessor =
+ new PathTranslatingPostProcessor( TRANSLATED_PATH_EXPRESSIONS, projectDir, pathTranslator );
+
+ String result = src;
+ synchronized( this )
+ {
+ List valueSources = new ArrayList( 7 );
+
+ // NOTE: Order counts here!
+ valueSources.add( basedirValueSource );
+ valueSources.add( new BuildTimestampValueSource( config.getBuildStartTime(), timestampFormat ) );
+ valueSources.add( new MapBasedValueSource( config.getExecutionProperties() ) );
+ valueSources.add( modelValueSource1 );
+ valueSources.add( new PrefixedValueSourceWrapper( new MapBasedValueSource( modelProperties ), PROJECT_PREFIXES, true ) );
+ valueSources.add( modelValueSource2 );
+ valueSources.add( new MapBasedValueSource( config.getUserProperties() ) );
+
+ for ( Iterator it = valueSources.iterator(); it.hasNext(); )
+ {
+ ValueSource vs = (ValueSource) it.next();
+ interpolator.addValueSource( vs );
+ }
+
+ interpolator.addPostProcessor( pathTranslatingPostProcessor );
+
+ try
+ {
+ try
+ {
+ result = interpolator.interpolate( result, recursionInterceptor );
+ }
+ catch( InterpolationException e )
+ {
+ throw new ModelInterpolationException( e.getMessage(), e );
+ }
+
+ if ( debug )
+ {
+ List feedback = interpolator.getFeedback();
+ if ( feedback != null && !feedback.isEmpty() )
+ {
+ logger.debug( "Maven encountered the following problems during initial POM interpolation:" );
+
+ Object last = null;
+ for ( Iterator it = feedback.iterator(); it.hasNext(); )
+ {
+ Object next = it.next();
+
+ if ( next instanceof Throwable )
+ {
+ if ( last == null )
+ {
+ logger.debug( "", ( (Throwable) next ) );
+ }
+ else
+ {
+ logger.debug( String.valueOf( last ), ( (Throwable) next ) );
+ }
+ }
+ else
+ {
+ if ( last != null )
+ {
+ logger.debug( String.valueOf( last ) );
+ }
+
+ last = next;
+ }
+ }
+
+ if ( last != null )
+ {
+ logger.debug( String.valueOf( last ) );
+ }
+ }
+ }
+
+ interpolator.clearFeedback();
+ }
+ finally
+ {
+ for ( Iterator iterator = valueSources.iterator(); iterator.hasNext(); )
+ {
+ ValueSource vs = (ValueSource) iterator.next();
+ interpolator.removeValuesSource( vs );
+ }
+
+ interpolator.removePostProcessor( pathTranslatingPostProcessor );
+ }
+ }
+
+ return result;
+ }
+
+ protected abstract Interpolator createInterpolator();
+
+ public void initialize()
+ throws InitializationException
+ {
+ interpolator = createInterpolator();
+ recursionInterceptor = new PrefixAwareRecursionInterceptor( PROJECT_PREFIXES );
+ }
+
+}
Modified: maven/components/branches/maven-2.0.10-RC/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.10-RC/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java?rev=687224&r1=687223&r2=687224&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.10-RC/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java (original)
+++ maven/components/branches/maven-2.0.10-RC/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java Tue Aug 19 19:05:51 2008
@@ -19,38 +19,13 @@
* under the License.
*/
-import org.apache.maven.model.Model;
-import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
-import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
-import org.apache.maven.project.DefaultProjectBuilderConfiguration;
-import org.apache.maven.project.ProjectBuilderConfiguration;
-import org.apache.maven.project.path.PathTranslator;
-import org.codehaus.plexus.interpolation.InterpolationException;
-import org.codehaus.plexus.interpolation.MapBasedValueSource;
-import org.codehaus.plexus.interpolation.ObjectBasedValueSource;
-import org.codehaus.plexus.interpolation.PrefixAwareRecursionInterceptor;
-import org.codehaus.plexus.interpolation.PrefixedObjectValueSource;
-import org.codehaus.plexus.interpolation.PrefixedValueSourceWrapper;
-import org.codehaus.plexus.interpolation.RecursionInterceptor;
-import org.codehaus.plexus.interpolation.RegexBasedInterpolator;
-import org.codehaus.plexus.interpolation.ValueSource;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
-import org.codehaus.plexus.logging.Logger;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
-import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
-
-import java.io.File;
import java.io.IOException;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
import java.util.Properties;
+import org.apache.maven.project.path.PathTranslator;
+import org.codehaus.plexus.interpolation.Interpolator;
+import org.codehaus.plexus.interpolation.RegexBasedInterpolator;
+
/**
* Use a regular expression search to find and resolve expressions within the POM.
*
@@ -59,276 +34,25 @@
* @todo Consolidate this logic with the PluginParameterExpressionEvaluator, minus deprecations/bans.
*/
public class RegexBasedModelInterpolator
- extends AbstractLogEnabled
- implements ModelInterpolator, Initializable
+ extends AbstractStringBasedModelInterpolator
{
- private static final List PROJECT_PREFIXES = Arrays.asList( new String[]{ "pom.", "project." } );
-
- private static final List TRANSLATED_PATH_EXPRESSIONS;
-
- static
- {
- List translatedPrefixes = new ArrayList();
-
- // MNG-1927, MNG-2124, MNG-3355:
- // If the build section is present and the project directory is non-null, we should make
- // sure interpolation of the directories below uses translated paths.
- // Afterward, we'll double back and translate any paths that weren't covered during interpolation via the
- // code below...
- translatedPrefixes.add( "build.directory" );
- translatedPrefixes.add( "build.outputDirectory" );
- translatedPrefixes.add( "build.testOutputDirectory" );
- translatedPrefixes.add( "build.sourceDirectory" );
- translatedPrefixes.add( "build.testSourceDirectory" );
- translatedPrefixes.add( "build.scriptSourceDirectory" );
- translatedPrefixes.add( "reporting.outputDirectory" );
-
- TRANSLATED_PATH_EXPRESSIONS = translatedPrefixes;
- }
-
- private PathTranslator pathTranslator;
-
- private RegexBasedInterpolator interpolator;
-
- private RecursionInterceptor recursionInterceptor;
- public RegexBasedModelInterpolator( Properties envars )
- {
- }
-
- // for testing.
- protected RegexBasedModelInterpolator( PathTranslator pathTranslator )
- {
- this.pathTranslator = pathTranslator;
- }
-
- /**
- * @todo: Remove the throws clause.
- * @throws IOException This exception is not thrown any more, and needs to be removed.
- */
public RegexBasedModelInterpolator()
throws IOException
{
}
-
- public Model interpolate( Model model, Map context )
- throws ModelInterpolationException
- {
- return interpolate( model, context, true );
- }
-
- /**
- * Serialize the inbound Model instance to a StringWriter, perform the regex replacement to resolve
- * POM expressions, then re-parse into the resolved Model instance.
- * <br/>
- * <b>NOTE:</b> This will result in a different instance of Model being returned!!!
- *
- * @param model The inbound Model instance, to serialize and reference for expression resolution
- * @param context The other context map to be used during resolution
- * @return The resolved instance of the inbound Model. This is a different instance!
- *
- * @deprecated Use {@link ModelInterpolator#interpolate(Model, File, ProjectBuilderConfiguration, boolean)} instead.
- */
- public Model interpolate( Model model, Map context, boolean strict )
- throws ModelInterpolationException
- {
- Properties props = new Properties();
- props.putAll( context );
-
- return interpolate( model,
- null,
- new DefaultProjectBuilderConfiguration().setExecutionProperties( props ),
- true );
- }
-
- public Model interpolate( Model model,
- File projectDir,
- ProjectBuilderConfiguration config,
- boolean debugEnabled )
- throws ModelInterpolationException
+
+ public RegexBasedModelInterpolator( PathTranslator pathTranslator )
{
- StringWriter sWriter = new StringWriter( 1024 );
-
- MavenXpp3Writer writer = new MavenXpp3Writer();
- try
- {
- writer.write( sWriter, model );
- }
- catch ( IOException e )
- {
- throw new ModelInterpolationException( "Cannot serialize project model for interpolation.", e );
- }
-
- String serializedModel = sWriter.toString();
- serializedModel = interpolate( serializedModel, model, projectDir, config, debugEnabled );
-
- StringReader sReader = new StringReader( serializedModel );
-
- MavenXpp3Reader modelReader = new MavenXpp3Reader();
- try
- {
- model = modelReader.read( sReader );
- }
- catch ( IOException e )
- {
- throw new ModelInterpolationException(
- "Cannot read project model from interpolating filter of serialized version.", e );
- }
- catch ( XmlPullParserException e )
- {
- throw new ModelInterpolationException(
- "Cannot read project model from interpolating filter of serialized version.", e );
- }
-
- return model;
+ super( pathTranslator );
}
- /**
- * Interpolates all expressions in the src parameter.
- * <p>
- * The algorithm used for each expression is:
- * <ul>
- * <li>If it starts with either "pom." or "project.", the expression is evaluated against the model.</li>
- * <li>If the value is null, get the value from the context.</li>
- * <li>If the value is null, but the context contains the expression, don't replace the expression string
- * with the value, and continue to find other expressions.</li>
- * <li>If the value is null, get it from the model properties.</li>
- * <li>
- * @param overrideContext
- * @param outputDebugMessages
- */
- public String interpolate( String src,
- Model model,
- final File projectDir,
- ProjectBuilderConfiguration config,
- boolean debug )
- throws ModelInterpolationException
+ public RegexBasedModelInterpolator( Properties envars )
{
- Logger logger = getLogger();
-
- String timestampFormat = DEFAULT_BUILD_TIMESTAMP_FORMAT;
-
- Properties modelProperties = model.getProperties();
- if ( modelProperties != null )
- {
- timestampFormat = modelProperties.getProperty( BUILD_TIMESTAMP_FORMAT_PROPERTY, timestampFormat );
- }
-
- ValueSource modelValueSource1 = new PrefixedObjectValueSource( PROJECT_PREFIXES, model, false );
- ValueSource modelValueSource2 = new ObjectBasedValueSource( model );
-
- ValueSource basedirValueSource = new PrefixedValueSourceWrapper( new ValueSource(){
- public Object getValue( String expression )
- {
- if ( projectDir != null && "basedir".equals( expression ) )
- {
- return projectDir.getAbsolutePath();
- }
-
- return null;
- }
- },
- PROJECT_PREFIXES, true );
-
- PathTranslatingPostProcessor pathTranslatingPostProcessor =
- new PathTranslatingPostProcessor( TRANSLATED_PATH_EXPRESSIONS, projectDir, pathTranslator );
-
- String result = src;
- synchronized( this )
- {
- List valueSources = new ArrayList( 7 );
-
- // NOTE: Order counts here!
- valueSources.add( basedirValueSource );
- valueSources.add( new BuildTimestampValueSource( config.getBuildStartTime(), timestampFormat ) );
- valueSources.add( new MapBasedValueSource( config.getExecutionProperties() ) );
- valueSources.add( modelValueSource1 );
- valueSources.add( new PrefixedValueSourceWrapper( new MapBasedValueSource( modelProperties ), PROJECT_PREFIXES, true ) );
- valueSources.add( modelValueSource2 );
- valueSources.add( new MapBasedValueSource( config.getUserProperties() ) );
-
- for ( Iterator it = valueSources.iterator(); it.hasNext(); )
- {
- ValueSource vs = (ValueSource) it.next();
- interpolator.addValueSource( vs );
- }
-
- interpolator.addPostProcessor( pathTranslatingPostProcessor );
-
- try
- {
- try
- {
- result = interpolator.interpolate( result, "", recursionInterceptor );
- }
- catch( InterpolationException e )
- {
- throw new ModelInterpolationException( e.getMessage(), e );
- }
-
- if ( debug )
- {
- List feedback = interpolator.getFeedback();
- if ( feedback != null && !feedback.isEmpty() )
- {
- logger.debug( "Maven encountered the following problems during initial POM interpolation:" );
-
- Object last = null;
- for ( Iterator it = feedback.iterator(); it.hasNext(); )
- {
- Object next = it.next();
-
- if ( next instanceof Throwable )
- {
- if ( last == null )
- {
- logger.debug( "", ( (Throwable) next ) );
- }
- else
- {
- logger.debug( String.valueOf( last ), ( (Throwable) next ) );
- }
- }
- else
- {
- if ( last != null )
- {
- logger.debug( String.valueOf( last ) );
- }
-
- last = next;
- }
- }
-
- if ( last != null )
- {
- logger.debug( String.valueOf( last ) );
- }
- }
- }
-
- interpolator.clearFeedback();
- }
- finally
- {
- for ( Iterator iterator = valueSources.iterator(); iterator.hasNext(); )
- {
- ValueSource vs = (ValueSource) iterator.next();
- interpolator.removeValuesSource( vs );
- }
-
- interpolator.removePostProcessor( pathTranslatingPostProcessor );
- }
- }
-
- return result;
}
- public void initialize()
- throws InitializationException
+ protected Interpolator createInterpolator()
{
- interpolator = new RegexBasedInterpolator();
- recursionInterceptor = new PrefixAwareRecursionInterceptor( PROJECT_PREFIXES );
+ return new RegexBasedInterpolator( true );
}
-
}
Added: maven/components/branches/maven-2.0.10-RC/maven-project/src/main/java/org/apache/maven/project/interpolation/StringSearchModelInterpolator.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.10-RC/maven-project/src/main/java/org/apache/maven/project/interpolation/StringSearchModelInterpolator.java?rev=687224&view=auto
==============================================================================
--- maven/components/branches/maven-2.0.10-RC/maven-project/src/main/java/org/apache/maven/project/interpolation/StringSearchModelInterpolator.java (added)
+++ maven/components/branches/maven-2.0.10-RC/maven-project/src/main/java/org/apache/maven/project/interpolation/StringSearchModelInterpolator.java Tue Aug 19 19:05:51 2008
@@ -0,0 +1,25 @@
+package org.apache.maven.project.interpolation;
+
+import org.apache.maven.project.path.PathTranslator;
+import org.codehaus.plexus.interpolation.Interpolator;
+import org.codehaus.plexus.interpolation.StringSearchInterpolator;
+
+public class StringSearchModelInterpolator
+ extends AbstractStringBasedModelInterpolator
+{
+
+ public StringSearchModelInterpolator()
+ {
+ }
+
+ public StringSearchModelInterpolator( PathTranslator pathTranslator )
+ {
+ super( pathTranslator );
+ }
+
+ protected Interpolator createInterpolator()
+ {
+ return new StringSearchInterpolator();
+ }
+
+}
Modified: maven/components/branches/maven-2.0.10-RC/maven-project/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.10-RC/maven-project/src/main/resources/META-INF/plexus/components.xml?rev=687224&r1=687223&r2=687224&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.10-RC/maven-project/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/components/branches/maven-2.0.10-RC/maven-project/src/main/resources/META-INF/plexus/components.xml Tue Aug 19 19:05:51 2008
@@ -40,7 +40,7 @@
-->
<component>
<role>org.apache.maven.project.interpolation.ModelInterpolator</role>
- <implementation>org.apache.maven.project.interpolation.RegexBasedModelInterpolator</implementation>
+ <implementation>org.apache.maven.project.interpolation.StringSearchModelInterpolator</implementation>
<requirements>
<requirement>
<role>org.apache.maven.project.path.PathTranslator</role>
Copied: maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java (from r687095, maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java)
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java?p2=maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java&p1=maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java&r1=687095&r2=687224&rev=687224&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java (original)
+++ maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java Tue Aug 19 19:05:51 2008
@@ -49,7 +49,7 @@
* @author jdcasey
* @version $Id$
*/
-public class RegexBasedModelInterpolatorTest
+public abstract class AbstractModelInterpolatorTest
extends TestCase
{
private Map context;
@@ -91,7 +91,7 @@
}
public void testShouldNotThrowExceptionOnReferenceToNonExistentValue()
- throws IOException, ModelInterpolationException, InitializationException
+ throws Exception
{
Model model = new Model();
@@ -100,8 +100,7 @@
model.setScm( scm );
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator();
- interpolator.initialize();
+ ModelInterpolator interpolator = createInterpolator();
Model out = interpolator.interpolate( model, context );
@@ -109,7 +108,7 @@
}
public void testShouldThrowExceptionOnRecursiveScmConnectionReference()
- throws IOException, InitializationException
+ throws Exception
{
Model model = new Model();
@@ -120,8 +119,7 @@
try
{
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator();
- interpolator.initialize();
+ ModelInterpolator interpolator = createInterpolator();
interpolator.interpolate( model, context );
@@ -134,7 +132,7 @@
}
public void testShouldNotThrowExceptionOnReferenceToValueContainingNakedExpression()
- throws IOException, ModelInterpolationException, InitializationException
+ throws Exception
{
Model model = new Model();
@@ -145,8 +143,7 @@
model.addProperty( "test", "test" );
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator();
- interpolator.initialize();
+ ModelInterpolator interpolator = createInterpolator();
Model out = interpolator.interpolate( model, context );
@@ -166,8 +163,7 @@
model.setOrganization( org );
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator();
- interpolator.initialize();
+ ModelInterpolator interpolator = createInterpolator();
Model out = interpolator.interpolate( model, context );
@@ -185,8 +181,7 @@
model.addDependency( dep );
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator();
- interpolator.initialize();
+ ModelInterpolator interpolator = createInterpolator();
Model out = interpolator.interpolate( model, context );
@@ -219,8 +214,7 @@
}
*/
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator();
- interpolator.initialize();
+ ModelInterpolator interpolator = createInterpolator();
Model out = interpolator.interpolate( model, context );
@@ -239,8 +233,7 @@
model.addDependency( dep );
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator();
- interpolator.initialize();
+ ModelInterpolator interpolator = createInterpolator();
Model out = interpolator.interpolate( model, context );
@@ -260,8 +253,7 @@
model.addRepository( repository );
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator();
- interpolator.initialize();
+ ModelInterpolator interpolator = createInterpolator();
Model out = interpolator.interpolate( model, context );
@@ -283,8 +275,7 @@
model.setProperties( modelProperties );
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator();
- interpolator.initialize();
+ ModelInterpolator interpolator = createInterpolator();
Model out = interpolator.interpolate( model, context );
@@ -304,8 +295,7 @@
model.setProperties( modelProperties );
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator( envars );
- interpolator.initialize();
+ ModelInterpolator interpolator = createInterpolator();
Model out = interpolator.interpolate( model, context );
@@ -323,8 +313,7 @@
model.setProperties( modelProperties );
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator();
- interpolator.initialize();
+ ModelInterpolator interpolator = createInterpolator();
Model out = interpolator.interpolate( model, context );
@@ -356,8 +345,7 @@
model.setBuild( build );
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator();
- interpolator.initialize();
+ ModelInterpolator interpolator = createInterpolator();
Model out = interpolator.interpolate( model, context );
@@ -370,7 +358,7 @@
}
public void testShouldInterpolateUnprefixedBasedirExpression()
- throws ModelInterpolationException, IOException, InitializationException
+ throws Exception
{
File basedir = new File( "/test/path" );
Model model = new Model();
@@ -379,8 +367,7 @@
model.addDependency( dep );
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator();
- interpolator.initialize();
+ ModelInterpolator interpolator = createInterpolator();
Model result = interpolator.interpolate( model, basedir, new DefaultProjectBuilderConfiguration(), true );
@@ -403,8 +390,7 @@
build.setOutputDirectory( "${project.build.directory}/classes" );
PathTranslator translator = new DefaultPathTranslator();
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator( translator );
- interpolator.initialize();
+ ModelInterpolator interpolator = createInterpolator( translator );
File basedir = new File( System.getProperty( "java.io.tmpdir" ), "base" );
@@ -417,6 +403,12 @@
assertEquals( check, value );
}
+ protected abstract ModelInterpolator createInterpolator( PathTranslator translator )
+ throws Exception;
+
+ protected abstract ModelInterpolator createInterpolator()
+ throws Exception;
+
// public void testPOMExpressionDoesNotUseSystemProperty()
// throws Exception
// {
@@ -446,7 +438,7 @@
// throws Exception
// {
// ( (Dependency) model.getDependencies().get( 0 ) ).setVersion( depVersionExpr );
-// Model out = new RegexBasedModelInterpolator().interpolate( model, context );
+// Model out = createInterpolator().interpolate( model, context );
// String result = ( (Dependency) out.getDependencies().get( 0 ) ).getVersion();
// assertEquals( "Expected '" + expectedVersion + "' for version expression '"
// + depVersionExpr + "', but was '" + result + "'", expectedVersion, result );
Propchange: maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java
------------------------------------------------------------------------------
cvs2svn:cvs-rev = 1.2
Propchange: maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange: maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java
------------------------------------------------------------------------------
svn:mergeinfo =
Modified: maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java?rev=687224&r1=687223&r2=687224&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java (original)
+++ maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java Tue Aug 19 19:05:51 2008
@@ -19,437 +19,30 @@
* under the License.
*/
-import org.apache.maven.model.Build;
-import org.apache.maven.model.Dependency;
-import org.apache.maven.model.Model;
-import org.apache.maven.model.Organization;
-import org.apache.maven.model.Repository;
-import org.apache.maven.model.Resource;
-import org.apache.maven.model.Scm;
-import org.apache.maven.project.DefaultProjectBuilderConfiguration;
-import org.apache.maven.project.path.DefaultPathTranslator;
import org.apache.maven.project.path.PathTranslator;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
-
-import java.io.File;
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import junit.framework.TestCase;
/**
* @author jdcasey
* @version $Id$
*/
public class RegexBasedModelInterpolatorTest
- extends TestCase
+ extends AbstractModelInterpolatorTest
{
- private Map context;
-
- protected void setUp()
- throws Exception
- {
- super.setUp();
-
- context = Collections.singletonMap( "basedir", "myBasedir" );
- }
-
- public void testDefaultBuildTimestampFormatShouldParseTimeIn24HourFormat()
- {
- Calendar cal = Calendar.getInstance();
- cal.set( Calendar.HOUR, 12 );
- cal.set( Calendar.AM_PM, Calendar.AM );
-
- // just to make sure all the bases are covered...
- cal.set( Calendar.HOUR_OF_DAY, 0 );
- cal.set( Calendar.MINUTE, 16 );
- cal.set( Calendar.YEAR, 1976 );
- cal.set( Calendar.MONTH, Calendar.NOVEMBER );
- cal.set( Calendar.DATE, 11 );
-
- Date firstTestDate = cal.getTime();
-
- cal.set( Calendar.HOUR, 11 );
- cal.set( Calendar.AM_PM, Calendar.PM );
-
- // just to make sure all the bases are covered...
- cal.set( Calendar.HOUR_OF_DAY, 23 );
-
- Date secondTestDate = cal.getTime();
-
- SimpleDateFormat format = new SimpleDateFormat( ModelInterpolator.DEFAULT_BUILD_TIMESTAMP_FORMAT );
- assertEquals( "19761111-0016", format.format( firstTestDate ) );
- assertEquals( "19761111-2316", format.format( secondTestDate ) );
- }
-
- public void testShouldNotThrowExceptionOnReferenceToNonExistentValue()
- throws IOException, ModelInterpolationException, InitializationException
- {
- Model model = new Model();
-
- Scm scm = new Scm();
- scm.setConnection( "${test}/somepath" );
-
- model.setScm( scm );
-
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator();
- interpolator.initialize();
-
- Model out = interpolator.interpolate( model, context );
-
- assertEquals( "${test}/somepath", out.getScm().getConnection() );
- }
-
- public void testShouldThrowExceptionOnRecursiveScmConnectionReference()
- throws IOException, InitializationException
- {
- Model model = new Model();
-
- Scm scm = new Scm();
- scm.setConnection( "${project.scm.connection}/somepath" );
-
- model.setScm( scm );
-
- try
- {
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator();
- interpolator.initialize();
-
- interpolator.interpolate( model, context );
-
- fail( "The interpolator should not allow self-referencing expressions in POM." );
- }
- catch ( ModelInterpolationException e )
- {
-
- }
- }
-
- public void testShouldNotThrowExceptionOnReferenceToValueContainingNakedExpression()
- throws IOException, ModelInterpolationException, InitializationException
- {
- Model model = new Model();
-
- Scm scm = new Scm();
- scm.setConnection( "${test}/somepath" );
-
- model.setScm( scm );
-
- model.addProperty( "test", "test" );
-
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator();
- interpolator.initialize();
-
- Model out = interpolator.interpolate( model, context );
-
- assertEquals( "test/somepath", out.getScm().getConnection() );
- }
-
- public void testShouldInterpolateOrganizationNameCorrectly()
- throws Exception
- {
- String orgName = "MyCo";
-
- Model model = new Model();
- model.setName( "${pom.organization.name} Tools" );
-
- Organization org = new Organization();
- org.setName( orgName );
-
- model.setOrganization( org );
-
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator();
- interpolator.initialize();
-
- Model out = interpolator.interpolate( model, context );
-
- assertEquals( orgName + " Tools", out.getName() );
- }
-
- public void testShouldInterpolateDependencyVersionToSetSameAsProjectVersion()
- throws Exception
- {
- Model model = new Model();
- model.setVersion( "3.8.1" );
-
- Dependency dep = new Dependency();
- dep.setVersion( "${version}" );
-
- model.addDependency( dep );
-
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator();
- interpolator.initialize();
-
- Model out = interpolator.interpolate( model, context );
-
- assertEquals( "3.8.1", ( (Dependency) out.getDependencies().get( 0 ) ).getVersion() );
- }
-
- public void testShouldNotInterpolateDependencyVersionWithInvalidReference()
- throws Exception
- {
- Model model = new Model();
- model.setVersion( "3.8.1" );
-
- Dependency dep = new Dependency();
- dep.setVersion( "${something}" );
-
- model.addDependency( dep );
-
- /*
- // This is the desired behaviour, however there are too many crappy poms in the repo and an issue with the
- // timing of executing the interpolation
-
- try
- {
- new RegexBasedModelInterpolator().interpolate( model, context );
- fail( "Should have failed to interpolate with invalid reference" );
- }
- catch ( ModelInterpolationException expected )
- {
- assertTrue( true );
- }
- */
-
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator();
- interpolator.initialize();
-
- Model out = interpolator.interpolate( model, context );
-
- assertEquals( "${something}", ( (Dependency) out.getDependencies().get( 0 ) ).getVersion() );
- }
-
- public void testTwoReferences()
- throws Exception
- {
- Model model = new Model();
- model.setVersion( "3.8.1" );
- model.setArtifactId( "foo" );
-
- Dependency dep = new Dependency();
- dep.setVersion( "${artifactId}-${version}" );
-
- model.addDependency( dep );
-
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator();
- interpolator.initialize();
-
- Model out = interpolator.interpolate( model, context );
-
- assertEquals( "foo-3.8.1", ( (Dependency) out.getDependencies().get( 0 ) ).getVersion() );
- }
-
- public void testBasedir()
- throws Exception
- {
- Model model = new Model();
- model.setVersion( "3.8.1" );
- model.setArtifactId( "foo" );
-
- Repository repository = new Repository();
-
- repository.setUrl( "file://localhost/${basedir}/temp-repo" );
-
- model.addRepository( repository );
-
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator();
- interpolator.initialize();
-
- Model out = interpolator.interpolate( model, context );
-
- assertEquals( "file://localhost/myBasedir/temp-repo", ( (Repository) out.getRepositories().get( 0 ) ).getUrl() );
- }
-
- public void testEnvars()
- throws Exception
- {
- Map context = new HashMap();
-
- context.put( "env.HOME", "/path/to/home" );
-
- Model model = new Model();
-
- Properties modelProperties = new Properties();
-
- modelProperties.setProperty( "outputDirectory", "${env.HOME}" );
-
- model.setProperties( modelProperties );
-
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator();
- interpolator.initialize();
-
- Model out = interpolator.interpolate( model, context );
-
- assertEquals( out.getProperties().getProperty( "outputDirectory" ), "/path/to/home" );
- }
-
- public void testEnvarExpressionThatEvaluatesToNullReturnsTheLiteralString()
+ protected ModelInterpolator createInterpolator( PathTranslator translator )
throws Exception
{
- Properties envars = new Properties();
-
- Model model = new Model();
-
- Properties modelProperties = new Properties();
-
- modelProperties.setProperty( "outputDirectory", "${env.DOES_NOT_EXIST}" );
-
- model.setProperties( modelProperties );
-
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator( envars );
+ RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator( translator );
interpolator.initialize();
-
- Model out = interpolator.interpolate( model, context );
- assertEquals( out.getProperties().getProperty( "outputDirectory" ), "${env.DOES_NOT_EXIST}" );
+ return interpolator;
}
- public void testExpressionThatEvaluatesToNullReturnsTheLiteralString()
+ protected ModelInterpolator createInterpolator()
throws Exception
{
- Model model = new Model();
-
- Properties modelProperties = new Properties();
-
- modelProperties.setProperty( "outputDirectory", "${DOES_NOT_EXIST}" );
-
- model.setProperties( modelProperties );
-
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator();
- interpolator.initialize();
-
- Model out = interpolator.interpolate( model, context );
-
- assertEquals( out.getProperties().getProperty( "outputDirectory" ), "${DOES_NOT_EXIST}" );
- }
-
- public void testShouldInterpolateSourceDirectoryReferencedFromResourceDirectoryCorrectly()
- throws Exception
- {
- Model model = new Model();
-
- Build build = new Build();
- build.setSourceDirectory( "correct" );
-
- Resource res = new Resource();
- res.setDirectory( "${project.build.sourceDirectory}" );
-
- build.addResource( res );
-
- Resource res2 = new Resource();
- res2.setDirectory( "${pom.build.sourceDirectory}" );
-
- build.addResource( res2 );
-
- Resource res3 = new Resource();
- res3.setDirectory( "${build.sourceDirectory}" );
-
- build.addResource( res3 );
-
- model.setBuild( build );
-
RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator();
interpolator.initialize();
-
- Model out = interpolator.interpolate( model, context );
-
- List outResources = out.getBuild().getResources();
- Iterator resIt = outResources.iterator();
- assertEquals( build.getSourceDirectory(), ( (Resource) resIt.next() ).getDirectory() );
- assertEquals( build.getSourceDirectory(), ( (Resource) resIt.next() ).getDirectory() );
- assertEquals( build.getSourceDirectory(), ( (Resource) resIt.next() ).getDirectory() );
+ return interpolator;
}
-
- public void testShouldInterpolateUnprefixedBasedirExpression()
- throws ModelInterpolationException, IOException, InitializationException
- {
- File basedir = new File( "/test/path" );
- Model model = new Model();
- Dependency dep = new Dependency();
- dep.setSystemPath( "${basedir}/artifact.jar" );
-
- model.addDependency( dep );
-
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator();
- interpolator.initialize();
-
- Model result = interpolator.interpolate( model, basedir, new DefaultProjectBuilderConfiguration(), true );
-
- List rDeps = result.getDependencies();
- assertNotNull( rDeps );
- assertEquals( 1, rDeps.size() );
- assertEquals( new File( basedir, "artifact.jar" ).getAbsolutePath(), new File( ( (Dependency) rDeps.get( 0 ) )
- .getSystemPath() ).getAbsolutePath() );
- }
-
- public void testTwoLevelRecursiveBasedirAlignedExpression()
- throws Exception
- {
- Model model = new Model();
- Build build = new Build();
-
- model.setBuild( build );
-
- build.setDirectory( "${project.basedir}/target" );
- build.setOutputDirectory( "${project.build.directory}/classes" );
-
- PathTranslator translator = new DefaultPathTranslator();
- RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator( translator );
- interpolator.initialize();
-
- File basedir = new File( System.getProperty( "java.io.tmpdir" ), "base" );
-
- String value = interpolator.interpolate( "${project.build.outputDirectory}/foo", model, basedir, new DefaultProjectBuilderConfiguration(), true );
- value = value.replace( '/', File.separatorChar ).replace( '\\', File.separatorChar );
-
- String check = new File( basedir, "target/classes/foo" ).getAbsolutePath();
- check = check.replace( '/', File.separatorChar ).replace( '\\', File.separatorChar );
-
- assertEquals( check, value );
- }
-
-// public void testPOMExpressionDoesNotUseSystemProperty()
-// throws Exception
-// {
-// Model model = new Model();
-// model.setVersion( "1.0" );
-//
-// Properties modelProperties = new Properties();
-// modelProperties.setProperty( "version", "prop version" );
-// modelProperties.setProperty( "foo.version", "prop foo.version" );
-// modelProperties.setProperty( "pom.version", "prop pom.version" );
-// modelProperties.setProperty( "project.version", "prop project.version" );
-//
-// model.setProperties( modelProperties );
-//
-// Dependency dep = new Dependency();
-// model.addDependency( dep );
-//
-// checkDep( "prop version", "${version}", model );
-// checkDep( "1.0", "${pom.version}", model );
-// checkDep( "1.0", "${project.version}", model );
-// checkDep( "prop foo.version", "${foo.version}", model );
-// }
-//
-// private void checkDep( String expectedVersion,
-// String depVersionExpr,
-// Model model )
-// throws Exception
-// {
-// ( (Dependency) model.getDependencies().get( 0 ) ).setVersion( depVersionExpr );
-// Model out = new RegexBasedModelInterpolator().interpolate( model, context );
-// String result = ( (Dependency) out.getDependencies().get( 0 ) ).getVersion();
-// assertEquals( "Expected '" + expectedVersion + "' for version expression '"
-// + depVersionExpr + "', but was '" + result + "'", expectedVersion, result );
-// }
-
}
Added: maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/StringSearchModelInterpolatorTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/StringSearchModelInterpolatorTest.java?rev=687224&view=auto
==============================================================================
--- maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/StringSearchModelInterpolatorTest.java (added)
+++ maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/StringSearchModelInterpolatorTest.java Tue Aug 19 19:05:51 2008
@@ -0,0 +1,48 @@
+package org.apache.maven.project.interpolation;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.project.path.PathTranslator;
+
+/**
+ * @author jdcasey
+ * @version $Id: RegexBasedModelInterpolatorTest.java 686268 2008-08-15 16:01:30Z jdcasey $
+ */
+public class StringSearchModelInterpolatorTest
+ extends AbstractModelInterpolatorTest
+{
+ protected ModelInterpolator createInterpolator( PathTranslator translator )
+ throws Exception
+ {
+ StringSearchModelInterpolator interpolator = new StringSearchModelInterpolator( translator );
+ interpolator.initialize();
+
+ return interpolator;
+ }
+
+ protected ModelInterpolator createInterpolator()
+ throws Exception
+ {
+ StringSearchModelInterpolator interpolator = new StringSearchModelInterpolator();
+ interpolator.initialize();
+
+ return interpolator;
+ }
+}
Modified: maven/components/branches/maven-2.0.10-RC/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.10-RC/pom.xml?rev=687224&r1=687223&r2=687224&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.10-RC/pom.xml (original)
+++ maven/components/branches/maven-2.0.10-RC/pom.xml Tue Aug 19 19:05:51 2008
@@ -371,7 +371,7 @@
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-interpolation</artifactId>
- <version>1.1</version>
+ <version>1.3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>