You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2012/07/23 00:14:56 UTC

svn commit: r1364446 - in /maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph: ./ internal/

Author: hboutemy
Date: Sun Jul 22 22:14:55 2012
New Revision: 1364446

URL: http://svn.apache.org/viewvc?rev=1364446&view=rev
Log:
added toNodeString() and dependent APIs

Modified:
    maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyNode.java
    maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java
    maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven2DependencyGraphBuilder.java
    maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java

Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyNode.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyNode.java?rev=1364446&r1=1364445&r2=1364446&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyNode.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyNode.java Sun Jul 22 22:14:55 2012
@@ -32,9 +32,9 @@ import org.apache.maven.shared.dependenc
  */
 public interface DependencyNode
 {
-    public Artifact getArtifact();
+    Artifact getArtifact();
 
-    public List<DependencyNode> getChildren();
+    List<DependencyNode> getChildren();
 
     /**
      * Applies the specified dependency node visitor to this dependency node and its children.
@@ -44,12 +44,41 @@ public interface DependencyNode
      * @return the visitor result of ending the visit to this node
      * @since 1.1
      */
-    public boolean accept( DependencyNodeVisitor visitor );
+    boolean accept( DependencyNodeVisitor visitor );
 
     /**
      * Gets the parent dependency node of this dependency node.
      * 
      * @return the parent dependency node
      */
-    public DependencyNode getParent();
+    DependencyNode getParent();
+
+    /**
+     * Gets the version or version range for the dependency before dependency management was applied (if any).
+     * 
+     * @return The dependency version before dependency management or {@code null} if the version was not managed.
+     */
+    String getPremanagedVersion();
+
+    /**
+     * Gets the scope for the dependency before dependency management was applied (if any).
+     * 
+     * @return The dependency scope before dependency management or {@code null} if the scope was not managed.
+     */
+    String getPremanagedScope();
+
+    /**
+     * A constraint on versions for a dependency. A constraint can either consist of one or more version ranges or a single
+     * version.
+     * 
+     * @return The constraint on the dependency.
+     */
+    String getVersionConstraint();
+
+    /**
+     * Returns a string representation of this dependency node.
+     * 
+     * @return the string representation
+     */
+    String toNodeString();
 }

Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java?rev=1364446&r1=1364445&r2=1364446&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java Sun Jul 22 22:14:55 2012
@@ -13,12 +13,22 @@ public class DefaultDependencyNode
 
     private final DependencyNode parent;
 
+    private final String premanagedVersion;
+
+    private final String premanagedScope;
+
+    private final String versionConstraint;
+
     private List<DependencyNode> children;
 
-    public DefaultDependencyNode( DependencyNode parent, Artifact artifact )
+    public DefaultDependencyNode( DependencyNode parent, Artifact artifact, String premanagedVersion,
+                                  String premanagedScope, String versionConstraint )
     {
         this.parent = parent;
         this.artifact = artifact;
+        this.premanagedVersion = premanagedVersion;
+        this.premanagedScope = premanagedScope;
+        this.versionConstraint = versionConstraint;
     }
 
     /**
@@ -64,4 +74,99 @@ public class DefaultDependencyNode
     {
         return parent;
     }
+
+    public String getPremanagedVersion()
+    {
+        return premanagedVersion;
+    }
+
+    public String getPremanagedScope()
+    {
+        return premanagedScope;
+    }
+
+    public String getVersionConstraint()
+    {
+        return versionConstraint;
+    }
+
+    public String toNodeString()
+    {
+        StringBuffer buffer = new StringBuffer();
+
+        buffer.append( artifact );
+        
+        ItemAppender appender = new ItemAppender( buffer, " (", "; ", ")" );
+
+        if ( getPremanagedVersion() != null )
+        {
+            appender.append( "version managed from ", getPremanagedVersion() );
+        }
+            
+        if ( getPremanagedScope() != null )
+        {
+            appender.append( "scope managed from ", getPremanagedScope() );
+        }
+        
+        if ( getVersionConstraint() != null )
+        {
+            appender.append( "version selected from constraint ", getVersionConstraint() );
+        }
+        
+        appender.flush();
+
+        return buffer.toString();
+    }
+
+    /**
+     * Utility class to concatenate a number of parameters with separator tokens.   
+     */
+    private static class ItemAppender
+    {
+        private StringBuffer buffer;
+        
+        private String startToken;
+        
+        private String separatorToken;
+        
+        private String endToken;
+        
+        private boolean appended;
+        
+        public ItemAppender( StringBuffer buffer, String startToken, String separatorToken, String endToken )
+        {
+            this.buffer = buffer;
+            this.startToken = startToken;
+            this.separatorToken = separatorToken;
+            this.endToken = endToken;
+            
+            appended = false;
+        }
+
+        public ItemAppender append( String item1, String item2 )
+        {
+            appendToken();
+            
+            buffer.append( item1 ).append( item2 );
+            
+            return this;
+        }
+        
+        public void flush()
+        {
+            if ( appended )
+            {
+                buffer.append( endToken );
+                
+                appended = false;
+            }
+        }
+        
+        private void appendToken()
+        {
+            buffer.append( appended ? separatorToken : startToken );
+            
+            appended = true;
+        }
+    }
 }

Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven2DependencyGraphBuilder.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven2DependencyGraphBuilder.java?rev=1364446&r1=1364445&r2=1364446&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven2DependencyGraphBuilder.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven2DependencyGraphBuilder.java Sun Jul 22 22:14:55 2012
@@ -64,7 +64,15 @@ public class Maven2DependencyGraphBuilde
                                                 org.apache.maven.shared.dependency.tree.DependencyNode node,
                                                 ArtifactFilter filter )
     {
-        DefaultDependencyNode current = new DefaultDependencyNode( parent, node.getArtifact() );
+        String versionSelectedFromRange = null;
+        if ( node.getVersionSelectedFromRange() != null )
+        {
+            versionSelectedFromRange = node.getVersionSelectedFromRange().toString();
+        }
+
+        DefaultDependencyNode current =
+            new DefaultDependencyNode( parent, node.getArtifact(), node.getPremanagedVersion(),
+                                       node.getPremanagedScope(), versionSelectedFromRange );
 
         List<DependencyNode> nodes = new ArrayList<DependencyNode>( node.getChildren().size() );
         for ( org.apache.maven.shared.dependency.tree.DependencyNode child : node.getChildren() )

Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java?rev=1364446&r1=1364445&r2=1364446&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java Sun Jul 22 22:14:55 2012
@@ -41,6 +41,7 @@ import org.apache.maven.shared.dependenc
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
 import org.sonatype.aether.graph.Dependency;
+import org.sonatype.aether.version.VersionConstraint;
 
 /**
  * Wrapper around Maven 3 dependency resolver.
@@ -111,7 +112,9 @@ public class Maven3DependencyGraphBuilde
     private DependencyNode buildDependencyNode( DependencyNode parent, org.sonatype.aether.graph.DependencyNode node,
                                                 Artifact artifact, ArtifactFilter filter )
     {
-        DefaultDependencyNode current = new DefaultDependencyNode( parent, artifact );
+        DefaultDependencyNode current =
+            new DefaultDependencyNode( parent, artifact, node.getPremanagedVersion(), node.getPremanagedScope(),
+                                       getVersionSelectedFromRange( node.getVersionConstraint() ) );
 
         List<DependencyNode> nodes = new ArrayList<DependencyNode>( node.getChildren().size() );
         for ( org.sonatype.aether.graph.DependencyNode child : node.getChildren() )
@@ -128,4 +131,29 @@ public class Maven3DependencyGraphBuilde
 
         return current;
     }
+
+    private String getVersionSelectedFromRange( VersionConstraint constraint )
+    {
+        if ( constraint == null )
+        {
+            return null;
+        }
+
+        if ( constraint.getVersion() != null )
+        {
+            return constraint.getVersion().toString();
+        }
+
+        StringBuilder sb = new StringBuilder();
+        for ( org.sonatype.aether.version.VersionRange range : constraint.getRanges() )
+        {
+            if ( sb.length() > 0 )
+            {
+                sb.append( ',' );
+            }
+            sb.append( range );
+        }
+
+        return sb.toString();
+    }
 }