Author: clement
Date: Wed Feb  9 11:00:07 2011
New Revision: 1068840

URL: http://svn.apache.org/viewvc?rev=1068840&view=rev
Log:
Fix FELIX-2833 The maven-ipojo-plugin  does not support manipulating artifact 
with a classifier

Modified:
    felix/trunk/ipojo/plugin/doc/changelog.txt
    
felix/trunk/ipojo/plugin/src/main/java/org/apache/felix/ipojo/plugin/ManipulatorMojo.java

Modified: felix/trunk/ipojo/plugin/doc/changelog.txt
URL: 
http://svn.apache.org/viewvc/felix/trunk/ipojo/plugin/doc/changelog.txt?rev=1068840&r1=1068839&r2=1068840&view=diff
==============================================================================
--- felix/trunk/ipojo/plugin/doc/changelog.txt (original)
+++ felix/trunk/ipojo/plugin/doc/changelog.txt Wed Feb  9 11:00:07 2011
@@ -3,6 +3,7 @@ Changes from the 1.8.0 to 1.8.2
 ** Bug
     * [FELIX-2825] - The maven-ipojo-plugin does not replace component classes 
in WAR files
     * [FELIX-2829] - The maven-ipojo-plugin archetype descriptor is not conform
+    * [FELIX-2833] - The maven-ipojo-plugin  does not support manipulating 
artifact with a classifier
 
 Changes from the 1.6.0 to 1.8.0
 -------------------------------

Modified: 
felix/trunk/ipojo/plugin/src/main/java/org/apache/felix/ipojo/plugin/ManipulatorMojo.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/ipojo/plugin/src/main/java/org/apache/felix/ipojo/plugin/ManipulatorMojo.java?rev=1068840&r1=1068839&r2=1068840&view=diff
==============================================================================
--- 
felix/trunk/ipojo/plugin/src/main/java/org/apache/felix/ipojo/plugin/ManipulatorMojo.java
 (original)
+++ 
felix/trunk/ipojo/plugin/src/main/java/org/apache/felix/ipojo/plugin/ManipulatorMojo.java
 Wed Feb  9 11:00:07 2011
@@ -25,6 +25,7 @@ import java.util.Arrays;
 import java.util.List;
 
 import org.apache.felix.ipojo.manipulator.Pojoization;
+import org.apache.maven.artifact.Artifact;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.project.MavenProject;
@@ -73,6 +74,13 @@ public class ManipulatorMojo extends Abs
     private String m_classifier;
 
     /**
+     * If set, select the manipulated artifact using this classifier.
+     *
+     * @parameter alias="input-classifier"
+     */
+    private String m_inputClassifier;
+
+    /**
      * The Maven project.
      *
      * @parameter expression="${project}"
@@ -106,10 +114,6 @@ public class ManipulatorMojo extends Abs
      */
     private boolean m_ignoreEmbeddedXSD;
 
-    protected MavenProject getProject() {
-        return this.m_project;
-    }
-
     private boolean isXML() {
         return m_metadata != null && (m_metadata.indexOf('<') > -1);
     }
@@ -121,8 +125,10 @@ public class ManipulatorMojo extends Abs
      */
     public void execute() throws MojoExecutionException {
         // ignore project types not supported, useful when the plugin is 
configured in the parent pom
-        if 
(!this.m_supportedProjectTypes.contains(this.getProject().getArtifact().getType()))
 {
-            this.getLog().debug("Ignoring project " + 
this.getProject().getArtifact() + " : type " + 
this.getProject().getArtifact().getType() + " is not supported by iPOJO plugin, 
supported types are " + this.m_supportedProjectTypes);
+        if 
(!this.m_supportedProjectTypes.contains(m_project.getArtifact().getType())) {
+            this.getLog().debug("Ignoring project "
+                       + m_project.getArtifact() + " : type " + 
m_project.getArtifact().getType()
+                       + " is not supported by iPOJO plugin, supported types 
are " + this.m_supportedProjectTypes);
             return;
         }
 
@@ -186,10 +192,32 @@ public class ManipulatorMojo extends Abs
         }
 
         // Get input bundle, we use the already create artifact.
-        File in = m_project.getArtifact().getFile();
-        getLog().info("Input Bundle File : " + in.getAbsolutePath());
-        if (! in.exists()) {
-            throw new MojoExecutionException("The specified bundle file does 
not exist : " + in.getAbsolutePath());
+        File in = null;
+        if (m_inputClassifier == null) {
+               in = m_project.getArtifact().getFile();
+               getLog().info("Input Bundle File : " + in.getAbsolutePath());
+               if (! in.exists()) {
+                       throw new MojoExecutionException("The specified bundle 
file does not exist : " + in.getAbsolutePath());
+               }
+        } else {
+               // Look from attached artifacts.
+               List attached = m_project.getAttachedArtifacts();
+               for (int i = 0; in == null  && attached != null  && i < 
attached.size(); i++) {
+                       Artifact artifact = (Artifact) attached.get(i);
+                       if (artifact.hasClassifier()  && 
m_inputClassifier.equals(artifact.getClassifier())) {
+                               in = artifact.getFile();
+                       }
+               }
+
+               if (in == null) {
+                       throw new MojoExecutionException("Cannot find the file 
to manipulate, " +
+                                       "no attached artifact with classifier " 
+ m_inputClassifier);
+               }
+
+               getLog().info("Input Bundle File : " + in.getAbsolutePath());
+               if (! in.exists()) {
+                       throw new MojoExecutionException("The specified bundle 
file does not exist : " + in.getAbsolutePath());
+               }
         }
 
         File out = new File(m_buildDirectory + File.separator + "_out.jar");


Reply via email to