You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kh...@apache.org on 2014/12/27 13:55:58 UTC

svn commit: r1648051 - in /maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear: AbstractEarMojo.java GenerateApplicationXmlMojo.java

Author: khmarbaise
Date: Sat Dec 27 12:55:58 2014
New Revision: 1648051

URL: http://svn.apache.org/r1648051
Log:
[MEAR-188] Project property cannot be resolved inside <env-entry> element
 Introduced interpolation within the envEntries elements its no possible
 having properties etc. within those elements.

Modified:
    maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/AbstractEarMojo.java
    maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/GenerateApplicationXmlMojo.java

Modified: maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/AbstractEarMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/AbstractEarMojo.java?rev=1648051&r1=1648050&r2=1648051&view=diff
==============================================================================
--- maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/AbstractEarMojo.java (original)
+++ maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/AbstractEarMojo.java Sat Dec 27 12:55:58 2014
@@ -31,8 +31,10 @@ import org.apache.maven.plugin.MojoExecu
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugin.ear.util.ArtifactTypeMappingService;
 import org.apache.maven.plugin.ear.util.JavaEEVersion;
+import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.filtering.MavenResourcesFiltering;
 import org.codehaus.plexus.configuration.PlexusConfiguration;
 import org.codehaus.plexus.configuration.PlexusConfigurationException;
 
@@ -159,6 +161,9 @@ public abstract class AbstractEarMojo
     @Parameter( defaultValue = "${project.build.directory}", required = true )
     private File tempFolder;
 
+    @Component
+    private MavenResourcesFiltering mavenResourcesFiltering;
+    
     private List<EarModule> earModules;
 
     private List<EarModule> allModules;

Modified: maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/GenerateApplicationXmlMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/GenerateApplicationXmlMojo.java?rev=1648051&r1=1648050&r2=1648051&view=diff
==============================================================================
--- maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/GenerateApplicationXmlMojo.java (original)
+++ maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/GenerateApplicationXmlMojo.java Sat Dec 27 12:55:58 2014
@@ -19,6 +19,12 @@ package org.apache.maven.plugin.ear;
  * under the License.
  */
 
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugin.ear.util.JavaEEVersion;
@@ -28,14 +34,13 @@ import org.apache.maven.plugins.annotati
 import org.apache.maven.plugins.annotations.ResolutionScope;
 import org.codehaus.plexus.configuration.PlexusConfiguration;
 import org.codehaus.plexus.configuration.PlexusConfigurationException;
+import org.codehaus.plexus.interpolation.InterpolationException;
+import org.codehaus.plexus.interpolation.Interpolator;
+import org.codehaus.plexus.interpolation.MapBasedValueSource;
+import org.codehaus.plexus.interpolation.StringSearchInterpolator;
+import org.codehaus.plexus.interpolation.ValueSource;
 import org.codehaus.plexus.util.FileUtils;
 
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
 /**
  * Generates the EAR deployment descriptor file(s).
  * 
@@ -44,7 +49,7 @@ import java.util.List;
  */
 // CHECKSTYLE_OFF: LineLength
 @Mojo( name = "generate-application-xml", defaultPhase = LifecyclePhase.GENERATE_RESOURCES, threadSafe = true, requiresDependencyResolution = ResolutionScope.TEST )
-//CHECKSTYLE_ON: LineLength
+// CHECKSTYLE_ON: LineLength
 public class GenerateApplicationXmlMojo
     extends AbstractEarMojo
 {
@@ -304,6 +309,28 @@ public class GenerateApplicationXmlMojo
     }
 
     /**
+     * This help method was needed otherwise the interpolate method of interpolator will make an empty string of a
+     * {@code null} element which results in supplemental elements for env-entry.
+     * 
+     * @param interpolator The interpolator
+     * @param element The element
+     * @return The interpolated elements.
+     * @throws InterpolationException in case of an error.
+     */
+    private String interpolate( Interpolator interpolator, String element )
+        throws InterpolationException
+    {
+        if ( element == null )
+        {
+            return element;
+        }
+        else
+        {
+            return interpolator.interpolate( element );
+        }
+    }
+
+    /**
      * Builds the env-entries based on the configuration.
      * 
      * @return a list of EnvEntry object(s)
@@ -319,14 +346,23 @@ public class GenerateApplicationXmlMojo
         }
         try
         {
+            StringSearchInterpolator ssi = new StringSearchInterpolator();
+            ValueSource vs = new MapBasedValueSource( project.getProperties() );
+            ssi.addValueSource( vs );
+
             final PlexusConfiguration[] allEnvEntries = envEntries.getChildren( EnvEntry.ENV_ENTRY );
 
             for ( PlexusConfiguration envEntry : allEnvEntries )
             {
-                final String childDescription = envEntry.getChild( EnvEntry.DESCRIPTION ).getValue();
-                final String childEnvEntryName = envEntry.getChild( EnvEntry.ENV_ENTRY_NAME ).getValue();
-                final String childEnvEntryType = envEntry.getChild( EnvEntry.ENV_ENTRY_TYPE ).getValue();
-                final String childEnvEntryValue = envEntry.getChild( EnvEntry.ENV_ENTRY_VALUE ).getValue();
+                // CHECKSTYLE_OFF: LineLength
+                final String childDescription = interpolate( ssi, envEntry.getChild( EnvEntry.DESCRIPTION ).getValue() );
+                final String childEnvEntryName =
+                    interpolate( ssi, envEntry.getChild( EnvEntry.ENV_ENTRY_NAME ).getValue() );
+                final String childEnvEntryType =
+                    interpolate( ssi, envEntry.getChild( EnvEntry.ENV_ENTRY_TYPE ).getValue() );
+                final String childEnvEntryValue =
+                    interpolate( ssi, envEntry.getChild( EnvEntry.ENV_ENTRY_VALUE ).getValue() );
+                // CHECKSTYLE_ON: LineLength
 
                 try
                 {
@@ -344,6 +380,10 @@ public class GenerateApplicationXmlMojo
         {
             throw new EarPluginException( "Invalid env-entry configuration", e );
         }
+        catch ( InterpolationException e )
+        {
+            throw new EarPluginException( "Interpolation exception:", e );
+        }
 
     }