public static String getLocationMethodQName(@NotNull Location location) { StringBuilder res = new StringBuilder(); ReferenceType type = location.declaringType(); if (type != null) { res.append(type.name()).append('.'); } res.append(location.method().name()); return res.toString(); }
private void reportProblem(final String qualifiedName, @Nullable Exception ex) { String reason = null; if (ex != null) { reason = ex.getLocalizedMessage(); } if (reason == null || reason.length() == 0) { reason = DebuggerBundle.message("error.io.error"); } final StringBuilder buf = StringBuilderSpinAllocator.alloc(); try { buf.append(qualifiedName).append(" : ").append(reason); myProgress.addMessage(myDebuggerSession, MessageCategory.ERROR, buf.toString()); } finally { StringBuilderSpinAllocator.dispose(buf); } }
@NonNls String getSignature() { if (eof()) return ""; switch (get()) { case 'Z': return "boolean"; case 'B': return "byte"; case 'C': return "char"; case 'S': return "short"; case 'I': return "int"; case 'J': return "long"; case 'F': return "float"; case 'D': return "double"; case 'V': return "void"; case 'L': int start = pos; pos = buffer.indexOf(';', start) + 1; LOG.assertTrue(pos > 0); return buffer.substring(start, pos - 1).replace('/', '.'); case '[': return getSignature() + "[]"; case '(': StringBuilder result = new StringBuilder("("); String separator = ""; while (peek() != ')') { result.append(separator); result.append(getSignature()); separator = ", "; } get(); result.append(")"); return getSignature() + " " + getClassName() + "." + getMethodName() + " " + result; default: // LOG.assertTrue(false, "unknown signature " + buffer); return null; } }
private void runAction(final EvaluationContextImpl context, LocatableEvent event) { if (LOG_ENABLED || LOG_EXPRESSION_ENABLED) { final StringBuilder buf = StringBuilderSpinAllocator.alloc(); try { if (LOG_ENABLED) { buf.append(getEventMessage(event)); buf.append("\n"); } final DebugProcessImpl debugProcess = context.getDebugProcess(); final TextWithImports expressionToEvaluate = getLogMessage(); if (LOG_EXPRESSION_ENABLED && expressionToEvaluate != null && !"".equals(expressionToEvaluate.getText())) { if (!debugProcess.isAttached()) { return; } try { ExpressionEvaluator evaluator = DebuggerInvocationUtil.commitAndRunReadAction( getProject(), new EvaluatingComputable<ExpressionEvaluator>() { public ExpressionEvaluator compute() throws EvaluateException { return EvaluatorBuilderImpl.build( expressionToEvaluate, ContextUtil.getContextElement(context), ContextUtil.getSourcePosition(context)); } }); final Value eval = evaluator.evaluate(context); final String result = eval instanceof VoidValue ? "void" : DebuggerUtils.getValueAsString(context, eval); buf.append(result); } catch (EvaluateException e) { buf.append(DebuggerBundle.message("error.unable.to.evaluate.expression")); buf.append(" \""); buf.append(expressionToEvaluate); buf.append("\""); buf.append(" : "); buf.append(e.getMessage()); } buf.append("\n"); } if (buf.length() > 0) { debugProcess.printToConsole(buf.toString()); } } finally { StringBuilderSpinAllocator.dispose(buf); } } }