[jboss-cvs] jboss-seam/src/main/org/jboss/seam/persistence ...
Peter Muir
peter at bleepbleep.org.uk
Mon Aug 13 10:20:34 EDT 2007
User: pmuir
Date: 07/08/13 10:20:34
Added: src/main/org/jboss/seam/persistence
EntityManagerProxyInterceptor.java
HibernateSessionProxyInterceptor.java
Log:
JBSEAM-1787
Revision Changes Path
1.1 date: 2007/08/13 14:20:34; author: pmuir; state: Exp;jboss-seam/src/main/org/jboss/seam/persistence/EntityManagerProxyInterceptor.java
Index: EntityManagerProxyInterceptor.java
===================================================================
package org.jboss.seam.persistence;
import javax.annotation.PostConstruct;
import javax.ejb.PostActivate;
import javax.persistence.EntityManager;
import org.jboss.seam.Component.BijectedAttribute;
import org.jboss.seam.annotations.intercept.AroundInvoke;
import org.jboss.seam.annotations.intercept.Interceptor;
import org.jboss.seam.intercept.AbstractInterceptor;
import org.jboss.seam.intercept.InvocationContext;
/**
* Proxy the EntityManager if injected using @PersistenceContext
*
* @author Pete Muir
*/
@Interceptor(stateless=true)
public class EntityManagerProxyInterceptor extends AbstractInterceptor
{
@AroundInvoke
public Object aroundInvoke(InvocationContext ic) throws Exception
{
return ic.proceed();
}
@PostActivate
public void postActivate(InvocationContext invocation) throws Exception
{
//just in case the container does some special handling of PC serialization
proxyPersistenceContexts(invocation.getTarget());
invocation.proceed();
}
@PostConstruct
public void postConstruct(InvocationContext invocation) throws Exception
{
proxyPersistenceContexts(invocation.getTarget());
invocation.proceed();
}
private void proxyPersistenceContexts(Object bean)
{
//wrap any @PersistenceContext attributes in our proxy
for ( BijectedAttribute ba: getComponent().getPersistenceContextAttributes() )
{
Object object = ba.get(bean);
if ( ! ( object instanceof EntityManagerProxy ) && object instanceof EntityManager )
{
ba.set( bean, new EntityManagerProxy( (EntityManager) object ) );
}
}
}
}
1.1 date: 2007/08/13 14:20:34; author: pmuir; state: Exp;jboss-seam/src/main/org/jboss/seam/persistence/HibernateSessionProxyInterceptor.java
Index: HibernateSessionProxyInterceptor.java
===================================================================
package org.jboss.seam.persistence;
import javax.annotation.PostConstruct;
import javax.ejb.PostActivate;
import org.hibernate.Session;
import org.jboss.seam.Component.BijectedAttribute;
import org.jboss.seam.annotations.intercept.AroundInvoke;
import org.jboss.seam.annotations.intercept.Interceptor;
import org.jboss.seam.intercept.AbstractInterceptor;
import org.jboss.seam.intercept.InvocationContext;
/**
* Proxy the Hibernate Session if injected using @PersistenceContext
*
* @author Pete Muir
*
*/
@Interceptor(stateless=true)
public class HibernateSessionProxyInterceptor extends AbstractInterceptor
{
@AroundInvoke
public Object aroundInvoke(InvocationContext ic) throws Exception
{
return ic.proceed();
}
@PostActivate
public void postActivate(InvocationContext invocation) throws Exception
{
//just in case the container does some special handling of PC serialization
proxyPersistenceContexts(invocation.getTarget());
invocation.proceed();
}
@PostConstruct
public void postConstruct(InvocationContext invocation) throws Exception
{
proxyPersistenceContexts(invocation.getTarget());
invocation.proceed();
}
private void proxyPersistenceContexts(Object bean)
{
//wrap any @PersistenceContext attributes in our proxy
for ( BijectedAttribute ba: getComponent().getPersistenceContextAttributes() )
{
Object object = ba.get(bean);
if ( ! ( object instanceof HibernateSessionProxy) && object instanceof Session)
{
ba.set( bean, new HibernateSessionProxy( (Session) object ) );
}
}
}
}
More information about the jboss-cvs-commits
mailing list