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

Gavin King gavin.king at jboss.com
Sun Jun 17 01:46:58 EDT 2007


  User: gavin   
  Date: 07/06/17 01:46:57

  Modified:    src/main/org/jboss/seam/contexts  
                        ServerConversationContext.java
  Added:       src/main/org/jboss/seam/contexts   EntityBeanSet.java
  Log:
  sets
  
  Revision  Changes    Path
  1.28      +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.27
  retrieving revision 1.28
  diff -u -b -r1.27 -r1.28
  --- ServerConversationContext.java	17 Jun 2007 05:16:22 -0000	1.27
  +++ ServerConversationContext.java	17 Jun 2007 05:46:57 -0000	1.28
  @@ -167,6 +167,10 @@
            {
               value = new EntityBeanMap( (Map) value );
            }
  +         else if ( value instanceof Set )
  +         {
  +            value = new EntityBeanSet( (Set) value );
  +         }
            additions.put(name, value);
         }
         if ( Events.exists() ) Events.instance().raiseEvent("org.jboss.seam.postSetVariable." + name);
  
  
  
  1.1      date: 2007/06/17 05:46:57;  author: gavin;  state: Exp;jboss-seam/src/main/org/jboss/seam/contexts/EntityBeanSet.java
  
  Index: EntityBeanSet.java
  ===================================================================
  package org.jboss.seam.contexts;
  
  import java.util.ArrayList;
  import java.util.HashSet;
  import java.util.List;
  import java.util.Set;
  
  /**
   * Swizzles entities held in the conversation context at
   * the end of each request.
   * 
   * @see PassivatedEntity
   * 
   * @author Gavin King
   *
   */
  public class EntityBeanSet implements Wrapper
  {
     private static final long serialVersionUID = -2884601453783925804L;
     
     private Set instance;
     private List<PassivatedEntity> passivatedEntityList;
     
     public EntityBeanSet(Set instance)
     {
        this.instance = instance;
     }
     
     //TODO: use @Unwrap
     public Object getInstance()
     {
        if (passivatedEntityList!=null)
        {
           for ( PassivatedEntity pe: passivatedEntityList )
           {
              instance.add( pe.toEntityReference() );
           }
           passivatedEntityList = null;
        }
        return instance;
     }
     
     public boolean clearDirty()
     {
        if ( !PassivatedEntity.isTransactionRolledBackOrMarkedRollback() )
        {
           passivatedEntityList = new ArrayList<PassivatedEntity>( instance.size() );
           boolean found = false;
           for ( Object value: instance )
           {
              if (value!=null)
              {
                 PassivatedEntity passivatedEntity = PassivatedEntity.createPassivatedEntity(value);
                 if (passivatedEntity!=null)
                 {
                    if (!found) instance = new HashSet(instance);
                    found=true;
                    //this would be dangerous, except that we 
                    //are doing it to a copy of the original 
                    //list:
                    instance.remove(value);
                    passivatedEntityList.add(passivatedEntity);
                 }
              }
           }
           if (!found) passivatedEntityList=null;
        }
        return true;
     }
     
  }
  
  
  



More information about the jboss-cvs-commits mailing list