org.springframework.transaction.interceptor

## Class RollbackRuleAttribute

- java.lang.Object
- - org.springframework.transaction.interceptor.RollbackRuleAttribute

- All Implemented Interfaces:
    Serializable
  Direct Known Subclasses:
    NoRollbackRuleAttribute

      public class RollbackRuleAttribute
      extends Object
      implements Serializable

  Rule determining whether or not a given exception (and any subclasses) should cause a rollback.

  Multiple such rules can be applied to determine whether a transaction should commit or rollback after an exception has been thrown.

  Since:
    09.04.2003
  Author:
    Rod Johnson
  See Also:
    `NoRollbackRuleAttribute`, Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static RollbackRuleAttribute` | `ROLLBACK_ON_RUNTIME_EXCEPTIONS` The `rollback rule` for `RuntimeExceptions`.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `RollbackRuleAttribute(Class<?> clazz)` Create a new instance of the `RollbackRuleAttribute` class.
    `RollbackRuleAttribute(String exceptionName)` Create a new instance of the `RollbackRuleAttribute` class for the given `exceptionName`.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `equals(Object other)`
    `int` | `getDepth(Throwable ex)` Return the depth of the superclass matching.
    `String` | `getExceptionName()` Return the pattern for the exception name.
    `int` | `hashCode()`
    `String` | `toString()`

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

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### ROLLBACK_ON_RUNTIME_EXCEPTIONS

          public static final RollbackRuleAttribute ROLLBACK_ON_RUNTIME_EXCEPTIONS

      The `rollback rule` for `RuntimeExceptions`.

  - ### Constructor Detail

    - #### RollbackRuleAttribute

          public RollbackRuleAttribute(Class<?> clazz)

      Create a new instance of the `RollbackRuleAttribute` class.

      This is the preferred way to construct a rollback rule that matches the supplied `Exception` class (and subclasses).

      Parameters:
        `clazz` - throwable class; must be `Throwable` or a subclass of `Throwable`
      Throws:
        `IllegalArgumentException` - if the supplied `clazz` is not a `Throwable` type or is `null`

    - #### RollbackRuleAttribute

          public RollbackRuleAttribute(String exceptionName)

      Create a new instance of the `RollbackRuleAttribute` class for the given `exceptionName`.

      This can be a substring, with no wildcard support at present. A value of "ServletException" would match `javax.servlet.ServletException` and subclasses, for example.

      NB: Consider carefully how specific the pattern is, and whether to include package information (which is not mandatory). For example, "Exception" will match nearly anything, and will probably hide other rules. "java.lang.Exception" would be correct if "Exception" was meant to define a rule for all checked exceptions. With more unusual exception names such as "BaseBusinessException" there's no need to use a fully package-qualified name.

      Parameters:
        `exceptionName` - the exception name pattern; can also be a fully package-qualified class name
      Throws:
        `IllegalArgumentException` - if the supplied `exceptionName` is `null` or empty

  - ### Method Detail

    - #### getExceptionName

          public String getExceptionName()

      Return the pattern for the exception name.

    - #### getDepth

          public int getDepth(Throwable ex)

      Return the depth of the superclass matching.

      `0` means `ex` matches exactly. Returns `-1` if there is no match. Otherwise, returns depth with the lowest depth winning.

    - #### equals

          public boolean equals(Object other)

      Overrides:
        `equals` in class `Object`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `Object`

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`