You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2008/11/15 23:42:57 UTC

svn commit: r717943 - in /maven/shared/trunk/maven-filtering: ./ src/main/java/org/apache/maven/shared/filtering/ src/test/java/org/apache/maven/shared/filtering/ src/test/units-files/MSHARED-81/ src/test/units-files/MSHARED-81/filtered/ src/test/units...

Author: olamy
Date: Sat Nov 15 14:42:56 2008
New Revision: 717943

URL: http://svn.apache.org/viewvc?rev=717943&view=rev
Log:
[MSHARED-81] change in @ translation behavior in maven-resources-plugin 2.3
add unit test as the issue was in plexus-interpolation


Added:
    maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/
    maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/expected-filtered.properties   (with props)
    maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/filtered/
    maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/filtered/filtered.properties   (with props)
    maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/resources/
    maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/resources/unfiltered.properties   (with props)
Modified:
    maven/shared/trunk/maven-filtering/pom.xml
    maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
    maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenProjectValueSource.java
    maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java
    maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/StubMavenProject.java

Modified: maven/shared/trunk/maven-filtering/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/pom.xml?rev=717943&r1=717942&r2=717943&view=diff
==============================================================================
--- maven/shared/trunk/maven-filtering/pom.xml (original)
+++ maven/shared/trunk/maven-filtering/pom.xml Sat Nov 15 14:42:56 2008
@@ -116,8 +116,22 @@
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-interpolation</artifactId>
-      <version>1.6</version>
+      <version>1.7-SNAPSHOT</version>
     </dependency>
   </dependencies>
   
+  <!-- TODO remove when plexus-interpolation is released -->
+  <repositories>
+    <repository>
+      <id>codehaus.snapshot</id>
+      <url>http://snapshots.repository.codehaus.org/</url>
+      <releases>
+        <enabled>false</enabled>
+      </releases>
+      <snapshots>
+        <enabled>true</enabled>
+      </snapshots>
+    </repository>
+  </repositories>  
+  
 </project>

Modified: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java?rev=717943&r1=717942&r2=717943&view=diff
==============================================================================
--- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java (original)
+++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java Sat Nov 15 14:42:56 2008
@@ -172,13 +172,13 @@
             public Reader getReader( Reader reader )
             {
                 StringSearchInterpolator propertiesInterpolator = new StringSearchInterpolator();
-                propertiesInterpolator.addValueSource( propertiesValueSource );
+                MavenProjectValueSource valueSource = new MavenProjectValueSource( mavenProject, escapedBackslashesInFilePath );
+                valueSource.setPropertiesValueSource( propertiesValueSource );
+                propertiesInterpolator.addValueSource( valueSource );
                 propertiesInterpolator.setEscapeString( escapeString );
                 InterpolatorFilterReader filterReader = new InterpolatorFilterReader( reader, propertiesInterpolator );
                 filterReader.setInterpolateWithPrefixPattern( false );
                 filterReader.setEscapeString( escapeString );
-                // first try it must be preserved
-                filterReader.setPreserveEscapeString( true );
                 return filterReader;
             }
         };
@@ -190,54 +190,19 @@
             public Reader getReader( Reader reader )
             {
                 StringSearchInterpolator propertiesInterpolator = new StringSearchInterpolator( "@", "@" );
-                propertiesInterpolator.addValueSource( propertiesValueSource );
+                MavenProjectValueSource valueSource = new MavenProjectValueSource( mavenProject, escapedBackslashesInFilePath );
+                valueSource.setPropertiesValueSource( propertiesValueSource );
+                propertiesInterpolator.addValueSource( valueSource );
                 propertiesInterpolator.setEscapeString( escapeString );
                 InterpolatorFilterReader filterReader = new InterpolatorFilterReader( reader, propertiesInterpolator,
                                                                                       "@", "@" );
                 filterReader.setInterpolateWithPrefixPattern( false );
                 filterReader.setEscapeString( escapeString );
-                filterReader.setPreserveEscapeString( true );
                 return filterReader;
             }
         };
         defaultFilterWrappers.add( second );
 
-        // support ${token} with mavenProject reflection
-        FileUtils.FilterWrapper third = new FileUtils.FilterWrapper()
-        {
-            public Reader getReader( Reader reader )
-            {
-                StringSearchInterpolator mavenProjectInterpolator = new StringSearchInterpolator();
-
-                ValueSource valueSource = new MavenProjectValueSource( mavenProject, escapedBackslashesInFilePath );
-                mavenProjectInterpolator.addValueSource( valueSource );
-                mavenProjectInterpolator.setEscapeString( escapeString );
-                InterpolatorFilterReader filterReader = new InterpolatorFilterReader( reader, mavenProjectInterpolator );
-                filterReader.setInterpolateWithPrefixPattern( false );
-                filterReader.setEscapeString( escapeString );
-                return filterReader;
-            }
-        };
-        defaultFilterWrappers.add( third );
-
-        // support @token@ with mavenProject reflection
-        FileUtils.FilterWrapper fourth = new FileUtils.FilterWrapper()
-        {
-            public Reader getReader( Reader reader )
-            {
-                StringSearchInterpolator mavenProjectInterpolator = new StringSearchInterpolator( "@", "@" );
-                ValueSource valueSource = new MavenProjectValueSource( mavenProject, escapedBackslashesInFilePath );
-                mavenProjectInterpolator.addValueSource( valueSource );
-                mavenProjectInterpolator.setEscapeString( escapeString );
-                InterpolatorFilterReader filterReader = new InterpolatorFilterReader( reader, mavenProjectInterpolator,
-                                                                                      "@", "@" );
-                filterReader.setInterpolateWithPrefixPattern( false );
-                filterReader.setEscapeString( escapeString );
-                return filterReader;
-            }
-        };
-        defaultFilterWrappers.add( fourth );
-
         return defaultFilterWrappers;
     }
 

Modified: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenProjectValueSource.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenProjectValueSource.java?rev=717943&r1=717942&r2=717943&view=diff
==============================================================================
--- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenProjectValueSource.java (original)
+++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenProjectValueSource.java Sat Nov 15 14:42:56 2008
@@ -43,33 +43,43 @@
     private boolean escapedBackslashesInFilePath;
     
     private MavenResourcesExecution mavenResourcesExecution;
-
-    public MavenProjectValueSource( MavenProject mavenProject  ) 
-    {
-       this( mavenProject, false );
-    }    
     
-    public MavenProjectValueSource( MavenProject mavenProject, boolean escapedBackslashesInFilePath ) 
-    {
+    /** 
+     * @since 1.0-beta-3
+     */
+    private ValueSource propertiesValueSource;
 
-       project = mavenProject;
+    public MavenProjectValueSource( MavenProject mavenProject )
+    {
+        this( mavenProject, false );
+    }
 
-       this.escapedBackslashesInFilePath = escapedBackslashesInFilePath;
+    public MavenProjectValueSource( MavenProject mavenProject, boolean escapedBackslashesInFilePath )
+    {
+        this( mavenProject, escapedBackslashesInFilePath, null );
     }
 
-    
     public MavenProjectValueSource( MavenProject mavenProject, boolean escapedBackslashesInFilePath,
                                     MavenResourcesExecution mavenResourcesExecution )
     {
-        super();
+        this(mavenProject, escapedBackslashesInFilePath, mavenResourcesExecution, null);
+    }
 
-        project = mavenProject;
+    /** 
+     * @since 1.0-beta-3
+     */    
+    public MavenProjectValueSource( MavenProject mavenProject, boolean escapedBackslashesInFilePath,
+                                    MavenResourcesExecution mavenResourcesExecution, ValueSource propertiesValueSource )
+    {
+        this.project = mavenProject;
 
         this.escapedBackslashesInFilePath = escapedBackslashesInFilePath;
 
         this.mavenResourcesExecution = mavenResourcesExecution;
+        
+        this.propertiesValueSource = propertiesValueSource;
     }
-
+    
     public Object getValue( String expression )
     {
         if ( expression == null || StringUtils.isEmpty( expression.toString() ) )
@@ -77,7 +87,18 @@
             return null;
         }
         
+        
         Object value = null;
+        
+        if ( propertiesValueSource != null )
+        {
+            value = propertiesValueSource.getValue( expression );
+            if (value != null)
+            {
+                return value;
+            }
+        }
+        
         try 
         {
             value = ReflectionValueExtractor.evaluate( "" + expression, project, isProjectExpression( expression ) );
@@ -127,4 +148,16 @@
         // nothing here only NPE free
         return Collections.EMPTY_LIST;
     }
+
+    public ValueSource getPropertiesValueSource()
+    {
+        return propertiesValueSource;
+    }
+
+    public void setPropertiesValueSource( ValueSource propertiesValueSource )
+    {
+        this.propertiesValueSource = propertiesValueSource;
+    }
+
+    
 }

Modified: maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java?rev=717943&r1=717942&r2=717943&view=diff
==============================================================================
--- maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java (original)
+++ maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java Sat Nov 15 14:42:56 2008
@@ -562,5 +562,62 @@
         }
     }    
     
+    /**
+     * unit test for MSHARED-81 : http://jira.codehaus.org/browse/MSHARED-81
+     */
+    public void testMSHARED81()
+        throws Exception
+    {
+        StubMavenProject mavenProject = new StubMavenProject( new File( "/foo/bar" ) );
+        
+        mavenProject.setVersion( "1.0" );
+
+        mavenProject.addProperty( "escaped","this is escaped");
+        mavenProject.addProperty( "escaped.at","this is escaped.at");
+        mavenProject.addProperty( "foo","this is foo");
+        mavenProject.addProperty( "bar","this is bar");
+        
+        MavenResourcesFiltering mavenResourcesFiltering = (MavenResourcesFiltering) lookup( MavenResourcesFiltering.class
+            .getName() );
+
+        List resources = new ArrayList();
+        resources.add( new Resource()
+        {
+            {
+                setDirectory( getBasedir() + "/src/test/units-files/MSHARED-81/resources" );
+                setFiltering( false );
+            }
+        } );
+        resources.add( new Resource()
+        {
+            {
+                setDirectory( getBasedir() + "/src/test/units-files/MSHARED-81/filtered" );
+                setFiltering( true );
+            }
+        } );
+        File output = new File( outputDirectory, "MSHARED-81" );
+        MavenResourcesExecution mavenResourcesExecution = new MavenResourcesExecution( resources, output, mavenProject,
+                                                                                       null, Collections.EMPTY_LIST,
+                                                                                       Collections.EMPTY_LIST,
+                                                                                       new StubMavenSession() );
+        mavenResourcesExecution.setIncludeEmptyDirs( true );
+        mavenResourcesExecution.setEscapeString( "\\" );
+        mavenResourcesFiltering.filterResources( mavenResourcesExecution );
+
+        Properties filteredResult = PropertyUtils.loadPropertyFile( new File( output, "filtered.properties" ), null );
+
+        Properties expectedFilteredResult = PropertyUtils.loadPropertyFile( new File( getBasedir()
+            + "/src/test/units-files/MSHARED-81", "expected-filtered.properties" ), null );
+
+        assertTrue( filteredResult.equals( expectedFilteredResult ) );
+
+        Properties nonFilteredResult = PropertyUtils.loadPropertyFile( new File( output, "unfiltered.properties" ),
+                                                                       null );
+
+        Properties expectedNonFilteredResult = PropertyUtils.loadPropertyFile( new File( getBasedir()
+            + "/src/test/units-files/MSHARED-81/resources", "unfiltered.properties" ), null );
+
+        assertTrue( nonFilteredResult.equals( expectedNonFilteredResult ) );
+    }        
     
 }

Modified: maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/StubMavenProject.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/StubMavenProject.java?rev=717943&r1=717942&r2=717943&view=diff
==============================================================================
--- maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/StubMavenProject.java (original)
+++ maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/StubMavenProject.java Sat Nov 15 14:42:56 2008
@@ -51,6 +51,15 @@
         this.properties = properties;
     }
 
+    public void addProperty(String key, String value)
+    {
+        if (this.properties == null)
+        {
+            this.properties = new Properties();
+        }
+        this.properties.put( key, value );
+    }
+    
     public File getBasedir()
     {
         return basedir;

Added: maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/expected-filtered.properties
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/expected-filtered.properties?rev=717943&view=auto
==============================================================================
--- maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/expected-filtered.properties (added)
+++ maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/expected-filtered.properties Sat Nov 15 14:42:56 2008
@@ -0,0 +1,34 @@
+#/*
+# * 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.
+# */
+escaped=${escaped}
+escaped.at=@escaped.at@
+foo=this is foo
+project.foo=${project.foo}
+bar=this is bar
+project.bar=@project.bar@
+not.a.property=${not.a.property}
+not.a.property.at=@not.a.property@
+version=1.0
+version.at=1.0
+project.version=1.0
+project.version.at=1.0
+target=@target@
+target.at=@target.at@
+project.target=@project.target@
+project.target.at=@project.target@

Propchange: maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/expected-filtered.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/expected-filtered.properties
------------------------------------------------------------------------------
    svn:executable = *

Propchange: maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/expected-filtered.properties
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/filtered/filtered.properties
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/filtered/filtered.properties?rev=717943&view=auto
==============================================================================
--- maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/filtered/filtered.properties (added)
+++ maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/filtered/filtered.properties Sat Nov 15 14:42:56 2008
@@ -0,0 +1,34 @@
+#/*
+# * 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.
+# */
+escaped=\${escaped}
+escaped.at=\@escaped.at@
+foo=${foo}
+project.foo=${project.foo}
+bar=@bar@
+project.bar=@project.bar@
+not.a.property=${not.a.property}
+not.a.property.at=@not.a.property@
+version=${version}
+version.at=@version@
+project.version=${project.version}
+project.version.at=@project.version@
+target=@target@
+target.at=@target.at@
+project.target=@project.target@
+project.target.at=@project.target@

Propchange: maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/filtered/filtered.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/filtered/filtered.properties
------------------------------------------------------------------------------
    svn:executable = *

Propchange: maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/filtered/filtered.properties
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/resources/unfiltered.properties
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/resources/unfiltered.properties?rev=717943&view=auto
==============================================================================
--- maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/resources/unfiltered.properties (added)
+++ maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/resources/unfiltered.properties Sat Nov 15 14:42:56 2008
@@ -0,0 +1,34 @@
+#/*
+# * 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.
+# */
+escaped=\${escaped}
+escaped.at=\@escaped.at@
+foo=${foo}
+project.foo=${project.foo}
+bar=@bar@
+project.bar=@project.bar@
+not.a.property=${not.a.property}
+not.a.property.at=@not.a.property@
+version=${version}
+version.at=@version@
+project.version=${project.version}
+project.version.at=@project.version@
+target=@target@
+target.at=@target.at@
+project.target=@project.target@
+project.target.at=@project.target@

Propchange: maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/resources/unfiltered.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/resources/unfiltered.properties
------------------------------------------------------------------------------
    svn:executable = *

Propchange: maven/shared/trunk/maven-filtering/src/test/units-files/MSHARED-81/resources/unfiltered.properties
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision