Class ThrowableProxy
- java.lang.Object
-
- org.apache.logging.log4j.core.impl.ThrowableProxy
-
- All Implemented Interfaces:
java.io.Serializable
public class ThrowableProxy extends java.lang.Object implements java.io.Serializable
Wraps a Throwable to add packaging information about each stack trace element.A proxy is used to represent a throwable that may not exist in a different class loader or JVM. When an application deserializes a ThrowableProxy, the throwable may not be set, but the throwable's information is preserved in other fields of the proxy like the message and stack trace.
TODO: Move this class to org.apache.logging.log4j.core because it is used from LogEvent.
TODO: Deserialize: Try to rebuild Throwable if the target exception is in this class loader?
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private ThrowableProxy
causeProxy
private int
commonElementCount
(package private) static ThrowableProxy[]
EMPTY_ARRAY
private static char
EOL
private static java.lang.String
EOL_STR
private ExtendedStackTraceElement[]
extendedStackTrace
private java.lang.String
localizedMessage
private java.lang.String
message
private java.lang.String
name
private static long
serialVersionUID
private ThrowableProxy[]
suppressedProxies
private java.lang.Throwable
throwable
-
Constructor Summary
Constructors Modifier Constructor Description (package private)
ThrowableProxy()
For JSON and XML IO via Jackson.ThrowableProxy(java.lang.Throwable throwable)
Constructs the wrapper for the Throwable that includes packaging data.private
ThrowableProxy(java.lang.Throwable parent, java.util.Deque<java.lang.Class<?>> stack, java.util.Map<java.lang.String,ThrowableProxyHelper.CacheEntry> map, java.lang.Throwable cause, java.util.Set<java.lang.Throwable> suppressedVisited, java.util.Set<java.lang.Throwable> causeVisited)
Constructs the wrapper for a Throwable that is referenced as the cause by another Throwable.(package private)
ThrowableProxy(java.lang.Throwable throwable, java.util.Set<java.lang.Throwable> visited)
Constructs the wrapper for the Throwable that includes packaging data.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(java.lang.Object obj)
void
formatExtendedStackTraceTo(java.lang.StringBuilder sb, java.util.List<java.lang.String> ignorePackages, TextRenderer textRenderer, java.lang.String suffix, java.lang.String lineSeparator)
Formats the stack trace including packaging information.void
formatWrapper(java.lang.StringBuilder sb, ThrowableProxy cause, java.lang.String suffix)
Formats the specified Throwable.void
formatWrapper(java.lang.StringBuilder sb, ThrowableProxy cause, java.util.List<java.lang.String> ignorePackages, java.lang.String suffix)
Formats the specified Throwable.void
formatWrapper(java.lang.StringBuilder sb, ThrowableProxy cause, java.util.List<java.lang.String> ignorePackages, TextRenderer textRenderer, java.lang.String suffix)
Formats the specified Throwable.void
formatWrapper(java.lang.StringBuilder sb, ThrowableProxy cause, java.util.List<java.lang.String> ignorePackages, TextRenderer textRenderer, java.lang.String suffix, java.lang.String lineSeparator)
Formats the specified Throwable.ThrowableProxy
getCauseProxy()
java.lang.String
getCauseStackTraceAsString(java.lang.String suffix)
Formats the Throwable that is the cause of this Throwable.java.lang.String
getCauseStackTraceAsString(java.util.List<java.lang.String> packages, java.lang.String suffix)
Formats the Throwable that is the cause of this Throwable.java.lang.String
getCauseStackTraceAsString(java.util.List<java.lang.String> ignorePackages, TextRenderer textRenderer, java.lang.String suffix)
Formats the Throwable that is the cause of this Throwable.java.lang.String
getCauseStackTraceAsString(java.util.List<java.lang.String> ignorePackages, TextRenderer textRenderer, java.lang.String suffix, java.lang.String lineSeparator)
Formats the Throwable that is the cause of this Throwable.int
getCommonElementCount()
Returns the number of elements that are being omitted because they are common with the parent Throwable's stack trace.ExtendedStackTraceElement[]
getExtendedStackTrace()
Gets the stack trace including packaging information.java.lang.String
getExtendedStackTraceAsString()
Formats the stack trace including packaging information.java.lang.String
getExtendedStackTraceAsString(java.lang.String suffix)
Formats the stack trace including packaging information.java.lang.String
getExtendedStackTraceAsString(java.util.List<java.lang.String> ignorePackages, java.lang.String suffix)
Formats the stack trace including packaging information.java.lang.String
getExtendedStackTraceAsString(java.util.List<java.lang.String> ignorePackages, TextRenderer textRenderer, java.lang.String suffix)
Formats the stack trace including packaging information.java.lang.String
getExtendedStackTraceAsString(java.util.List<java.lang.String> ignorePackages, TextRenderer textRenderer, java.lang.String suffix, java.lang.String lineSeparator)
Formats the stack trace including packaging information.java.lang.String
getLocalizedMessage()
java.lang.String
getMessage()
java.lang.String
getName()
Return the FQCN of the Throwable.java.lang.StackTraceElement[]
getStackTrace()
ThrowableProxy[]
getSuppressedProxies()
Gets proxies for suppressed exceptions.java.lang.String
getSuppressedStackTrace(java.lang.String suffix)
Formats the suppressed Throwables.java.lang.Throwable
getThrowable()
The throwable or null if this object is deserialized from XML or JSON.int
hashCode()
(package private) void
setCommonElementCount(int value)
Set the value ofcommonElementCount
.java.lang.String
toString()
-
-
-
Field Detail
-
EOL
private static final char EOL
- See Also:
- Constant Field Values
-
EOL_STR
private static final java.lang.String EOL_STR
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
causeProxy
private final ThrowableProxy causeProxy
-
commonElementCount
private int commonElementCount
-
extendedStackTrace
private final ExtendedStackTraceElement[] extendedStackTrace
-
localizedMessage
private final java.lang.String localizedMessage
-
message
private final java.lang.String message
-
name
private final java.lang.String name
-
suppressedProxies
private final ThrowableProxy[] suppressedProxies
-
throwable
private final transient java.lang.Throwable throwable
-
EMPTY_ARRAY
static final ThrowableProxy[] EMPTY_ARRAY
-
-
Constructor Detail
-
ThrowableProxy
ThrowableProxy()
For JSON and XML IO via Jackson.
-
ThrowableProxy
public ThrowableProxy(java.lang.Throwable throwable)
Constructs the wrapper for the Throwable that includes packaging data.- Parameters:
throwable
- The Throwable to wrap, must not be null.
-
ThrowableProxy
ThrowableProxy(java.lang.Throwable throwable, java.util.Set<java.lang.Throwable> visited)
Constructs the wrapper for the Throwable that includes packaging data.- Parameters:
throwable
- The Throwable to wrap, must not be null.visited
- The set of visited suppressed exceptions.
-
ThrowableProxy
private ThrowableProxy(java.lang.Throwable parent, java.util.Deque<java.lang.Class<?>> stack, java.util.Map<java.lang.String,ThrowableProxyHelper.CacheEntry> map, java.lang.Throwable cause, java.util.Set<java.lang.Throwable> suppressedVisited, java.util.Set<java.lang.Throwable> causeVisited)
Constructs the wrapper for a Throwable that is referenced as the cause by another Throwable.- Parameters:
parent
- The Throwable referencing this Throwable.stack
- The Class stack.map
- The cache containing the packaging data.cause
- The Throwable to wrap.suppressedVisited
- TODOcauseVisited
- TODO
-
-
Method Detail
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equals
in classjava.lang.Object
-
formatWrapper
public void formatWrapper(java.lang.StringBuilder sb, ThrowableProxy cause, java.lang.String suffix)
Formats the specified Throwable.- Parameters:
sb
- StringBuilder to contain the formatted Throwable.cause
- The Throwable to format.suffix
-
-
formatWrapper
public void formatWrapper(java.lang.StringBuilder sb, ThrowableProxy cause, java.util.List<java.lang.String> ignorePackages, java.lang.String suffix)
Formats the specified Throwable.- Parameters:
sb
- StringBuilder to contain the formatted Throwable.cause
- The Throwable to format.ignorePackages
- The List of packages to be suppressed from the trace.suffix
-
-
formatWrapper
public void formatWrapper(java.lang.StringBuilder sb, ThrowableProxy cause, java.util.List<java.lang.String> ignorePackages, TextRenderer textRenderer, java.lang.String suffix)
Formats the specified Throwable.- Parameters:
sb
- StringBuilder to contain the formatted Throwable.cause
- The Throwable to format.ignorePackages
- The List of packages to be suppressed from the stack trace.textRenderer
- The text renderer.suffix
- Append this to the end of each stack frame.
-
formatWrapper
public void formatWrapper(java.lang.StringBuilder sb, ThrowableProxy cause, java.util.List<java.lang.String> ignorePackages, TextRenderer textRenderer, java.lang.String suffix, java.lang.String lineSeparator)
Formats the specified Throwable.- Parameters:
sb
- StringBuilder to contain the formatted Throwable.cause
- The Throwable to format.ignorePackages
- The List of packages to be suppressed from the stack trace.textRenderer
- The text renderer.suffix
- Append this to the end of each stack frame.lineSeparator
- The end-of-line separator.
-
getCauseProxy
public ThrowableProxy getCauseProxy()
-
getCauseStackTraceAsString
public java.lang.String getCauseStackTraceAsString(java.lang.String suffix)
Formats the Throwable that is the cause of this Throwable.- Parameters:
suffix
-- Returns:
- The formatted Throwable that caused this Throwable.
-
getCauseStackTraceAsString
public java.lang.String getCauseStackTraceAsString(java.util.List<java.lang.String> packages, java.lang.String suffix)
Formats the Throwable that is the cause of this Throwable.- Parameters:
packages
- The List of packages to be suppressed from the trace.suffix
- Append this to the end of each stack frame.- Returns:
- The formatted Throwable that caused this Throwable.
-
getCauseStackTraceAsString
public java.lang.String getCauseStackTraceAsString(java.util.List<java.lang.String> ignorePackages, TextRenderer textRenderer, java.lang.String suffix)
Formats the Throwable that is the cause of this Throwable.- Parameters:
ignorePackages
- The List of packages to be suppressed from the trace.textRenderer
- The text renderer.suffix
- Append this to the end of each stack frame.- Returns:
- The formatted Throwable that caused this Throwable.
-
getCauseStackTraceAsString
public java.lang.String getCauseStackTraceAsString(java.util.List<java.lang.String> ignorePackages, TextRenderer textRenderer, java.lang.String suffix, java.lang.String lineSeparator)
Formats the Throwable that is the cause of this Throwable.- Parameters:
ignorePackages
- The List of packages to be suppressed from the stack trace.textRenderer
- The text renderer.suffix
- Append this to the end of each stack frame.lineSeparator
- The end-of-line separator.- Returns:
- The formatted Throwable that caused this Throwable.
-
getCommonElementCount
public int getCommonElementCount()
Returns the number of elements that are being omitted because they are common with the parent Throwable's stack trace.- Returns:
- The number of elements omitted from the stack trace.
-
setCommonElementCount
void setCommonElementCount(int value)
Set the value ofcommonElementCount
. Method is package-private, to be used internally for initialization.- Parameters:
value
- New value of commonElementCount.
-
getExtendedStackTrace
public ExtendedStackTraceElement[] getExtendedStackTrace()
Gets the stack trace including packaging information.- Returns:
- The stack trace including packaging information.
-
getExtendedStackTraceAsString
public java.lang.String getExtendedStackTraceAsString()
Formats the stack trace including packaging information.- Returns:
- The formatted stack trace including packaging information.
-
getExtendedStackTraceAsString
public java.lang.String getExtendedStackTraceAsString(java.lang.String suffix)
Formats the stack trace including packaging information.- Parameters:
suffix
- Append this to the end of each stack frame.- Returns:
- The formatted stack trace including packaging information.
-
getExtendedStackTraceAsString
public java.lang.String getExtendedStackTraceAsString(java.util.List<java.lang.String> ignorePackages, java.lang.String suffix)
Formats the stack trace including packaging information.- Parameters:
ignorePackages
- List of packages to be ignored in the trace.suffix
- Append this to the end of each stack frame.- Returns:
- The formatted stack trace including packaging information.
-
getExtendedStackTraceAsString
public java.lang.String getExtendedStackTraceAsString(java.util.List<java.lang.String> ignorePackages, TextRenderer textRenderer, java.lang.String suffix)
Formats the stack trace including packaging information.- Parameters:
ignorePackages
- List of packages to be ignored in the trace.textRenderer
- The message renderer.suffix
- Append this to the end of each stack frame.- Returns:
- The formatted stack trace including packaging information.
-
getExtendedStackTraceAsString
public java.lang.String getExtendedStackTraceAsString(java.util.List<java.lang.String> ignorePackages, TextRenderer textRenderer, java.lang.String suffix, java.lang.String lineSeparator)
Formats the stack trace including packaging information.- Parameters:
ignorePackages
- List of packages to be ignored in the trace.textRenderer
- The message renderer.suffix
- Append this to the end of each stack frame.lineSeparator
- The end-of-line separator.- Returns:
- The formatted stack trace including packaging information.
-
formatExtendedStackTraceTo
public void formatExtendedStackTraceTo(java.lang.StringBuilder sb, java.util.List<java.lang.String> ignorePackages, TextRenderer textRenderer, java.lang.String suffix, java.lang.String lineSeparator)
Formats the stack trace including packaging information.- Parameters:
sb
- Destination.ignorePackages
- List of packages to be ignored in the trace.textRenderer
- The message renderer.suffix
- Append this to the end of each stack frame.lineSeparator
- The end-of-line separator.
-
getLocalizedMessage
public java.lang.String getLocalizedMessage()
-
getMessage
public java.lang.String getMessage()
-
getName
public java.lang.String getName()
Return the FQCN of the Throwable.- Returns:
- The FQCN of the Throwable.
-
getStackTrace
public java.lang.StackTraceElement[] getStackTrace()
-
getSuppressedProxies
public ThrowableProxy[] getSuppressedProxies()
Gets proxies for suppressed exceptions.- Returns:
- proxies for suppressed exceptions.
-
getSuppressedStackTrace
public java.lang.String getSuppressedStackTrace(java.lang.String suffix)
Formats the suppressed Throwables.- Parameters:
suffix
-- Returns:
- The formatted suppressed Throwables.
-
getThrowable
public java.lang.Throwable getThrowable()
The throwable or null if this object is deserialized from XML or JSON.- Returns:
- The throwable or null if this object is deserialized from XML or JSON.
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-