Correctly clone all node properties in BuildingDependencyNodeVisitor.
git-svn-id: https://svn.apache.org/repos/asf/maven/shared/trunk@576940 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/maven/shared/dependency/tree/traversal/BuildingDependencyNodeVisitor.java b/src/main/java/org/apache/maven/shared/dependency/tree/traversal/BuildingDependencyNodeVisitor.java
index d451da4..7837a49 100644
--- a/src/main/java/org/apache/maven/shared/dependency/tree/traversal/BuildingDependencyNodeVisitor.java
+++ b/src/main/java/org/apache/maven/shared/dependency/tree/traversal/BuildingDependencyNodeVisitor.java
@@ -83,6 +83,10 @@
{
// clone the node
DependencyNode newNode = new DependencyNode( node.getArtifact(), node.getState(), node.getRelatedArtifact() );
+ newNode.setOriginalScope( node.getOriginalScope() );
+ newNode.setFailedUpdateScope( node.getFailedUpdateScope() );
+ newNode.setPremanagedVersion( node.getPremanagedVersion() );
+ newNode.setPremanagedScope( node.getPremanagedScope() );
if ( parentNodes.empty() )
{
diff --git a/src/test/java/org/apache/maven/shared/dependency/tree/AbstractDependencyNodeTest.java b/src/test/java/org/apache/maven/shared/dependency/tree/AbstractDependencyNodeTest.java
index 079a629..d2dea0d 100644
--- a/src/test/java/org/apache/maven/shared/dependency/tree/AbstractDependencyNodeTest.java
+++ b/src/test/java/org/apache/maven/shared/dependency/tree/AbstractDependencyNodeTest.java
@@ -35,11 +35,26 @@
protected DependencyNode createNode( String id )
{
- return new DependencyNode( createArtifact( id ) );
+ return createNode( id, DependencyNode.INCLUDED );
+ }
+
+ protected DependencyNode createNode( String id, int state )
+ {
+ return createNode( id, state, null );
+ }
+
+ protected DependencyNode createNode( String id, int state, String relatedId )
+ {
+ return new DependencyNode( createArtifact( id ), state, createArtifact( relatedId ) );
}
protected Artifact createArtifact( String id )
{
+ if ( id == null )
+ {
+ return null;
+ }
+
String[] tokens = id.split( ":" );
return createArtifact( get( tokens, 0 ), get( tokens, 1 ), get( tokens, 2 ), get( tokens, 3 ), get( tokens, 4 ) );
diff --git a/src/test/java/org/apache/maven/shared/dependency/tree/traversal/BuildingDependencyNodeVisitorTest.java b/src/test/java/org/apache/maven/shared/dependency/tree/traversal/BuildingDependencyNodeVisitorTest.java
index 19190b2..58d8ccc 100644
--- a/src/test/java/org/apache/maven/shared/dependency/tree/traversal/BuildingDependencyNodeVisitorTest.java
+++ b/src/test/java/org/apache/maven/shared/dependency/tree/traversal/BuildingDependencyNodeVisitorTest.java
@@ -51,6 +51,88 @@
assertEquals( sourceNode, resultNode );
}
+ public void testVisitNodeWithState()
+ {
+ DependencyNode sourceNode = createNode( "g:a:t:1", DependencyNode.OMITTED_FOR_CYCLE );
+
+ visitor = new BuildingDependencyNodeVisitor();
+ visitor.visit( sourceNode );
+ visitor.endVisit( sourceNode );
+
+ DependencyNode resultNode = visitor.getDependencyTree();
+ assertNotSame( sourceNode, resultNode );
+ assertEquals( sourceNode, resultNode );
+ }
+
+ public void testVisitNodeWithRelatedArtifact()
+ {
+ DependencyNode sourceNode = createNode( "g:a:t:1", DependencyNode.OMITTED_FOR_CONFLICT, "g:a:t:2" );
+
+ visitor = new BuildingDependencyNodeVisitor();
+ visitor.visit( sourceNode );
+ visitor.endVisit( sourceNode );
+
+ DependencyNode resultNode = visitor.getDependencyTree();
+ assertNotSame( sourceNode, resultNode );
+ assertEquals( sourceNode, resultNode );
+ }
+
+ public void testVisitNodeWithOriginalScope()
+ {
+ DependencyNode sourceNode = createNode( "g:a:t:1" );
+ sourceNode.setOriginalScope( "x" );
+
+ visitor = new BuildingDependencyNodeVisitor();
+ visitor.visit( sourceNode );
+ visitor.endVisit( sourceNode );
+
+ DependencyNode resultNode = visitor.getDependencyTree();
+ assertNotSame( sourceNode, resultNode );
+ assertEquals( sourceNode, resultNode );
+ }
+
+ public void testVisitNodeWithFailedUpdateScope()
+ {
+ DependencyNode sourceNode = createNode( "g:a:t:1" );
+ sourceNode.setFailedUpdateScope( "x" );
+
+ visitor = new BuildingDependencyNodeVisitor();
+ visitor.visit( sourceNode );
+ visitor.endVisit( sourceNode );
+
+ DependencyNode resultNode = visitor.getDependencyTree();
+ assertNotSame( sourceNode, resultNode );
+ assertEquals( sourceNode, resultNode );
+ }
+
+ public void testVisitNodeWithPremanagedVersion()
+ {
+ DependencyNode sourceNode = createNode( "g:a:t:1" );
+ sourceNode.setPremanagedVersion( "2" );
+
+ visitor = new BuildingDependencyNodeVisitor();
+ visitor.visit( sourceNode );
+ visitor.endVisit( sourceNode );
+
+ DependencyNode resultNode = visitor.getDependencyTree();
+ assertNotSame( sourceNode, resultNode );
+ assertEquals( sourceNode, resultNode );
+ }
+
+ public void testVisitNodeWithPremanagedScope()
+ {
+ DependencyNode sourceNode = createNode( "g:a:t:1" );
+ sourceNode.setPremanagedScope( "x" );
+
+ visitor = new BuildingDependencyNodeVisitor();
+ visitor.visit( sourceNode );
+ visitor.endVisit( sourceNode );
+
+ DependencyNode resultNode = visitor.getDependencyTree();
+ assertNotSame( sourceNode, resultNode );
+ assertEquals( sourceNode, resultNode );
+ }
+
public void testVisitNodeWithChild()
{
DependencyNode sourceNode = createNode( "g:a:t:1" );