Author: manaRH
Date: 2010-06-17 07:32:38 -0400 (Thu, 17 Jun 2010)
New Revision: 13213
Modified:
branches/enterprise/JBPAPP_4_3_FP01/src/main/org/jboss/seam/contexts/ServerConversationContext.java
Log:
JBPAPP-4492 - back ported JBSEAM-3512
Modified:
branches/enterprise/JBPAPP_4_3_FP01/src/main/org/jboss/seam/contexts/ServerConversationContext.java
===================================================================
---
branches/enterprise/JBPAPP_4_3_FP01/src/main/org/jboss/seam/contexts/ServerConversationContext.java 2010-06-17
09:34:01 UTC (rev 13212)
+++
branches/enterprise/JBPAPP_4_3_FP01/src/main/org/jboss/seam/contexts/ServerConversationContext.java 2010-06-17
11:32:38 UTC (rev 13213)
@@ -289,12 +289,22 @@
}
removals.clear();
//add new objects
- for (Map.Entry<String, Object> entry: additions.entrySet()) {
- Object attribute = entry.getValue();
- passivate(attribute);
- session.put(getKey(entry.getKey()), attribute);
+ while (!additions.isEmpty())
+ {
+ // Copy the additions entries to a temporary variable, then
+ // clear additions - during passivation, further attributes may
+ // be set in the conversation context so we need to re-iterate
+ // through this process until all additions are passivated
+ Set<Map.Entry<String,Object>> entries = new
HashSet<Map.Entry<String,Object>>(additions.entrySet());
+ additions.clear();
+
+ for (Map.Entry<String, Object> entry: entries)
+ {
+ Object attribute = entry.getValue();
+ passivate(attribute);
+ session.put(getKey(entry.getKey()), attribute);
+ }
}
- additions.clear();
}
else
{
Show replies by date