Package org.apache.tapestry5.ioc.internal

## Class PerThreadOperationTracker

- java.lang.Object
- - org.apache.tapestry5.ioc.internal.PerThreadOperationTracker

- All Implemented Interfaces:
    `OperationTracker`

      public class PerThreadOperationTracker
      extends Object
      implements OperationTracker

  Manages a per-thread OperationTracker using a ThreadLocal.

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `PerThreadOperationTracker​(org.slf4j.Logger logger)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `<T> T` | `invoke​(String description, Invokable<T> operation)` | As with `OperationTracker.run(String, Runnable)`, but the operation may return a value.
    `<T> T` | `perform​(String description, IOOperation<T> operation)` | As with `OperationTracker.invoke(String, Invokable)`, but the operation may throw an `IOException`.
    `void` | `run​(String description, Runnable operation)` | Executes the operation.

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

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

- - ### Constructor Detail

    - #### PerThreadOperationTracker

          public PerThreadOperationTracker​(org.slf4j.Logger logger)

  - ### Method Detail

    - #### run

          public void run​(String description,
                          Runnable operation)

      Description copied from interface: `OperationTracker`
      Executes the operation. If the operation throws a `RuntimeException` it will be logged and rethrown wrapped as a `OperationException`.
      Specified by:
        `run` in interface `OperationTracker`
      Parameters:
        `description` - used if there is an exception
        `operation` - to execute

    - #### invoke

          public <T> T invoke​(String description,
                              Invokable<T> operation)

      Description copied from interface: `OperationTracker`
      As with `OperationTracker.run(String, Runnable)`, but the operation may return a value.
      Specified by:
        `invoke` in interface `OperationTracker`
      Parameters:
        `description` - used if there is an exception
        `operation` - to invoke
      Returns:
        result of operation

    - #### perform

          public <T> T perform​(String description,
                               IOOperation<T> operation)
                        throws IOException

      Description copied from interface: `OperationTracker`
      As with `OperationTracker.invoke(String, Invokable)`, but the operation may throw an `IOException`.
      Specified by:
        `perform` in interface `OperationTracker`
      Parameters:
        `description` - used if there is an exception (outside of IOException)
        `operation` - to perform
      Returns:
        result of operation
      Throws:
        `IOException`