# 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
Constructor
Description
`SecurityManagerCallStack(String messageFormat, boolean useTimestamp)`
Creates a new instance.

## Method Summary

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(PrintWriter writer)`
Prints the current stack trace if available to a PrintWriter.

### Methods inherited from class Object

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

## Constructor Details

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

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