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

Gavin King gavin.king at jboss.com
Sun Oct 8 14:57:45 EDT 2006


  User: gavin   
  Date: 06/10/08 14:57:45

  Modified:    src/main/org/jboss/seam/framework    EntityHome.java
                        Home.java
  Added:       src/main/org/jboss/seam/framework   
                        HibernateEntityHome.java
  Log:
  refactored fwk *again*, and added Hibernate homes
  
  Revision  Changes    Path
  1.3       +7 -93     jboss-seam/src/main/org/jboss/seam/framework/EntityHome.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: EntityHome.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/framework/EntityHome.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -b -r1.2 -r1.3
  --- EntityHome.java	8 Oct 2006 14:18:23 -0000	1.2
  +++ EntityHome.java	8 Oct 2006 18:57:45 -0000	1.3
  @@ -11,19 +11,14 @@
   {
      private EntityManager entityManager;
      
  -   private Object id;
  -
      @In(create=true) 
      private FacesMessages facesMessages; 
      
  -   private String deletedMessage = "Successfully deleted";
  -   private String createdMessage = "Successfully created";
  -   private String updatedMessage = "Successfully updated";
  -
      @Transactional
      public boolean isManaged()
      {
  -      return getEntityManager().contains( getInstance() );
  +      return getInstance()!=null && 
  +            getEntityManager().contains( getInstance() );
      }
   
      @Transactional
  @@ -31,7 +26,7 @@
      {
         getEntityManager().joinTransaction();
         getEntityManager().flush();
  -      facesMessages.add(updatedMessage);
  +      facesMessages.add( getUpdatedMessage() );
         return "updated";
      }
      
  @@ -42,7 +37,7 @@
         getEntityManager().persist( getInstance() );
         getEntityManager().flush();
         setId( Persistence.getId( getInstance(), getEntityManager() ) );
  -      facesMessages.add(createdMessage);
  +      facesMessages.add( getCreatedMessage() );
         return "persisted";
      }
   
  @@ -52,45 +47,19 @@
         getEntityManager().joinTransaction();
         getEntityManager().remove( getInstance() );
         getEntityManager().flush();
  -      facesMessages.add(deletedMessage);
  +      facesMessages.add( getDeletedMessage() );
         return "removed";
      }
      
      @Transactional
  -   public E find(Object id)
  +   public E find()
      {
         getEntityManager().joinTransaction();
  -      E result = getEntityManager().find( getEntityClass(), id );
  +      E result = getEntityManager().find( getEntityClass(), getId() );
         if (result==null) result = handleNotFound();
         return result;
      }
      
  -   protected E find()
  -   {
  -      return find( getId() );
  -   }
  -
  -   protected E handleNotFound()
  -   {
  -      throw new EntityNotFoundException();
  -   }
  -
  -   @Override
  -   protected void initInstance()
  -   {
  -      if ( isIdDefined() )
  -      {
  -         //we cache the instance so that it does not "disappear"
  -         //after remove() is called on the instance
  -         //is this really a Good Idea??
  -         setInstance( find() );
  -      }
  -      else
  -      {
  -         super.initInstance();
  -      }            
  -   }
  -
      public EntityManager getEntityManager()
      {
         return entityManager;
  @@ -101,59 +70,4 @@
         this.entityManager = entityManager;
      }
   
  -   public Class<E> getEntityClass()
  -   {
  -      return getObjectClass();
  -   }
  -
  -   public void setEntityClass(Class<E> entityClass)
  -   {
  -      setObjectClass(entityClass);
  -   }
  -   
  -   public Object getId()
  -   {
  -      return id;
  -   }
  -
  -   public void setId(Object id)
  -   {
  -      this.id = id;
  -   }
  -   
  -   public boolean isIdDefined()
  -   {
  -      return getId()!=null && !"".equals( getId() );
  -   }
  -
  -   public String getCreatedMessage()
  -   {
  -      return createdMessage;
  -   }
  -
  -   public void setCreatedMessage(String createdMessage)
  -   {
  -      this.createdMessage = createdMessage;
  -   }
  -
  -   public String getDeletedMessage()
  -   {
  -      return deletedMessage;
  -   }
  -
  -   public void setDeletedMessage(String deletedMessage)
  -   {
  -      this.deletedMessage = deletedMessage;
  -   }
  -
  -   public String getUpdatedMessage()
  -   {
  -      return updatedMessage;
  -   }
  -
  -   public void setUpdatedMessage(String updatedMessage)
  -   {
  -      this.updatedMessage = updatedMessage;
  -   }
  -   
   }
  
  
  
  1.2       +93 -62    jboss-seam/src/main/org/jboss/seam/framework/Home.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: Home.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/framework/Home.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- Home.java	8 Oct 2006 14:01:53 -0000	1.1
  +++ Home.java	8 Oct 2006 18:57:45 -0000	1.2
  @@ -1,13 +1,7 @@
   package org.jboss.seam.framework;
   
  -import java.lang.reflect.Field;
  -import java.lang.reflect.Method;
  -import java.util.Map;
  -
   import org.jboss.seam.annotations.Transactional;
  -import org.jboss.seam.core.Expressions;
   import org.jboss.seam.core.Expressions.ValueBinding;
  -import org.jboss.seam.util.Reflections;
   
   /**
    * Manager component for an instance of any class.
  @@ -17,21 +11,14 @@
    */
   public class Home<E>
   {
  -   private Class<E> objectClass;
  +   private Object id;
      protected E instance;
  +   private Class<E> entityClass;
  +   protected ValueBinding newInstance;   
      
  -   private Map<String, String> initialFieldValues;
  -   private Map<String, String> initialPropertyValues;
  -   
  -   public Class<E> getObjectClass()
  -   {
  -      return objectClass;
  -   }
  -
  -   public void setObjectClass(Class<E> objectClass)
  -   {
  -      this.objectClass = objectClass;
  -   }
  +   private String deletedMessage = "Successfully deleted";
  +   private String createdMessage = "Successfully created";
  +   private String updatedMessage = "Successfully updated";
   
      @Transactional
      public E getInstance()
  @@ -45,76 +32,120 @@
   
      protected void initInstance()
      {
  +      if ( isIdDefined() )
  +      {
  +         //we cache the instance so that it does not "disappear"
  +         //after remove() is called on the instance
  +         //is this really a Good Idea??
  +         setInstance( find() );
  +      }
  +      else
  +      {
         setInstance( createInstance() );
  -      initialize(instance);
  +      }
      }
   
  -   public void setInstance(E instance)
  +   protected E find()
      {
  -      this.instance = instance;
  +      return null;
  +   }
  +
  +   protected E handleNotFound()
  +   {
  +      throw new EntityNotFoundException();
      }
   
      protected E createInstance()
      {
  +      if (newInstance!=null)
  +      {
  +         return (E) newInstance.getValue();
  +      }
  +      else if (entityClass!=null)
  +      {
         try
         {
  -         return getObjectClass().newInstance();
  +            return entityClass.newInstance();
         }
         catch (Exception e)
         {
            throw new RuntimeException(e);
         }
      }
  -
  -   protected void initialize(E instance)
  +      else
      {
  -      if (initialFieldValues!=null)
  -      {
  -         for ( Map.Entry<String, String> initializer: initialFieldValues.entrySet() )
  +         return null;
  +      }
  +   }
  +
  +   public Class<E> getEntityClass()
            {
  -            Object value = Expressions.instance().createValueBinding( initializer.getValue() ).getValue();
  -            if ( value!=null )
  +      return entityClass;
  +   }
  +
  +   public void setEntityClass(Class<E> entityClass)
               {
  -               Field field = Reflections.getField( getObjectClass(), initializer.getKey() );
  -               if ( !field.isAccessible() ) field.setAccessible(true);
  -               Reflections.setAndWrap(field, instance, value);
  +      this.entityClass = entityClass;
               }
  +   
  +   public Object getId()
  +   {
  +      return id;
            }
  +
  +   public void setId(Object id)
  +   {
  +      this.id = id;
         }
  -      if (initialPropertyValues!=null)
  +   
  +   public boolean isIdDefined()
         {
  -         for ( Map.Entry<String, String> initializer: initialPropertyValues.entrySet() )
  +      return getId()!=null && !"".equals( getId() );
  +   }
  +
  +   public void setInstance(E instance)
            {
  -            ValueBinding valueBinding = Expressions.instance().createValueBinding( initializer.getValue() );
  -            Object value = valueBinding.getValue();
  -            if ( value!=null )
  +      this.instance = instance;
  +   }
  +
  +   public ValueBinding getNewInstance()
               {
  -               Method method = Reflections.getSetterMethod( getObjectClass(), initializer.getKey() );
  -               if ( !method.isAccessible() ) method.setAccessible(true);
  -               Reflections.invokeAndWrap(method, instance, value);
  +      return newInstance;
               }
  +
  +   public void setNewInstance(ValueBinding newInstance)
  +   {
  +      this.newInstance = newInstance;
            }
  +
  +   public String getCreatedMessage()
  +   {
  +      return createdMessage;
         }
  +
  +   public void setCreatedMessage(String createdMessage)
  +   {
  +      this.createdMessage = createdMessage;
      }
      
  -   public Map<String, String> getInitialFieldValues()
  +   public String getDeletedMessage()
      {
  -      return initialFieldValues;
  +      return deletedMessage;
      }
   
  -   public void setInitialFieldValues(Map<String, String> initializers)
  +   public void setDeletedMessage(String deletedMessage)
      {
  -      this.initialFieldValues = initializers;
  +      this.deletedMessage = deletedMessage;
      }
   
  -   public Map<String, String> getInitialPropertyValues()
  +   public String getUpdatedMessage()
      {
  -      return initialPropertyValues;
  +      return updatedMessage;
      }
   
  -   public void setInitialPropertyValues(Map<String, String> initialPropertyValues)
  +   public void setUpdatedMessage(String updatedMessage)
      {
  -      this.initialPropertyValues = initialPropertyValues;
  +      this.updatedMessage = updatedMessage;
      }
   
   }
  
  
  
  1.1      date: 2006/10/08 18:57:45;  author: gavin;  state: Exp;jboss-seam/src/main/org/jboss/seam/framework/HibernateEntityHome.java
  
  Index: HibernateEntityHome.java
  ===================================================================
  package org.jboss.seam.framework;
  
  import java.io.Serializable;
  
  import org.hibernate.Session;
  import org.jboss.seam.annotations.In;
  import org.jboss.seam.annotations.Transactional;
  import org.jboss.seam.core.FacesMessages;
  
  public class HibernateEntityHome<E> extends Home<E>
  {
     private Session session;
  
     @In(create=true) 
     private FacesMessages facesMessages; 
     
     @Transactional
     public boolean isManaged()
     {
        return getInstance()!=null && 
              getSession().contains( getInstance() );
     }
  
     @Transactional
     public String update()
     {
        getSession().flush();
        facesMessages.add( getUpdatedMessage() );
        return "updated";
     }
     
     @Transactional
     public String persist()
     {
        getSession().persist( getInstance() );
        getSession().flush();
        setId( getSession().getIdentifier( getInstance() ) );
        facesMessages.add( getCreatedMessage() );
        return "persisted";
     }
  
     @Transactional
     public String remove()
     {
        getSession().delete( getInstance() );
        getSession().flush();
        facesMessages.add( getDeletedMessage() );
        return "removed";
     }
     
     @Transactional
     public E find()
     {
        E result = (E) getSession().get( getEntityClass(), (Serializable) getId() );
        if (result==null) result = handleNotFound();
        return result;
     }
  
     public Session getSession()
     {
        return session;
     }
  
     public void setSession(Session session)
     {
        this.session = session;
     }
  
  }
  
  
  



More information about the jboss-cvs-commits mailing list