[jboss-cvs] jboss-seam/src/main/org/jboss/seam/persistence ...

Emmanuel Bernard emmanuel.bernard at jboss.com
Thu Sep 6 14:05:18 EDT 2007


  User: ebernard
  Date: 07/09/06 14:05:18

  Modified:    src/main/org/jboss/seam/persistence      
                        EntityManagerProxyInterceptor.java
                        FullTextHibernateSessionProxy.java
                        HibernatePersistenceProvider.java
                        ManagedPersistenceContext.java
                        PersistenceProvider.java
  Added:       src/main/org/jboss/seam/persistence      
                        FullTextEntityManagerProxy.java
  Log:
  JBSEAM-1783 add JPA support for HSearch and update the examples
  
  Revision  Changes    Path
  1.2       +2 -4      jboss-seam/src/main/org/jboss/seam/persistence/EntityManagerProxyInterceptor.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: EntityManagerProxyInterceptor.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/persistence/EntityManagerProxyInterceptor.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- EntityManagerProxyInterceptor.java	13 Aug 2007 14:20:34 -0000	1.1
  +++ EntityManagerProxyInterceptor.java	6 Sep 2007 18:05:18 -0000	1.2
  @@ -50,11 +50,9 @@
            Object object = ba.get(bean);
            if ( ! ( object instanceof EntityManagerProxy ) && object instanceof EntityManager )
            {
  -            ba.set( bean, new EntityManagerProxy( (EntityManager) object ) );
  +            PersistenceProvider provider = PersistenceProvider.instance();
  +            ba.set( bean, provider.proxyEntityManager( (EntityManager) object ) );
            }
         }
      }
  -   
  -   
  -
   }
  
  
  
  1.2       +10 -0     jboss-seam/src/main/org/jboss/seam/persistence/FullTextHibernateSessionProxy.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: FullTextHibernateSessionProxy.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/persistence/FullTextHibernateSessionProxy.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- FullTextHibernateSessionProxy.java	22 Jun 2007 06:53:54 -0000	1.1
  +++ FullTextHibernateSessionProxy.java	6 Sep 2007 18:05:18 -0000	1.2
  @@ -100,6 +100,16 @@
         return fullTextSession.getSearchFactory();
      }
   
  +   public void purge(Class aClass, Serializable serializable)
  +   {
  +      fullTextSession.purge(aClass, serializable);
  +   }
  +
  +   public void purgeAll(Class aClass)
  +   {
  +      fullTextSession.purgeAll(aClass);
  +   }
  +
      public Iterator iterate(String arg0, Object arg1, Type arg2) throws HibernateException
      {
         return fullTextSession.iterate(arg0, arg1, arg2);
  
  
  
  1.21      +29 -4     jboss-seam/src/main/org/jboss/seam/persistence/HibernatePersistenceProvider.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: HibernatePersistenceProvider.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/persistence/HibernatePersistenceProvider.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -b -r1.20 -r1.21
  --- HibernatePersistenceProvider.java	16 Aug 2007 12:06:09 -0000	1.20
  +++ HibernatePersistenceProvider.java	6 Sep 2007 18:05:18 -0000	1.21
  @@ -1,11 +1,8 @@
   package org.jboss.seam.persistence;
   
  -import static org.jboss.seam.annotations.Install.FRAMEWORK;
  -
   import java.lang.reflect.Constructor;
   import java.lang.reflect.Method;
   import java.util.Map;
  -
   import javax.persistence.EntityManager;
   import javax.transaction.Synchronization;
   
  @@ -20,6 +17,7 @@
   import org.jboss.seam.Seam;
   import org.jboss.seam.annotations.FlushModeType;
   import org.jboss.seam.annotations.Install;
  +import static org.jboss.seam.annotations.Install.FRAMEWORK;
   import org.jboss.seam.annotations.Name;
   import org.jboss.seam.annotations.Scope;
   import org.jboss.seam.annotations.intercept.BypassInterceptors;
  @@ -46,6 +44,8 @@
   
      private static Constructor FULL_TEXT_SESSION_PROXY_CONSTRUCTOR;
      private static Method FULL_TEXT_SESSION_CONSTRUCTOR;
  +   private static Constructor FULL_TEXT_ENTITYMANAGER_PROXY_CONSTRUCTOR;
  +   private static Method FULL_TEXT_ENTITYMANAGER_CONSTRUCTOR;
      static 
      {
         try
  @@ -55,6 +55,11 @@
            Class fullTextSessionProxyClass = Class.forName("org.jboss.seam.persistence.FullTextHibernateSessionProxy");
            Class fullTextSessionClass = Class.forName("org.hibernate.search.FullTextSession");
            FULL_TEXT_SESSION_PROXY_CONSTRUCTOR = fullTextSessionProxyClass.getDeclaredConstructor(fullTextSessionClass);
  +         Class jpaSearchClass = Class.forName("org.hibernate.search.jpa.Search");
  +         FULL_TEXT_ENTITYMANAGER_CONSTRUCTOR = jpaSearchClass.getDeclaredMethod("createFullTextEntityManager", EntityManager.class);
  +         Class fullTextEntityManagerProxyClass = Class.forName("org.jboss.seam.persistence.FullTextEntityManagerProxy");
  +         Class fullTextEntityManagerClass = Class.forName("org.hibernate.search.jpa.FullTextEntityManager");
  +         FULL_TEXT_ENTITYMANAGER_PROXY_CONSTRUCTOR = fullTextEntityManagerProxyClass.getDeclaredConstructor(fullTextEntityManagerClass);
            log.debug("Hibernate Search is available :-)");
         }
         catch (Exception e)
  @@ -214,4 +219,24 @@
         }
      }
   
  +   @Override
  +   public EntityManager proxyEntityManager(EntityManager entityManager)
  +   {
  +      if (FULL_TEXT_ENTITYMANAGER_PROXY_CONSTRUCTOR==null)
  +      {
  +         return super.proxyEntityManager(entityManager);
  +      }
  +      else
  +      {
  +         try
  +         {
  +            return (EntityManager) FULL_TEXT_ENTITYMANAGER_PROXY_CONSTRUCTOR.newInstance( FULL_TEXT_ENTITYMANAGER_CONSTRUCTOR.invoke(null, entityManager) );
  +         }
  +         catch (Exception e)
  +         {
  +            throw new RuntimeException("could not proxy FullTextEntityManager", e);
  +
  +         }
  +      }
  +   }
   }
  
  
  
  1.12      +4 -3      jboss-seam/src/main/org/jboss/seam/persistence/ManagedPersistenceContext.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: ManagedPersistenceContext.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/persistence/ManagedPersistenceContext.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -b -r1.11 -r1.12
  --- ManagedPersistenceContext.java	6 Jul 2007 19:42:55 -0000	1.11
  +++ ManagedPersistenceContext.java	6 Sep 2007 18:05:18 -0000	1.12
  @@ -1,4 +1,4 @@
  -//$Id: ManagedPersistenceContext.java,v 1.11 2007/07/06 19:42:55 gavin Exp $
  +//$Id: ManagedPersistenceContext.java,v 1.12 2007/09/06 18:05:18 ebernard Exp $
   package org.jboss.seam.persistence;
   
   import java.io.Serializable;
  @@ -77,14 +77,15 @@
      private void initEntityManager()
      {
         entityManager = getEntityManagerFactoryFromJndiOrValueBinding().createEntityManager();
  -      entityManager = new EntityManagerProxy(entityManager);
  +      PersistenceProvider persistenceProvider = PersistenceProvider.instance();
  +      entityManager = persistenceProvider.proxyEntityManager(entityManager);
         setEntityManagerFlushMode( PersistenceContexts.instance().getFlushMode() );
   
         for (Filter f: filters)
         {
            if ( f.isFilterEnabled() )
            {
  -            PersistenceProvider.instance().enableFilter(f, entityManager);
  +            persistenceProvider.enableFilter(f, entityManager);
            }
         }
   
  
  
  
  1.20      +7 -0      jboss-seam/src/main/org/jboss/seam/persistence/PersistenceProvider.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: PersistenceProvider.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/persistence/PersistenceProvider.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -b -r1.19 -r1.20
  --- PersistenceProvider.java	15 Aug 2007 18:26:56 -0000	1.19
  +++ PersistenceProvider.java	6 Sep 2007 18:05:18 -0000	1.20
  @@ -149,4 +149,11 @@
         return delegate;
      }
   
  +   /**
  +    * Wrap the entityManager before returning it to the application
  +    */
  +   public EntityManager proxyEntityManager(EntityManager entityManager) {
  +      return new EntityManagerProxy(entityManager);
  +   }
  +
   }
  
  
  
  1.1      date: 2007/09/06 18:05:18;  author: ebernard;  state: Exp;jboss-seam/src/main/org/jboss/seam/persistence/FullTextEntityManagerProxy.java
  
  Index: FullTextEntityManagerProxy.java
  ===================================================================
  //$Id: FullTextEntityManagerProxy.java,v 1.1 2007/09/06 18:05:18 ebernard Exp $
  package org.jboss.seam.persistence;
  
  import java.io.Serializable;
  import javax.persistence.EntityManager;
  
  import org.hibernate.search.jpa.FullTextEntityManager;
  import org.hibernate.search.jpa.FullTextQuery;
  import org.hibernate.search.SearchFactory;
  import org.apache.lucene.search.Query;
  
  /**
   * Wrap a FullTextEntityManager
   *
   * @author Emmanuel Bernard
   */
  public class FullTextEntityManagerProxy extends EntityManagerProxy implements FullTextEntityManager
  {
     private FullTextEntityManager fullTextEntityManager;
  
     public FullTextEntityManagerProxy(FullTextEntityManager entityManager)
     {
        super(entityManager);
        this.fullTextEntityManager = entityManager;
     }
  
     public FullTextQuery createFullTextQuery(Query query, Class... classes)
     {
        return fullTextEntityManager.createFullTextQuery(query, classes);
     }
  
     public void index(Object object)
     {
        fullTextEntityManager.index(object);
     }
  
     public SearchFactory getSearchFactory()
     {
        return fullTextEntityManager.getSearchFactory();
     }
  
     public void purge(Class aClass, Serializable serializable)
     {
        fullTextEntityManager.purge(aClass, serializable);
     }
  
     public void purgeAll(Class aClass)
     {
        fullTextEntityManager.purgeAll(aClass);
     }
  }
  
  
  



More information about the jboss-cvs-commits mailing list