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 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 and Description
`ThrowableCallStack(String messageFormat, boolean useTimestamp)` Create a new instance.

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `clear()` Clears the current stack trace snapshot.
`void` `fillInStackTrace()` Takes a snapshot of the current call stack.
`boolean` `printStackTrace(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(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(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`