## 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 rollbackRules)` Create a new DefaultTransactionAttribute with the the given propagation behavior.
`RuleBasedTransactionAttribute(RuleBasedTransactionAttribute other)` Copy constructor.

Method Summary
`List` `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 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.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)`

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

### RuleBasedTransactionAttribute

    public RuleBasedTransactionAttribute(int propagationBehavior,
                                         List 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 rollbackRules)

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

  See Also:
    `RollbackRuleAttribute`, `NoRollbackRuleAttribute`

### getRollbackRules

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

Copyright © 2002-2008 The Spring Framework.