Goktug Gokdogan has uploaded a new change for review.
https://gwt-review.googlesource.com/2300
Change subject: Moves c.g.gwt.logging to common StackTraceDeobfuscator.
......................................................................
Moves c.g.gwt.logging to common StackTraceDeobfuscator.
Change-Id: I44bee6a3abdf550831f6f9263a8c6e3c807ca063
---
M user/src/com/google/gwt/logging/server/RemoteLoggingServiceImpl.java
M user/src/com/google/gwt/logging/server/RemoteLoggingServiceUtil.java
M user/src/com/google/web/bindery/requestfactory/server/Logging.java
M user/test/com/google/gwt/user/client/rpc/LoggingRPCTest.java
M user/test/com/google/gwt/user/server/rpc/LoggingRPCTestServiceImpl.java
5 files changed, 42 insertions(+), 91 deletions(-)
diff --git
a/user/src/com/google/gwt/logging/server/RemoteLoggingServiceImpl.java
b/user/src/com/google/gwt/logging/server/RemoteLoggingServiceImpl.java
index ac85b0a..15cc374 100644
--- a/user/src/com/google/gwt/logging/server/RemoteLoggingServiceImpl.java
+++ b/user/src/com/google/gwt/logging/server/RemoteLoggingServiceImpl.java
@@ -16,6 +16,7 @@
package com.google.gwt.logging.server;
+import com.google.gwt.core.server.impl.StackTraceDeobfuscator;
import
com.google.gwt.logging.server.RemoteLoggingServiceUtil.RemoteLoggingException;
import com.google.gwt.logging.shared.RemoteLoggingService;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
@@ -27,16 +28,14 @@
/**
* Server side code for the remote log handler.
*/
-public class RemoteLoggingServiceImpl extends RemoteServiceServlet
implements
- RemoteLoggingService {
- // No deobfuscator by default
- private static StackTraceDeobfuscator deobfuscator = null;
+public class RemoteLoggingServiceImpl extends RemoteServiceServlet
implements RemoteLoggingService {
- private static Logger logger =
- Logger.getLogger(RemoteServiceServlet.class.getName());
-
- private static String loggerNameOverride = null;
-
+ private static Logger logger =
Logger.getLogger(RemoteServiceServlet.class.getName());
+
+ // No deobfuscator by default
+ private StackTraceDeobfuscator deobfuscator = null;
+ private String loggerNameOverride = null;
+
/**
* Logs a Log Record which has been serialized using GWT RPC on the
server.
* @return either an error message, or null if logging is successful.
@@ -67,13 +66,8 @@
* By default, this service does not do any deobfuscation. In order to do
* server side deobfuscation, you must copy the symbolMaps files to a
* directory visible to the server and set the directory using this
method.
- * @param symbolMapsDir
*/
public void setSymbolMapsDirectory(String symbolMapsDir) {
- if (deobfuscator == null) {
- deobfuscator = new StackTraceDeobfuscator(symbolMapsDir);
- } else {
- deobfuscator.setSymbolMapsDirectory(symbolMapsDir);
- }
+ deobfuscator = StackTraceDeobfuscator.fromFileSystem(symbolMapsDir);
}
}
diff --git
a/user/src/com/google/gwt/logging/server/RemoteLoggingServiceUtil.java
b/user/src/com/google/gwt/logging/server/RemoteLoggingServiceUtil.java
index 2b0b6dc..940cc95 100644
--- a/user/src/com/google/gwt/logging/server/RemoteLoggingServiceUtil.java
+++ b/user/src/com/google/gwt/logging/server/RemoteLoggingServiceUtil.java
@@ -16,6 +16,8 @@
package com.google.gwt.logging.server;
+import com.google.gwt.core.server.impl.StackTraceDeobfuscator;
+
import java.util.logging.LogRecord;
import java.util.logging.Logger;
@@ -53,7 +55,7 @@
StackTraceDeobfuscator deobfuscator, String loggerNameOverride)
throws
RemoteLoggingException {
if (deobfuscator != null) {
- lr = deobfuscator.deobfuscateLogRecord(lr, strongName);
+ lr = deobfuscateLogRecord(deobfuscator, lr, strongName);
}
String loggerName = loggerNameOverride == null ? lr.getLoggerName() :
loggerNameOverride;
@@ -61,13 +63,19 @@
logger.log(lr);
}
+ public static LogRecord deobfuscateLogRecord(
+ StackTraceDeobfuscator deobfuscator, LogRecord lr, String
strongName) {
+ if (lr.getThrown() != null && strongName != null) {
+ deobfuscator.deobfuscateStackTrace(lr.getThrown(), strongName);
+ }
+ return lr;
+ }
+
public static void logOnServer(String serializedLogRecordJson,
String strongName, StackTraceDeobfuscator deobfuscator,
String loggerNameOverride) throws RemoteLoggingException {
- LogRecord lr;
try {
- lr = JsonLogRecordServerUtil.logRecordFromJson(
- serializedLogRecordJson);
+ LogRecord lr =
JsonLogRecordServerUtil.logRecordFromJson(serializedLogRecordJson);
logOnServer(lr, strongName, deobfuscator, loggerNameOverride);
} catch (Exception e) {
// We don't want to import the JsonException, which will require the
json
diff --git
a/user/src/com/google/web/bindery/requestfactory/server/Logging.java
b/user/src/com/google/web/bindery/requestfactory/server/Logging.java
index 73c6f54..485fb04 100644
--- a/user/src/com/google/web/bindery/requestfactory/server/Logging.java
+++ b/user/src/com/google/web/bindery/requestfactory/server/Logging.java
@@ -16,9 +16,9 @@
package com.google.web.bindery.requestfactory.server;
+import com.google.gwt.core.server.impl.StackTraceDeobfuscator;
import com.google.gwt.logging.server.RemoteLoggingServiceUtil;
import
com.google.gwt.logging.server.RemoteLoggingServiceUtil.RemoteLoggingException;
-import com.google.gwt.logging.server.StackTraceDeobfuscator;
import com.google.gwt.user.client.rpc.RpcRequestBuilder;
import javax.servlet.http.HttpServletRequest;
@@ -30,7 +30,7 @@
*/
public class Logging {
- private static StackTraceDeobfuscator deobfuscator = new
StackTraceDeobfuscator("");
+ private static StackTraceDeobfuscator deobfuscator;
/**
* Logs a message.
@@ -60,7 +60,7 @@
* @param dir a directory, specified as a String
*/
public static void setSymbolMapsDirectory(String dir) {
- deobfuscator.setSymbolMapsDirectory(dir);
+ deobfuscator = StackTraceDeobfuscator.fromFileSystem(dir);
}
private String id = "";
diff --git a/user/test/com/google/gwt/user/client/rpc/LoggingRPCTest.java
b/user/test/com/google/gwt/user/client/rpc/LoggingRPCTest.java
index 8991ffa..c047bb3 100644
--- a/user/test/com/google/gwt/user/client/rpc/LoggingRPCTest.java
+++ b/user/test/com/google/gwt/user/client/rpc/LoggingRPCTest.java
@@ -17,8 +17,8 @@
package com.google.gwt.user.client.rpc;
import com.google.gwt.core.client.GWT;
-import com.google.gwt.junit.client.GWTTestCase;
import com.google.gwt.core.client.impl.SourceMapProperty;
+import com.google.gwt.junit.client.GWTTestCase;
import java.util.logging.Level;
import java.util.logging.LogRecord;
@@ -123,7 +123,6 @@
service.echoLogRecord(expectedLogRecord, new
AsyncCallback<LogRecord>() {
public void onFailure(Throwable caught) {
TestSetValidator.rethrowException(caught);
- fail(caught.getMessage());
}
public void onSuccess(LogRecord result) {
@@ -151,7 +150,6 @@
service.deobfuscateLogRecord(createLogRealRecord(e), new
AsyncCallback<LogRecord>() {
public void onFailure(Throwable caught) {
- assertTrue(false);
TestSetValidator.rethrowException(caught);
}
diff --git
a/user/test/com/google/gwt/user/server/rpc/LoggingRPCTestServiceImpl.java
b/user/test/com/google/gwt/user/server/rpc/LoggingRPCTestServiceImpl.java
index 691139a..f08ac46 100644
---
a/user/test/com/google/gwt/user/server/rpc/LoggingRPCTestServiceImpl.java
+++
b/user/test/com/google/gwt/user/server/rpc/LoggingRPCTestServiceImpl.java
@@ -16,17 +16,14 @@
package com.google.gwt.user.server.rpc;
-import static
com.google.gwt.user.client.rpc.RpcRequestBuilder.MODULE_BASE_HEADER;
-
+import com.google.gwt.core.server.impl.StackTraceDeobfuscator;
import com.google.gwt.junit.linker.JUnitSymbolMapsLinker;
-import com.google.gwt.logging.server.StackTraceDeobfuscator;
+import com.google.gwt.logging.server.RemoteLoggingServiceUtil;
import com.google.gwt.user.client.rpc.LoggingRPCTest;
import com.google.gwt.user.client.rpc.LoggingRPCTestService;
import com.google.gwt.user.client.rpc.RpcRequestBuilder;
import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.LogRecord;
@@ -41,43 +38,13 @@
LoggingRPCTestService {
@Override
- public LogRecord deobfuscateLogRecord(LogRecord value)
- throws LoggingRPCTestServiceException {
+ public LogRecord deobfuscateLogRecord(LogRecord value) {
// don't deobfuscate DevMode, there's no symbol map
if ("HostedMode".equals(getPermutationStrongName())) {
return value;
}
- StackTraceDeobfuscator deobf = new
StackTraceDeobfuscator(getSymbolMapsDir()) {
- @Override
- protected InputStream getSourceMapInputStream(String
permutationStrongName,
- int fragmentNumber)
- throws IOException {
- if (symbolMapsDirectory.exists()) {
- return super.getSourceMapInputStream(permutationStrongName,
- fragmentNumber);
- } else {
- return getServletContext().getResourceAsStream(
- getModule() + File.separatorChar +
JUnitSymbolMapsLinker.SYMBOL_MAP_DIR
- + permutationStrongName
- + "_sourceMap" + fragmentNumber + ".json");
- }
- }
-
- @Override
- protected InputStream getSymbolMapInputStream(String
permutationStrongName)
- throws IOException {
- if (symbolMapsDirectory.exists()) {
- return super.getSymbolMapInputStream(permutationStrongName);
- } else {
- String name =
- getModule() + File.separatorChar +
JUnitSymbolMapsLinker.SYMBOL_MAP_DIR
- + permutationStrongName
- + ".symbolMap";
- return getServletContext().getResourceAsStream(name);
- }
- }
- };
+ StackTraceDeobfuscator deobf =
StackTraceDeobfuscator.fromUrl(getSymbolMapUrl());
HttpServletRequest threadLocalRequest = getThreadLocalRequest();
String strongName = null;
@@ -85,9 +52,19 @@
// can be null during tests
strongName =
threadLocalRequest.getHeader(RpcRequestBuilder.STRONG_NAME_HEADER);
}
- LogRecord newRecord = deobf.deobfuscateLogRecord(value, strongName);
+ LogRecord newRecord =
RemoteLoggingServiceUtil.deobfuscateLogRecord(deobf, value, strongName);
Logger.getLogger(value.getLoggerName()).log(newRecord);
return newRecord;
+ }
+
+ private URL getSymbolMapUrl() {
+ File symbolMapsDirectory = new File("war/" + getJunitSymbolMapsPath());
+ try {
+ return symbolMapsDirectory.exists() ?
symbolMapsDirectory.toURI().toURL()
+ : getServletContext().getResource(getJunitSymbolMapsPath());
+ } catch (MalformedURLException e) {
+ throw new RuntimeException(e);
+ }
}
public LogRecord echoLogRecord(LogRecord value) throws
LoggingRPCTestServiceException {
@@ -104,33 +81,7 @@
return value;
}
- private String getModule() {
- try {
- String header =
getThreadLocalRequest().getHeader(MODULE_BASE_HEADER);
- if (header == null) {
- return null;
- }
- String path = new URL(header).getPath();
- String contextPath = getThreadLocalRequest().getContextPath();
- if (!path.startsWith(contextPath)) {
- return null;
- }
- path = path.substring(contextPath.length());
- if (path.endsWith("/")) {
- path = path.substring(0, path.length() - 1);
- }
- return path;
- } catch (MalformedURLException e) {
- return null;
- }
- }
-
- private String getSymbolMapsDir() {
- String path = getModule();
- if (path == null) {
- return null;
- }
- return "war" + File.separatorChar + getModule() + File.separatorChar
- + JUnitSymbolMapsLinker.SYMBOL_MAP_DIR;
+ private String getJunitSymbolMapsPath() {
+ return getRequestModuleBasePath() + "/" +
JUnitSymbolMapsLinker.SYMBOL_MAP_DIR;
}
}
--
To view, visit https://gwt-review.googlesource.com/2300
To unsubscribe, visit https://gwt-review.googlesource.com/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I44bee6a3abdf550831f6f9263a8c6e3c807ca063
Gerrit-PatchSet: 1
Gerrit-Project: gwt
Gerrit-Branch: master
Gerrit-Owner: Goktug Gokdogan <[email protected]>
--
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors
---
You received this message because you are subscribed to the Google Groups "Google Web Toolkit Contributors" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.