You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by si...@apache.org on 2008/11/14 21:10:52 UTC

svn commit: r714122 - in /maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder: impl/DefaultProjectBuilder.java listeners/ listeners/PluginExtensionListener.java

Author: sisbell
Date: Fri Nov 14 12:10:52 2008
New Revision: 714122

URL: http://svn.apache.org/viewvc?rev=714122&view=rev
Log:
Checked in support for plugin extension listener. Not using a configurable plexus component yet. The listener is added directly to the transform.

Added:
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/listeners/
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/listeners/PluginExtensionListener.java
Modified:
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java?rev=714122&r1=714121&r2=714122&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java Fri Nov 14 12:10:52 2008
@@ -33,12 +33,10 @@
 import org.apache.maven.project.builder.PomClassicDomainModel;
 import org.apache.maven.project.builder.PomClassicTransformer;
 import org.apache.maven.project.builder.ProjectBuilder;
+import org.apache.maven.project.builder.listeners.PluginExtensionListener;
 import org.apache.maven.project.validation.ModelValidationResult;
 import org.apache.maven.project.validation.ModelValidator;
-import org.apache.maven.shared.model.DomainModel;
-import org.apache.maven.shared.model.ImportModel;
-import org.apache.maven.shared.model.InterpolatorProperty;
-import org.apache.maven.shared.model.ModelTransformerContext;
+import org.apache.maven.shared.model.*;
 import org.codehaus.plexus.logging.LogEnabled;
 import org.codehaus.plexus.logging.Logger;
 
@@ -178,7 +176,7 @@
                                                                                                 transformer,
                                                                                                 importModels,
                                                                                                 properties,
-                                                                                                null) );
+                                                                                                Arrays.asList((ModelEventListener) new PluginExtensionListener())) );
         try
         {
             MavenProject mavenProject = new MavenProject( transformedDomainModel.getModel(), artifactFactory,

Added: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/listeners/PluginExtensionListener.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/listeners/PluginExtensionListener.java?rev=714122&view=auto
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/listeners/PluginExtensionListener.java (added)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/listeners/PluginExtensionListener.java Fri Nov 14 12:10:52 2008
@@ -0,0 +1,66 @@
+package org.apache.maven.project.builder.listeners;
+
+import org.apache.maven.shared.model.ModelEventListener;
+import org.apache.maven.shared.model.ModelContainer;
+import org.apache.maven.shared.model.ModelContainerFactory;
+import org.apache.maven.shared.model.ModelProperty;
+import org.apache.maven.project.builder.ProjectUri;
+import org.apache.maven.project.builder.ArtifactModelContainerFactory;
+
+import java.util.List;
+import java.util.Collection;
+import java.util.Arrays;
+import java.util.ArrayList;
+
+public class PluginExtensionListener implements ModelEventListener {
+
+    public void fire(List<ModelContainer> modelContainers) {
+        List<Plugin> pluginsWithExtension = new ArrayList<Plugin>();
+        for (ModelContainer mc : modelContainers) {
+            if(hasExtension(mc)) {
+                pluginsWithExtension.add(new Plugin(mc.getProperties()));
+            }
+        }
+
+        //Do something with plugins here
+    }
+
+    public List<String> getUris() {
+        return Arrays.asList(ProjectUri.Build.Plugins.Plugin.xUri);
+    }
+
+    public Collection<ModelContainerFactory> getModelContainerFactories() {
+        return Arrays.asList((ModelContainerFactory) new ArtifactModelContainerFactory());
+    }
+
+    private static boolean hasExtension(ModelContainer container) {
+        for (ModelProperty mp : container.getProperties()) {
+            if (mp.getUri().equals(ProjectUri.Build.Plugins.Plugin.extensions) && mp.getValue().equals("true")) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private static class Plugin {
+
+        private String groupId;
+
+        private String artifactId;
+
+        private String version;
+
+        Plugin(List<ModelProperty> modelProperties) {
+            for(ModelProperty mp : modelProperties) {
+                if(mp.getUri().equals(ProjectUri.Build.Plugins.Plugin.groupId)) {
+                    groupId = mp.getValue();
+                } else if(mp.getUri().equals(ProjectUri.Build.Plugins.Plugin.artifactId)) {
+                    artifactId = mp.getValue();
+                } else if(mp.getUri().equals(ProjectUri.Build.Plugins.Plugin.version)) {
+                    version = mp.getValue();
+                }
+                //Add additional info if needed
+            }
+        }
+    }
+}