[richfaces-svn-commits] JBoss Rich Faces SVN: r2279 - trunk/framework/impl/src/main/java/org/ajax4jsf/component.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Wed Aug 15 15:44:05 EDT 2007


Author: alexsmirnov
Date: 2007-08-15 15:44:05 -0400 (Wed, 15 Aug 2007)
New Revision: 2279

Modified:
   trunk/framework/impl/src/main/java/org/ajax4jsf/component/UIDataAdaptor.java
Log:
Fix dataTable save/restoreState problem.

Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/component/UIDataAdaptor.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/component/UIDataAdaptor.java	2007-08-15 19:09:33 UTC (rev 2278)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/component/UIDataAdaptor.java	2007-08-15 19:44:05 UTC (rev 2279)
@@ -659,7 +659,8 @@
 	public void setId(String id) {
 		// If component created by restoring tree or JSP, initial Id is null.
 		boolean haveId = null != super.getId();
-		String baseClientId = haveId?getBaseClientId(getFacesContext()):null;
+		String baseClientId = haveId ? getBaseClientId(getFacesContext())
+				: null;
 		super.setId(id);
 		_baseClientId = null;
 		_clientId = null;
@@ -670,7 +671,7 @@
 			// switch to different model and state.
 			// Step one - save old values.
 			this._statesMap.put(baseClientId, this._currentState);
-			this._modelsMap.put(baseClientId,this._currentModel);
+			this._modelsMap.put(baseClientId, this._currentModel);
 			this._ajaxRowKeysMap.put(baseClientId, this._ajaxRowKey);
 			// Step two - restore values for a new clientId.
 			baseClientId = getBaseClientId(getFacesContext());
@@ -974,7 +975,7 @@
 
 	public void processUpdates(FacesContext faces) {
 		processUpdates(faces, null);
-//		resetComponent(faces);
+		// resetComponent(faces);
 	}
 
 	protected void processValidators(FacesContext faces, Object argument) {
@@ -989,9 +990,9 @@
 
 	public void encodeBegin(FacesContext context) throws IOException {
 		resetDataModel();
-		 if(!keepSaved(context)){
-			 childState.remove(getBaseClientId(context));
-		 }
+		if (!keepSaved(context)) {
+			childState.remove(getBaseClientId(context));
+		}
 		// Mark component as used, if parent UIData change own range states not
 		// accessed at
 		// encode phase must be unsaved.
@@ -1132,7 +1133,7 @@
 		// For Ajax events, keep row value.
 		if (!(rowEvent.getPhaseId() == PhaseId.RENDER_RESPONSE)) {
 			this._ajaxRowKey = eventRowKey;
-//			this._ajaxRowKeysMap.put(getBaseClientId(faces), eventRowKey);
+			// this._ajaxRowKeysMap.put(getBaseClientId(faces), eventRowKey);
 		}
 		setRowKey(faces, oldRowKey);
 		restoreOrigValue(faces);
@@ -1287,8 +1288,10 @@
 			this._statesMap.put(key, compState);
 			this._modelsMap.put(key, idState.model);
 		}
-		this._currentState = (DataComponentState) _statesMap.get(getBaseClientId(faces));
-		this._currentModel = (ExtendedDataModel) _modelsMap.get(getBaseClientId(faces));
+		this._currentState = (DataComponentState) _statesMap
+				.get(getBaseClientId(faces));
+		this._currentModel = (ExtendedDataModel) _modelsMap
+				.get(getBaseClientId(faces));
 	}
 
 	public Object saveState(FacesContext faces) {
@@ -1311,20 +1314,25 @@
 			Object stateKey = stateEntry.getKey();
 			if (encodedIds.isEmpty() || encodedIds.contains(stateKey)) {
 				PerIdState idState = new PerIdState();
-				idState.model = getExtendedDataModel().getSerializableModel(
-						dataComponentState.getRange());
 				// Save component state , depended if implemented interfaces.
 				if (null == dataComponentState) {
 					idState.componentState = null;
-				} else if (dataComponentState instanceof Serializable) {
-					idState.componentState = dataComponentState;
-				} else if (dataComponentState instanceof StateHolder) {
-					// TODO - change RichFaces Tree component, for remove
-					// reference to component from state.
-					// Change this code to reference for saveAttachedState.
-					idState.componentState = ((StateHolder) dataComponentState)
-							.saveState(faces);
-					idState.stateInHolder = true;
+				} else {
+					if (dataComponentState instanceof Serializable) {
+						idState.componentState = dataComponentState;
+					} else if (dataComponentState instanceof StateHolder) {
+						idState.componentState = ((StateHolder) dataComponentState)
+								.saveState(faces);
+						idState.stateInHolder = true;
+					}
+					ExtendedDataModel extendedDataModel = (ExtendedDataModel) this._modelsMap
+							.get(stateKey);
+					if (null != extendedDataModel) {
+						idState.model = extendedDataModel
+								.getSerializableModel(dataComponentState
+										.getRange());
+
+					}
 				}
 				if (null != idState.model || null != idState.componentState) {
 					state.componentStates.put(stateKey, idState);




More information about the richfaces-svn-commits mailing list