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

Gavin King gavin.king at jboss.com
Fri Jun 22 02:43:30 EDT 2007


  User: gavin   
  Date: 07/06/22 02:43:30

  Modified:    src/main/org/jboss/seam/persistence    
                        EntityManagerProxy.java
                        HibernatePersistenceProvider.java
                        ManagedHibernateSession.java
                        PersistenceProvider.java
  Log:
  support Hibernate Search for ManagedEntityManager
  
  Revision  Changes    Path
  1.5       +1 -1      jboss-seam/src/main/org/jboss/seam/persistence/EntityManagerProxy.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: EntityManagerProxy.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/persistence/EntityManagerProxy.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -b -r1.4 -r1.5
  --- EntityManagerProxy.java	6 Mar 2007 20:33:56 -0000	1.4
  +++ EntityManagerProxy.java	22 Jun 2007 06:43:30 -0000	1.5
  @@ -85,7 +85,7 @@
   
      public Object getDelegate()
      {
  -      return delegate.getDelegate();
  +      return PersistenceProvider.instance().proxyDelegate( delegate.getDelegate() );
      }
   
      public FlushModeType getFlushMode()
  
  
  
  1.15      +50 -0     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.14
  retrieving revision 1.15
  diff -u -b -r1.14 -r1.15
  --- HibernatePersistenceProvider.java	20 Jun 2007 17:45:57 -0000	1.14
  +++ HibernatePersistenceProvider.java	22 Jun 2007 06:43:30 -0000	1.15
  @@ -2,6 +2,8 @@
   
   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;
  @@ -21,6 +23,8 @@
   import org.jboss.seam.annotations.Scope;
   import org.jboss.seam.annotations.intercept.BypassInterceptors;
   import org.jboss.seam.core.Expressions.ValueExpression;
  +import org.jboss.seam.log.Log;
  +import org.jboss.seam.log.Logging;
   
   /**
    * Support for non-standardized features of Hibernate, when
  @@ -36,6 +40,52 @@
   public class HibernatePersistenceProvider extends PersistenceProvider
   {
   
  +   private static Log log = Logging.getLog(HibernatePersistenceProvider.class);
  +
  +   private static Constructor FULL_TEXT_SESSION_PROXY_CONSTRUCTOR;
  +   private static Method FULL_TEXT_SESSION_CONSTRUCTOR;
  +   static 
  +   {
  +      try
  +      {
  +         Class searchClass = Class.forName("org.hibernate.search.Search");
  +         FULL_TEXT_SESSION_CONSTRUCTOR = searchClass.getDeclaredMethod("createFullTextSession", Session.class);
  +         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);
  +         log.debug("Hibernate Search is available :-)");
  +      }
  +      catch (Exception e)
  +      {
  +         log.debug("no Hibernate Search, sorry :-(", e);
  +      }
  +   }
  +   
  +   static Session proxySession(Session session) throws Exception
  +   {
  +      if (FULL_TEXT_SESSION_PROXY_CONSTRUCTOR==null)
  +      {
  +         return new HibernateSessionProxy(session);
  +      }
  +      else
  +      {
  +         return (Session) FULL_TEXT_SESSION_PROXY_CONSTRUCTOR.newInstance( FULL_TEXT_SESSION_CONSTRUCTOR.invoke(null, session) );
  +      }
  +   }
  +   
  +   @Override
  +   public Object proxyDelegate(Object delegate)
  +   {
  +      try
  +      {
  +         return proxySession( (Session) delegate );
  +      }
  +      catch (Exception e)
  +      {
  +         throw new RuntimeException("could not proxy delegate", e);
  +      }
  +   }
  +   
      @Override
      public void setFlushModeManual(EntityManager entityManager)
      {
  
  
  
  1.8       +3 -30     jboss-seam/src/main/org/jboss/seam/persistence/ManagedHibernateSession.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: ManagedHibernateSession.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/persistence/ManagedHibernateSession.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -b -r1.7 -r1.8
  --- ManagedHibernateSession.java	22 Jun 2007 04:13:06 -0000	1.7
  +++ ManagedHibernateSession.java	22 Jun 2007 06:43:30 -0000	1.8
  @@ -1,9 +1,7 @@
  -//$Id: ManagedHibernateSession.java,v 1.7 2007/06/22 04:13:06 gavin Exp $
  +//$Id: ManagedHibernateSession.java,v 1.8 2007/06/22 06:43:30 gavin Exp $
   package org.jboss.seam.persistence;
   
   import java.io.Serializable;
  -import java.lang.reflect.Constructor;
  -import java.lang.reflect.Method;
   import java.util.ArrayList;
   import java.util.List;
   import java.util.Map;
  @@ -61,25 +59,6 @@
      
      private transient boolean synchronizationRegistered;
      
  -   private static Constructor FULL_TEXT_SESSION_PROXY_CONSTRUCTOR;
  -   private static Method FULL_TEXT_SESSION_CONSTRUCTOR;
  -   static 
  -   {
  -      try
  -      {
  -         Class searchClass = Class.forName("org.hibernate.search.Search");
  -         FULL_TEXT_SESSION_CONSTRUCTOR = searchClass.getDeclaredMethod("createFullTextSession", Session.class);
  -         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);
  -         log.debug("Hibernate Search is available :-)");
  -      }
  -      catch (Exception e)
  -      {
  -         log.debug("no Hibernate Search, sorry :-(", e);
  -      }
  -   }
  -   
      public boolean clearDirty()
      {
         return true;
  @@ -100,15 +79,9 @@
      private void initSession() throws Exception
      {
         session = getSessionFactoryFromJndiOrValueBinding().openSession();
  -      if (FULL_TEXT_SESSION_PROXY_CONSTRUCTOR==null)
  -      {
  -         session = new HibernateSessionProxy(session);
  -      }
  -      else
  -      {
  -         session = (Session) FULL_TEXT_SESSION_PROXY_CONSTRUCTOR.newInstance( FULL_TEXT_SESSION_CONSTRUCTOR.invoke(null, session) );
  -      }
         setSessionFlushMode( PersistenceContexts.instance().getFlushMode() );
  +      session = HibernatePersistenceProvider.proxySession(session);
  +      
         for (Filter f: filters)
         {
            if ( f.isFilterEnabled() )
  
  
  
  1.16      +8 -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.15
  retrieving revision 1.16
  diff -u -b -r1.15 -r1.16
  --- PersistenceProvider.java	20 Jun 2007 17:45:57 -0000	1.15
  +++ PersistenceProvider.java	22 Jun 2007 06:43:30 -0000	1.16
  @@ -126,4 +126,12 @@
         return FlushModeType.COMMIT;
      }
   
  +   /**
  +    * Wrap the delegate before returning it to the application
  +    */
  +   public Object proxyDelegate(Object delegate)
  +   {
  +      return delegate;
  +   }
  +
   }
  
  
  



More information about the jboss-cvs-commits mailing list