[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