String id = null,
idInActualMap = null,
idInLogicalMap = (String)
RequestStateManager.get(context, RequestStateManager.LOGICAL_VIEW_MAP);
LRUMap logicalMap = null, actualMap = null;
int
logicalMapSize = getNumberOfViewsParameter(context),
actualMapSize = getNumberOfViewsInLogicalViewParameter(context);
Object stateArray[] = { treeStructure, componentState };
Map sessionMap = context.getExternalContext().getSessionMap();
synchronized (this) {
if (null == (logicalMap = (LRUMap) sessionMap.get(LOGICAL_VIEW_MAP))) {
logicalMap = new LRUMap(logicalMapSize);
sessionMap.put(LOGICAL_VIEW_MAP, logicalMap);
}
assert(null != logicalMap);
if (null == idInLogicalMap) {
idInLogicalMap = createUniqueRequestId();
}
assert(null != idInLogicalMap);
idInActualMap = createUniqueRequestId();
if (null == (actualMap = (LRUMap)
logicalMap.get(idInLogicalMap))) {
actualMap = new LRUMap(actualMapSize);
logicalMap.put(idInLogicalMap, actualMap);
}
id = idInLogicalMap + NamingContainer.SEPARATOR_CHAR +
idInActualMap;
result = new SerializedView(id, null);
actualMap.put(idInActualMap, stateArray);