This is an automated email from the ASF dual-hosted git repository.

rfscholte pushed a commit to branch MSHARED-852
in repository https://gitbox.apache.org/repos/asf/maven-dependency-tree.git

commit d7212fec557dcf66815409ac614db9e2fc65d000
Author: rfscholte <rfscho...@apache.org>
AuthorDate: Fri Feb 7 10:10:27 2020 +0100

    [MSHARED-852] Add Exclusions to DependencyNode
---
 .../shared/dependency/graph/DependencyNode.java     |  7 +++++++
 .../graph/internal/DefaultDependencyNode.java       | 21 ++++++++++++++++-----
 .../internal/Maven31DependencyGraphBuilder.java     | 13 +++++++++++--
 .../traversal/BuildingDependencyNodeVisitor.java    |  2 +-
 4 files changed, 35 insertions(+), 8 deletions(-)

diff --git 
a/src/main/java/org/apache/maven/shared/dependency/graph/DependencyNode.java 
b/src/main/java/org/apache/maven/shared/dependency/graph/DependencyNode.java
index b2e5219..e46d6a5 100644
--- a/src/main/java/org/apache/maven/shared/dependency/graph/DependencyNode.java
+++ b/src/main/java/org/apache/maven/shared/dependency/graph/DependencyNode.java
@@ -22,6 +22,7 @@ package org.apache.maven.shared.dependency.graph;
 import java.util.List;
 
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.model.Exclusion;
 import 
org.apache.maven.shared.dependency.graph.traversal.DependencyNodeVisitor;
 
 /**
@@ -92,4 +93,10 @@ public interface DependencyNode
      * @return true for an optional dependency.
      */
     Boolean getOptional();
+    
+    /**
+     * 
+     * @return the exclusions of the dependency
+     */
+    List<Exclusion> getExclusions();
 }
diff --git 
a/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java
 
b/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java
index 3b8139c..440eaea 100644
--- 
a/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java
+++ 
b/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java
@@ -22,6 +22,7 @@ package org.apache.maven.shared.dependency.graph.internal;
 import java.util.List;
 
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.model.Exclusion;
 import org.apache.maven.shared.dependency.graph.DependencyNode;
 import 
org.apache.maven.shared.dependency.graph.traversal.DependencyNodeVisitor;
 
@@ -31,7 +32,7 @@ import 
org.apache.maven.shared.dependency.graph.traversal.DependencyNodeVisitor;
 public class DefaultDependencyNode implements DependencyNode
 {
     private final Artifact artifact;
-
+    
     private final DependencyNode parent;
 
     private final String premanagedVersion;
@@ -44,6 +45,8 @@ public class DefaultDependencyNode implements DependencyNode
 
     private Boolean optional;
 
+    private List<Exclusion> exclusions;
+
     /**
      * Constructs the DefaultDependencyNode.
      *
@@ -64,7 +67,8 @@ public class DefaultDependencyNode implements DependencyNode
     }
 
     public DefaultDependencyNode( DependencyNode parent, Artifact artifact, 
String premanagedVersion,
-                                  String premanagedScope, String 
versionConstraint, Boolean optional )
+                                  String premanagedScope, String 
versionConstraint, Boolean optional,
+                                  List<Exclusion> exclusions )
     {
         this.parent = parent;
         this.artifact = artifact;
@@ -72,6 +76,7 @@ public class DefaultDependencyNode implements DependencyNode
         this.premanagedScope = premanagedScope;
         this.versionConstraint = versionConstraint;
         this.optional = optional;
+        this.exclusions = exclusions;
     }
 
     /**
@@ -158,13 +163,19 @@ public class DefaultDependencyNode implements 
DependencyNode
         return optional;
     }
 
+    @Override
+    public List<Exclusion> getExclusions()
+    {
+        return exclusions;
+    }
+
     /**
      * @return Stringified representation of this DependencyNode.
      */
     @Override
     public String toNodeString()
     {
-        StringBuffer buffer = new StringBuffer();
+        StringBuilder buffer = new StringBuilder();
 
         buffer.append( artifact );
 
@@ -200,7 +211,7 @@ public class DefaultDependencyNode implements DependencyNode
      */
     private static class ItemAppender
     {
-        private StringBuffer buffer;
+        private StringBuilder buffer;
 
         private String startToken;
 
@@ -210,7 +221,7 @@ public class DefaultDependencyNode implements DependencyNode
 
         private boolean appended;
 
-        ItemAppender( StringBuffer buffer, String startToken, String 
separatorToken, String endToken )
+        ItemAppender( StringBuilder buffer, String startToken, String 
separatorToken, String endToken )
         {
             this.buffer = buffer;
             this.startToken = startToken;
diff --git 
a/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java
 
b/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java
index 47d9e53..5a53dcb 100644
--- 
a/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java
+++ 
b/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java
@@ -44,6 +44,7 @@ import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.graph.Dependency;
+import org.eclipse.aether.graph.Exclusion;
 import org.eclipse.aether.version.VersionConstraint;
 
 /**
@@ -208,16 +209,24 @@ public class Maven31DependencyGraphBuilder
         String premanagedVersion = null; // 
DependencyManagerUtils.getPremanagedVersion( node );
         String premanagedScope = null; // 
DependencyManagerUtils.getPremanagedScope( node );
 
+        List<org.apache.maven.model.Exclusion> exclusions = null;
         Boolean optional = null;
         if ( node.getDependency() != null )
         {
-            optional = node.getDependency().isOptional();
+            exclusions = new ArrayList<>( 
node.getDependency().getExclusions().size() );
+            for ( Exclusion exclusion : node.getDependency().getExclusions() )
+            {
+                org.apache.maven.model.Exclusion modelExclusion = new 
org.apache.maven.model.Exclusion();
+                modelExclusion.setGroupId( exclusion.getGroupId() );
+                modelExclusion.setArtifactId( exclusion.getArtifactId() );
+                exclusions.add( modelExclusion );
+            }
         }
 
         DefaultDependencyNode current =
             new DefaultDependencyNode( parent, artifact, premanagedVersion, 
premanagedScope,
                                        getVersionSelectedFromRange( 
node.getVersionConstraint() ),
-                                       optional );
+                                       optional, exclusions );
 
         List<DependencyNode> nodes = new ArrayList<DependencyNode>( 
node.getChildren().size() );
         for ( org.eclipse.aether.graph.DependencyNode child : 
node.getChildren() )
diff --git 
a/src/main/java/org/apache/maven/shared/dependency/graph/traversal/BuildingDependencyNodeVisitor.java
 
b/src/main/java/org/apache/maven/shared/dependency/graph/traversal/BuildingDependencyNodeVisitor.java
index 498b6e1..fb05fbe 100644
--- 
a/src/main/java/org/apache/maven/shared/dependency/graph/traversal/BuildingDependencyNodeVisitor.java
+++ 
b/src/main/java/org/apache/maven/shared/dependency/graph/traversal/BuildingDependencyNodeVisitor.java
@@ -88,7 +88,7 @@ public class BuildingDependencyNodeVisitor
             new DefaultDependencyNode( parentNodes.isEmpty() ? null : 
parentNodes.peek(), node.getArtifact(),
                                        node.getPremanagedVersion(), 
node.getPremanagedScope(),
                                        node.getVersionConstraint(),
-                                       node.getOptional() );
+                                       node.getOptional(), 
node.getExclusions() );
         newNode.setChildren( new ArrayList<DependencyNode>() );
 
         if ( parentNodes.empty() )

Reply via email to