# Class AbandonedTrace

java.lang.Object
org.apache.tomcat.dbcp.dbcp2.AbandonedTrace

All Implemented Interfaces:
  `AutoCloseable`, `TrackedUse`

Direct Known Subclasses:
  `DelegatingConnection`, `DelegatingResultSet`, `DelegatingStatement`

public class AbandonedTrace extends Object implements TrackedUse, AutoCloseable
Tracks connection usage for recovering and reporting abandoned connections.

The JDBC Connection, Statement, and ResultSet classes extend this class.

Since:
  2.0

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `AbandonedTrace()`
  Creates a new AbandonedTrace without config and without doing abandoned tracing.
  `AbandonedTrace(AbandonedTrace parent)`
  Constructs a new AbandonedTrace with a parent object.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected void`
  `addTrace(AbandonedTrace trace)`
  Adds an object to the list of objects being traced.
  `protected void`
  `clearTrace()`
  Clears the list of objects being traced by this object.
  `void`
  `close()`
  Subclasses can implement this nop.
  `protected void`
  `close(Consumer<Exception> exceptionHandler)`
  Closes this resource and if an exception is caught, then calls `exceptionHandler`.
  `long`
  `getLastUsed()`
  Deprecated.
  `Instant`
  `getLastUsedInstant()`
  Gets the last Instant this object was used.
  `protected List<AbandonedTrace>`
  `getTrace()`
  Gets a list of objects being traced by this object.
  `protected void`
  `removeThisTrace(Object source)`
  Removes this object the source object is tracing.
  `protected void`
  `removeTrace(AbandonedTrace trace)`
  Removes a child object this object is tracing.
  `protected void`
  `setLastUsed()`
  Sets the time this object was last used to the current time in milliseconds.
  `protected void`
  `setLastUsed(long lastUsedMillis)`
  Deprecated.
  Use `setLastUsed(Instant)`
  `protected void`
  `setLastUsed(Instant lastUsedInstant)`
  Sets the instant this object was last used.

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

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

- ## Constructor Details

  - ### AbandonedTrace

    public AbandonedTrace()
    Creates a new AbandonedTrace without config and without doing abandoned tracing.

  - ### AbandonedTrace

    public AbandonedTrace(AbandonedTrace parent)
    Constructs a new AbandonedTrace with a parent object.
    Parameters:
      `parent` - AbandonedTrace parent object.

- ## Method Details

  - ### addTrace

    protected void addTrace(AbandonedTrace trace)
    Adds an object to the list of objects being traced.
    Parameters:
      `trace` - AbandonedTrace object to add.

  - ### clearTrace

    protected void clearTrace()
    Clears the list of objects being traced by this object.

  - ### close

    public void close() throws SQLException
    Subclasses can implement this nop.
    Specified by:
      `close` in interface `AutoCloseable`
    Throws:
      `SQLException` - Ignored here, for subclasses.
    Since:
      2.10.0

  - ### close

    protected void close(Consumer<Exception> exceptionHandler)
    Closes this resource and if an exception is caught, then calls `exceptionHandler`.
    Parameters:
      `exceptionHandler` - Consumes exception thrown closing this resource.
    Since:
      2.10.0

  - ### getLastUsed

    @Deprecated public long getLastUsed()
    Deprecated.
    Gets the last time this object was used in milliseconds.
    Specified by:
      `getLastUsed` in interface `TrackedUse`
    Returns:
      long time in milliseconds.

  - ### getLastUsedInstant

    public Instant getLastUsedInstant()
    Description copied from interface: `TrackedUse`
    Gets the last Instant this object was used.

    Starting with Java 9, the JRE `SystemClock` precision is increased usually down to microseconds, or tenth of microseconds, depending on the OS, Hardware, and JVM implementation.

    Specified by:
      `getLastUsedInstant` in interface `TrackedUse`
    Returns:
      the last Instant this object was used.

  - ### getTrace

    protected List<AbandonedTrace> getTrace()
    Gets a list of objects being traced by this object.
    Returns:
      List of objects.

  - ### removeThisTrace

    protected void removeThisTrace(Object source)
    Removes this object the source object is tracing.
    Parameters:
      `source` - The object tracing
    Since:
      2.7.0

  - ### removeTrace

    protected void removeTrace(AbandonedTrace trace)
    Removes a child object this object is tracing.
    Parameters:
      `trace` - AbandonedTrace object to remove.

  - ### setLastUsed

    protected void setLastUsed()
    Sets the time this object was last used to the current time in milliseconds.

  - ### setLastUsed

    protected void setLastUsed(Instant lastUsedInstant)
    Sets the instant this object was last used.
    Parameters:
      `lastUsedInstant` - instant.
    Since:
      2.10.0

  - ### setLastUsed

    @Deprecated protected void setLastUsed(long lastUsedMillis)
    Deprecated.
    Use `setLastUsed(Instant)`
    Sets the time in milliseconds this object was last used.
    Parameters:
      `lastUsedMillis` - time in milliseconds.