[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