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

Peter Muir peter at bleepbleep.org.uk
Sun Apr 15 13:41:23 EDT 2007


  User: pmuir   
  Date: 07/04/15 13:41:23

  Modified:    src/main/org/jboss/seam/framework      Query.java
  Added:       src/main/org/jboss/seam/framework      EntityIdentifier.java
                        HibernateEntityIdentifier.java Identifier.java
  Removed:     src/main/org/jboss/seam/framework     
                        EntityIdentifierStore.java
  Log:
  Refactor EntityIdentifier/EntityConverterStore
  
  Revision  Changes    Path
  1.25      +0 -1      jboss-seam/src/main/org/jboss/seam/framework/Query.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: Query.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/framework/Query.java,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -b -r1.24 -r1.25
  --- Query.java	3 Apr 2007 17:38:29 -0000	1.24
  +++ Query.java	15 Apr 2007 17:41:23 -0000	1.25
  @@ -11,7 +11,6 @@
   import org.jboss.seam.annotations.Transactional;
   import org.jboss.seam.core.Expressions.ValueBinding;
   import org.jboss.seam.jsf.JsfProvider;
  -import org.jboss.seam.jsf.ListDataModel;
   import org.jboss.seam.persistence.QueryParser;
   
   /**
  
  
  
  1.1      date: 2007/04/15 17:41:23;  author: pmuir;  state: Exp;jboss-seam/src/main/org/jboss/seam/framework/EntityIdentifier.java
  
  Index: EntityIdentifier.java
  ===================================================================
  /**
   * 
   */
  package org.jboss.seam.framework;
  
  import javax.persistence.EntityManager;
  
  import org.jboss.seam.Entity;
  import org.jboss.seam.persistence.PersistenceProvider;
  
  public class EntityIdentifier extends Identifier<EntityManager>
  {
     public EntityIdentifier(Object entity, EntityManager entityManager)
     {
        super(Entity.forClass(deproxy(entity.getClass())).getBeanClass(), PersistenceProvider.instance().getId(entity, entityManager));
     }
     
     @Override
     public Object find(EntityManager entityManager)
     {
        entityManager.joinTransaction();
        return entityManager.find(getClazz(), getId());
     }
     
     private static Class deproxy(Class clazz)
     {
        Class c = clazz;
        /* Work our way up the inheritance hierachy, looking of @Entity, if we are unsuccessful,
         * return the class we started with (possibly it's mapped in xml).
         * 
         * Workaround for lazy proxies and a lack of a way to do entityManager.getEntityClass(entity)
         */
        while (!Object.class.equals(c))
        {
           if (c.isAnnotationPresent(javax.persistence.Entity.class))
           {
                return c;
           }
           else
           {
              c = c.getSuperclass();
           }
        }
        return clazz;
     }
  }
  
  
  1.1      date: 2007/04/15 17:41:23;  author: pmuir;  state: Exp;jboss-seam/src/main/org/jboss/seam/framework/HibernateEntityIdentifier.java
  
  Index: HibernateEntityIdentifier.java
  ===================================================================
  package org.jboss.seam.framework;
  
  import java.io.Serializable;
  
  import org.hibernate.Session;
  
  public class HibernateEntityIdentifier extends Identifier<Session>
  {
  
     public HibernateEntityIdentifier(Object entity, Session session)
     {
        super(entity.getClass(), session.getIdentifier(entity));
     }
     
     @Override
     public Object find(Session session)
     {
        return session.get(getClazz(), (Serializable) getId());
     }
  
  }
  
  
  
  1.1      date: 2007/04/15 17:41:23;  author: pmuir;  state: Exp;jboss-seam/src/main/org/jboss/seam/framework/Identifier.java
  
  Index: Identifier.java
  ===================================================================
  package org.jboss.seam.framework;
  
  import java.io.Serializable;
  
  public abstract class Identifier<T> implements Serializable
  {
  
     public Identifier(Class clazz, Object id)
     {
        if (clazz == null || id == null)
        {
           throw new IllegalArgumentException("Id and clazz must not be null");
        }
        this.clazz = clazz;
        this.id = id;
     }
     
     private Class clazz;
     private Object id;
  
     public Class getClazz()
     {
        return clazz;
     }
     
     public Object getId()
     {
        return id;
     }
  
     @Override
     public boolean equals(Object other)
     {
        if (other instanceof EntityIdentifier)
        {
           EntityIdentifier that = (EntityIdentifier) other; 
           if (id == null || clazz == null)
           {
              throw new IllegalArgumentException("Class and Id must not be null");
           }
           else 
           {
              return this.getId().equals(that.getId()) && this.getClazz().equals(that.getClazz());
           }
        }
        return false;
     }
     
     public abstract Object find(T persistenceContext);
  
  }
  
  



More information about the jboss-cvs-commits mailing list