[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