MDEP-509: add optional to the display of the tree when available.
git-svn-id: https://svn.apache.org/repos/asf/maven/shared/trunk@1707376 13f79535-47bb-0310-9956-ffa450edef68
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 a1c0a27..b2e5219 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
@@ -87,4 +87,9 @@
* @return the string representation
*/
String toNodeString();
+
+ /**
+ * @return true for an optional dependency.
+ */
+ Boolean getOptional();
}
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 008cd2c..322b966 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
@@ -42,6 +42,8 @@
private List<DependencyNode> children;
+ private Boolean optional;
+
/**
* Constructs the DefaultDependencyNode.
*
@@ -61,6 +63,17 @@
this.versionConstraint = versionConstraint;
}
+ public DefaultDependencyNode( DependencyNode parent, Artifact artifact, String premanagedVersion,
+ String premanagedScope, String versionConstraint, Boolean optional )
+ {
+ this.parent = parent;
+ this.artifact = artifact;
+ this.premanagedVersion = premanagedVersion;
+ this.premanagedScope = premanagedScope;
+ this.versionConstraint = versionConstraint;
+ this.optional = optional;
+ }
+
/**
* Applies the specified dependency node visitor to this dependency node and its children.
*
@@ -139,6 +152,12 @@
return versionConstraint;
}
+ @Override
+ public Boolean getOptional()
+ {
+ return optional;
+ }
+
/**
* @return Stringified representation of this DependencyNode.
*/
@@ -166,7 +185,12 @@
appender.append( "version selected from constraint ", getVersionConstraint() );
}
+
appender.flush();
+ if ( optional != null && optional )
+ {
+ buffer.append( " (optional) " );
+ }
return buffer.toString();
}
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 08c235d..cecb50e 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
@@ -207,9 +207,16 @@
String premanagedVersion = null; // DependencyManagerUtils.getPremanagedVersion( node );
String premanagedScope = null; // DependencyManagerUtils.getPremanagedScope( node );
+ Boolean optional = null;
+ if ( node.getDependency() != null )
+ {
+ optional = node.getDependency().isOptional();
+ }
+
DefaultDependencyNode current =
new DefaultDependencyNode( parent, artifact, premanagedVersion, premanagedScope,
- getVersionSelectedFromRange( node.getVersionConstraint() ) );
+ getVersionSelectedFromRange( node.getVersionConstraint() ),
+ optional );
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 775e0f2..498b6e1 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
@@ -87,7 +87,8 @@
DefaultDependencyNode newNode =
new DefaultDependencyNode( parentNodes.isEmpty() ? null : parentNodes.peek(), node.getArtifact(),
node.getPremanagedVersion(), node.getPremanagedScope(),
- node.getVersionConstraint() );
+ node.getVersionConstraint(),
+ node.getOptional() );
newNode.setChildren( new ArrayList<DependencyNode>() );
if ( parentNodes.empty() )