From 2d3a806271ee5b9bb66e32f2aa934b36be7b1408 Mon Sep 17 00:00:00 2001 From: Matthias Sohn Date: Sun, 15 Aug 2010 23:12:58 +0200 Subject: [PATCH] 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 --- .../tst/org/eclipse/jgit/revwalk/RevObjectTest.java | 10 +++++----- .../src/org/eclipse/jgit/lib/AnyObjectId.java | 4 ++-- .../src/org/eclipse/jgit/revwalk/RevObject.java | 10 ---------- 3 files changed, 7 insertions(+), 17 deletions(-) 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 d4f289a16..2b24aa49a 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 ecaa82b75..aeb0812c4 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 a19f4d83e..85191224d 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. *