You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jd...@apache.org on 2006/10/09 05:20:04 UTC

svn commit: r454266 - in /geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency: Dependencies.java DependencyHelper.java DependencyResolutionListener.java DependencyTree.java ResolutionListenerAdapter.java

Author: jdillon
Date: Sun Oct  8 20:20:03 2006
New Revision: 454266

URL: http://svn.apache.org/viewvc?view=rev&rev=454266
Log:
Refactor the dependency stuff some more for easier use

Added:
    geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/DependencyTree.java   (with props)
    geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/ResolutionListenerAdapter.java   (with props)
Modified:
    geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/Dependencies.java
    geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/DependencyHelper.java
    geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/DependencyResolutionListener.java

Modified: geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/Dependencies.java
URL: http://svn.apache.org/viewvc/geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/Dependencies.java?view=diff&rev=454266&r1=454265&r2=454266
==============================================================================
--- geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/Dependencies.java (original)
+++ geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/Dependencies.java Sun Oct  8 20:20:03 2006
@@ -20,7 +20,6 @@
 package org.apache.geronimo.genesis.dependency;
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -28,15 +27,10 @@
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.ArtifactUtils;
-import org.apache.maven.artifact.factory.ArtifactFactory;
-import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
-import org.apache.maven.artifact.versioning.VersionRange;
-import org.apache.maven.model.Dependency;
-import org.apache.maven.model.DependencyManagement;
+
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.project.ProjectBuildingException;
 
-import org.apache.geronimo.genesis.dependency.DependencyResolutionListener;
+import org.apache.geronimo.genesis.dependency.DependencyTree.Node;
 
 //
 // NOTE: Lifetd from the maven-project-info-plugin
@@ -53,66 +47,39 @@
 
     private DependencyResolutionListener resolvedDependencies;
 
-    public Dependencies(MavenProject project, DependencyResolutionListener listener) {
-        this.projectDependencies = listener.getRootNode().getChildren();
+    public Dependencies(final MavenProject project, final DependencyResolutionListener listener) {
+        assert project != null;
+        assert listener != null;
+
+        this.projectDependencies = listener.getDependencyTree().getRootNode().getChildren();
         this.resolvedDependencies = listener;
 
         //
         // Workaround to ensure proper File objects in the Artifacts from the DependencyResolutionListener
         //
         Map projectMap = new HashMap();
-        Iterator it = project.getArtifacts().iterator();
-        while (it.hasNext()) {
-            Artifact artifact = (Artifact) it.next();
+        Iterator iter = project.getArtifacts().iterator();
+
+        while (iter.hasNext()) {
+            Artifact artifact = (Artifact) iter.next();
             projectMap.put(ArtifactUtils.versionlessKey(artifact), artifact);
         }
 
-        mapArtifactFiles(listener.getRootNode(), projectMap);
+        mapArtifactFiles(listener.getDependencyTree().getRootNode(), projectMap);
     }
 
-    public static Map getManagedVersionMap(MavenProject project, ArtifactFactory factory) throws ProjectBuildingException {
-        DependencyManagement dependencyManagement = project.getDependencyManagement();
-        Map managedVersionMap;
-
-        if (dependencyManagement != null && dependencyManagement.getDependencies() != null) {
-            managedVersionMap = new HashMap();
-            for (Iterator i = dependencyManagement.getDependencies().iterator(); i.hasNext();) {
-                Dependency d = (Dependency) i.next();
-
-                try {
-                    VersionRange versionRange = VersionRange.createFromVersionSpec(d.getVersion());
-                    Artifact artifact = factory.createDependencyArtifact(
-                            d.getGroupId(),
-                            d.getArtifactId(),
-                            versionRange,
-                            d.getType(),
-                            d.getClassifier(),
-                            d.getScope());
-                    managedVersionMap.put(d.getManagementKey(), artifact);
-                }
-                catch (InvalidVersionSpecificationException e) {
-                    throw new ProjectBuildingException(project.getId(),
-                            "Unable to parse version '" + d.getVersion() +
-                            "' for dependency '" + d.getManagementKey() + "': " + e.getMessage(), e);
-                }
-            }
-        }
-        else {
-            managedVersionMap = Collections.EMPTY_MAP;
-        }
-
-        return managedVersionMap;
-    }
+    private void mapArtifactFiles(final Node node, final Map projectMap) {
+        assert node != null;
+        assert projectMap != null;
 
-    private void mapArtifactFiles(DependencyResolutionListener.Node node, Map projectMap) {
         List childs = node.getChildren();
         if ((childs == null) || childs.isEmpty()) {
             return;
         }
 
-        Iterator it = childs.iterator();
-        while (it.hasNext()) {
-            DependencyResolutionListener.Node anode = (DependencyResolutionListener.Node) it.next();
+        Iterator iter = childs.iterator();
+        while (iter.hasNext()) {
+            Node anode = (Node) iter.next();
             String key = ArtifactUtils.versionlessKey(anode.getArtifact());
             Artifact projartifact = (Artifact) projectMap.get(key);
             if (projartifact != null) {
@@ -140,8 +107,8 @@
     public List getAllDependencies() {
         List deps = new ArrayList();
 
-        for (Iterator it = resolvedDependencies.getArtifacts().iterator(); it.hasNext();) {
-            DependencyResolutionListener.Node node = (DependencyResolutionListener.Node) it.next();
+        for (Iterator iter = resolvedDependencies.getArtifacts().iterator(); iter.hasNext();) {
+            Node node = (Node) iter.next();
             Artifact artifact = node.getArtifact();
             deps.add(artifact);
         }
@@ -163,7 +130,7 @@
         return dependenciesByScope;
     }
 
-    public DependencyResolutionListener.Node getResolvedRoot() {
-        return resolvedDependencies.getRootNode();
+    public Node getResolvedRoot() {
+        return resolvedDependencies.getDependencyTree().getRootNode();
     }
 }

Modified: geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/DependencyHelper.java
URL: http://svn.apache.org/viewvc/geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/DependencyHelper.java?view=diff&rev=454266&r1=454265&r2=454266
==============================================================================
--- geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/DependencyHelper.java (original)
+++ geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/DependencyHelper.java Sun Oct  8 20:20:03 2006
@@ -21,6 +21,8 @@
 
 import java.util.Map;
 import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
 
 import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.resolver.ArtifactCollector;
@@ -29,9 +31,14 @@
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
 import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.versioning.VersionRange;
+import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
+import org.apache.maven.artifact.Artifact;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.ProjectBuildingException;
 import org.apache.maven.project.artifact.InvalidDependencyVersionException;
+import org.apache.maven.model.DependencyManagement;
+import org.apache.maven.model.Dependency;
 
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.PlexusConstants;
@@ -59,28 +66,29 @@
 
     private PlexusContainer container;
 
+    private ArtifactRepository repository;
+
     //
     // TODO: Figure out how to get ${localRepository} injected so we don't need it passed in.
     //
 
-    /**
-     * ???
-     *
-     * @param project       The maven project
-     * @param repository    The local maven repository
-     * @return
-     * 
-     * @throws ProjectBuildingException
-     * @throws ArtifactResolutionException
-     * @throws InvalidDependencyVersionException
-     */
-    public DependencyResolutionListener resolveProject(final MavenProject project, final ArtifactRepository repository)
-        throws ProjectBuildingException, ArtifactResolutionException, InvalidDependencyVersionException
+    public void setArtifactRepository(final ArtifactRepository repository) {
+        this.repository = repository;
+    }
+
+    private ArtifactRepository getArtifactRepository() {
+        if (repository == null) {
+            throw new IllegalStateException("Not initialized; missing ArtifactRepository");
+        }
+        return repository;
+    }
+
+    public DependencyTree getDependencies(final MavenProject project)
+        throws ProjectBuildingException, InvalidDependencyVersionException, ArtifactResolutionException
     {
         assert project != null;
-        assert repository != null;
-        
-        Map managedVersions = Dependencies.getManagedVersionMap(project, artifactFactory);
+
+        Map managedVersions = getManagedVersionMap(project, artifactFactory);
         DependencyResolutionListener listener = new DependencyResolutionListener();
 
         if (project.getDependencyArtifacts() == null) {
@@ -91,13 +99,52 @@
                 project.getDependencyArtifacts(),
                 project.getArtifact(),
                 managedVersions,
-                repository,
+                getArtifactRepository(),
                 project.getRemoteArtifactRepositories(),
                 artifactMetadataSource,
                 null,
                 Collections.singletonList(listener));
+        
+        return listener.getDependencyTree();
+    }
+
+    public static Map getManagedVersionMap(final MavenProject project, final ArtifactFactory factory) throws ProjectBuildingException {
+        assert project != null;
+        assert factory != null;
+
+        DependencyManagement dependencyManagement = project.getDependencyManagement();
+        Map managedVersionMap;
+
+        if (dependencyManagement != null && dependencyManagement.getDependencies() != null) {
+            managedVersionMap = new HashMap();
+            Iterator iter = dependencyManagement.getDependencies().iterator();
+
+            while (iter.hasNext()) {
+                Dependency d = (Dependency) iter.next();
+
+                try {
+                    VersionRange versionRange = VersionRange.createFromVersionSpec(d.getVersion());
+                    Artifact artifact = factory.createDependencyArtifact(
+                            d.getGroupId(),
+                            d.getArtifactId(),
+                            versionRange,
+                            d.getType(),
+                            d.getClassifier(),
+                            d.getScope());
+                    managedVersionMap.put(d.getManagementKey(), artifact);
+                }
+                catch (InvalidVersionSpecificationException e) {
+                    throw new ProjectBuildingException(project.getId(),
+                            "Unable to parse version '" + d.getVersion() +
+                            "' for dependency '" + d.getManagementKey() + "': " + e.getMessage(), e);
+                }
+            }
+        }
+        else {
+            managedVersionMap = Collections.EMPTY_MAP;
+        }
 
-        return listener;
+        return managedVersionMap;
     }
 
     //

Modified: geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/DependencyResolutionListener.java
URL: http://svn.apache.org/viewvc/geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/DependencyResolutionListener.java?view=diff&rev=454266&r1=454265&r2=454266
==============================================================================
--- geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/DependencyResolutionListener.java (original)
+++ geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/DependencyResolutionListener.java Sun Oct  8 20:20:03 2006
@@ -19,16 +19,14 @@
 
 package org.apache.geronimo.genesis.dependency;
 
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import java.util.Stack;
 
 import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.resolver.ResolutionListener;
-import org.apache.maven.artifact.versioning.VersionRange;
+
+import org.apache.geronimo.genesis.dependency.DependencyTree.Node;
 
 //
 // NOTE: Lifetd from the maven-project-info-plugin
@@ -40,38 +38,46 @@
  * @version $Rev$ $Date$
  */
 public class DependencyResolutionListener
-    implements ResolutionListener
+    extends ResolutionListenerAdapter
 {
+    private DependencyTree tree = new DependencyTree();
+
+    private int currentDepth = 0;
+
     private Stack parents = new Stack();
 
     private Map artifacts = new HashMap();
 
-    private Node rootNode;
-
-    private int currentDepth = 0;
+    public DependencyTree getDependencyTree() {
+        return tree;
+    }
 
-    public void testArtifact(Artifact artifact) {
-        // intentionally blank
+    public Collection getArtifacts() {
+        return artifacts.values();
     }
+    
+    //
+    // ResolutionListener
+    //
 
-    public void startProcessChildren(Artifact artifact) {
+    public void startProcessChildren(final Artifact artifact) {
         Node node = (Node) artifacts.get(artifact.getDependencyConflictId());
 
         node.depth = currentDepth++;
         if (parents.isEmpty()) {
-            rootNode = node;
+            tree.rootNode = node;
         }
 
         parents.push(node);
     }
 
-    public void endProcessChildren(Artifact artifact) {
-        Node check = (Node) parents.pop();
-        assert artifact.equals(check.artifact);
+    public void endProcessChildren(final Artifact artifact) {
+        Node node = (Node) parents.pop();
+        assert artifact.equals(node.artifact);
         currentDepth--;
     }
 
-    public void omitForNearer(Artifact omitted, Artifact kept) {
+    public void omitForNearer(final Artifact omitted, final Artifact kept) {
         assert omitted.getDependencyConflictId().equals(kept.getDependencyConflictId());
 
         Node prev = (Node) artifacts.get(omitted.getDependencyConflictId());
@@ -85,11 +91,11 @@
         includeArtifact(kept);
     }
 
-    public void omitForCycle(Artifact artifact) {
+    public void omitForCycle(final Artifact artifact) {
         // intentionally blank
     }
 
-    public void includeArtifact(Artifact artifact) {
+    public void includeArtifact(final Artifact artifact) {
         if (artifacts.containsKey(artifact.getDependencyConflictId())) {
             Node prev = (Node) artifacts.get(artifact.getDependencyConflictId());
             if (prev.parent != null) {
@@ -108,13 +114,12 @@
         artifacts.put(artifact.getDependencyConflictId(), node);
     }
 
-    public void updateScope(Artifact artifact, String scope) {
+    public void updateScope(final Artifact artifact, final String scope) {
         Node node = (Node) artifacts.get(artifact.getDependencyConflictId());
-
         node.artifact.setScope(scope);
     }
 
-    public void manageArtifact(Artifact artifact, Artifact replacement) {
+    public void manageArtifact(final Artifact artifact, final Artifact replacement) {
         Node node = (Node) artifacts.get(artifact.getDependencyConflictId());
 
         if (node != null) {
@@ -125,48 +130,5 @@
                 node.artifact.setScope(replacement.getScope());
             }
         }
-    }
-
-    public void updateScopeCurrentPom(Artifact artifact, String key) {
-        // intentionally blank
-    }
-
-    public void selectVersionFromRange(Artifact artifact) {
-        // intentionally blank
-    }
-
-    public void restrictRange(Artifact artifact, Artifact artifact1, VersionRange versionRange) {
-        // intentionally blank
-    }
-
-    public Collection getArtifacts() {
-        return artifacts.values();
-    }
-
-    public static class Node
-    {
-        private Node parent;
-
-        private List children = new ArrayList();
-
-        private Artifact artifact;
-
-        private int depth;
-
-        public List getChildren() {
-            return children;
-        }
-
-        public Artifact getArtifact() {
-            return artifact;
-        }
-
-        public int getDepth() {
-            return depth;
-        }
-    }
-
-    public Node getRootNode() {
-        return rootNode;
     }
 }

Added: geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/DependencyTree.java
URL: http://svn.apache.org/viewvc/geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/DependencyTree.java?view=auto&rev=454266
==============================================================================
--- geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/DependencyTree.java (added)
+++ geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/DependencyTree.java Sun Oct  8 20:20:03 2006
@@ -0,0 +1,76 @@
+/*
+ * 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.
+ */
+
+package org.apache.geronimo.genesis.dependency;
+
+import java.util.Stack;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Collection;
+import java.util.List;
+import java.util.ArrayList;
+
+import org.apache.maven.artifact.Artifact;
+
+/**
+ * ???
+ *
+ * @version $Rev$ $Date$
+ */
+public class DependencyTree
+{
+    Map artifacts = new HashMap();
+
+    Node rootNode;
+
+    public Collection getArtifacts() {
+        return artifacts.values();
+    }
+
+    public Node getRootNode() {
+        return rootNode;
+    }
+
+    //
+    // Node
+    //
+
+    public static class Node
+    {
+        Node parent;
+
+        List children = new ArrayList();
+
+        Artifact artifact;
+
+        int depth;
+
+        public List getChildren() {
+            return children;
+        }
+
+        public Artifact getArtifact() {
+            return artifact;
+        }
+
+        public int getDepth() {
+            return depth;
+        }
+    }
+}

Propchange: geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/DependencyTree.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/DependencyTree.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/DependencyTree.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/ResolutionListenerAdapter.java
URL: http://svn.apache.org/viewvc/geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/ResolutionListenerAdapter.java?view=auto&rev=454266
==============================================================================
--- geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/ResolutionListenerAdapter.java (added)
+++ geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/ResolutionListenerAdapter.java Sun Oct  8 20:20:03 2006
@@ -0,0 +1,77 @@
+/*
+ * 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.
+ */
+
+package org.apache.geronimo.genesis.dependency;
+
+import org.apache.maven.artifact.resolver.ResolutionListener;
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.versioning.VersionRange;
+
+/**
+ * ???
+ *
+ * @version $Rev$ $Date$
+ */
+public class ResolutionListenerAdapter
+    implements ResolutionListener
+{
+    public void testArtifact(Artifact artifact) {
+        // empty
+    }
+
+    public void startProcessChildren(Artifact artifact) {
+        // empty
+    }
+
+    public void endProcessChildren(Artifact artifact) {
+        // empty
+    }
+
+    public void includeArtifact(Artifact artifact) {
+        // empty
+    }
+
+    public void omitForNearer(Artifact artifact, Artifact artifact1) {
+        // empty
+    }
+
+    public void updateScope(Artifact artifact, String string) {
+        // empty
+    }
+
+    public void manageArtifact(Artifact artifact, Artifact artifact1) {
+        // empty
+    }
+
+    public void omitForCycle(Artifact artifact) {
+        // empty
+    }
+
+    public void updateScopeCurrentPom(Artifact artifact, String string) {
+        // empty
+    }
+
+    public void selectVersionFromRange(Artifact artifact) {
+        // empty
+    }
+
+    public void restrictRange(Artifact artifact, Artifact artifact1, VersionRange versionRange) {
+        // empty
+    }
+}

Propchange: geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/ResolutionListenerAdapter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/ResolutionListenerAdapter.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/dependency/ResolutionListenerAdapter.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain