Java 类org.eclipse.debug.core.model.IWatchExpressionResult 实例源码

项目:pandionj    文件:RuntimeModel.java   
public void evaluate(String expression, InvocationResult listener) {
        IExpressionManager expressionManager = DebugPlugin.getDefault().getExpressionManager();
        StackFrameModel stackFrame = getTopFrame();
        IWatchExpressionDelegate delegate = expressionManager.newWatchExpressionDelegate(stackFrame.getStackFrame().getModelIdentifier());  
        delegate.evaluateExpression(expression, stackFrame.getStackFrame(), new IWatchExpressionListener() {
            public void watchEvaluationFinished(IWatchExpressionResult result) {
                listener.valueReturn(result.getValue());
//              setChanged();
//              notifyObservers(new Event<IStackFrameModel>(Event.Type.EVALUATION, getTopFrame()));
//              try {
//                  evaluationNotify();
//              } catch (DebugException e) {
//                  e.printStackTrace();
//              }
            }
        });
    }
项目:pandionj    文件:ObjectModel.java   
@Override
        public void watchEvaluationFinished(IWatchExpressionResult result) {
            IJavaValue ret = (IJavaValue) result.getValue();
            DebugException exception = result.getException();
            if(ret != null) {
                if(ret instanceof IJavaObject) {
                    IJavaObject obj = (IJavaObject) ret;
                    if(obj.isNull()) {
                        listener.valueReturn(null);
                    }
                    else {
                        IEntityModel object = getRuntimeModel().getObject((IJavaObject) ret, true, null);
                        listener.valueReturn(object);
                    }
                }
                else
                    listener.valueReturn(ret);
            }
            else if(exception != null) {
                String trimExpression = trimExpression(expression);
                InvocationException cause = (InvocationException) exception.getCause();
//              cause.printStackTrace();
//              ObjectReference exception2 = cause.exception();
                ReferenceType referenceType = cause.exception().referenceType();
//              Field field = referenceType.fieldByName("NULL_CAUSE_MESSAGE");
//              StackTraceElement[] stackTrace = ((InvocationException)exception.getCause()).getStackTrace();
//              String message = ((InvocationException)exception.getCause()).getMessage();
//              System.out.println(message);
//              System.out.println(stackTrace[0].getClassName() + " " + stackTrace[0].getLineNumber());
                String exceptionType = ((InvocationException)exception.getCause()).exception().referenceType().name();
                PandionJUI.executeUpdate(() -> {
                    if(exceptionType.equals(IllegalArgumentException.class.getName()))
                        MessageDialog.openError(Display.getDefault().getActiveShell(), "Illegal arguments",
                                trimExpression + " was invoked with illegal argument values.");
                    else if(exceptionType.equals(IllegalStateException.class.getName()))
                        MessageDialog.openError(Display.getDefault().getActiveShell(), "Illegal object state",
                                "the current state of the object does not allow the operation " + trimExpression);
                    else
                        MessageDialog.openError(Display.getDefault().getActiveShell(), "Exception occurred", exceptionType + 
                            "\nSuggestion: execute " + trimExpression + " through code statements step by step.");
                });
            }
        }
项目:chromedevtools    文件:JsWatchExpressionDelegate.java   
public void evaluateExpression(final String expression, final IDebugElement context,
    final IWatchExpressionListener listener) {
  final DebugElementImpl contextImpl = (DebugElementImpl) context;
  if (!contextImpl.getDebugTarget().isSuspended()) {
    // can only evaluate while suspended. Notify empty result.
    listener.watchEvaluationFinished(new IWatchExpressionResult() {

      public String[] getErrorMessages() {
        return EMPTY_STRINGS;
      }

      public DebugException getException() {
        return null;
      }

      public String getExpressionText() {
        return expression;
      }

      public IValue getValue() {
        return null;
      }

      public boolean hasErrors() {
        return false;
      }
    });
    return;
  }

  final EvaluateContext evaluateContext =
      (EvaluateContext) contextImpl.getAdapter(EvaluateContext.class);
  if (evaluateContext == null) {
    listener.watchEvaluationFinished(new BadWatchExpressionResult(
        new DebugException(new Status(Status.ERROR,
            ChromiumDebugUIPlugin.PLUGIN_ID,"Bad debug context")), //$NON-NLS-1$
        expression));
    return;
  }

  evaluateContext.getJsEvaluateContext().evaluateAsync(
      expression, null,
      new JsEvaluateContext.EvaluateCallback() {
        @Override
        public void success(ResultOrException result) {
          ValueBase valueBase = result.accept(new ResultOrException.Visitor<ValueBase>() {
            @Override public ValueBase visitResult(JsValue value) {
              return Value.create(evaluateContext, value,
                  ExpressionTracker.createExpressionNode(expression));
            }
            @Override
            public ValueBase visitException(JsValue exception) {
              return new ValueBase.ErrorMessageValue(evaluateContext, "<abnormal return>",
                  exception);
            }
          });
          listener.watchEvaluationFinished(new GoodWatchExpressionResult(valueBase, expression));
        }

        @Override
        public void failure(Exception cause) {
          String message = cause.getMessage();
          listener.watchEvaluationFinished(new BadWatchExpressionResult(new DebugException(
              createErrorStatus(message == null
                  ? Messages.JsWatchExpressionDelegate_ErrorEvaluatingExpression
                  : message, null)), expression));
          return;
        }
      },
      null);
}