Author: olamy
Date: Sat Sep  6 14:27:37 2008
New Revision: 692742

URL: http://svn.apache.org/viewvc?rev=692742&view=rev
Log:
[MSHARED-60] Filtering ${foo.file} evaluates to in full path to pom.xml



Modified:
    
maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenProjectValueSource.java
    
maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java
    
maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java
    
maven/shared/trunk/maven-filtering/src/test/units-files/maven-resources-filtering/maven-resources-filtering.txt

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=692742&r1=692741&r2=692742&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 Sep  6 14:27:37 2008
@@ -39,6 +39,8 @@
     private MavenProject project;
 
     private boolean escapedBackslashesInFilePath;
+    
+    private MavenResourcesExecution mavenResourcesExecution;
 
     public MavenProjectValueSource( MavenProject mavenProject  ) 
     {
@@ -47,13 +49,24 @@
     
     public MavenProjectValueSource( MavenProject mavenProject, boolean 
escapedBackslashesInFilePath ) 
     {
-       super();
 
        project = mavenProject;
 
        this.escapedBackslashesInFilePath = escapedBackslashesInFilePath;
     }
+
     
+    public MavenProjectValueSource( MavenProject mavenProject, boolean 
escapedBackslashesInFilePath,
+                                    MavenResourcesExecution 
mavenResourcesExecution )
+    {
+        super();
+
+        project = mavenProject;
+
+        this.escapedBackslashesInFilePath = escapedBackslashesInFilePath;
+
+        this.mavenResourcesExecution = mavenResourcesExecution;
+    }
 
     public Object getValue( String expression )
     {
@@ -65,7 +78,7 @@
         Object value = null;
         try 
         {
-            value = ReflectionValueExtractor.evaluate( "" + expression, 
project );
+            value = ReflectionValueExtractor.evaluate( "" + expression, 
project, IsProjectExpression( expression ) );
 
             if ( escapedBackslashesInFilePath && value != null
                 && "java.lang.String".equals( value.getClass().getName() ) )
@@ -87,4 +100,18 @@
         } 
         return value;
     }    
+    
+    private boolean IsProjectExpression( String key )
+    {
+        if ( StringUtils.isEmpty( key ) )
+        {
+            return false;
+        }
+        if ( mavenResourcesExecution != null )
+        {
+            return 
mavenResourcesExecution.getProjectStartExpressions().contains( key );
+        }
+        // we use default values here
+        return ( key.startsWith( "project." ) || key.startsWith( "pom." ) );
+    }
 }

Modified: 
maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java?rev=692742&r1=692741&r2=692742&view=diff
==============================================================================
--- 
maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java
 (original)
+++ 
maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/MavenResourcesExecution.java
 Sat Sep  6 14:27:37 2008
@@ -62,10 +62,18 @@
 
     private boolean useDefaultFilterWrappers = false;
     
+    /** 
+     * List of String considered as expressions which contains values in the 
project/pom : pom project
+     * default value will be pom and project.
+     * 
+     */
+    private List projectStartExpressions = new ArrayList();
+    
     
     public MavenResourcesExecution()
     {
-        // nothing here just add an empty constructor for java bean convention
+        projectStartExpressions.add( "pom" );
+        projectStartExpressions.add( "project" );
     }
     
     /**
@@ -81,6 +89,7 @@
     public MavenResourcesExecution( List resources, File outputDirectory, 
MavenProject mavenProject, String encoding,
                                     List fileFilters, List 
nonFilteredFileExtensions, MavenSession mavenSession )
     {
+        this();
         this.resources = resources;
         this.outputDirectory = outputDirectory;
         this.mavenProject = mavenProject;
@@ -95,6 +104,7 @@
     public MavenResourcesExecution( List resources, File outputDirectory, 
String encoding, List filterWrappers,
                                     File resourcesBaseDirectory, List 
nonFilteredFileExtensions )
     {
+        this();
         this.resources = resources;
         this.outputDirectory = outputDirectory;
         this.encoding = encoding;
@@ -273,5 +283,15 @@
     {
         this.useDefaultFilterWrappers = useDefaultFilterWrappers;
     }
+
+    public List getProjectStartExpressions()
+    {
+        return projectStartExpressions;
+    }
+
+    public void setProjectStartExpressions( List projectStartExpressions )
+    {
+        this.projectStartExpressions = projectStartExpressions;
+    }
    
 }

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=692742&r1=692741&r2=692742&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 Sep  6 14:27:37 2008
@@ -148,7 +148,8 @@
         assertEquals( "1.0", result.get( "version" ) );
         assertEquals( "org.apache", result.get( "groupId" ) );
         assertEquals( "bar", result.get( "foo" ) );
-
+        assertEquals( "${foo.version}", result.get( "fooVersion" ) );
+        
         assertEquals( "@@", result.getProperty( "emptyexpression" ) );
         assertEquals( "${}", result.getProperty( "emptyexpression2" ) );
         assertEquals( System.getProperty( "user.dir" ), result.getProperty( 
"userDir" ) );

Modified: 
maven/shared/trunk/maven-filtering/src/test/units-files/maven-resources-filtering/maven-resources-filtering.txt
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/units-files/maven-resources-filtering/maven-resources-filtering.txt?rev=692742&r1=692741&r2=692742&view=diff
==============================================================================
--- 
maven/shared/trunk/maven-filtering/src/test/units-files/maven-resources-filtering/maven-resources-filtering.txt
 (original)
+++ 
maven/shared/trunk/maven-filtering/src/test/units-files/maven-resources-filtering/maven-resources-filtering.txt
 Sat Sep  6 14:27:37 2008
@@ -25,4 +25,5 @@
 emptyexpression=@@
 emptyexpression2=${}
 javaVersion=${java.version}
[EMAIL PROTECTED]@
\ No newline at end of file
[EMAIL PROTECTED]@
+fooVersion=${foo.version}
\ No newline at end of file


Reply via email to