From e9c954f91647e55f8cce2d8efccb192c6416ab39 Mon Sep 17 00:00:00 2001 From: Jinbo Wang Date: Thu, 12 Oct 2017 14:43:25 +0800 Subject: [PATCH 1/3] format stackframe name with ClassName.MethodName(ParameterTypes) Signed-off-by: Jinbo Wang --- .../handler/StackTraceRequestHandler.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/com.microsoft.java.debug.core/src/main/java/com/microsoft/java/debug/core/adapter/handler/StackTraceRequestHandler.java b/com.microsoft.java.debug.core/src/main/java/com/microsoft/java/debug/core/adapter/handler/StackTraceRequestHandler.java index 95440ec20..ad74e2186 100644 --- a/com.microsoft.java.debug.core/src/main/java/com/microsoft/java/debug/core/adapter/handler/StackTraceRequestHandler.java +++ b/com.microsoft.java.debug.core/src/main/java/com/microsoft/java/debug/core/adapter/handler/StackTraceRequestHandler.java @@ -15,6 +15,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; import org.apache.commons.lang3.StringUtils; @@ -90,7 +91,7 @@ private Types.StackFrame convertDebuggerStackFrameToClient(StackFrame stackFrame Location location = stackFrame.location(); Method method = location.method(); Types.Source clientSource = this.convertDebuggerSourceToClient(location, context); - String methodName = method.name(); + String methodName = formatMethodName(method, true, true); int lineNumber = AdapterUtils.convertLineNumber(location.lineNumber(), context.isDebuggerLinesStartAt1(), context.isClientLinesStartAt1()); // Line number returns -1 if the information is not available; specifically, always returns -1 for native methods. if (lineNumber < 0) { @@ -103,6 +104,7 @@ private Types.StackFrame convertDebuggerStackFrameToClient(StackFrame stackFrame clientSource = null; } } + return new Types.StackFrame(frameId, methodName, clientSource, lineNumber, 0); } @@ -152,4 +154,21 @@ private Types.Source convertDebuggerSourceToClient(Location location, IDebugAdap } } } + + private String formatMethodName(Method method, boolean showContextClass, boolean showParameter) { + String formattedName = method.name(); + if (showContextClass) { + String fullyQualifiedClassName = method.declaringType().name(); + formattedName = getBaseName(fullyQualifiedClassName) + "." + formattedName; + } + if (showParameter) { + List argumentTypeNames = method.argumentTypeNames().stream().map((typeName) -> getBaseName(typeName)).collect(Collectors.toList()); + formattedName = formattedName + "(" + String.join(",", argumentTypeNames) + ")"; + } + return formattedName; + } + + private String getBaseName(String fullyQualifiedName) { + return fullyQualifiedName.substring(fullyQualifiedName.lastIndexOf(".") + 1); + } } From dcbde9bb80ace2f2c9bc44530a3ef98ae0e54c95 Mon Sep 17 00:00:00 2001 From: Jinbo Wang Date: Thu, 12 Oct 2017 16:03:40 +0800 Subject: [PATCH 2/3] fix review comments Signed-off-by: Jinbo Wang --- .../handler/StackTraceRequestHandler.java | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/com.microsoft.java.debug.core/src/main/java/com/microsoft/java/debug/core/adapter/handler/StackTraceRequestHandler.java b/com.microsoft.java.debug.core/src/main/java/com/microsoft/java/debug/core/adapter/handler/StackTraceRequestHandler.java index ad74e2186..5ba20cebb 100644 --- a/com.microsoft.java.debug.core/src/main/java/com/microsoft/java/debug/core/adapter/handler/StackTraceRequestHandler.java +++ b/com.microsoft.java.debug.core/src/main/java/com/microsoft/java/debug/core/adapter/handler/StackTraceRequestHandler.java @@ -30,6 +30,7 @@ import com.microsoft.java.debug.core.adapter.Requests.StackTraceArguments; import com.microsoft.java.debug.core.adapter.Responses; import com.microsoft.java.debug.core.adapter.Types; +import com.microsoft.java.debug.core.adapter.formatter.SimpleTypeFormatter; import com.microsoft.java.debug.core.adapter.variables.JdiObjectProxy; import com.sun.jdi.AbsentInformationException; import com.sun.jdi.IncompatibleThreadStateException; @@ -156,19 +157,20 @@ private Types.Source convertDebuggerSourceToClient(Location location, IDebugAdap } private String formatMethodName(Method method, boolean showContextClass, boolean showParameter) { - String formattedName = method.name(); + StringBuilder formattedName = new StringBuilder(); if (showContextClass) { String fullyQualifiedClassName = method.declaringType().name(); - formattedName = getBaseName(fullyQualifiedClassName) + "." + formattedName; + formattedName.append(SimpleTypeFormatter.trimTypeName(fullyQualifiedClassName)); + formattedName.append("."); } + formattedName.append(method.name()); if (showParameter) { - List argumentTypeNames = method.argumentTypeNames().stream().map((typeName) -> getBaseName(typeName)).collect(Collectors.toList()); - formattedName = formattedName + "(" + String.join(",", argumentTypeNames) + ")"; + List argumentTypeNames = method.argumentTypeNames().stream().map((typeName) -> SimpleTypeFormatter.trimTypeName(typeName)) + .collect(Collectors.toList()); + formattedName.append("("); + formattedName.append(String.join(",", argumentTypeNames)); + formattedName.append(")"); } - return formattedName; - } - - private String getBaseName(String fullyQualifiedName) { - return fullyQualifiedName.substring(fullyQualifiedName.lastIndexOf(".") + 1); + return formattedName.toString(); } } From ec89ef48b312bf3db20c52c51c6656148119104b Mon Sep 17 00:00:00 2001 From: Jinbo Wang Date: Thu, 12 Oct 2017 16:45:21 +0800 Subject: [PATCH 3/3] fix lambda expression syntax Signed-off-by: Jinbo Wang --- .../debug/core/adapter/handler/StackTraceRequestHandler.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/com.microsoft.java.debug.core/src/main/java/com/microsoft/java/debug/core/adapter/handler/StackTraceRequestHandler.java b/com.microsoft.java.debug.core/src/main/java/com/microsoft/java/debug/core/adapter/handler/StackTraceRequestHandler.java index 5ba20cebb..ba3ca336a 100644 --- a/com.microsoft.java.debug.core/src/main/java/com/microsoft/java/debug/core/adapter/handler/StackTraceRequestHandler.java +++ b/com.microsoft.java.debug.core/src/main/java/com/microsoft/java/debug/core/adapter/handler/StackTraceRequestHandler.java @@ -165,8 +165,7 @@ private String formatMethodName(Method method, boolean showContextClass, boolean } formattedName.append(method.name()); if (showParameter) { - List argumentTypeNames = method.argumentTypeNames().stream().map((typeName) -> SimpleTypeFormatter.trimTypeName(typeName)) - .collect(Collectors.toList()); + List argumentTypeNames = method.argumentTypeNames().stream().map(SimpleTypeFormatter::trimTypeName).collect(Collectors.toList()); formattedName.append("("); formattedName.append(String.join(",", argumentTypeNames)); formattedName.append(")");