You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ma...@apache.org on 2008/04/25 00:18:31 UTC
svn commit: r651439 -
/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java
Author: markh
Date: Thu Apr 24 15:18:21 2008
New Revision: 651439
URL: http://svn.apache.org/viewvc?rev=651439&view=rev
Log:
o Fix potential recursion in hashCode with parent.hashCode by using parent's artifact only
o Aligned equals to also use parent's artifact only
Modified:
maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java
Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java?rev=651439&r1=651438&r2=651439&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java Thu Apr 24 15:18:21 2008
@@ -774,11 +774,12 @@
{
int hashCode = 1;
- hashCode = hashCode * 31 + nullHashCode( getParent() );
hashCode = hashCode * 31 + getArtifact().hashCode();
-
// DefaultArtifact.hashCode does not consider scope
hashCode = hashCode * 31 + nullHashCode( getArtifact().getScope() );
+
+ // TODO: use parent's artifact to prevent recursion - how can we improve this?
+ hashCode = hashCode * 31 + nullHashCode( nullGetArtifact( getParent() ) );
hashCode = hashCode * 31 + getChildren().hashCode();
hashCode = hashCode * 31 + getState();
@@ -805,12 +806,13 @@
{
DependencyNode node = (DependencyNode) object;
- // TODO: no parent.equals() to prevent recursion
equal = getArtifact().equals( node.getArtifact() );
-
// DefaultArtifact.hashCode does not consider scope
equal &= nullEquals( getArtifact().getScope(), node.getArtifact().getScope() );
+ // TODO: use parent's artifact to prevent recursion - how can we improve this?
+ equal &= nullEquals( nullGetArtifact( getParent() ), nullGetArtifact( node.getParent() ) );
+
equal &= getChildren().equals( node.getChildren() );
equal &= getState() == node.getState();
equal &= nullEquals( getRelatedArtifact(), node.getRelatedArtifact() );
@@ -884,5 +886,17 @@
private boolean nullEquals( Object a, Object b )
{
return ( a == null ? b == null : a.equals( b ) );
+ }
+
+ /**
+ * Gets the artifact for the specified node.
+ *
+ * @param node
+ * the dependency node, possibly <code>null</code>
+ * @return the node's artifact, or <code>null</code> if the specified node was <code>null</code>
+ */
+ private static Artifact nullGetArtifact( DependencyNode node )
+ {
+ return ( node != null ) ? node.getArtifact() : null;
}
}