You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sc...@apache.org on 2016/12/21 04:09:23 UTC

[3/3] maven-resolver git commit: [MRESOLVER-10] New class 'TransitiveDependencyManager' supporting transitive dependency management.

[MRESOLVER-10] New class 'TransitiveDependencyManager' supporting transitive dependency management.

o Updated to correctly decide a node is direct or transitive.


Project: http://git-wip-us.apache.org/repos/asf/maven-resolver/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-resolver/commit/1a3831df
Tree: http://git-wip-us.apache.org/repos/asf/maven-resolver/tree/1a3831df
Diff: http://git-wip-us.apache.org/repos/asf/maven-resolver/diff/1a3831df

Branch: refs/heads/master
Commit: 1a3831df53cdbecc01caa39a792c3a94fd99d803
Parents: 9855af4
Author: Christian Schulte <sc...@apache.org>
Authored: Wed Dec 21 03:38:12 2016 +0100
Committer: Christian Schulte <sc...@apache.org>
Committed: Wed Dec 21 03:43:23 2016 +0100

----------------------------------------------------------------------
 .../manager/TransitiveDependencyManager.java    | 35 ++++++--------------
 1 file changed, 10 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/1a3831df/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/TransitiveDependencyManager.java
----------------------------------------------------------------------
diff --git a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/TransitiveDependencyManager.java b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/TransitiveDependencyManager.java
index aa02d47..485f1d7 100644
--- a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/TransitiveDependencyManager.java
+++ b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/TransitiveDependencyManager.java
@@ -34,7 +34,7 @@ import org.eclipse.aether.graph.Exclusion;
 import org.eclipse.aether.util.artifact.JavaScopes;
 
 /**
- * A dependency manager supporting transitive dependency management.
+ * A dependency manager managing transitive dependencies supporting transitive dependency management.
  *
  * @author Christian Schulte
  * @since 1.2.0
@@ -53,7 +53,7 @@ public final class TransitiveDependencyManager
 
     private final Map<Object, Collection<Exclusion>> managedExclusions;
 
-    private final boolean transitive;
+    private final int depth;
 
     private int hashCode;
 
@@ -62,12 +62,12 @@ public final class TransitiveDependencyManager
      */
     public TransitiveDependencyManager()
     {
-        this( false, Collections.<Object, String>emptyMap(), Collections.<Object, String>emptyMap(),
+        this( 0, Collections.<Object, String>emptyMap(), Collections.<Object, String>emptyMap(),
               Collections.<Object, Boolean>emptyMap(), Collections.<Object, String>emptyMap(),
               Collections.<Object, Collection<Exclusion>>emptyMap() );
     }
 
-    private TransitiveDependencyManager( final boolean transitive,
+    private TransitiveDependencyManager( final int depth,
                                          final Map<Object, String> managedVersions,
                                          final Map<Object, String> managedScopes,
                                          final Map<Object, Boolean> managedOptionals,
@@ -75,7 +75,7 @@ public final class TransitiveDependencyManager
                                          final Map<Object, Collection<Exclusion>> managedExclusions )
     {
         super();
-        this.transitive = transitive;
+        this.depth = depth;
         this.managedVersions = managedVersions;
         this.managedScopes = managedScopes;
         this.managedOptionals = managedOptionals;
@@ -152,24 +152,9 @@ public final class TransitiveDependencyManager
             }
         }
 
-        TransitiveDependencyManager child = null;
+        return new TransitiveDependencyManager( this.depth + 1, versions, scopes, optionals, localPaths,
+                                                exclusions );
 
-        if ( context.getDependency() != null && !this.transitive )
-        {
-            child = new TransitiveDependencyManager( true, versions, scopes, optionals, localPaths, exclusions );
-        }
-        if ( context.getDependency() == null && this.transitive )
-        {
-            child = new TransitiveDependencyManager( false, versions, scopes, optionals, localPaths, exclusions );
-        }
-        if ( child == null )
-        {
-            child = new TransitiveDependencyManager( this.transitive, versions, scopes, optionals, localPaths,
-                                                     exclusions );
-
-        }
-
-        return child;
     }
 
     public DependencyManagement manageDependency( Dependency dependency )
@@ -178,7 +163,7 @@ public final class TransitiveDependencyManager
 
         Object key = getKey( dependency.getArtifact() );
 
-        if ( this.transitive )
+        if ( this.depth >= 2 )
         {
             String version = managedVersions.get( key );
             if ( version != null )
@@ -265,7 +250,7 @@ public final class TransitiveDependencyManager
         if ( equal )
         {
             final TransitiveDependencyManager that = (TransitiveDependencyManager) obj;
-            return this.transitive == that.transitive
+            return this.depth == that.depth
                        && this.managedVersions.equals( that.managedVersions )
                        && this.managedScopes.equals( that.managedScopes )
                        && this.managedOptionals.equals( that.managedOptionals )
@@ -282,7 +267,7 @@ public final class TransitiveDependencyManager
         if ( this.hashCode == 0 )
         {
             int hash = 17;
-            hash = hash * 31 + ( (Boolean) this.transitive ).hashCode();
+            hash = hash * 31 + this.depth;
             hash = hash * 31 + this.managedVersions.hashCode();
             hash = hash * 31 + this.managedScopes.hashCode();
             hash = hash * 31 + this.managedOptionals.hashCode();