[jboss-cvs] jboss-seam/src/main/org/jboss/seam/persistence ...
Shane Bryzak
sbryzak at redhat.com
Wed Oct 3 21:54:40 EDT 2007
User: sbryzak2
Date: 07/10/03 21:54:40
Modified: src/main/org/jboss/seam/persistence
HibernatePersistenceProvider.java
PersistenceProvider.java
Log:
JBSEAM-2029
Revision Changes Path
1.23 +281 -261 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.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- HibernatePersistenceProvider.java 28 Sep 2007 15:34:42 -0000 1.22
+++ HibernatePersistenceProvider.java 4 Oct 2007 01:54:40 -0000 1.23
@@ -1,14 +1,14 @@
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.lang.reflect.Field;
+import java.lang.reflect.Method;
import java.util.Map;
import javax.persistence.EntityManager;
import javax.transaction.Synchronization;
-
import org.hibernate.EntityMode;
import org.hibernate.FlushMode;
+import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.StaleStateException;
import org.hibernate.TransientObjectException;
@@ -18,14 +18,12 @@
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;
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
* used as the JPA persistence provider.
@@ -42,7 +40,6 @@
{
private static Log log = Logging.getLog(HibernatePersistenceProvider.class);
-
private static Constructor FULL_TEXT_SESSION_PROXY_CONSTRUCTOR;
private static Method FULL_TEXT_SESSION_CONSTRUCTOR;
private static Constructor FULL_TEXT_ENTITYMANAGER_PROXY_CONSTRUCTOR;
@@ -127,13 +124,11 @@
{
getSession(entityManager).setFlushMode(FlushMode.MANUAL);
}
-
@Override
public boolean isDirty(EntityManager entityManager)
{
return getSession(entityManager).isDirty();
}
-
@Override
public Object getId(Object bean, EntityManager entityManager)
{
@@ -146,7 +141,6 @@
return super.getId(bean, entityManager);
}
}
-
@Override
public Object getVersion(Object bean, EntityManager entityManager)
{
@@ -158,7 +152,6 @@
{
checkVersion(bean, getSession(entityManager), oldVersion, version);
}
-
@Override
public void enableFilter(Filter f, EntityManager entityManager)
{
@@ -189,7 +182,6 @@
{
return (Session) entityManager.getDelegate();
}
-
public static void checkVersion(Object value, Session session, Object oldVersion, Object version)
{
ClassMetadata classMetadata = getClassMetadata(value, session);
@@ -199,14 +191,12 @@
throw new StaleStateException("current database version number does not match passivated version number");
}
}
-
public static Object getVersion(Object value, Session session)
{
ClassMetadata classMetadata = getClassMetadata(value, session);
return classMetadata!=null && classMetadata.isVersioned() ?
classMetadata.getVersion(value, EntityMode.POJO) : null;
}
-
private static ClassMetadata getClassMetadata(Object value, Session session)
{
Class entityClass = Seam.getEntityClass( value.getClass() );
@@ -237,7 +227,6 @@
return super.getName(bean, entityManager);
}
}
-
@Override
public EntityManager proxyEntityManager(EntityManager entityManager)
{
@@ -254,8 +243,39 @@
catch (Exception e)
{
throw new RuntimeException("could not proxy FullTextEntityManager", e);
+ }
+ }
+ }
+
+ /**
+ * Returns the class of the specified hibernate bean
+ */
+ @Override
+ public Class getBeanClass(Object bean)
+ {
+ return Hibernate.getClass(bean);
+ }
+
+ @Override
+ public Method getPostLoadMethod(Class beanClass)
+ {
+ return null;
+ }
+ @Override
+ public Method getPrePersistMethod(Class beanClass)
+ {
+ return null;
}
+ @Override
+ public Method getPreUpdateMethod(Class beanClass)
+ {
+ return null;
}
+
+ @Override
+ public Method getPreRemoveMethod(Class beanClass)
+ {
+ return null;
}
}
1.21 +179 -159 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.20
retrieving revision 1.21
diff -u -b -r1.20 -r1.21
--- PersistenceProvider.java 6 Sep 2007 18:05:18 -0000 1.20
+++ PersistenceProvider.java 4 Oct 2007 01:54:40 -0000 1.21
@@ -1,13 +1,10 @@
package org.jboss.seam.persistence;
-
import static org.jboss.seam.annotations.Install.BUILT_IN;
-
+import java.lang.reflect.Method;
import java.util.Date;
-
import javax.persistence.EntityManager;
import javax.persistence.OptimisticLockException;
import javax.transaction.Synchronization;
-
import org.jboss.seam.Component;
import org.jboss.seam.Entity;
import org.jboss.seam.ScopeType;
@@ -16,7 +13,6 @@
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.intercept.BypassInterceptors;
-
/**
* Abstraction layer for persistence providers (JPA implementations).
* This class provides a working base implementation that can be
@@ -36,7 +32,6 @@
@Install(precedence=BUILT_IN, classDependencies="javax.persistence.EntityManager")
public class PersistenceProvider
{
-
/**
* Set the flush mode to manual-only flushing. Called when
* an atomic persistence context is required.
@@ -45,7 +40,6 @@
{
throw new UnsupportedOperationException("For use of FlushMode.MANUAL, please use Hibernate as the persistence provider or use a custom PersistenceProvider");
}
-
/**
* Does the persistence context have unflushed changes? If
* it does not, persistence context replication can be
@@ -105,7 +99,6 @@
throw new OptimisticLockException("current database version number does not match passivated version number");
}
}
-
/**
* Enable a Filter. This is here just especially for Hibernate,
* since we well know that other products don't have such cool
@@ -128,7 +121,6 @@
{
return (PersistenceProvider) Component.getInstance(PersistenceProvider.class, ScopeType.STATELESS);
}
-
/**
* What flush policy should we use during the render response phase?
* We should not be changing data during the render, so we can
@@ -148,7 +140,6 @@
{
return delegate;
}
-
/**
* Wrap the entityManager before returning it to the application
*/
@@ -156,4 +147,33 @@
return new EntityManagerProxy(entityManager);
}
+ /**
+ * Returns the class of an entity bean instance
+ *
+ * @param bean The entity bean instance
+ * @return The class of the entity bean
+ */
+ public Class getBeanClass(Object bean)
+ {
+ return Entity.forClass(bean.getClass()).getBeanClass();
+ }
+
+ public Method getPostLoadMethod(Class beanClass)
+ {
+ return Entity.forClass(beanClass).getPostLoadMethod();
+ }
+
+ public Method getPrePersistMethod(Class beanClass)
+ {
+ return Entity.forClass(beanClass).getPrePersistMethod();
+ }
+ public Method getPreUpdateMethod(Class beanClass)
+ {
+ return Entity.forClass(beanClass).getPreUpdateMethod();
+ }
+
+ public Method getPreRemoveMethod(Class beanClass)
+ {
+ return Entity.forClass(beanClass).getPreRemoveMethod();
+ }
}
More information about the jboss-cvs-commits
mailing list