You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by tn...@apache.org on 2014/04/10 23:55:29 UTC
svn commit: r1586477 - in /commons/proper/collections/trunk/src:
changes/changes.xml
main/java/org/apache/commons/collections4/comparators/TransformingComparator.java
test/java/org/apache/commons/collections4/comparators/TransformingComparatorTest.java
Author: tn
Date: Thu Apr 10 21:55:29 2014
New Revision: 1586477
URL: http://svn.apache.org/r1586477
Log:
[COLLECTIONS-512] Fix equals method for TransformingComparator. Thanks to Cyrille Artho.
Modified:
commons/proper/collections/trunk/src/changes/changes.xml
commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/comparators/TransformingComparator.java
commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/comparators/TransformingComparatorTest.java
Modified: commons/proper/collections/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/changes/changes.xml?rev=1586477&r1=1586476&r2=1586477&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/changes/changes.xml (original)
+++ commons/proper/collections/trunk/src/changes/changes.xml Thu Apr 10 21:55:29 2014
@@ -22,6 +22,9 @@
<body>
<release version="4.1" date="TBD" description="">
+ <action issue="COLLECTIONS-512" dev="tn" type="fix" due-to="Cyrille Artho">
+ "TransformingComparator" did not comply with the contract of Object#equals.
+ </action>
<action issue="COLLECTIONS-510" dev="tn" type="fix" due-to="Hollis Waite">
Fix compilation errors when using source level 1.8 and a recent java 8 compiler.
</action>
Modified: commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/comparators/TransformingComparator.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/comparators/TransformingComparator.java?rev=1586477&r1=1586476&r2=1586477&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/comparators/TransformingComparator.java (original)
+++ commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/comparators/TransformingComparator.java Thu Apr 10 21:55:29 2014
@@ -120,8 +120,8 @@ public class TransformingComparator<I, O
}
if (object.getClass().equals(this.getClass())) {
final TransformingComparator<?, ?> comp = (TransformingComparator<?, ?>) object;
- return null == decorated ? null == comp.decorated : decorated.equals(comp.decorated) &&
- null == transformer ? null == comp.transformer : transformer.equals(comp.transformer);
+ return (null == decorated ? null == comp.decorated : decorated.equals(comp.decorated)) &&
+ (null == transformer ? null == comp.transformer : transformer.equals(comp.transformer));
}
return false;
}
Modified: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/comparators/TransformingComparatorTest.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/comparators/TransformingComparatorTest.java?rev=1586477&r1=1586476&r2=1586477&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/comparators/TransformingComparatorTest.java (original)
+++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/comparators/TransformingComparatorTest.java Thu Apr 10 21:55:29 2014
@@ -21,6 +21,7 @@ import java.util.LinkedList;
import java.util.List;
import org.apache.commons.collections4.ComparatorUtils;
+import org.apache.commons.collections4.Transformer;
import org.apache.commons.collections4.TransformerUtils;
/**
@@ -60,6 +61,20 @@ public class TransformingComparatorTest
return list;
}
+ public void testEquals() {
+ Transformer<String, String> t1 = TransformerUtils.nopTransformer();
+ TransformingComparator<String, String> comp1 = new TransformingComparator<String, String>(t1);
+ TransformingComparator<String, String> comp2 = new TransformingComparator<String, String>(t1, comp1);
+
+ // Checks the contract: equals-hashcode on comp1 and comp2
+ assertTrue("Contract failed: equals-hashcode",
+ comp1.equals(comp2) ? comp1.hashCode() == comp2.hashCode() : true);
+
+ // Checks the contract: equals-hashcode on comp1 and comp2
+ assertTrue("Contract failed: equals-hashcode",
+ comp2.equals(comp1) ? comp2.hashCode() == comp1.hashCode() : true);
+ }
+
@Override
public String getCompatibilityVersion() {
return "4";