From: Matthias Sohn Date: Sun, 15 Aug 2010 21:12:58 +0000 (+0200) Subject: Backout RevObject's object-identity based equals implementation X-Git-Tag: v0.9.1~123^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=2d3a806271ee5b9bb66e32f2aa934b36be7b1408;p=jgit.git Backout RevObject's object-identity based equals implementation This restores the transitivity and symmetry properties of the equals methods on the AnyObjectId type hierarchy as defined in [1]. Following [2] we declare these equals methods final to ensure that semantics of equals are consistent across AnyObjectId's type hierarchy. [1] http://download-llnw.oracle.com/javase/6/docs/api/java/lang/Object.html#equals(java.lang.Object) [2] http://www.angelikalanger.com/Articles/JavaSolutions/SecretsOfEquals/Equals.html Bug: 321502 Change-Id: Ibace21fa268c4aa15da6c65d42eb705ab1aa24b3 Signed-off-by: Matthias Sohn --- diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RevObjectTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RevObjectTest.java index d4f289a16b..2b24aa49ad 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RevObjectTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RevObjectTest.java @@ -52,7 +52,7 @@ public class RevObjectTest extends RevWalkTestCase { assertSame(a, a.getId()); } - public void testEqualsIsIdentity() throws Exception { + public void testEquals() throws Exception { final RevCommit a1 = commit(); final RevCommit b1 = commit(); @@ -60,8 +60,8 @@ public class RevObjectTest extends RevWalkTestCase { assertTrue(a1.equals((Object) a1)); assertFalse(a1.equals(b1)); - assertFalse(a1.equals(a1.copy())); - assertFalse(a1.equals((Object) a1.copy())); + assertTrue(a1.equals(a1.copy())); + assertTrue(a1.equals((Object) a1.copy())); assertFalse(a1.equals("")); final RevWalk rw2 = new RevWalk(db); @@ -70,8 +70,8 @@ public class RevObjectTest extends RevWalkTestCase { assertNotSame(a1, a2); assertNotSame(b1, b2); - assertFalse(a1.equals(a2)); - assertFalse(b1.equals(b2)); + assertTrue(a1.equals(a2)); + assertTrue(b1.equals(b2)); assertEquals(a1.hashCode(), a2.hashCode()); assertEquals(b1.hashCode(), b2.hashCode()); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/AnyObjectId.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/AnyObjectId.java index ecaa82b75a..aeb0812c4d 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/AnyObjectId.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/AnyObjectId.java @@ -230,11 +230,11 @@ public abstract class AnyObjectId implements Comparable { * the other id to compare to. May be null. * @return true only if both ObjectIds have identical bits. */ - public boolean equals(final AnyObjectId other) { + public final boolean equals(final AnyObjectId other) { return other != null ? equals(this, other) : false; } - public boolean equals(final Object o) { + public final boolean equals(final Object o) { if (o instanceof AnyObjectId) return equals((AnyObjectId) o); else diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevObject.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevObject.java index a19f4d83ea..85191224df 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevObject.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevObject.java @@ -96,16 +96,6 @@ public abstract class RevObject extends ObjectId { return this; } - @Override - public final boolean equals(final AnyObjectId o) { - return this == o; - } - - @Override - public final boolean equals(final Object o) { - return this == o; - } - /** * Test to see if the flag has been set on this object. *