[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