Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Loskutov2020-10-29 16:09:24 +0000
committerAndrey Loskutov2020-10-31 10:07:29 +0000
commit519cf752fec01fa27513dd25b9c02a002ea0b8da (patch)
tree34dd376518dde1b11aeda454dfe0ec34e6285293
parent21b48b0cc5a5605f420ab5cbe16149823d55cfd4 (diff)
downloadeclipse.platform.debug-519cf752fec01fa27513dd25b9c02a002ea0b8da.tar.gz
eclipse.platform.debug-519cf752fec01fa27513dd25b9c02a002ea0b8da.tar.xz
eclipse.platform.debug-519cf752fec01fa27513dd25b9c02a002ea0b8da.zip
Added new ISourceLookupDirector.equalSourceElements() API to allow Java debugger distinguish between different Java model elements that represent same Java class files. The new interface method has default implementation that delegates to Objects.equals() to keep the previous behavior unchanged for existing clients. Change-Id: Ib9a514366e8b613b31fd5143a54fbf2186c4788b Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
-rw-r--r--org.eclipse.debug.core/.settings/.api_filters8
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/AbstractSourceLookupDirector.java2
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceLookupDirector.java18
3 files changed, 27 insertions, 1 deletions
diff --git a/org.eclipse.debug.core/.settings/.api_filters b/org.eclipse.debug.core/.settings/.api_filters
index d039d6c92..c3e0e24e6 100644
--- a/org.eclipse.debug.core/.settings/.api_filters
+++ b/org.eclipse.debug.core/.settings/.api_filters
@@ -1,5 +1,13 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<component id="org.eclipse.debug.core" version="2">
+ <resource path="core/org/eclipse/debug/core/sourcelookup/ISourceLookupDirector.java" type="org.eclipse.debug.core.sourcelookup.ISourceLookupDirector">
+ <filter comment="565462#c15" id="404000815">
+ <message_arguments>
+ <message_argument value="org.eclipse.debug.core.sourcelookup.ISourceLookupDirector"/>
+ <message_argument value="equalSourceElements(Object, Object)"/>
+ </message_arguments>
+ </filter>
+ </resource>
<resource path="core/org/eclipse/debug/internal/core/groups/GroupLaunch.java" type="org.eclipse.debug.internal.core.groups.GroupLaunch">
<filter comment="Bug 548841 - Mark internal package as x-internal in manifest" id="305365105">
<message_arguments>
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/AbstractSourceLookupDirector.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/AbstractSourceLookupDirector.java
index a3d1cac8f..153a7e980 100644
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/AbstractSourceLookupDirector.java
+++ b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/AbstractSourceLookupDirector.java
@@ -534,7 +534,7 @@ public abstract class AbstractSourceLookupDirector implements ISourceLookupDirec
return false;
}
for (Object obj : sources) {
- if (obj.equals(sourceToAdd)) {
+ if (equalSourceElements(obj, sourceToAdd)) {
return true;
}
}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceLookupDirector.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceLookupDirector.java
index 0f97d1e5c..dd247c2a6 100644
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceLookupDirector.java
+++ b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceLookupDirector.java
@@ -13,6 +13,8 @@
*******************************************************************************/
package org.eclipse.debug.core.sourcelookup;
+import java.util.Objects;
+
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfiguration;
@@ -182,4 +184,20 @@ public interface ISourceLookupDirector extends IPersistableSourceLocator2 {
*/
Object getSourceElement(Object element);
+ /**
+ * Answers if the objects should be considered as same source elements (e.g.
+ * resulting in the physically same storage element), independently if in
+ * the modelled world they may be different views on same data.
+ *
+ * @param element1 first source element
+ * @param element2 second source element
+ * @return Returns {@code true} if two source elements represent physically
+ * same data. Default implementation just delegates to
+ * {@link Objects#equals(Object, Object)}.
+ * @since 3.17
+ */
+ default boolean equalSourceElements(Object element1, Object element2) {
+ return Objects.equals(element1, element2);
+ }
+
}

Back to the top