Top Description Fields Constructors Methods
org.springframework.transaction.interceptor

public Class MethodMapTransactionAttributeSource

extends Object
implements TransactionAttributeSource, EmbeddedValueResolverAware, BeanClassLoaderAware, InitializingBean
Class Inheritance
All Implemented Interfaces
org.springframework.beans.factory.InitializingBean, org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.beans.factory.Aware, org.springframework.context.EmbeddedValueResolverAware, org.springframework.transaction.interceptor.TransactionAttributeSource
Imports
java.lang.reflect.Method, java.util.ArrayList, .HashMap, .List, .Map, org.apache.commons.logging.Log, .LogFactory, org.springframework.beans.factory.BeanClassLoaderAware, .InitializingBean, org.springframework.context.EmbeddedValueResolverAware, org.springframework.lang.Nullable, org.springframework.util.Assert, .ClassUtils, .ObjectUtils, .PatternMatchUtils, .StringValueResolver

Simple TransactionAttributeSource implementation that allows attributes to be stored per method in a Map.
Authors
Rod Johnson, Juergen Hoeller
Since
24.04.2003
See Also
isMatch, NameMatchTransactionAttributeSource

Field Summary

Modifier and TypeField and Description
private ClassLoader
private boolean
private StringValueResolver
private boolean
protected final Log
logger

Logger available to subclasses.

private Map<String, TransactionAttribute>
methodMap

Map from method name to attribute value.

private final Map<Method, String>
methodNameMap

Map from Method to name pattern used for registration.

private final Map<Method, TransactionAttribute>
transactionAttributeMap

Map from Method to TransactionAttribute.

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public void
addTransactionalMethod(String
class and method name, separated by a dot
name
,
TransactionAttribute
attribute associated with the method
attr
)

Add an attribute for a transactional method.

public void
addTransactionalMethod(Class<?>
target interface or class
clazz
,
String
mapped method name
mappedName
,
TransactionAttribute
attribute associated with the method
attr
)

Add an attribute for a transactional method.

public void
addTransactionalMethod(Method
the method
method
,
TransactionAttribute
attribute associated with the method
attr
)

Add an attribute for a transactional method.

public void
public boolean
equals(Object
the reference object with which to compare.
other
)

Overrides java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

public TransactionAttribute
getTransactionAttribute(Method
the method to introspect
method
,
Class<?>
the target class (may be null, in which case the declaring class of the method must be used)
targetClass
)

Implements org.springframework.transaction.interceptor.TransactionAttributeSource.getTransactionAttribute.

Return the transaction attribute for the given method, or null if the method is non-transactional.

public int
hashCode()

Overrides java.lang.Object.hashCode.

Returns a hash code value for this object.

protected void
initMethodMap(Map<String, TransactionAttribute>
a Map from method names to TransactionAttribute instances
methodMap
)

Initialize the specified "methodMap", if any.

protected boolean

Returns:

if the names match
isMatch
(String
the method name of the class
methodName
,
String
the name in the descriptor
mappedName
)

Return if the given method name matches the mapped name.

public void
setBeanClassLoader(ClassLoader
the owning class loader
beanClassLoader
)

Implements org.springframework.beans.factory.BeanClassLoaderAware.setBeanClassLoader.

Callback that supplies the bean class loader to a bean instance.

public void
setEmbeddedValueResolver(StringValueResolver resolver)

Implements org.springframework.context.EmbeddedValueResolverAware.setEmbeddedValueResolver.

Set the StringValueResolver to use for resolving embedded definition values.

public void
setMethodMap(Map<String, TransactionAttribute>
said Map from method name to attribute value
methodMap
)

Set a name/attribute map, consisting of "FQCN.method" method names (e.g. "com.mycompany.mycode.MyClass.myMethod") and TransactionAttribute instances (or Strings to be converted to TransactionAttribute instances).

public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.

Inherited from java.lang.Object:
clonefinalizegetClassnotifynotifyAllwaitwaitwait

Field Detail

beanClassLoaderback to summary
private ClassLoader beanClassLoader
Annotations
@Nullable
eagerlyInitializedback to summary
private boolean eagerlyInitialized
embeddedValueResolverback to summary
private StringValueResolver embeddedValueResolver
Annotations
@Nullable
initializedback to summary
private boolean initialized
loggerback to summary
protected final Log logger

Logger available to subclasses.

methodMapback to summary
private Map<String, TransactionAttribute> methodMap

Map from method name to attribute value.

Annotations
@Nullable
methodNameMapback to summary
private final Map<Method, String> methodNameMap

Map from Method to name pattern used for registration.

transactionAttributeMapback to summary
private final Map<Method, TransactionAttribute> transactionAttributeMap

Map from Method to TransactionAttribute.

Constructor Detail

MethodMapTransactionAttributeSourceback to summary
public MethodMapTransactionAttributeSource()

Method Detail

addTransactionalMethodback to summary
public void addTransactionalMethod(String name, TransactionAttribute attr)

Add an attribute for a transactional method.

Method names can end or start with "*" for matching multiple methods.

Parameters
name:String

class and method name, separated by a dot

attr:TransactionAttribute

attribute associated with the method

Exceptions
IllegalArgumentException:
in case of an invalid name
addTransactionalMethodback to summary
public void addTransactionalMethod(Class<?> clazz, String mappedName, TransactionAttribute attr)

Add an attribute for a transactional method. Method names can end or start with "*" for matching multiple methods.

Parameters
clazz:Class<?>

target interface or class

mappedName:String

mapped method name

attr:TransactionAttribute

attribute associated with the method

addTransactionalMethodback to summary
public void addTransactionalMethod(Method method, TransactionAttribute attr)

Add an attribute for a transactional method.

Parameters
method:Method

the method

attr:TransactionAttribute

attribute associated with the method

afterPropertiesSetback to summary
public void afterPropertiesSet()

Implements org.springframework.beans.factory.InitializingBean.afterPropertiesSet.

Eagerly initializes the specified "methodMap", if any.

Annotations
@Override
See Also
initMethodMap(java.util.Map)
equalsback to summary
public boolean equals(Object other)

Overrides java.lang.Object.equals.

Doc from java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.

Parameters
other:Object

the reference object with which to compare.

Returns:boolean

true if this object is the same as the obj argument; false otherwise.

Annotations
@Override
getTransactionAttributeback to summary
public TransactionAttribute getTransactionAttribute(Method method, Class<?> targetClass)

Implements org.springframework.transaction.interceptor.TransactionAttributeSource.getTransactionAttribute.

Doc from org.springframework.transaction.interceptor.TransactionAttributeSource.getTransactionAttribute.

Return the transaction attribute for the given method, or null if the method is non-transactional.

Parameters
method:Method

the method to introspect

targetClass:Class<?>

the target class (may be null, in which case the declaring class of the method must be used)

Returns:TransactionAttribute

the matching transaction attribute, or null if none found

Annotations
@Override
@Nullable
hashCodeback to summary
public int hashCode()

Overrides java.lang.Object.hashCode.

Doc from java.lang.Object.hashCode.

Returns a hash code value for this object. This method is supported for the benefit of hash tables such as those provided by java.util.HashMap.

The general contract of hashCode is:

  • Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
  • If two objects are equal according to the equals method, then calling the hashCode method on each of the two objects must produce the same integer result.
  • It is not required that if two objects are unequal according to the equals method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.
Returns:int

a hash code value for this object

Annotations
@Override
initMethodMapback to summary
protected void initMethodMap(Map<String, TransactionAttribute> methodMap)

Initialize the specified "methodMap", if any.

Parameters
methodMap:Map<String, TransactionAttribute>

a Map from method names to TransactionAttribute instances

See Also
setMethodMap
isMatchback to summary
protected boolean isMatch(String methodName, String mappedName)

Return if the given method name matches the mapped name.

The default implementation checks for "xxx*", "*xxx" and "*xxx*" matches, as well as direct equality.

Parameters
methodName:String

the method name of the class

mappedName:String

the name in the descriptor

Returns:boolean

if the names match

See Also
org.springframework.util.PatternMatchUtils#simpleMatch(String, String)
setBeanClassLoaderback to summary
public void setBeanClassLoader(ClassLoader beanClassLoader)

Implements org.springframework.beans.factory.BeanClassLoaderAware.setBeanClassLoader.

Doc from org.springframework.beans.factory.BeanClassLoaderAware.setBeanClassLoader.

Callback that supplies the bean class loader to a bean instance.

Invoked after the population of normal bean properties but before an initialization callback such as InitializingBean's InitializingBean#afterPropertiesSet() method or a custom init-method.

Parameters
beanClassLoader:ClassLoader

the owning class loader

Annotations
@Override
setEmbeddedValueResolverback to summary
public void setEmbeddedValueResolver(StringValueResolver resolver)

Implements org.springframework.context.EmbeddedValueResolverAware.setEmbeddedValueResolver.

Doc from org.springframework.context.EmbeddedValueResolverAware.setEmbeddedValueResolver.

Set the StringValueResolver to use for resolving embedded definition values.

Annotations
@Override
setMethodMapback to summary
public void setMethodMap(Map<String, TransactionAttribute> methodMap)

Set a name/attribute map, consisting of "FQCN.method" method names (e.g. "com.mycompany.mycode.MyClass.myMethod") and TransactionAttribute instances (or Strings to be converted to TransactionAttribute instances).

Intended for configuration via setter injection, typically within a Spring bean factory. Relies on afterPropertiesSet() being called afterwards.

Parameters
methodMap:Map<String, TransactionAttribute>

said Map from method name to attribute value

See Also
TransactionAttribute, TransactionAttributeEditor
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object. Satisfying this method's contract implies a non-null result must be returned.

Returns:String

a string representation of the object

Annotations
@Override