Class OpenPersistenceManagerInViewFilter
- java.lang.Object
-
- org.springframework.web.filter.GenericFilterBean
-
- org.springframework.web.filter.OncePerRequestFilter
-
- org.apache.isis.persistence.jdo.spring.support.OpenPersistenceManagerInViewFilter
-
- All Implemented Interfaces:
javax.servlet.Filter,org.springframework.beans.factory.Aware,org.springframework.beans.factory.BeanNameAware,org.springframework.beans.factory.DisposableBean,org.springframework.beans.factory.InitializingBean,org.springframework.context.EnvironmentAware,org.springframework.core.env.EnvironmentCapable,org.springframework.web.context.ServletContextAware
public class OpenPersistenceManagerInViewFilter extends org.springframework.web.filter.OncePerRequestFilter
Servlet Filter that binds a JDO PersistenceManager to the thread for the entire processing of the request. Intended for the "Open PersistenceManager in View" pattern, i.e. to allow for lazy loading in web views despite the original transactions already being completed.This filter makes JDO PersistenceManagers available via the current thread, which will be autodetected by transaction managers. It is suitable for service layer transactions via
JdoTransactionManagerorJtaTransactionManageras well as for non-transactional read-only execution.Looks up the PersistenceManagerFactory in Spring's root web application context. Supports a "persistenceManagerFactoryBeanName" filter init-param in
web.xml; the default bean name is "persistenceManagerFactory".- See Also:
OpenPersistenceManagerInViewInterceptor,JdoTransactionManager,PersistenceManagerFactoryUtils.getPersistenceManager(javax.jdo.PersistenceManagerFactory, boolean),TransactionSynchronizationManager
-
-
Field Summary
Fields Modifier and Type Field Description static StringDEFAULT_PERSISTENCE_MANAGER_FACTORY_BEAN_NAME
-
Constructor Summary
Constructors Constructor Description OpenPersistenceManagerInViewFilter()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voiddoFilterInternal(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.servlet.FilterChain filterChain)protected StringgetPersistenceManagerFactoryBeanName()Return the bean name of the PersistenceManagerFactory to fetch from Spring's root application context.protected javax.jdo.PersistenceManagerFactorylookupPersistenceManagerFactory()Look up the PersistenceManagerFactory that this filter should use.protected javax.jdo.PersistenceManagerFactorylookupPersistenceManagerFactory(javax.servlet.http.HttpServletRequest request)Look up the PersistenceManagerFactory that this filter should use, taking the current HTTP request as argument.voidsetPersistenceManagerFactoryBeanName(String persistenceManagerFactoryBeanName)Set the bean name of the PersistenceManagerFactory to fetch from Spring's root application context.protected booleanshouldNotFilterAsyncDispatch()Returns "false" so that the filter may re-bind the openedPersistenceManagerto each asynchronously dispatched thread and postpone closing it until the very last asynchronous dispatch.protected booleanshouldNotFilterErrorDispatch()Returns "false" so that the filter may provide anPersistenceManagerto each error dispatches.-
Methods inherited from class org.springframework.web.filter.OncePerRequestFilter
doFilter, doFilterNestedErrorDispatch, getAlreadyFilteredAttributeName, isAsyncDispatch, isAsyncStarted, shouldNotFilter
-
-
-
-
Field Detail
-
DEFAULT_PERSISTENCE_MANAGER_FACTORY_BEAN_NAME
public static final String DEFAULT_PERSISTENCE_MANAGER_FACTORY_BEAN_NAME
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
OpenPersistenceManagerInViewFilter
public OpenPersistenceManagerInViewFilter()
-
-
Method Detail
-
setPersistenceManagerFactoryBeanName
public void setPersistenceManagerFactoryBeanName(String persistenceManagerFactoryBeanName)
Set the bean name of the PersistenceManagerFactory to fetch from Spring's root application context. Default is "persistenceManagerFactory".
-
getPersistenceManagerFactoryBeanName
protected String getPersistenceManagerFactoryBeanName()
Return the bean name of the PersistenceManagerFactory to fetch from Spring's root application context.
-
shouldNotFilterAsyncDispatch
protected boolean shouldNotFilterAsyncDispatch()
Returns "false" so that the filter may re-bind the openedPersistenceManagerto each asynchronously dispatched thread and postpone closing it until the very last asynchronous dispatch.- Overrides:
shouldNotFilterAsyncDispatchin classorg.springframework.web.filter.OncePerRequestFilter
-
shouldNotFilterErrorDispatch
protected boolean shouldNotFilterErrorDispatch()
Returns "false" so that the filter may provide anPersistenceManagerto each error dispatches.- Overrides:
shouldNotFilterErrorDispatchin classorg.springframework.web.filter.OncePerRequestFilter
-
doFilterInternal
protected void doFilterInternal(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.servlet.FilterChain filterChain) throws javax.servlet.ServletException, IOException
- Specified by:
doFilterInternalin classorg.springframework.web.filter.OncePerRequestFilter- Throws:
javax.servlet.ServletExceptionIOException
-
lookupPersistenceManagerFactory
protected javax.jdo.PersistenceManagerFactory lookupPersistenceManagerFactory(javax.servlet.http.HttpServletRequest request)
Look up the PersistenceManagerFactory that this filter should use, taking the current HTTP request as argument.Default implementation delegates to the
lookupPersistenceManagerFactorywithout arguments.- Returns:
- the PersistenceManagerFactory to use
- See Also:
lookupPersistenceManagerFactory()
-
lookupPersistenceManagerFactory
protected javax.jdo.PersistenceManagerFactory lookupPersistenceManagerFactory()
Look up the PersistenceManagerFactory that this filter should use. The default implementation looks for a bean with the specified name in Spring's root application context.- Returns:
- the PersistenceManagerFactory to use
- See Also:
getPersistenceManagerFactoryBeanName()
-
-