org.springframework.transaction.interceptor
Class RuleBasedTransactionAttribute

java.lang.Object
  extended by org.springframework.transaction.support.DefaultTransactionDefinition
      extended by org.springframework.transaction.interceptor.DefaultTransactionAttribute
          extended by 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
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)

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