Author: jdcasey Date: Mon Apr 27 13:58:48 2009 New Revision: 768992 URL: http://svn.apache.org/viewvc?rev=768992&view=rev Log: [MNG-4140][MNG-4143] Go back to using JDK 1.4 binary compat, and catch NoClassDefFoundError to trigger a warning when POM version expressions can't be interpolated on install/deploy.
Added: maven/components/branches/maven-2.1.x/maven-project/src/main/java/org/apache/maven/project/artifact/XPathVersionExpressionInterpolator.java Modified: maven/components/branches/maven-2.1.x/build.xml maven/components/branches/maven-2.1.x/maven-project/src/main/java/org/apache/maven/project/artifact/VersionExpressionTransformation.java maven/components/branches/maven-2.1.x/maven-project/src/test/java/org/apache/maven/project/artifact/VersionExpressionTransformationTest.java maven/components/branches/maven-2.1.x/pom.xml Modified: maven/components/branches/maven-2.1.x/build.xml URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.x/build.xml?rev=768992&r1=768991&r2=768992&view=diff ============================================================================== --- maven/components/branches/maven-2.1.x/build.xml (original) +++ maven/components/branches/maven-2.1.x/build.xml Mon Apr 27 13:58:48 2009 @@ -166,7 +166,7 @@ </path> <mkdir dir="bootstrap/target/classes"/> - <javac destdir="bootstrap/target/classes" encoding="UTF-8" source="1.5" target="1.5" debug="true"> + <javac destdir="bootstrap/target/classes" encoding="UTF-8" source="1.4" target="1.4" debug="true"> <src refid="sources"/> <classpath refid="pom.pathid"/> </javac> Modified: maven/components/branches/maven-2.1.x/maven-project/src/main/java/org/apache/maven/project/artifact/VersionExpressionTransformation.java URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.x/maven-project/src/main/java/org/apache/maven/project/artifact/VersionExpressionTransformation.java?rev=768992&r1=768991&r2=768992&view=diff ============================================================================== --- maven/components/branches/maven-2.1.x/maven-project/src/main/java/org/apache/maven/project/artifact/VersionExpressionTransformation.java (original) +++ maven/components/branches/maven-2.1.x/maven-project/src/main/java/org/apache/maven/project/artifact/VersionExpressionTransformation.java Mon Apr 27 13:58:48 2009 @@ -37,90 +37,27 @@ import org.codehaus.plexus.interpolation.InterpolationPostProcessor; import org.codehaus.plexus.interpolation.Interpolator; import org.codehaus.plexus.interpolation.RecursionInterceptor; -import org.codehaus.plexus.interpolation.SimpleRecursionInterceptor; import org.codehaus.plexus.interpolation.ValueSource; -import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable; import org.codehaus.plexus.util.IOUtil; import org.codehaus.plexus.util.ReaderFactory; import org.codehaus.plexus.util.WriterFactory; import org.codehaus.plexus.util.xml.XmlStreamReader; -import org.codehaus.plexus.util.xml.XmlStreamWriter; import org.codehaus.plexus.util.xml.pull.XmlPullParserException; -import org.w3c.dom.Document; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; -import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.Reader; -import java.io.StringReader; -import java.io.UnsupportedEncodingException; import java.io.Writer; import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; +import java.util.Iterator; import java.util.List; -import java.util.Map; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerConfigurationException; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; -import javax.xml.xpath.XPath; -import javax.xml.xpath.XPathConstants; -import javax.xml.xpath.XPathExpression; -import javax.xml.xpath.XPathExpressionException; -import javax.xml.xpath.XPathFactory; public class VersionExpressionTransformation extends StringSearchModelInterpolator implements Initializable, ArtifactTransformation { - private static final List<String> VERSION_INTERPOLATION_TARGET_XPATHS; - - static - { - List<String> targets = new ArrayList<String>(); - - targets.add( "/project/parent/version/text()" ); - targets.add( "/project/version/text()" ); - - targets.add( "/project/dependencies/dependency/version/text()" ); - targets.add( "/project/dependencyManagement/dependencies/dependency/version/text()" ); - - targets.add( "/project/build/plugins/plugin/version/text()" ); - targets.add( "/project/build/pluginManagement/plugins/plugin/version/text()" ); - targets.add( "/project/build/plugins/plugin/dependencies/dependency/version/text()" ); - targets.add( "/project/build/pluginManagement/plugins/plugin/dependencies/dependency/version/text()" ); - - targets.add( "/project/reporting/plugins/plugin/version/text()" ); - - targets.add( "/project/profiles/profile/dependencies/dependency/version/text()" ); - targets.add( "/project/profiles/profile/dependencyManagement/dependencies/dependency/version/text()" ); - - targets.add( "/project/profiles/profile/build/plugins/plugin/version/text()" ); - targets.add( "/project/profiles/profile/build/pluginManagement/plugins/plugin/version/text()" ); - targets.add( "/project/profiles/profile/build/plugins/plugin/dependencies/dependency/version/text()" ); - targets.add( "/project/profiles/profile/build/pluginManagement/plugins/plugin/dependencies/dependency/version/text()" ); - - targets.add( "/project/profiles/profile/reporting/plugins/plugin/version/text()" ); - - targets = Collections.unmodifiableList( targets ); - - VERSION_INTERPOLATION_TARGET_XPATHS = targets; - } - public void transformForDeployment( Artifact artifact, ArtifactRepository remoteRepository, ArtifactRepository localRepository ) throws ArtifactDeploymentException @@ -309,7 +246,6 @@ return outputFile; } - @SuppressWarnings("unchecked") protected void interpolateVersions( File pomFile, File outputFile, Model model, File projectDir, ProjectBuilderConfiguration config ) throws ModelInterpolationException @@ -320,7 +256,26 @@ // use of the XPP3 Model reader/writers, which have a tendency to lose XML comments and such. // SOOO, we're using a two-stage string interpolation here. The first stage selects all XML 'version' // elements, and subjects their values to interpolation in the second stage. - XPathInterpolator interpolator = new XPathInterpolator( getLogger() ); + XPathVersionExpressionInterpolator interpolator; + try + { + interpolator = new XPathVersionExpressionInterpolator( getLogger() ); + } + catch ( NoClassDefFoundError ncdfe ) + { + if ( ncdfe.getMessage().indexOf( "javax/xml/xpath" ) > -1 ) + { + getLogger().warn( "Cannot load XPath classes from JDK. Your JDK version may be < 1.5." + + "\n\nNOTE: This prevents the interpolation of version expressions in your POMs " + + "during the install/deploy steps of the build!\n\n" ); + + return; + } + else + { + throw ncdfe; + } + } // The second-stage interpolator is the 'normal' one used in all Model interpolation throughout // maven-project. @@ -333,18 +288,20 @@ // once we've isolated the version elements from the input XML. interpolator.addValueSource( new SecondaryInterpolationValueSource( secondaryInterpolator, recursionInterceptor ) ); - List<ValueSource> valueSources = createValueSources( model, projectDir, config ); - List<InterpolationPostProcessor> postProcessors = createPostProcessors( model, projectDir, config ); + List valueSources = createValueSources( model, projectDir, config ); + List postProcessors = createPostProcessors( model, projectDir, config ); synchronized ( this ) { - for ( ValueSource vs : valueSources ) + for ( Iterator vsIt = valueSources.iterator(); vsIt.hasNext(); ) { + ValueSource vs = (ValueSource) vsIt.next(); secondaryInterpolator.addValueSource( vs ); } - for ( InterpolationPostProcessor postProcessor : postProcessors ) + for ( Iterator ppIt = postProcessors.iterator(); ppIt.hasNext(); ) { + InterpolationPostProcessor postProcessor = (InterpolationPostProcessor) ppIt.next(); secondaryInterpolator.addPostProcessor( postProcessor ); } @@ -379,14 +336,15 @@ if ( debugEnabled ) { - List<Object> feedback = (List<Object>) interpolator.getFeedback(); + List feedback = (List) interpolator.getFeedback(); if ( feedback != null && !feedback.isEmpty() ) { getLogger().debug( "Maven encountered the following problems while transforming POM versions:" ); Object last = null; - for ( Object next : feedback ) + for ( Iterator feedbackIt = feedback.iterator(); feedbackIt.hasNext(); ) { + Object next = (Object) feedbackIt.next(); if ( next instanceof Throwable ) { if ( last == null ) @@ -420,13 +378,15 @@ } finally { - for ( ValueSource vs : valueSources ) + for ( Iterator vsIt = valueSources.iterator(); vsIt.hasNext(); ) { + ValueSource vs = (ValueSource) vsIt.next(); secondaryInterpolator.removeValuesSource( vs ); } - for ( InterpolationPostProcessor postProcessor : postProcessors ) + for ( Iterator ppIt = postProcessors.iterator(); ppIt.hasNext(); ) { + InterpolationPostProcessor postProcessor = (InterpolationPostProcessor) ppIt.next(); secondaryInterpolator.removePostProcessor( postProcessor ); } @@ -467,7 +427,7 @@ private final RecursionInterceptor recursionInterceptor; - private List<Object> localFeedback = new ArrayList<Object>(); + private List localFeedback = new ArrayList(); public SecondaryInterpolationValueSource( Interpolator secondary, RecursionInterceptor recursionInterceptor ) { @@ -480,7 +440,6 @@ secondary.clearFeedback(); } - @SuppressWarnings("unchecked") public List getFeedback() { List result = secondary.getFeedback(); @@ -510,238 +469,4 @@ } } - private static final class XPathInterpolator - implements Interpolator - { - - private List<InterpolationPostProcessor> postProcessors = new ArrayList<InterpolationPostProcessor>(); - - private List<ValueSource> valueSources = new ArrayList<ValueSource>(); - - private Map<String, Object> answers = new HashMap<String, Object>(); - - private List<Object> feedback = new ArrayList<Object>(); - - private final Logger logger; - - private String encoding; - - public XPathInterpolator( Logger logger ) - { - this.logger = logger; - } - - public void setEncoding( String encoding ) - { - this.encoding = encoding; - } - - public String interpolate( String input, RecursionInterceptor recursionInterceptor ) - throws InterpolationException - { - DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); - TransformerFactory txFactory = TransformerFactory.newInstance(); - XPathFactory xpFactory = XPathFactory.newInstance(); - - DocumentBuilder builder; - Transformer transformer; - XPath xpath; - try - { - builder = dbFactory.newDocumentBuilder(); - transformer = txFactory.newTransformer(); - xpath = xpFactory.newXPath(); - } - catch ( ParserConfigurationException e ) - { - throw new InterpolationException( "Failed to construct XML DocumentBuilder: " + e.getMessage(), "-NONE-", e ); - } - catch ( TransformerConfigurationException e ) - { - throw new InterpolationException( "Failed to construct XML Transformer: " + e.getMessage(), "-NONE-", e ); - } - - Document document; - try - { - document = builder.parse( new InputSource( new StringReader( input ) ) ); - } - catch ( SAXException e ) - { - throw new InterpolationException( "Failed to parse XML: " + e.getMessage(), "-NONE-", e ); - } - catch ( IOException e ) - { - throw new InterpolationException( "Failed to parse XML: " + e.getMessage(), "-NONE-", e ); - } - - inteprolateInternal( document, xpath ); - - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - XmlStreamWriter writer; - try - { - writer = WriterFactory.newXmlWriter( baos ); - } - catch ( IOException e ) - { - throw new InterpolationException( "Failed to get XML writer: " + e.getMessage(), "-NONE-", e ); - } - - StreamResult r = new StreamResult( writer ); - DOMSource s = new DOMSource( document ); - - try - { - if ( encoding != null ) - { - logger.info( "Writing transformed POM using encoding: " + encoding ); - transformer.setOutputProperty( OutputKeys.ENCODING, encoding ); - } - else - { - logger.info( "Writing transformed POM using default encoding" ); - } - - transformer.transform( s, r ); - } - catch ( TransformerException e ) - { - throw new InterpolationException( "Failed to render interpolated XML: " + e.getMessage(), "-NONE-", e ); - } - - try - { - return baos.toString( writer.getEncoding() ); - } - catch ( UnsupportedEncodingException e ) - { - throw new InterpolationException( "Failed to render interpolated XML: " + e.getMessage(), "-NONE-", e ); - } - } - - private void inteprolateInternal( Document document, XPath xp ) - throws InterpolationException - { - for ( String expr : VERSION_INTERPOLATION_TARGET_XPATHS ) - { - NodeList nodes; - try - { - XPathExpression xpath = xp.compile( expr ); - nodes = (NodeList) xpath.evaluate( document, XPathConstants.NODESET ); - } - catch ( XPathExpressionException e ) - { - throw new InterpolationException( "Failed to evaluate XPath: " + expr + " (" + e.getMessage() + ")", "-NONE-", e ); - } - - if ( nodes != null ) - { - for( int idx = 0; idx < nodes.getLength(); idx++ ) - { - Node node = nodes.item( idx ); - Object value = node.getNodeValue(); - if ( value == null ) - { - continue; - } - - for ( ValueSource vs : valueSources ) - { - if ( vs != null ) - { - value = vs.getValue( value.toString() ); - if ( value != null && !value.equals( node.getNodeValue() ) ) - { - break; - } - else if ( value == null ) - { - value = node.getNodeValue(); - } - } - } - - if ( value != null && !value.equals( node.getNodeValue() ) ) - { - for ( InterpolationPostProcessor postProcessor : postProcessors ) - { - if ( postProcessor != null ) - { - value = postProcessor.execute( node.getNodeValue(), value ); - } - } - - node.setNodeValue( String.valueOf( value ) ); - } - } - } - } - } - - public void addPostProcessor( InterpolationPostProcessor postProcessor ) - { - postProcessors.add( postProcessor ); - } - - public void addValueSource( ValueSource valueSource ) - { - valueSources.add( valueSource ); - } - - public void clearAnswers() - { - answers.clear(); - } - - public void clearFeedback() - { - feedback.clear(); - } - - @SuppressWarnings( "unchecked" ) - public List getFeedback() - { - return feedback; - } - - public String interpolate( String input ) - throws InterpolationException - { - return interpolate( input, new SimpleRecursionInterceptor() ); - } - - public String interpolate( String input, String thisPrefixPattern ) - throws InterpolationException - { - return interpolate( input, new SimpleRecursionInterceptor() ); - } - - public String interpolate( String input, String thisPrefixPattern, RecursionInterceptor recursionInterceptor ) - throws InterpolationException - { - return interpolate( input, recursionInterceptor ); - } - - public boolean isCacheAnswers() - { - return true; - } - - public void removePostProcessor( InterpolationPostProcessor postProcessor ) - { - postProcessors.remove( postProcessor ); - } - - public void removeValuesSource( ValueSource valueSource ) - { - valueSources.remove( valueSource ); - } - - public void setCacheAnswers( boolean cacheAnswers ) - { - } - } - } Added: maven/components/branches/maven-2.1.x/maven-project/src/main/java/org/apache/maven/project/artifact/XPathVersionExpressionInterpolator.java URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.x/maven-project/src/main/java/org/apache/maven/project/artifact/XPathVersionExpressionInterpolator.java?rev=768992&view=auto ============================================================================== --- maven/components/branches/maven-2.1.x/maven-project/src/main/java/org/apache/maven/project/artifact/XPathVersionExpressionInterpolator.java (added) +++ maven/components/branches/maven-2.1.x/maven-project/src/main/java/org/apache/maven/project/artifact/XPathVersionExpressionInterpolator.java Mon Apr 27 13:58:48 2009 @@ -0,0 +1,314 @@ +package org.apache.maven.project.artifact; + +import org.codehaus.plexus.interpolation.InterpolationException; +import org.codehaus.plexus.interpolation.InterpolationPostProcessor; +import org.codehaus.plexus.interpolation.Interpolator; +import org.codehaus.plexus.interpolation.RecursionInterceptor; +import org.codehaus.plexus.interpolation.SimpleRecursionInterceptor; +import org.codehaus.plexus.interpolation.ValueSource; +import org.codehaus.plexus.logging.Logger; +import org.codehaus.plexus.util.WriterFactory; +import org.codehaus.plexus.util.xml.XmlStreamWriter; +import org.w3c.dom.Document; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.StringReader; +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerConfigurationException; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; +import javax.xml.xpath.XPath; +import javax.xml.xpath.XPathConstants; +import javax.xml.xpath.XPathExpression; +import javax.xml.xpath.XPathExpressionException; +import javax.xml.xpath.XPathFactory; + +public class XPathVersionExpressionInterpolator + implements Interpolator +{ + private static final List VERSION_INTERPOLATION_TARGET_XPATHS; + + static + { + List targets = new ArrayList(); + + targets.add( "/project/parent/version/text()" ); + targets.add( "/project/version/text()" ); + + targets.add( "/project/dependencies/dependency/version/text()" ); + targets.add( "/project/dependencyManagement/dependencies/dependency/version/text()" ); + + targets.add( "/project/build/plugins/plugin/version/text()" ); + targets.add( "/project/build/pluginManagement/plugins/plugin/version/text()" ); + targets.add( "/project/build/plugins/plugin/dependencies/dependency/version/text()" ); + targets.add( "/project/build/pluginManagement/plugins/plugin/dependencies/dependency/version/text()" ); + + targets.add( "/project/reporting/plugins/plugin/version/text()" ); + + targets.add( "/project/profiles/profile/dependencies/dependency/version/text()" ); + targets.add( "/project/profiles/profile/dependencyManagement/dependencies/dependency/version/text()" ); + + targets.add( "/project/profiles/profile/build/plugins/plugin/version/text()" ); + targets.add( "/project/profiles/profile/build/pluginManagement/plugins/plugin/version/text()" ); + targets.add( "/project/profiles/profile/build/plugins/plugin/dependencies/dependency/version/text()" ); + targets.add( "/project/profiles/profile/build/pluginManagement/plugins/plugin/dependencies/dependency/version/text()" ); + + targets.add( "/project/profiles/profile/reporting/plugins/plugin/version/text()" ); + + targets = Collections.unmodifiableList( targets ); + + VERSION_INTERPOLATION_TARGET_XPATHS = targets; + } + + private List postProcessors = new ArrayList(); + + private List valueSources = new ArrayList(); + + private Map answers = new HashMap(); + + private List feedback = new ArrayList(); + + private final Logger logger; + + private String encoding; + + public XPathVersionExpressionInterpolator( Logger logger ) + { + this.logger = logger; + } + + public void setEncoding( String encoding ) + { + this.encoding = encoding; + } + + public String interpolate( String input, RecursionInterceptor recursionInterceptor ) + throws InterpolationException + { + DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + TransformerFactory txFactory = TransformerFactory.newInstance(); + XPathFactory xpFactory = XPathFactory.newInstance(); + + DocumentBuilder builder; + Transformer transformer; + XPath xpath; + try + { + builder = dbFactory.newDocumentBuilder(); + transformer = txFactory.newTransformer(); + xpath = xpFactory.newXPath(); + } + catch ( ParserConfigurationException e ) + { + throw new InterpolationException( "Failed to construct XML DocumentBuilder: " + e.getMessage(), "-NONE-", e ); + } + catch ( TransformerConfigurationException e ) + { + throw new InterpolationException( "Failed to construct XML Transformer: " + e.getMessage(), "-NONE-", e ); + } + + Document document; + try + { + document = builder.parse( new InputSource( new StringReader( input ) ) ); + } + catch ( SAXException e ) + { + throw new InterpolationException( "Failed to parse XML: " + e.getMessage(), "-NONE-", e ); + } + catch ( IOException e ) + { + throw new InterpolationException( "Failed to parse XML: " + e.getMessage(), "-NONE-", e ); + } + + inteprolateInternal( document, xpath ); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + XmlStreamWriter writer; + try + { + writer = WriterFactory.newXmlWriter( baos ); + } + catch ( IOException e ) + { + throw new InterpolationException( "Failed to get XML writer: " + e.getMessage(), "-NONE-", e ); + } + + StreamResult r = new StreamResult( writer ); + DOMSource s = new DOMSource( document ); + + try + { + if ( encoding != null ) + { + logger.info( "Writing transformed POM using encoding: " + encoding ); + transformer.setOutputProperty( OutputKeys.ENCODING, encoding ); + } + else + { + logger.info( "Writing transformed POM using default encoding" ); + } + + transformer.transform( s, r ); + } + catch ( TransformerException e ) + { + throw new InterpolationException( "Failed to render interpolated XML: " + e.getMessage(), "-NONE-", e ); + } + + try + { + return baos.toString( writer.getEncoding() ); + } + catch ( UnsupportedEncodingException e ) + { + throw new InterpolationException( "Failed to render interpolated XML: " + e.getMessage(), "-NONE-", e ); + } + } + + private void inteprolateInternal( Document document, XPath xp ) + throws InterpolationException + { + for ( Iterator it = VERSION_INTERPOLATION_TARGET_XPATHS.iterator(); it.hasNext(); ) + { + String expr = (String) it.next(); + NodeList nodes; + try + { + XPathExpression xpath = xp.compile( expr ); + nodes = (NodeList) xpath.evaluate( document, XPathConstants.NODESET ); + } + catch ( XPathExpressionException e ) + { + throw new InterpolationException( + "Failed to evaluate XPath: " + expr + " (" + e.getMessage() + ")", + "-NONE-", e ); + } + + if ( nodes != null ) + { + for ( int idx = 0; idx < nodes.getLength(); idx++ ) + { + Node node = nodes.item( idx ); + Object value = node.getNodeValue(); + if ( value == null ) + { + continue; + } + + for ( Iterator vsIt = valueSources.iterator(); vsIt.hasNext(); ) + { + ValueSource vs = (ValueSource) vsIt.next(); + if ( vs != null ) + { + value = vs.getValue( value.toString() ); + if ( value != null && !value.equals( node.getNodeValue() ) ) + { + break; + } + else if ( value == null ) + { + value = node.getNodeValue(); + } + } + } + + if ( value != null && !value.equals( node.getNodeValue() ) ) + { + for ( Iterator ppIt = postProcessors.iterator(); ppIt.hasNext(); ) + { + InterpolationPostProcessor postProcessor = (InterpolationPostProcessor) ppIt.next(); + if ( postProcessor != null ) + { + value = postProcessor.execute( node.getNodeValue(), value ); + } + } + + node.setNodeValue( String.valueOf( value ) ); + } + } + } + } + } + + public void addPostProcessor( InterpolationPostProcessor postProcessor ) + { + postProcessors.add( postProcessor ); + } + + public void addValueSource( ValueSource valueSource ) + { + valueSources.add( valueSource ); + } + + public void clearAnswers() + { + answers.clear(); + } + + public void clearFeedback() + { + feedback.clear(); + } + + public List getFeedback() + { + return feedback; + } + + public String interpolate( String input ) + throws InterpolationException + { + return interpolate( input, new SimpleRecursionInterceptor() ); + } + + public String interpolate( String input, String thisPrefixPattern ) + throws InterpolationException + { + return interpolate( input, new SimpleRecursionInterceptor() ); + } + + public String interpolate( String input, String thisPrefixPattern, RecursionInterceptor recursionInterceptor ) + throws InterpolationException + { + return interpolate( input, recursionInterceptor ); + } + + public boolean isCacheAnswers() + { + return true; + } + + public void removePostProcessor( InterpolationPostProcessor postProcessor ) + { + postProcessors.remove( postProcessor ); + } + + public void removeValuesSource( ValueSource valueSource ) + { + valueSources.remove( valueSource ); + } + + public void setCacheAnswers( boolean cacheAnswers ) + { + } +} Modified: maven/components/branches/maven-2.1.x/maven-project/src/test/java/org/apache/maven/project/artifact/VersionExpressionTransformationTest.java URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.x/maven-project/src/test/java/org/apache/maven/project/artifact/VersionExpressionTransformationTest.java?rev=768992&r1=768991&r2=768992&view=diff ============================================================================== --- maven/components/branches/maven-2.1.x/maven-project/src/test/java/org/apache/maven/project/artifact/VersionExpressionTransformationTest.java (original) +++ maven/components/branches/maven-2.1.x/maven-project/src/test/java/org/apache/maven/project/artifact/VersionExpressionTransformationTest.java Mon Apr 27 13:58:48 2009 @@ -64,6 +64,7 @@ import java.net.URL; import java.util.Collections; import java.util.HashSet; +import java.util.Iterator; import java.util.Properties; import java.util.Set; @@ -75,7 +76,7 @@ private VersionExpressionTransformation transformation; - private Set<File> toDelete = new HashSet<File>(); + private Set toDelete = new HashSet(); public void setUp() throws Exception @@ -95,8 +96,9 @@ if ( toDelete != null && !toDelete.isEmpty() ) { - for ( File f : toDelete ) + for ( Iterator it = toDelete.iterator(); it.hasNext(); ) { + File f = (File) it.next(); try { FileUtils.forceDelete( f ); Modified: maven/components/branches/maven-2.1.x/pom.xml URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.x/pom.xml?rev=768992&r1=768991&r2=768992&view=diff ============================================================================== --- maven/components/branches/maven-2.1.x/pom.xml (original) +++ maven/components/branches/maven-2.1.x/pom.xml Mon Apr 27 13:58:48 2009 @@ -135,8 +135,8 @@ <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> <configuration> - <source>1.5</source> - <target>1.5</target> + <source>1.4</source> + <target>1.4</target> </configuration> </plugin> <plugin>