diff options
author | Sebastian Ratz | 2018-09-23 15:22:26 +0000 |
---|---|---|
committer | Andrey Loskutov | 2018-09-23 16:36:46 +0000 |
commit | 542f40e5776d928308fc6443fe6293463e2b5483 (patch) | |
tree | 211f3902148d42c72616b93cdc16325e8515a9c7 /org.eclipse.jface.text | |
parent | bb4abd131785dc66b2a4da321ded042fd4e37db1 (diff) | |
download | eclipse.platform.text-542f40e5776d928308fc6443fe6293463e2b5483.tar.gz eclipse.platform.text-542f40e5776d928308fc6443fe6293463e2b5483.tar.xz eclipse.platform.text-542f40e5776d928308fc6443fe6293463e2b5483.zip |
Bug 535964 - Move some non UI classes from jface.text to o.e.text.I20180923-1800
Another update to the #equals() implementation.
bb4abd131785dc66b2a4da321ded042fd4e37db1 broke equals() in other
scenarios.
A = org.eclipse.text.templates.TemplatePersistenceData
B = org.eclipse.jface.text.templates.persistence.TemplatePersistenceData
Properly implement equals() in the super class (A) and in the deprecated
subclass (B), such that the symmetric property of equals holds:
A.equals(B)
B.equals(A)
This is ensured by always using B as a dummy and delegating via "ref".
In the super type A introduce a new dummy UUID just for equals. This
simulates the previous object identity semantics for equals (there can
exist multiple *different* templates with identical values).
Change-Id: Ia34e7019a54464b6f4d95521eddea8e682e87bf1
Signed-off-by: Sebastian Ratz <sebastian.ratz@sap.com>
Diffstat (limited to 'org.eclipse.jface.text')
-rw-r--r-- | org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/TemplatePersistenceData.java | 60 |
1 files changed, 24 insertions, 36 deletions
diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/TemplatePersistenceData.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/TemplatePersistenceData.java index a87ad110f75..dcfeff12b7b 100644 --- a/org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/TemplatePersistenceData.java +++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/TemplatePersistenceData.java @@ -13,6 +13,8 @@ *******************************************************************************/ package org.eclipse.jface.text.templates.persistence; +import java.util.UUID; + import org.eclipse.jface.text.templates.Template; @@ -33,7 +35,7 @@ import org.eclipse.jface.text.templates.Template; @Deprecated public class TemplatePersistenceData extends org.eclipse.text.templates.TemplatePersistenceData { - org.eclipse.text.templates.TemplatePersistenceData ref; + private final org.eclipse.text.templates.TemplatePersistenceData ref; /** * In some cases, we must continue to respect the deprecated TemplatePresistenceData @@ -45,99 +47,85 @@ public class TemplatePersistenceData extends org.eclipse.text.templates.Template */ public TemplatePersistenceData(org.eclipse.text.templates.TemplatePersistenceData data) { super(data.getTemplate(), data.isEnabled(), data.getId()); // these are ignored - this.ref= data; + this.ref= data instanceof TemplatePersistenceData ? ((TemplatePersistenceData) data).ref : data; // no double wrapping } public TemplatePersistenceData(Template template, boolean enabled) { - super(template, enabled); + this(new org.eclipse.text.templates.TemplatePersistenceData(template, enabled)); } public TemplatePersistenceData(Template template, boolean enabled, String id) { - super(template, enabled, id); + this(new org.eclipse.text.templates.TemplatePersistenceData(template, enabled, id)); } @Override public String getId() { - return (ref != null) ? ref.getId() : super.getId(); + return ref.getId(); } @Override public boolean isDeleted() { - return (ref != null) ? ref.isDeleted() : super.isDeleted(); + return ref.isDeleted(); } @Override public void setDeleted(boolean isDeleted) { - if (ref != null) { - ref.setDeleted(isDeleted); - } else { - super.setDeleted(isDeleted); - } + ref.setDeleted(isDeleted); } @Override public Template getTemplate() { - return (ref != null) ? ref.getTemplate() : super.getTemplate(); + return ref.getTemplate(); } @Override public void setTemplate(Template template) { - if (ref != null) { - ref.setTemplate(template); - } else { - super.setTemplate(template); - } + ref.setTemplate(template); } @Override public boolean isCustom() { - return (ref != null) ? ref.isCustom() : super.isCustom(); + return ref.isCustom(); } @Override public boolean isModified() { - return (ref != null) ? ref.isModified() : super.isModified(); + return ref.isModified(); } @Override public boolean isUserAdded() { - return (ref != null) ? ref.isUserAdded() : super.isUserAdded(); + return ref.isUserAdded(); } @Override public void revert() { - if (ref != null) { - ref.revert(); - } else { - super.revert(); - } + ref.revert(); } @Override public boolean isEnabled() { - return (ref != null) ? ref.isEnabled() : super.isEnabled(); + return ref.isEnabled(); } @Override public void setEnabled(boolean isEnabled) { - if (ref != null) { - ref.setEnabled(isEnabled); - } else { - super.setEnabled(isEnabled); - } + ref.setEnabled(isEnabled); } @Override public boolean equals(Object other) { - if (ref != null && other instanceof TemplatePersistenceData && ((TemplatePersistenceData) other).ref != null) { - return ref.equals(((TemplatePersistenceData) other).ref); - } - return super.equals(other); + return ref.equals(other); } @Override public int hashCode() { - return (ref != null) ? ref.hashCode() : super.hashCode(); + return ref.hashCode(); + } + + @Override + protected UUID getUniqueIdForEquals() { + return getUniqueIdForEquals(ref); } } |