deprecate marker interfaces used for inline debugger
authorEgor.Ushakov <egor.ushakov@jetbrains.com>
Fri, 29 May 2015 17:16:11 +0000 (20:16 +0300)
committerEgor.Ushakov <egor.ushakov@jetbrains.com>
Fri, 29 May 2015 17:33:03 +0000 (20:33 +0300)
java/debugger/impl/src/com/intellij/debugger/engine/JavaValue.java
platform/xdebugger-api/src/com/intellij/xdebugger/frame/XInlineSourcePosition.java
platform/xdebugger-api/src/com/intellij/xdebugger/frame/XNearestSourcePosition.java

index 4a6c6ba5efb5f3b605f6b000f21196ce37d8d680..8f2517fe40d5017aa6f6704eaa93c02cd9e6f12a 100644 (file)
@@ -40,6 +40,8 @@ import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.psi.CommonClassNames;
 import com.intellij.psi.PsiExpression;
 import com.intellij.psi.util.TypeConversionUtil;
+import com.intellij.util.ThreeState;
+import com.intellij.xdebugger.XSourcePosition;
 import com.intellij.xdebugger.evaluation.XDebuggerEvaluator;
 import com.intellij.xdebugger.evaluation.XInstanceEvaluator;
 import com.intellij.xdebugger.frame.*;
@@ -407,17 +409,14 @@ public class JavaValue extends XNamedValue implements NodeDescriptorProvider, XV
 
   @Override
   public void computeSourcePosition(@NotNull final XNavigatable navigatable) {
-    if (navigatable instanceof XInlineSourcePosition && !(navigatable instanceof XNearestSourcePosition)
-        && !(myValueDescriptor instanceof ThisDescriptorImpl || myValueDescriptor instanceof LocalVariableDescriptor)) {
-      return;
-    }
+    computeSourcePosition(navigatable, false);
+  }
+
+  private void computeSourcePosition(@NotNull final XNavigatable navigatable, final boolean inline) {
     myEvaluationContext.getManagerThread().schedule(new SuspendContextCommandImpl(myEvaluationContext.getSuspendContext()) {
       @Override
       public Priority getPriority() {
-        if (navigatable instanceof XInlineSourcePosition) {
-          return Priority.LOWEST;
-        }
-        return Priority.NORMAL;
+        return inline ? Priority.LOWEST : Priority.NORMAL;
       }
 
       @Override
@@ -430,17 +429,34 @@ public class JavaValue extends XNamedValue implements NodeDescriptorProvider, XV
         ApplicationManager.getApplication().runReadAction(new Runnable() {
           @Override
           public void run() {
-            final boolean nearest = navigatable instanceof XNearestSourcePosition;
-            SourcePosition position = SourcePositionProvider.getSourcePosition(myValueDescriptor, getProject(), getDebuggerContext(), nearest);
+            SourcePosition position = SourcePositionProvider.getSourcePosition(myValueDescriptor, getProject(), getDebuggerContext(), false);
             if (position != null) {
               navigatable.setSourcePosition(DebuggerUtilsEx.toXSourcePosition(position));
             }
+            if (inline && (myValueDescriptor instanceof ThisDescriptorImpl || myValueDescriptor instanceof LocalVariableDescriptor)) {
+              position = SourcePositionProvider.getSourcePosition(myValueDescriptor, getProject(), getDebuggerContext(), true);
+              if (position != null) {
+                navigatable.setSourcePosition(DebuggerUtilsEx.toXSourcePosition(position));
+              }
+            }
           }
         });
       }
     });
   }
 
+  @NotNull
+  @Override
+  public ThreeState computeInlineDebuggerData(@NotNull final XInlineDebuggerDataCallback callback) {
+    computeSourcePosition(new XNavigatable() {
+      @Override
+      public void setSourcePosition(@Nullable XSourcePosition sourcePosition) {
+        callback.computed(sourcePosition);
+      }
+    }, true);
+    return ThreeState.YES;
+  }
+
   private DebuggerContextImpl getDebuggerContext() {
     return myEvaluationContext.getDebugProcess().getDebuggerContext();
   }
index ff9bc065cac5e9ff43506a5d2fc13ef9b561e9aa..2b4274ebd5d58047a893a27c99d5a85984825615 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 JetBrains s.r.o.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,7 +16,9 @@
 package com.intellij.xdebugger.frame;
 
 /**
+ * @deprecated override {@link XValue#computeInlineDebuggerData(XInlineDebuggerDataCallback)} instead
  * @author egor
  */
+@Deprecated
 public interface XInlineSourcePosition extends XNavigatable {
 }
index 9b223851ee03479c9691cd15a5939f053ca0394d..31545fbb05f42da314dc39019a60342b555c3683 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 JetBrains s.r.o.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,7 +16,9 @@
 package com.intellij.xdebugger.frame;
 
 /**
+ * @deprecated override {@link XValue#computeInlineDebuggerData(XInlineDebuggerDataCallback)} instead
  * @author Konstantin Bulenkov
  */
+@Deprecated
 public interface XNearestSourcePosition extends XInlineSourcePosition {
 }