[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