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

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