Bug 578450 - Do not show 'set object label' for nulls and primitive values
Change-Id: If3664198151687dcf71a602c5035b0bfc9ee4c81
Reviewed-on: https://git.eclipse.org/r/c/jdt/eclipse.jdt.debug/+/190176
Tested-by: Sarika Sinha <sarika.sinha@in.ibm.com>
Reviewed-by: Sarika Sinha <sarika.sinha@in.ibm.com>
diff --git a/org.eclipse.jdt.debug.ui/plugin.xml b/org.eclipse.jdt.debug.ui/plugin.xml
index 6b6594a..dcd097f 100644
--- a/org.eclipse.jdt.debug.ui/plugin.xml
+++ b/org.eclipse.jdt.debug.ui/plugin.xml
@@ -935,6 +935,16 @@
</objectState>
</not>
</visibility>
+ </objectContribution>
+ <objectContribution
+ objectClass="org.eclipse.jdt.debug.core.IJavaVariable"
+ id="org.eclipse.jdt.debug.ui.JavaVariableActions">
+ <visibility>
+ <objectState
+ name="JavaVariableFilter"
+ value="isNonNullObjectValue">
+ </objectState>
+ </visibility>
<action
class="org.eclipse.jdt.internal.debug.ui.actions.SetObjectLabelAction"
enablesFor="1"
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaVarActionFilter.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaVarActionFilter.java
index fbf7705..35f1fda 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaVarActionFilter.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaVarActionFilter.java
@@ -196,6 +196,10 @@
if (value.equals("isObjectValue")) { //$NON-NLS-1$
return varValue != null && JDIObjectValue.class.isAssignableFrom(varValue.getClass());
}
+ if (value.equals("isNonNullObjectValue")) { //$NON-NLS-1$
+ return varValue != null && JDIObjectValue.class.isAssignableFrom(varValue.getClass())
+ && !((JDIObjectValue) varValue).isNull();
+ }
if (value.equals("isFieldVariable")) { //$NON-NLS-1$
return var instanceof IJavaFieldVariable;
}
@@ -259,4 +263,4 @@
protected boolean isInstanceRetrievalAvailable(IJavaVariable var) {
return ((IJavaDebugTarget)var.getDebugTarget()).supportsInstanceRetrieval() && !(var instanceof JDIReferenceListVariable);
}
-}
\ No newline at end of file
+}
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/SetObjectLabelAction.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/SetObjectLabelAction.java
index 1936251..80d8cee 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/SetObjectLabelAction.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/SetObjectLabelAction.java
@@ -58,7 +58,9 @@
}
if (value instanceof IJavaObject) {
final IJavaObject javaValue = (IJavaObject) value;
- askForLabel(javaValue, name);
+ if (!javaValue.isNull()) {
+ askForLabel(javaValue, name);
+ }
}
} catch (DebugException e) {
return;