## org.springframework.transaction.interceptor
Class RuleBasedTransactionAttribute

    java.lang.Object
      org.springframework.transaction.support.DefaultTransactionDefinition
          org.springframework.transaction.interceptor.DefaultTransactionAttribute
              org.springframework.transaction.interceptor.RuleBasedTransactionAttribute

All Implemented Interfaces:
  Serializable, TransactionAttribute, TransactionDefinition

    public class RuleBasedTransactionAttribute

extends DefaultTransactionAttribute
implements Serializable

TransactionAttribute implementation that works out whether a given exception should cause transaction rollback by applying a number of rollback rules, both positive and negative. If no rules are relevant to the exception, it behaves like DefaultTransactionAttribute (rolling back on runtime exceptions).

`TransactionAttributeEditor` creates objects of this class.

Since:
  09.04.2003
Author:
  Rod Johnson, Juergen Hoeller
See Also:
  `TransactionAttributeEditor`, Serialized Form

Field Summary
`static String` `PREFIX_COMMIT_RULE` Prefix for commit-on-exception rules in description strings
`static String` `PREFIX_ROLLBACK_RULE` Prefix for rollback-on-exception rules in description strings

Fields inherited from class org.springframework.transaction.support.DefaultTransactionDefinition
`PREFIX_ISOLATION, PREFIX_PROPAGATION, PREFIX_TIMEOUT, READ_ONLY_MARKER`

Fields inherited from interface org.springframework.transaction.TransactionDefinition
`ISOLATION_DEFAULT, ISOLATION_READ_COMMITTED, ISOLATION_READ_UNCOMMITTED, ISOLATION_REPEATABLE_READ, ISOLATION_SERIALIZABLE, PROPAGATION_MANDATORY, PROPAGATION_NESTED, PROPAGATION_NEVER, PROPAGATION_NOT_SUPPORTED, PROPAGATION_REQUIRED, PROPAGATION_REQUIRES_NEW, PROPAGATION_SUPPORTS, TIMEOUT_DEFAULT`

Constructor Summary
`RuleBasedTransactionAttribute()` Create a new RuleBasedTransactionAttribute, with default settings.
`RuleBasedTransactionAttribute(int propagationBehavior, List<RollbackRuleAttribute> rollbackRules)` Create a new DefaultTransactionAttribute with the the given propagation behavior.
`RuleBasedTransactionAttribute(RuleBasedTransactionAttribute other)` Copy constructor.

Method Summary
`List<RollbackRuleAttribute>` `getRollbackRules()` Return the list of `RollbackRuleAttribute` objects (never `null`).
`boolean` `rollbackOn(Throwable ex)` Winning rule is the shallowest rule (that is, the closest in the inheritance hierarchy to the exception).
`void` `setRollbackRules(List<RollbackRuleAttribute> rollbackRules)` Set the list of `RollbackRuleAttribute` objects (and/or `NoRollbackRuleAttribute` objects) to apply.
`String` `toString()` Return an identifying description for this transaction definition.

Methods inherited from class org.springframework.transaction.interceptor.DefaultTransactionAttribute
`getAttributeDescription, getQualifier, setQualifier`

Methods inherited from class org.springframework.transaction.support.DefaultTransactionDefinition
`equals, getDefinitionDescription, getIsolationLevel, getName, getPropagationBehavior, getTimeout, hashCode, isReadOnly, setIsolationLevel, setIsolationLevelName, setName, setPropagationBehavior, setPropagationBehaviorName, setReadOnly, setTimeout`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

Methods inherited from interface org.springframework.transaction.TransactionDefinition
`getIsolationLevel, getName, getPropagationBehavior, getTimeout, isReadOnly`

Field Detail

### PREFIX_ROLLBACK_RULE

    public static final String PREFIX_ROLLBACK_RULE

  Prefix for rollback-on-exception rules in description strings

  See Also:
    Constant Field Values

### PREFIX_COMMIT_RULE

    public static final String PREFIX_COMMIT_RULE

  Prefix for commit-on-exception rules in description strings

  See Also:
    Constant Field Values

Constructor Detail

### RuleBasedTransactionAttribute

    public RuleBasedTransactionAttribute()

  Create a new RuleBasedTransactionAttribute, with default settings. Can be modified through bean property setters.

  See Also:
    `DefaultTransactionDefinition.setPropagationBehavior(int)`, `DefaultTransactionDefinition.setIsolationLevel(int)`, `DefaultTransactionDefinition.setTimeout(int)`, `DefaultTransactionDefinition.setReadOnly(boolean)`, `DefaultTransactionDefinition.setName(java.lang.String)`, `setRollbackRules(java.util.List<org.springframework.transaction.interceptor.RollbackRuleAttribute>)`

### RuleBasedTransactionAttribute

    public RuleBasedTransactionAttribute(RuleBasedTransactionAttribute other)

  Copy constructor. Definition can be modified through bean property setters.

  See Also:
    `DefaultTransactionDefinition.setPropagationBehavior(int)`, `DefaultTransactionDefinition.setIsolationLevel(int)`, `DefaultTransactionDefinition.setTimeout(int)`, `DefaultTransactionDefinition.setReadOnly(boolean)`, `DefaultTransactionDefinition.setName(java.lang.String)`, `setRollbackRules(java.util.List<org.springframework.transaction.interceptor.RollbackRuleAttribute>)`

### RuleBasedTransactionAttribute

    public RuleBasedTransactionAttribute(int propagationBehavior,
                                         List<RollbackRuleAttribute> rollbackRules)

  Create a new DefaultTransactionAttribute with the the given propagation behavior. Can be modified through bean property setters.

  Parameters:
    `propagationBehavior` - one of the propagation constants in the TransactionDefinition interface
    `rollbackRules` - the list of RollbackRuleAttributes to apply
  See Also:
    `DefaultTransactionDefinition.setIsolationLevel(int)`, `DefaultTransactionDefinition.setTimeout(int)`, `DefaultTransactionDefinition.setReadOnly(boolean)`

Method Detail

### setRollbackRules

    public void setRollbackRules(List<RollbackRuleAttribute> rollbackRules)

  Set the list of `RollbackRuleAttribute` objects (and/or `NoRollbackRuleAttribute` objects) to apply.

  See Also:
    `RollbackRuleAttribute`, `NoRollbackRuleAttribute`

### getRollbackRules

    public List<RollbackRuleAttribute> getRollbackRules()

  Return the list of `RollbackRuleAttribute` objects (never `null`).

### rollbackOn

    public boolean rollbackOn(Throwable ex)

  Winning rule is the shallowest rule (that is, the closest in the inheritance hierarchy to the exception). If no rule applies (-1), return false.

  Specified by:
    `rollbackOn` in interface `TransactionAttribute`
  Overrides:
    `rollbackOn` in class `DefaultTransactionAttribute`
  Parameters:
    `ex` - the exception to evaluate
  Returns:
    whether to perform a rollback or not
  See Also:
    `TransactionAttribute.rollbackOn(java.lang.Throwable)`

### toString

    public String toString()

  Description copied from class: `DefaultTransactionDefinition`
  Return an identifying description for this transaction definition.

  The format matches the one used by `TransactionAttributeEditor`, to be able to feed `toString` results into bean properties of type `TransactionAttribute`.

  Has to be overridden in subclasses for correct `equals` and `hashCode` behavior. Alternatively, `DefaultTransactionDefinition.equals(java.lang.Object)` and `DefaultTransactionDefinition.hashCode()` can be overridden themselves.

  Overrides:
    `toString` in class `DefaultTransactionDefinition`
  See Also:
    `DefaultTransactionDefinition.getDefinitionDescription()`, `TransactionAttributeEditor`