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

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Tue Jan 29 14:17:19 EST 2008


Author: nbelaevski
Date: 2008-01-29 14:17:18 -0500 (Tue, 29 Jan 2008)
New Revision: 5713

Modified:
   trunk/framework/impl/src/main/java/org/ajax4jsf/component/UIDataAdaptor.java
Log:
http://jira.jboss.com/jira/browse/RF-2072

Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/component/UIDataAdaptor.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/component/UIDataAdaptor.java	2008-01-29 18:50:41 UTC (rev 5712)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/component/UIDataAdaptor.java	2008-01-29 19:17:18 UTC (rev 5713)
@@ -23,12 +23,10 @@
 
 import java.io.IOException;
 import java.io.Serializable;
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -277,8 +275,8 @@
 		// for compability, complex models must provide values map between
 		// integer and key value.
 		localModel.setRowIndex(index);
-		rowAvailable = isRowAvailable();
 		
+		rowAvailable = isRowAvailable();
 		this._rowKey = localModel.getRowKey();
 		this._clientId = null;
 		
@@ -339,8 +337,8 @@
 		this._clientId = null;
 		
 		localModel.setRowKey(key);
-		rowAvailable = isRowAvailable();
 
+		rowAvailable = isRowAvailable();
 		boolean rowSelected = key != null && rowAvailable;
 
 		//XXX check for row availability
@@ -808,11 +806,7 @@
 	 * Saved values of {@link EditableValueHolder} fields per iterations.
 	 */
 	private Map childState;
-	
-	private List allDataChildren = null;
 
-	private List editableDataChildren = null;
-
 	/**
 	 * @param faces
 	 * @return Saved values of {@link EditableValueHolder} fields per
@@ -832,30 +826,19 @@
 	}
 
 	/**
-	 * Save values of {@link EditableValueHolder} fields before change
-	 * current row.
+	 * Save values of {@link EditableValueHolder} fields before change current
+	 * row.
 	 * 
 	 * @param faces
 	 */
-    protected void saveChildState(FacesContext faces) {
-	Map childState = this.getChildState(faces);
-	if (null == editableDataChildren) {
-	    allDataChildren = new ArrayList();
-	    editableDataChildren = new ArrayList();
-	    Iterator itr = dataChildren();
-	    while (itr.hasNext()) {
-		this
-			.saveChildState(faces, (UIComponent) itr.next(),
-				childState);
-	    }
+	protected void saveChildState(FacesContext faces) {
 
-	} else {
-	    for (Iterator c = editableDataChildren.iterator(); c.hasNext();) {
-		UIComponent child = (UIComponent) c.next();
-		populateChildState(faces, child, childState);
-	    }
+		Iterator itr = dataChildren();
+		while (itr.hasNext()) {
+			Map childState = this.getChildState(faces);
+			this.saveChildState(faces, (UIComponent) itr.next(), childState);
+		}
 	}
-    }
 
 	/**
 	 * Recursive method for Iterate on children for save
@@ -867,10 +850,15 @@
 	 */
 	private void saveChildState(FacesContext faces, UIComponent c,
 			Map childState) {
-	    	allDataChildren.add(c);
-		if (c instanceof EditableValueHolder ) {
-			populateChildState(faces, c, childState);
-			editableDataChildren.add(c);
+
+		if (c instanceof EditableValueHolder && !c.isTransient()) {
+			String clientId = c.getClientId(faces);
+			SavedState ss = (SavedState) childState.get(clientId);
+			if (ss == null) {
+				ss = new SavedState();
+				childState.put(clientId, ss);
+			}
+			ss.populate((EditableValueHolder) c);
 		}
 
 		// continue hack
@@ -885,52 +873,19 @@
 	}
 
 	/**
-	 * @param faces
-	 * @param c
-	 * @param childState
-	 */
-	private void populateChildState(FacesContext faces, UIComponent c,
-		Map childState) {
-	    String clientId = c.getClientId(faces);
-	    SavedState ss = (SavedState) childState.get(clientId);
-	    if (ss == null) {
-	    	ss = new SavedState();
-	    	childState.put(clientId, ss);
-	    }
-	    ss.populate((EditableValueHolder) c);
-	}
-
-	/**
-	 * Restore values of {@link EditableValueHolder} fields after change
-	 * current row.
+	 * Restore values of {@link EditableValueHolder} fields after change current
+	 * row.
 	 * 
 	 * @param faces
 	 */
-    protected void restoreChildState(FacesContext faces) {
-	Map childState = this.getChildState(faces);
+	protected void restoreChildState(FacesContext faces) {
 
-	if (null == editableDataChildren) {
-	    allDataChildren = new ArrayList();
-	    editableDataChildren = new ArrayList();
-	    Iterator itr = dataChildren();
-	    while (itr.hasNext()) {
-		this.restoreChildState(faces, (UIComponent) itr.next(),
-			childState);
-	    }
-
-	} else {
-	    for (Iterator c = allDataChildren.iterator(); c.hasNext();) {
-		UIComponent child = (UIComponent) c.next();
-		// reset id
-		String id = child.getId();
-		child.setId(id);
-	    }	    
-	    for (Iterator c = editableDataChildren.iterator(); c.hasNext();) {
-		UIComponent child = (UIComponent) c.next();
-		applyChildState(faces, child, childState);
-	    }	    
+		Iterator itr = dataChildren();
+		while (itr.hasNext()) {
+			Map childState = this.getChildState(faces);
+			this.restoreChildState(faces, (UIComponent) itr.next(), childState);
+		}
 	}
-    }
 
 	/**
 	 * Recursive part of
@@ -946,11 +901,17 @@
 		// reset id
 		String id = c.getId();
 		c.setId(id);
-	    	allDataChildren.add(c);
+
 		// hack
 		if (c instanceof EditableValueHolder) {
-			applyChildState(faces, c, childState);
-			editableDataChildren.add(c);
+			EditableValueHolder evh = (EditableValueHolder) c;
+			String clientId = c.getClientId(faces);
+			SavedState ss = (SavedState) childState.get(clientId);
+			if (ss != null) {
+				ss.apply(evh);
+			} else {
+				NullState.apply(evh);
+			}
 		}
 
 		// continue hack
@@ -965,23 +926,6 @@
 	}
 
 	/**
-	 * @param faces
-	 * @param c
-	 * @param childState
-	 */
-	private void applyChildState(FacesContext faces, UIComponent c,
-		Map childState) {
-	    EditableValueHolder evh = (EditableValueHolder) c;
-	    String clientId = c.getClientId(faces);
-	    SavedState ss = (SavedState) childState.get(clientId);
-	    if (ss != null) {
-	    	ss.apply(evh);
-	    } else {
-	    	NullState.apply(evh);
-	    }
-	}
-
-	/**
 	 * Check for validation errors on children components. If true, saved values
 	 * must be keep on render phase
 	 * 
@@ -1112,8 +1056,6 @@
 
 	public void encodeBegin(FacesContext context) throws IOException {
 		resetDataModel();
-		this.editableDataChildren = null;
-		this.allDataChildren = null;
 		if (!keepSaved(context)) {
 			childState.remove(getBaseClientId(context));
 		}
@@ -1509,19 +1451,13 @@
 	public void clearRequestKeysSet() {
 		_ajaxRequestKeys = null;
 	}
-
-	/**
-	 * Getter for value
-	 */
+	
 	public Object getValue() {
 		return super.getValue();
 	}
 	
-	/**
-	 * Setter for value resetting local model
-	 */
 	public void setValue(Object value) {
 		setExtendedDataModel(null);
 		super.setValue(value);
-	} 
+	}
 }




More information about the richfaces-svn-commits mailing list