Repository: maven-resolver
Updated Branches:
  refs/heads/master ad50215d2 -> a245b56af


[MRESOLVER-18] DefaultDependencyCollector does not provide pre-managed state 
for exclusions and properties.


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

Branch: refs/heads/master
Commit: a245b56afd479640ce12a3cd047b463a629bca0f
Parents: ad50215
Author: Christian Schulte <schu...@apache.org>
Authored: Fri Mar 17 00:37:08 2017 +0100
Committer: Christian Schulte <schu...@apache.org>
Committed: Fri Mar 17 00:40:30 2017 +0100

----------------------------------------------------------------------
 .../impl/DefaultDependencyCollector.java        | 53 ++++++++++++---
 .../graph/manager/DependencyManagerUtils.java   | 69 +++++++++++++++++++-
 2 files changed, 109 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/a245b56a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCollector.java
----------------------------------------------------------------------
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCollector.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCollector.java
index 35ede64..528200c 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCollector.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCollector.java
@@ -22,6 +22,7 @@ package org.eclipse.aether.internal.impl;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.List;
@@ -48,6 +49,7 @@ import org.eclipse.aether.collection.VersionFilter;
 import org.eclipse.aether.graph.DefaultDependencyNode;
 import org.eclipse.aether.graph.Dependency;
 import org.eclipse.aether.graph.DependencyNode;
+import org.eclipse.aether.graph.Exclusion;
 import org.eclipse.aether.impl.ArtifactDescriptorReader;
 import org.eclipse.aether.impl.DependencyCollector;
 import org.eclipse.aether.impl.RemoteRepositoryManager;
@@ -497,10 +499,11 @@ public class DefaultDependencyCollector
         DependencyTraverser childTraverser = depTraverser != null ? 
depTraverser.deriveChildTraverser( context ) : null;
         VersionFilter childFilter = verFilter != null ? 
verFilter.deriveChildFilter( context ) : null;
 
-        final List<RemoteRepository> childRepos = args.ignoreRepos
-            ? repositories
-            : remoteRepositoryManager.aggregateRepositories( args.session, 
repositories,
-                                                             
descriptorResult.getRepositories(), true );
+        final List<RemoteRepository> childRepos =
+            args.ignoreRepos
+                ? repositories
+                : remoteRepositoryManager.aggregateRepositories( args.session, 
repositories,
+                                                                 
descriptorResult.getRepositories(), true );
 
         Object key =
             args.pool.toKey( d.getArtifact(), childRepos, childSelector, 
childManager, childTraverser, childFilter );
@@ -528,8 +531,9 @@ public class DefaultDependencyCollector
                                                                   
ArtifactDescriptorRequest descriptorRequest )
     {
         return noDescriptor
-            ? new ArtifactDescriptorResult( descriptorRequest )
-            : resolveCachedArtifactDescriptor( args.pool, descriptorRequest, 
args.session, d, results, args );
+                   ? new ArtifactDescriptorResult( descriptorRequest )
+                   : resolveCachedArtifactDescriptor( args.pool, 
descriptorRequest, args.session, d, results, args );
+
     }
 
     private ArtifactDescriptorResult resolveCachedArtifactDescriptor( DataPool 
pool,
@@ -629,7 +633,6 @@ public class DefaultDependencyCollector
         return rangeResult;
     }
 
-
     private static boolean isLackingDescriptor( Artifact artifact )
     {
         return artifact.getProperty( ArtifactProperties.LOCAL_PATH, null ) != 
null;
@@ -711,7 +714,6 @@ public class DefaultDependencyCollector
 
         final CollectRequest request;
 
-
         public Args( RepositorySystemSession session, RequestTrace trace, 
DataPool pool, NodeStack nodes,
                      DefaultDependencyCollectionContext collectionContext, 
DefaultVersionFilterContext versionContext,
                      CollectRequest request )
@@ -789,12 +791,23 @@ public class DefaultDependencyCollector
 
     static class PremanagedDependency
     {
+
         final String premanagedVersion;
 
         final String premanagedScope;
 
         final Boolean premanagedOptional;
 
+        /**
+         * @since 1.1.0
+         */
+        final Collection<Exclusion> premanagedExclusions;
+
+        /**
+         * @since 1.1.0
+         */
+        final Map<String, String> premanagedProperties;
+
         final int managedBits;
 
         final Dependency managedDependency;
@@ -802,11 +815,22 @@ public class DefaultDependencyCollector
         final boolean premanagedState;
 
         PremanagedDependency( String premanagedVersion, String 
premanagedScope, Boolean premanagedOptional,
+                              Collection<Exclusion> premanagedExclusions, 
Map<String, String> premanagedProperties,
                               int managedBits, Dependency managedDependency, 
boolean premanagedState )
         {
             this.premanagedVersion = premanagedVersion;
             this.premanagedScope = premanagedScope;
             this.premanagedOptional = premanagedOptional;
+            this.premanagedExclusions =
+                premanagedExclusions != null
+                    ? Collections.unmodifiableCollection( new 
ArrayList<Exclusion>( premanagedExclusions ) )
+                    : null;
+
+            this.premanagedProperties =
+                premanagedProperties != null
+                    ? Collections.unmodifiableMap( new HashMap<String, 
String>( premanagedProperties ) )
+                    : null;
+
             this.managedBits = managedBits;
             this.managedDependency = managedDependency;
             this.premanagedState = premanagedState;
@@ -821,6 +845,8 @@ public class DefaultDependencyCollector
             String premanagedVersion = null;
             String premanagedScope = null;
             Boolean premanagedOptional = null;
+            Collection<Exclusion> premanagedExclusions = null;
+            Map<String, String> premanagedProperties = null;
 
             if ( depMngt != null )
             {
@@ -834,6 +860,7 @@ public class DefaultDependencyCollector
                 if ( depMngt.getProperties() != null )
                 {
                     Artifact artifact = dependency.getArtifact();
+                    premanagedProperties = artifact.getProperties();
                     dependency = dependency.setArtifact( 
artifact.setProperties( depMngt.getProperties() ) );
                     managedBits |= DependencyNode.MANAGED_PROPERTIES;
                 }
@@ -851,12 +878,15 @@ public class DefaultDependencyCollector
                 }
                 if ( depMngt.getExclusions() != null )
                 {
+                    premanagedExclusions = dependency.getExclusions();
                     dependency = dependency.setExclusions( 
depMngt.getExclusions() );
                     managedBits |= DependencyNode.MANAGED_EXCLUSIONS;
                 }
             }
-            return new PremanagedDependency( premanagedVersion, 
premanagedScope, premanagedOptional, managedBits,
-                                             dependency, premanagedState );
+            return new PremanagedDependency( premanagedVersion, 
premanagedScope, premanagedOptional,
+                                             premanagedExclusions, 
premanagedProperties, managedBits, dependency,
+                                             premanagedState );
+
         }
 
         public void applyTo( DefaultDependencyNode child )
@@ -867,8 +897,11 @@ public class DefaultDependencyCollector
                 child.setData( 
DependencyManagerUtils.NODE_DATA_PREMANAGED_VERSION, premanagedVersion );
                 child.setData( 
DependencyManagerUtils.NODE_DATA_PREMANAGED_SCOPE, premanagedScope );
                 child.setData( 
DependencyManagerUtils.NODE_DATA_PREMANAGED_OPTIONAL, premanagedOptional );
+                child.setData( 
DependencyManagerUtils.NODE_DATA_PREMANAGED_EXCLUSIONS, premanagedExclusions );
+                child.setData( 
DependencyManagerUtils.NODE_DATA_PREMANAGED_PROPERTIES, premanagedProperties );
             }
         }
+
     }
 
 }

http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/a245b56a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/DependencyManagerUtils.java
----------------------------------------------------------------------
diff --git 
a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/DependencyManagerUtils.java
 
b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/DependencyManagerUtils.java
index 7719096..f549367 100644
--- 
a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/DependencyManagerUtils.java
+++ 
b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/DependencyManagerUtils.java
@@ -19,8 +19,12 @@ package org.eclipse.aether.util.graph.manager;
  * under the License.
  */
 
+import java.util.Collection;
+import java.util.Map;
+
 import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.graph.DependencyNode;
+import org.eclipse.aether.graph.Exclusion;
 
 /**
  * A utility class assisting in analyzing the effects of dependency management.
@@ -55,10 +59,27 @@ public final class DependencyManagerUtils
     public static final String NODE_DATA_PREMANAGED_OPTIONAL = 
"premanaged.optional";
 
     /**
+     * The key in the dependency node's {@link DependencyNode#getData() custom 
data} under which the original exclusions
+     * are stored.
+     *
+     * @since 1.1.0
+     */
+    public static final String NODE_DATA_PREMANAGED_EXCLUSIONS = 
"premanaged.exclusions";
+
+    /**
+     * The key in the dependency node's {@link DependencyNode#getData() custom 
data} under which the original properties
+     * are stored.
+     *
+     * @since 1.1.0
+     */
+    public static final String NODE_DATA_PREMANAGED_PROPERTIES = 
"premanaged.properties";
+
+    /**
      * Gets the version or version range of the specified dependency node 
before dependency management was applied (if
      * any).
-     * 
+     *
      * @param node The dependency node to retrieve the premanaged data for, 
must not be {@code null}.
+     *
      * @return The node's dependency version before dependency management or 
{@code null} if the version was not managed
      *         or if {@link #CONFIG_PROP_VERBOSE} was not enabled.
      */
@@ -73,8 +94,9 @@ public final class DependencyManagerUtils
 
     /**
      * Gets the scope of the specified dependency node before dependency 
management was applied (if any).
-     * 
+     *
      * @param node The dependency node to retrieve the premanaged data for, 
must not be {@code null}.
+     *
      * @return The node's dependency scope before dependency management or 
{@code null} if the scope was not managed or
      *         if {@link #CONFIG_PROP_VERBOSE} was not enabled.
      */
@@ -89,8 +111,9 @@ public final class DependencyManagerUtils
 
     /**
      * Gets the optional flag of the specified dependency node before 
dependency management was applied (if any).
-     * 
+     *
      * @param node The dependency node to retrieve the premanaged data for, 
must not be {@code null}.
+     *
      * @return The node's optional flag before dependency management or {@code 
null} if the flag was not managed or if
      *         {@link #CONFIG_PROP_VERBOSE} was not enabled.
      */
@@ -103,6 +126,46 @@ public final class DependencyManagerUtils
         return cast( node.getData().get( NODE_DATA_PREMANAGED_OPTIONAL ), 
Boolean.class );
     }
 
+    /**
+     * Gets the {@code Exclusion}s of the specified dependency node before 
dependency management was applied (if any).
+     *
+     * @param node The dependency node to retrieve the premanaged data for, 
must not be {@code null}.
+     *
+     * @return The nodes' {@code Exclusion}s before dependency management or 
{@code null} if exclusions were not managed
+     *         or if {@link #CONFIG_PROP_VERBOSE} was not enabled.
+     *
+     * @since 1.1.0
+     */
+    @SuppressWarnings( "unchecked" )
+    public static Collection<Exclusion> getPremanagedExclusions( 
DependencyNode node )
+    {
+        if ( ( node.getManagedBits() & DependencyNode.MANAGED_EXCLUSIONS ) == 
0 )
+        {
+            return null;
+        }
+        return cast( node.getData().get( NODE_DATA_PREMANAGED_EXCLUSIONS ), 
Collection.class );
+    }
+
+    /**
+     * Gets the properties of the specified dependency node before dependency 
management was applied (if any).
+     *
+     * @param node The dependency node to retrieve the premanaged data for, 
must not be {@code null}.
+     *
+     * @return The nodes' properties before dependency management or {@code 
null} if properties were not managed or if
+     *         {@link #CONFIG_PROP_VERBOSE} was not enabled.
+     *
+     * @since 1.1.0
+     */
+    @SuppressWarnings( "unchecked" )
+    public static Map<String, String> getPremanagedProperties( DependencyNode 
node )
+    {
+        if ( ( node.getManagedBits() & DependencyNode.MANAGED_PROPERTIES ) == 
0 )
+        {
+            return null;
+        }
+        return cast( node.getData().get( NODE_DATA_PREMANAGED_PROPERTIES ), 
Map.class );
+    }
+
     private static <T> T cast( Object obj, Class<T> type )
     {
         return type.isInstance( obj ) ? type.cast( obj ) : null;

Reply via email to