public class StackTraceDeobfuscator
extends java.lang.Object
<set-property name="compiler.stackMode" value="emulated"
/> in your .gwt.xml module file for non-Chrome browsers or
<set-property name="compiler.useSourceMaps" value="true"/> for Chrome, and
moved your symbol map files to a location accessible by your server sever side code. You can use
the GWT compiler -deploy command line argument to specify the location of the folder
into which the generated symbolMaps directory is written. By default, the final
symbolMaps directory is war/WEB-INF/deploy/yourmodulename/symbolMaps/.
Pass the resulting directory location into this class' symbolMapsDirectory
constructor or setSymbolMapsDirectory(String) setter method.
TODO(unnurg): Combine this code with similar code in JUnitHostImpl| Modifier and Type | Field and Description |
|---|---|
(package private) java.util.regex.Pattern |
fragmentIdPattern |
protected java.io.File |
symbolMapsDirectory |
| Constructor and Description |
|---|
StackTraceDeobfuscator(java.lang.String symbolMapsDirectory)
Constructor, which takes a
symbolMaps directory as its argument. |
| Modifier and Type | Method and Description |
|---|---|
java.util.logging.LogRecord |
deobfuscateLogRecord(java.util.logging.LogRecord lr,
java.lang.String strongName)
Best effort resymbolization of a log record's stack trace.
|
java.lang.StackTraceElement[] |
deobfuscateStackTrace(java.lang.StackTraceElement[] st,
java.lang.String strongName)
Convenience method which resymbolizes an entire stack trace to extent possible.
|
protected java.io.InputStream |
getSourceMapInputStream(java.lang.String permutationStrongName,
int fragmentNumber) |
protected java.io.InputStream |
getSymbolMapInputStream(java.lang.String permutationStrongName)
Retrieves a new
InputStream for the given permutation strong name. |
java.lang.StackTraceElement |
resymbolize(java.lang.StackTraceElement ste,
java.lang.String strongName)
Best effort resymbolization of a a single stack trace element.
|
void |
setSymbolMapsDirectory(java.lang.String symbolMapsDirectory) |
java.util.regex.Pattern fragmentIdPattern
protected java.io.File symbolMapsDirectory
public StackTraceDeobfuscator(java.lang.String symbolMapsDirectory)
symbolMaps directory as its argument. Symbol maps are
generated into the location specified by the GWT compiler -deploy command line
argument.symbolMapsDirectory - the symbolMaps directory with, or without trailing
directory separator characterpublic java.util.logging.LogRecord deobfuscateLogRecord(java.util.logging.LogRecord lr,
java.lang.String strongName)
lr - the log record to resymbolizestrongName - the GWT permutation strong namepublic java.lang.StackTraceElement[] deobfuscateStackTrace(java.lang.StackTraceElement[] st,
java.lang.String strongName)
st - the stack trace to resymbolizestrongName - the GWT permutation strong namepublic java.lang.StackTraceElement resymbolize(java.lang.StackTraceElement ste,
java.lang.String strongName)
ste - the stack trace element to resymbolizestrongName - the GWT permutation strong namepublic void setSymbolMapsDirectory(java.lang.String symbolMapsDirectory)
protected java.io.InputStream getSourceMapInputStream(java.lang.String permutationStrongName,
int fragmentNumber)
throws java.io.IOException
java.io.IOExceptionprotected java.io.InputStream getSymbolMapInputStream(java.lang.String permutationStrongName)
throws java.io.IOException
InputStream for the given permutation strong name. This implementation,
which subclasses may override, returns a InputStream for the
permutation-strong-name.symbolMap file in the symbolMaps directory.permutationStrongName - the GWT permutation strong nameInputStreamjava.io.IOException