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

## Class SecurityManagerCallStack

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

All Implemented Interfaces:
  `CallStack`

    public class SecurityManagerCallStack
    extends Object
    implements CallStack

A `CallStack` strategy using a `SecurityManager`. Obtaining the current call stack is much faster via a SecurityManger, but access to the underlying method may be restricted by the current SecurityManager. In environments where a SecurityManager cannot be created, `ThrowableCallStack` should be used instead.

Since:
  2.4.3
See Also:
  `RuntimePermission`, `SecurityManager.getClassContext()`

### Constructor Summary

Constructors
`SecurityManagerCallStack​(String messageFormat, boolean useTimestamp)` Creates 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

#### SecurityManagerCallStack

    public SecurityManagerCallStack​(String messageFormat,
                                    boolean useTimestamp)

Creates a new instance.

Parameters:
  `messageFormat` - message format
  `useTimestamp` - whether to format the dates in the output message or not

### Method Detail

#### 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`

#### 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`

#### 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