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

Gavin King gavin.king at jboss.com
Thu Oct 12 04:32:38 EDT 2006


  User: gavin   
  Date: 06/10/12 04:32:38

  Added:       src/main/org/jboss/seam/persistence  
                        HibernatePersistenceProvider.java
                        PersistenceProvider.java
  Log:
  pluggable peristence provider strategies
  
  Revision  Changes    Path
  1.1      date: 2006/10/12 08:32:38;  author: gavin;  state: Exp;jboss-seam/src/main/org/jboss/seam/persistence/HibernatePersistenceProvider.java
  
  Index: HibernatePersistenceProvider.java
  ===================================================================
  package org.jboss.seam.persistence;
  
  import javax.persistence.EntityManager;
  
  import org.hibernate.FlushMode;
  import org.hibernate.Session;
  import org.jboss.seam.InterceptionType;
  import org.jboss.seam.ScopeType;
  import org.jboss.seam.annotations.Intercept;
  import org.jboss.seam.annotations.Name;
  import org.jboss.seam.annotations.Scope;
  
  @Name("org.jboss.seam.persistence.persistenceProvider")
  @Scope(ScopeType.STATELESS)
  @Intercept(InterceptionType.NEVER)
  public class HibernatePersistenceProvider extends PersistenceProvider
  {
  
     public void setFlushModeManual(EntityManager entityManager)
     {
        ( (Session) entityManager.getDelegate() ).setFlushMode(FlushMode.NEVER);
     }
  
     public boolean isDirty(EntityManager entityManager)
     {
        return ( (Session) entityManager.getDelegate() ).isDirty();
     }
  
     public Object getId(Object bean, EntityManager entityManager) 
     {
        return ( (Session) entityManager.getDelegate() ).getIdentifier(bean);
     }
  
  }
  
  
  
  1.1      date: 2006/10/12 08:32:38;  author: gavin;  state: Exp;jboss-seam/src/main/org/jboss/seam/persistence/PersistenceProvider.java
  
  Index: PersistenceProvider.java
  ===================================================================
  package org.jboss.seam.persistence;
  
  import javax.persistence.EntityManager;
  
  import org.jboss.seam.Component;
  import org.jboss.seam.InterceptionType;
  import org.jboss.seam.ScopeType;
  import org.jboss.seam.annotations.Intercept;
  import org.jboss.seam.annotations.Name;
  import org.jboss.seam.annotations.Scope;
  
  @Name("org.jboss.seam.persistence.persistenceProvider")
  @Scope(ScopeType.STATELESS)
  @Intercept(InterceptionType.NEVER)
  public class PersistenceProvider
  {
  
     public void setFlushModeManual(EntityManager entityManager)
     {
        throw new IllegalArgumentException("For use of FlushMode.MANUAL, please use Hibernate as the persistence provider or provide a custom PersistenceProvider");
     }
  
     public boolean isDirty(EntityManager entityManager)
     {
        return true; //best we can do!
     }
  
     public Object getId(Object bean, EntityManager entityManager) 
     {
        throw new IllegalArgumentException("For Seam-managed persistence contexts, please use Hibernate as the persistence provider or provide a custom PersistenceProvider");
     }
     
     public static PersistenceProvider instance()
     {
        return (PersistenceProvider) Component.getInstance(PersistenceProvider.class, ScopeType.STATELESS, true);
     }
  
  }
  
  
  



More information about the jboss-cvs-commits mailing list