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.


Reply via email to