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

Gavin King gavin.king at jboss.com
Sun Jun 17 01:16:23 EDT 2007


  User: gavin   
  Date: 07/06/17 01:16:23

  Modified:    src/main/org/jboss/seam/contexts  
                        ServerConversationContext.java
  Added:       src/main/org/jboss/seam/contexts   EntityBeanMap.java
  Log:
  maps
  
  Revision  Changes    Path
  1.27      +4 -0      jboss-seam/src/main/org/jboss/seam/contexts/ServerConversationContext.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: ServerConversationContext.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/contexts/ServerConversationContext.java,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -b -r1.26 -r1.27
  --- ServerConversationContext.java	16 Jun 2007 18:34:28 -0000	1.26
  +++ ServerConversationContext.java	17 Jun 2007 05:16:22 -0000	1.27
  @@ -163,6 +163,10 @@
            {
               value = new EntityBeanList( (List) value );
            }
  +         else if ( value instanceof Map )
  +         {
  +            value = new EntityBeanMap( (Map) value );
  +         }
            additions.put(name, value);
         }
         if ( Events.exists() ) Events.instance().raiseEvent("org.jboss.seam.postSetVariable." + name);
  
  
  
  1.1      date: 2007/06/17 05:16:22;  author: gavin;  state: Exp;jboss-seam/src/main/org/jboss/seam/contexts/EntityBeanMap.java
  
  Index: EntityBeanMap.java
  ===================================================================
  package org.jboss.seam.contexts;
  
  import java.util.HashMap;
  import java.util.Map;
  import java.util.Set;
  
  /**
   * Swizzles entities held in the conversation context at
   * the end of each request.
   * 
   * @see PassivatedEntity
   * 
   * @author Gavin King
   *
   */
  public class EntityBeanMap implements Wrapper
  {
     private static final long serialVersionUID = -2884601453783925804L;
     
     private Map instance;
     private Map<Object, PassivatedEntity> passivatedEntityMap;
     
     public EntityBeanMap(Map instance)
     {
        this.instance = instance;
     }
     
     //TODO: use @Unwrap
     public Object getInstance()
     {
        if (passivatedEntityMap!=null)
        {
           for ( Map.Entry<Object, PassivatedEntity> me: passivatedEntityMap.entrySet() )
           {
              instance.put( me.getKey(), me.getValue().toEntityReference() );
           }
           passivatedEntityMap = null;
        }
        return instance;
     }
     
     public boolean clearDirty()
     {
        if ( !PassivatedEntity.isTransactionRolledBackOrMarkedRollback() )
        {
           passivatedEntityMap = new HashMap<Object, PassivatedEntity>( instance.size() );
           boolean found = false;
           for ( Map.Entry me: (Set<Map.Entry>) instance.entrySet() )
           {
              Object value = me.getValue();
              PassivatedEntity passivatedEntity = null;
              if (value!=null)
              {
                 passivatedEntity = PassivatedEntity.createPassivatedEntity(value);
                 if (passivatedEntity!=null)
                 {
                    if (!found) instance = new HashMap(instance);
                    found=true;
                    //this would be dangerous, except that we 
                    //are doing it to a copy of the original 
                    //list:
                    instance.put( me.getKey(), null ); 
                 }
              }
              passivatedEntityMap.put( me.getKey(), passivatedEntity );
           }
           if (!found) passivatedEntityMap=null;
        }
        return true;
     }
     
  }
  
  
  



More information about the jboss-cvs-commits mailing list