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

Gavin King gavin.king at jboss.com
Thu Oct 5 15:43:59 EDT 2006


  User: gavin   
  Date: 06/10/05 15:43:59

  Modified:    src/main/org/jboss/seam/framework     ManagedEntity.java
                        ManagedHibernateEntity.java ManagedObject.java
                        Query.java
  Log:
  association handling in framework
  more robust configuration
  
  Revision  Changes    Path
  1.4       +21 -45    jboss-seam/src/main/org/jboss/seam/framework/ManagedEntity.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: ManagedEntity.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/framework/ManagedEntity.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -b -r1.3 -r1.4
  --- ManagedEntity.java	28 Sep 2006 01:47:33 -0000	1.3
  +++ ManagedEntity.java	5 Oct 2006 19:43:59 -0000	1.4
  @@ -6,10 +6,7 @@
   import javax.faces.convert.Converter;
   import javax.persistence.EntityManager;
   
  -import org.jboss.seam.annotations.Create;
   import org.jboss.seam.annotations.Intercept;
  -import org.jboss.seam.annotations.Transactional;
  -import org.jboss.seam.annotations.Unwrap;
   import org.jboss.seam.util.Reflections;
   
   /**
  @@ -22,14 +19,11 @@
    *
    */
   @Intercept(NEVER)
  -public class ManagedEntity
  +public class ManagedEntity extends ManagedObject
   {
      private EntityManager entityManager;
      private Object id;
  -   private String entityClassName;
  -   private Class<?> entityClass;
      private String idClass;
  -   private Object instance;
      private String idConverterId;
      private Converter idConverter;
      
  @@ -53,54 +47,26 @@
         this.id = id;
      }
      
  -   public String getEntityClass()
  -   {
  -      return entityClassName;
  -   }
  -
  -   public void setEntityClass(String entityClass)
  -   {
  -      this.entityClassName = entityClass;
  -   }
  -
  -   @Create
  -   public void initEntityClass() throws Exception
  -   {
  -      entityClass = Reflections.classForName(entityClassName);
  -   }
  -   
  -   @Unwrap @Transactional
  -   public Object getInstance() throws Exception
  +   @Override
  +   protected void initInstance() throws Exception
      {
         if ( id==null || "".equals(id) )
         {
  -         if (instance==null)
  -         {
  -            instance = createInstance();
  -         }
  +         super.initInstance();
         }
         else
         {
  -         if (instance==null)
  -         {
               //we cache the instance so that it does not "disappear"
               //after remove() is called on the instance
               //is this really a Good Idea??
               getEntityManager().joinTransaction();
  -            instance =loadInstance( getConvertedId() );
  -         }
  -      }
  -      return instance;
  +         instance = loadInstance( getConvertedId() );
      }
  -
  -   protected Object createInstance() throws Exception
  -   {
  -      return entityClass.newInstance();
      }
   
      protected Object loadInstance(Object id)
      {
  -      return getEntityManager().find(entityClass, id);
  +      return getEntityManager().find( getObjectClass(), id );
      }
      
      //////////// TODO: copy/paste from ManagedHibernateEntity ///////////////////
  @@ -165,4 +131,14 @@
         this.idClass = idClass;
      }
   
  +   public Class<?> getEntityClass()
  +   {
  +      return getObjectClass();
  +   }
  +
  +   public void setEntityClass(Class<?> entityClass)
  +   {
  +      setObjectClass(entityClass);
  +   }
  +
   }
  
  
  
  1.3       +13 -36    jboss-seam/src/main/org/jboss/seam/framework/ManagedHibernateEntity.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: ManagedHibernateEntity.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/framework/ManagedHibernateEntity.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -b -r1.2 -r1.3
  --- ManagedHibernateEntity.java	28 Sep 2006 01:47:33 -0000	1.2
  +++ ManagedHibernateEntity.java	5 Oct 2006 19:43:59 -0000	1.3
  @@ -6,9 +6,6 @@
   import javax.faces.convert.Converter;
   
   import org.hibernate.Session;
  -import org.jboss.seam.annotations.Create;
  -import org.jboss.seam.annotations.Transactional;
  -import org.jboss.seam.annotations.Unwrap;
   import org.jboss.seam.util.Reflections;
   
   /**
  @@ -20,14 +17,11 @@
    * @author Gavin King
    *
    */
  -public class ManagedHibernateEntity
  +public class ManagedHibernateEntity extends ManagedObject
   {
      private Session session;
      private Serializable id;
  -   private String entityClassName;
  -   private Class entityClass;
      private String idClass;
  -   private Object instance;
      private String idConverterId;
      private Converter idConverter;
      
  @@ -51,53 +45,36 @@
         this.id = id;
      }
      
  -   public String getEntityClass()
  +   public Class getEntityClass()
      {
  -      return entityClassName;
  +      return getObjectClass();
      }
   
  -   public void setEntityClass(String entityClass)
  +   public void setEntityClass(Class<?> entityClass)
      {
  -      this.entityClassName = entityClass;
  +      setObjectClass(entityClass);
      }
   
  -   @Create
  -   public void initEntityClass() throws Exception
  -   {
  -      entityClass = Reflections.classForName(entityClassName);
  -   }
      
  -   @Unwrap @Transactional
  -   public Object getInstance() throws Exception
  +   @Override
  +   public void initInstance() throws Exception
      {
         if ( id==null || "".equals(id) )
         {
  -         if (instance==null)
  -         {
  -            instance = createInstance();
  -         }
  +         super.initInstance();
         }
         else
         {
  -         if (instance==null)
  -         {
               //we cache the instance so that it does not "disappear"
               //after remove() is called on the instance
               //is this really a Good Idea??
               instance = loadInstance( getConvertedId() );
            }
         }
  -      return instance;
  -   }
  -   
  -   protected Object createInstance() throws Exception
  -   {
  -      return entityClass.newInstance();
  -   }
   
      protected Object loadInstance(Serializable id)
      {
  -      return getSession().get(entityClass, id);
  +      return getSession().get( getObjectClass(), id );
      }
      
      ////////////TODO: copy/paste from ManagedEntity ///////////////////
  
  
  
  1.2       +74 -9     jboss-seam/src/main/org/jboss/seam/framework/ManagedObject.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: ManagedObject.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/framework/ManagedObject.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- ManagedObject.java	27 Sep 2006 17:48:51 -0000	1.1
  +++ ManagedObject.java	5 Oct 2006 19:43:59 -0000	1.2
  @@ -2,8 +2,15 @@
   
   import static org.jboss.seam.InterceptionType.NEVER;
   
  +import java.lang.reflect.Field;
  +import java.lang.reflect.Method;
  +import java.util.Map;
  +
   import org.jboss.seam.annotations.Intercept;
  +import org.jboss.seam.annotations.Transactional;
   import org.jboss.seam.annotations.Unwrap;
  +import org.jboss.seam.core.Expressions;
  +import org.jboss.seam.core.Expressions.ValueBinding;
   import org.jboss.seam.util.Reflections;
   
   /**
  @@ -15,33 +22,91 @@
   @Intercept(NEVER)
   public class ManagedObject
   {
  -   private String objectClass;
  -   private Object instance;
  +   private Class<?> objectClass;
  +   protected Object instance;
  +   
  +   private Map<String, String> initialFieldValues;
  +   private Map<String, String> initialPropertyValues;
      
  -   public String getObjectClass()
  +   public Class getObjectClass()
      {
         return objectClass;
      }
   
  -   public void setObjectClass(String entityClass)
  +   public void setObjectClass(Class<?> objectClass)
      {
  -      this.objectClass = entityClass;
  +      this.objectClass = objectClass;
      }
   
  -   @Unwrap
  -   public Object getInstance() throws Exception
  +   @Unwrap @Transactional
  +   public final Object getInstance() throws Exception
      {
         if (instance==null)
         {
  -         Class<?> clazz = Reflections.classForName(objectClass);
  -         instance = clazz.newInstance();
  +         initInstance();
         }
         return instance;
      }
   
  +   protected void initInstance() throws Exception
  +   {
  +      instance = createInstance();
  +      initialize(instance);
  +   }
  +
      public void setInstance(Object instance)
      {
         this.instance = instance;
      }
      
  +   protected Object createInstance() throws Exception
  +   {
  +      return objectClass.newInstance();
  +   }
  +
  +   protected void initialize(Object instance) throws Exception
  +   {
  +      if (initialFieldValues!=null)
  +      {
  +         for ( Map.Entry<String, String> initializer: initialFieldValues.entrySet() )
  +         {
  +            Object value = Expressions.instance().createValueBinding( initializer.getValue() ).getValue();
  +            Field field = Reflections.getField( objectClass, initializer.getKey() );
  +            if ( !field.isAccessible() ) field.setAccessible(true);
  +            Reflections.set(field, instance, value);
  +         }
  +      }
  +      if (initialPropertyValues!=null)
  +      {
  +         for ( Map.Entry<String, String> initializer: initialPropertyValues.entrySet() )
  +         {
  +            ValueBinding valueBinding = Expressions.instance().createValueBinding( initializer.getValue() );
  +            Object value = valueBinding.getValue();
  +            Method method = Reflections.getSetterMethod( objectClass, initializer.getKey() );
  +            if ( !method.isAccessible() ) method.setAccessible(true);
  +            Reflections.invoke(method, instance, value);
  +         }
  +      }
  +   }
  +   
  +   public Map<String, String> getInitialFieldValues()
  +   {
  +      return initialFieldValues;
  +   }
  +
  +   public void setInitialFieldValues(Map<String, String> initializers)
  +   {
  +      this.initialFieldValues = initializers;
  +   }
  +
  +   public Map<String, String> getInitialPropertyValues()
  +   {
  +      return initialPropertyValues;
  +   }
  +
  +   public void setInitialPropertyValues(Map<String, String> initialPropertyValues)
  +   {
  +      this.initialPropertyValues = initialPropertyValues;
  +   }
  +
   }
  
  
  
  1.4       +1 -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.3
  retrieving revision 1.4
  diff -u -b -r1.3 -r1.4
  --- Query.java	3 Oct 2006 17:16:45 -0000	1.3
  +++ Query.java	5 Oct 2006 19:43:59 -0000	1.4
  @@ -228,7 +228,7 @@
   
      public boolean isNextExists()
      {
  -      return true; //TODO!
  +      return resultList!=null && resultList.size() == maxResults;
      }
   
      public void setFirstResult(Integer firstResult)
  
  
  



More information about the jboss-cvs-commits mailing list