Class 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 Detail

      • EOL_STR

        private static final java.lang.String EOL_STR
      • commonElementCount

        private int commonElementCount
      • localizedMessage

        private final java.lang.String localizedMessage
      • message

        private final java.lang.String message
      • name

        private final java.lang.String name
      • throwable

        private final transient java.lang.Throwable throwable
    • 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 - TODO
        causeVisited - TODO
    • Method Detail

      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.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.
      • 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 of commonElementCount. 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 class java.lang.Object
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object