Reviewers: unnurg,

Description:
StackTraceDeobfuscator now extracts source file and (method declaration)
line number information from
the provided symbol map file, when this information is not provided by
optionally enabled stack trace emulation.

Fixes issues: 5682


Please review this at http://gwt-code-reviews.appspot.com/1175801/show

Affected files:
  M user/src/com/google/gwt/logging/server/StackTraceDeobfuscator.java


Index: user/src/com/google/gwt/logging/server/StackTraceDeobfuscator.java
===================================================================
--- user/src/com/google/gwt/logging/server/StackTraceDeobfuscator.java (revision 9305) +++ user/src/com/google/gwt/logging/server/StackTraceDeobfuscator.java (working copy)
@@ -73,8 +73,22 @@
       if (parts.length == 5) {
         String[] ref = parse(
             parts[0].substring(0, parts[0].lastIndexOf(')') + 1));
-        return new StackTraceElement(
-            ref[0], ref[1], ste.getFileName(), ste.getLineNumber());
+
+        // parts[3] contains the source file URI or "Unknown"
+        String filename = "Unknown".equals(parts[3]) ? null
+            : parts[3].substring(parts[3].lastIndexOf('/') + 1);
+
+        int lineNumber = ste.getLineNumber();
+        /*
+ * When lineNumber is zero, either because compiler.stackMode is not + * emulated or compiler.emulatedStack.recordLineNumbers is false, use
+         * the method declaration line number from the symbol map.
+         */
+        if (lineNumber == 0) {
+          lineNumber = Integer.parseInt(parts[4]);
+        }
+
+        return new StackTraceElement(ref[0], ref[1], filename, lineNumber);
       }
     }
     // If anything goes wrong, just return the unobfuscated element


--
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to