Package org.apache.tomcat.dbcp.pool2.impl

## Class ThrowableCallStack

- java.lang.Object
- - org.apache.tomcat.dbcp.pool2.impl.ThrowableCallStack

- All Implemented Interfaces:
    `CallStack`

      public class ThrowableCallStack
      extends java.lang.Object
      implements CallStack

  CallStack strategy that uses the stack trace from a `Throwable`. This strategy, while slower than the SecurityManager implementation, provides call stack method names and other metadata in addition to the call stack of classes.
  Since:
    2.4.3
  See Also:
    `Throwable.fillInStackTrace()`

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `ThrowableCallStack​(java.lang.String messageFormat, boolean useTimestamp)` | Create a new instance.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `clear()` | Clears the current stack trace snapshot.
    `void` | `fillInStackTrace()` | Takes a snapshot of the current call stack.
    `boolean` | `printStackTrace​(java.io.PrintWriter writer)` | Prints the current stack trace if available to a PrintWriter.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### ThrowableCallStack

          public ThrowableCallStack​(java.lang.String messageFormat,
                                    boolean useTimestamp)

      Create a new instance.
      Parameters:
        `messageFormat` - message format
        `useTimestamp` - whether to format the dates in the output message or not

  - ### Method Detail

    - #### printStackTrace

          public boolean printStackTrace​(java.io.PrintWriter writer)

      Description copied from interface: `CallStack`
      Prints the current stack trace if available to a PrintWriter. The format is undefined and is primarily useful for debugging issues with `PooledObject` usage in user code.
      Specified by:
        `printStackTrace` in interface `CallStack`
      Parameters:
        `writer` - a PrintWriter to write the current stack trace to if available
      Returns:
        true if a stack trace was available to print or false if nothing was printed

    - #### fillInStackTrace

          public void fillInStackTrace()

      Description copied from interface: `CallStack`
      Takes a snapshot of the current call stack. Subsequent calls to `CallStack.printStackTrace(PrintWriter)` will print out that stack trace until it is cleared.
      Specified by:
        `fillInStackTrace` in interface `CallStack`

    - #### clear

          public void clear()

      Description copied from interface: `CallStack`
      Clears the current stack trace snapshot. Subsequent calls to `CallStack.printStackTrace(PrintWriter)` will be no-ops until another call to `CallStack.fillInStackTrace()`.
      Specified by:
        `clear` in interface `CallStack`