diff options
author | Pascal Lehmann | 2010-11-29 14:39:56 +0000 |
---|---|---|
committer | Pascal Lehmann | 2010-11-29 14:39:56 +0000 |
commit | e991182586061e98c12024ddd02a661a22795616 (patch) | |
tree | 6995fc95e3cd3c6673bfbf88ca18518551766f22 /plugins/org.eclipse.emf.cdo.common/src | |
parent | 82665d1b8c9818a2535deda8e84576cf120393b2 (diff) | |
download | cdo-e991182586061e98c12024ddd02a661a22795616.tar.gz cdo-e991182586061e98c12024ddd02a661a22795616.tar.xz cdo-e991182586061e98c12024ddd02a661a22795616.zip |
[330903] Improve hashcode & equals Implementation for CDOFeatureDeltas.
https://bugs.eclipse.org/bugs/show_bug.cgi?id=330903
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.common/src')
6 files changed, 14 insertions, 41 deletions
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/delta/CDOFeatureDelta.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/delta/CDOFeatureDelta.java index e48dd48d24..202d4001ca 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/delta/CDOFeatureDelta.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/delta/CDOFeatureDelta.java @@ -50,6 +50,11 @@ public interface CDOFeatureDelta public CDOFeatureDelta copy(); /** + * @since 4.0 + */ + public boolean isStructurallyEqual(Object obj); + + /** * @author Simon McDuff */ public enum Type diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOContainerFeatureDeltaImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOContainerFeatureDeltaImpl.java index e90b821819..4b90633834 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOContainerFeatureDeltaImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOContainerFeatureDeltaImpl.java @@ -112,16 +112,9 @@ public class CDOContainerFeatureDeltaImpl extends CDOFeatureDeltaImpl implements } @Override - public int hashCode() + public boolean isStructurallyEqual(Object obj) { - return super.hashCode() ^ ObjectUtil.hashCode(newResourceID) ^ ObjectUtil.hashCode(newContainerID) - ^ newContainerFeatureID; - } - - @Override - public boolean equals(Object obj) - { - if (!super.equals(obj)) + if (!super.isStructurallyEqual(obj)) { return false; } diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOFeatureDeltaImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOFeatureDeltaImpl.java index e1556dc490..f9afb221ce 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOFeatureDeltaImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOFeatureDeltaImpl.java @@ -58,14 +58,7 @@ public abstract class CDOFeatureDeltaImpl implements InternalCDOFeatureDelta return feature; } - @Override - public int hashCode() - { - return feature.hashCode() ^ getType().hashCode() << 16; - } - - @Override - public boolean equals(Object obj) + public boolean isStructurallyEqual(Object obj) { if (obj == this) { diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOListFeatureDeltaImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOListFeatureDeltaImpl.java index 095245f65e..e44b4bb6c4 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOListFeatureDeltaImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOListFeatureDeltaImpl.java @@ -413,15 +413,9 @@ public class CDOListFeatureDeltaImpl extends CDOFeatureDeltaImpl implements CDOL } @Override - public int hashCode() + public boolean isStructurallyEqual(Object obj) { - return super.hashCode() ^ ObjectUtil.hashCode(featureDeltas); - } - - @Override - public boolean equals(Object obj) - { - if (!super.equals(obj)) + if (!super.isStructurallyEqual(obj)) { return false; } diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOMoveFeatureDeltaImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOMoveFeatureDeltaImpl.java index 23bc79c521..2b900c584c 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOMoveFeatureDeltaImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOMoveFeatureDeltaImpl.java @@ -181,15 +181,9 @@ public class CDOMoveFeatureDeltaImpl extends CDOFeatureDeltaImpl implements CDOM } @Override - public int hashCode() + public boolean isStructurallyEqual(Object obj) { - return super.hashCode() ^ oldPosition ^ newPosition; - } - - @Override - public boolean equals(Object obj) - { - if (!super.equals(obj)) + if (!super.isStructurallyEqual(obj)) { return false; } diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOSingleValueFeatureDeltaImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOSingleValueFeatureDeltaImpl.java index 262562f6e3..24c7837bcb 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOSingleValueFeatureDeltaImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOSingleValueFeatureDeltaImpl.java @@ -154,15 +154,9 @@ public abstract class CDOSingleValueFeatureDeltaImpl extends CDOFeatureDeltaImpl } @Override - public int hashCode() + public boolean isStructurallyEqual(Object obj) { - return super.hashCode() ^ index ^ ObjectUtil.hashCode(value); - } - - @Override - public boolean equals(Object obj) - { - if (!super.equals(obj)) + if (!super.isStructurallyEqual(obj)) { return false; } |