org.nuiton.web.struts2.interceptor
Class TopiaTransactionInterceptor
java.lang.Object
com.opensymphony.xwork2.interceptor.AbstractInterceptor
org.nuiton.web.struts2.interceptor.TopiaTransactionInterceptor
- All Implemented Interfaces:
- com.opensymphony.xwork2.interceptor.Interceptor, Serializable
public abstract class TopiaTransactionInterceptor
- extends com.opensymphony.xwork2.interceptor.AbstractInterceptor
The aim of this Interceptor is to inject a freshly opened transaction
in a action which implements TopiaTransactionAware contract and
after result of action, to close the transaction.
The interceptor is abstract and let user to implement the way how to open a
new transaction via the method beginTransaction().
Note that the transaction pushed in the action is in fact a proxy of the
freshly opened transaction to forbid some method to be call on it. The list
of method to forbid can be customized using the interceptor parameter
excludeMethods.
Note also that the transaction is closed after all stack of interceptor
consumed, this means that the transaction will still be opened while
rendering the result, this is a particular interesting thing to avoid
pre-loading of entities due to lazy strategy of hibernate for example.
With this mecanism you can feel free to just obtain the obtain from database
via a DAO and then really load it in the rendering result.
This interceptor, as it provides connection to database should be in the
interceptor stack before any other interceptor requiring access to database.
For example, it is a common behaviour to do such calls in a prepare method,
so make sure to place this interceptor before the prepare interceptor.
Interceptor parameters:
- excludeMethods (optional) - Customized method names separated by coma to
forbid on the proxy of the transaction given to action. By default, if this
parameter is not filled, then we will use this one :
DEFAULT_EXCLUDE_METHODS.
- Since:
- 1.2
- Author:
- tchemit
- See Also:
- Serialized Form
| Methods inherited from class com.opensymphony.xwork2.interceptor.AbstractInterceptor |
destroy |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
DEFAULT_EXCLUDE_METHODS
public static final String[] DEFAULT_EXCLUDE_METHODS
excludeMethods
protected Set<String> excludeMethods
- names of methods to forbid access while using proxy.
TopiaTransactionInterceptor
public TopiaTransactionInterceptor()
getExcludeMethods
public Set<String> getExcludeMethods()
setExcludeMethods
public void setExcludeMethods(String excludeMethods)
beginTransaction
protected abstract org.nuiton.topia.TopiaContext beginTransaction()
throws org.nuiton.topia.TopiaException
- Method to open a new transaction.
- Returns:
- the new freshly opened transaction
- Throws:
org.nuiton.topia.TopiaException - if any problem while opening a new transaction
init
public void init()
- Specified by:
init in interface com.opensymphony.xwork2.interceptor.Interceptor- Overrides:
init in class com.opensymphony.xwork2.interceptor.AbstractInterceptor
intercept
public String intercept(com.opensymphony.xwork2.ActionInvocation invocation)
throws Exception
- Specified by:
intercept in interface com.opensymphony.xwork2.interceptor.Interceptor- Specified by:
intercept in class com.opensymphony.xwork2.interceptor.AbstractInterceptor
- Throws:
Exception
Copyright © 2010-2011 CodeLutin. All Rights Reserved.