Reviewers: scottb,
Description:
Make production mode stack traces match JRE spec more closely
- Fix StackTraceElement#getFileName(), so that it returns null instead
of "Unknown Source"
- Fix StackTraceElement#getLineNumber(), so that it returns -1 instead
of 0
- Fix StackTraceElement#toString(), so that lineNumber is omitted when
it is unknown, so that
"Unknown.foo(Unknown Source:0)" becomes "Unknown.foo(Unknown Source)"
Review by: [email protected]
Please review this at http://gwt-code-reviews.appspot.com/1295802/show
Affected files:
M user/src/com/google/gwt/core/client/impl/StackTraceCreator.java
M user/super/com/google/gwt/emul/java/lang/StackTraceElement.java
Index: user/src/com/google/gwt/core/client/impl/StackTraceCreator.java
===================================================================
--- user/src/com/google/gwt/core/client/impl/StackTraceCreator.java
(revision 9493)
+++ user/src/com/google/gwt/core/client/impl/StackTraceCreator.java
(working copy)
@@ -67,8 +67,8 @@
StackTraceElement[] stackTrace = new
StackTraceElement[stack.length()];
for (int i = 0, j = stackTrace.length; i < j; i++) {
- stackTrace[i] = new StackTraceElement("Unknown", stack.get(i),
- "Unknown source", 0);
+ stackTrace[i] = new StackTraceElement("Unknown", stack.get(i),
null,
+ LINE_NUMBER_UNKNOWN);
}
e.setStackTrace(stackTrace);
}
@@ -77,8 +77,8 @@
JsArrayString stack = StackTraceCreator.createStackTrace();
StackTraceElement[] stackTrace = new
StackTraceElement[stack.length()];
for (int i = 0, j = stackTrace.length; i < j; i++) {
- stackTrace[i] = new StackTraceElement("Unknown", stack.get(i),
- "Unknown source", 0);
+ stackTrace[i] = new StackTraceElement("Unknown", stack.get(i),
null,
+ LINE_NUMBER_UNKNOWN);
}
t.setStackTrace(stackTrace);
}
@@ -145,8 +145,8 @@
for (int i = 0, j = stackTrace.length; i < j; i++) {
// Locations is also backwards
String location = locations.get(j - i - 1);
- String fileName = "Unknown source";
- int lineNumber = 0;
+ String fileName = null;
+ int lineNumber = LINE_NUMBER_UNKNOWN;
if (location != null) {
int idx = location.indexOf(':');
if (idx != -1) {
@@ -361,6 +361,8 @@
}
}
+ private static final int LINE_NUMBER_UNKNOWN = -1;
+
/**
* Create a stack trace based on a JavaScriptException. This method
should
* only be called in Production Mode.
Index: user/super/com/google/gwt/emul/java/lang/StackTraceElement.java
===================================================================
--- user/super/com/google/gwt/emul/java/lang/StackTraceElement.java
(revision 9493)
+++ user/super/com/google/gwt/emul/java/lang/StackTraceElement.java
(working copy)
@@ -60,7 +60,8 @@
}
public String toString() {
- return className + "." + methodName + "(" + fileName + ":" + lineNumber
- + ")";
+ return className + "." + methodName + "("
+ + (fileName != null ? fileName : "Unknown Source")
+ + (lineNumber > 0 ? ":" + lineNumber : "") + ")";
}
}
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors