You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by sv...@apache.org on 2006/10/18 01:43:11 UTC

svn commit: r465098 - in /myfaces/tomahawk/trunk/core/src: main/java/org/apache/myfaces/custom/savestate/UISaveState.java test/java/org/apache/myfaces/custom/savestate/UISaveStateTest.java

Author: svieujot
Date: Tue Oct 17 16:43:09 2006
New Revision: 465098

URL: http://svn.apache.org/viewvc?view=rev&rev=465098
Log:
Fix TOMAHAWK-738.

Modified:
    myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/savestate/UISaveState.java
    myfaces/tomahawk/trunk/core/src/test/java/org/apache/myfaces/custom/savestate/UISaveStateTest.java

Modified: myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/savestate/UISaveState.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/savestate/UISaveState.java?view=diff&rev=465098&r1=465097&r2=465098
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/savestate/UISaveState.java (original)
+++ myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/savestate/UISaveState.java Tue Oct 17 16:43:09 2006
@@ -15,6 +15,7 @@
  */
 package org.apache.myfaces.custom.savestate;
 
+import javax.faces.component.StateHolder;
 import javax.faces.component.UIParameter;
 import javax.faces.component.ValueHolder;
 import javax.faces.context.FacesContext;
@@ -61,9 +62,19 @@
 {
     public Object saveState(FacesContext context)
     {
-        Object values[] = new Object[2];
+        Object values[] = new Object[3];
         values[0] = super.saveState(context);
-        values[1] = saveAttachedState(context, getValue());
+        Object objectToSave = getValue();
+        if (objectToSave instanceof StateHolder)
+        {
+        	values[1] = Boolean.TRUE;
+        	values[2] = saveAttachedState(context, objectToSave);
+        }
+        else
+        {
+        	values[1] = Boolean.FALSE;
+        	values[2] = objectToSave;
+        }
         return values;
     }
 
@@ -71,11 +82,21 @@
     {
         Object values[] = (Object[])state;
         super.restoreState(context, values[0]);
-        Object value = restoreAttachedState(context,values[1]);
+        
+        Object savedObject;
+        Boolean storedObjectIsAStateHolder = (Boolean) values[1];
+        if ( Boolean.TRUE.equals( storedObjectIsAStateHolder ) )
+        {
+        	savedObject = restoreAttachedState(context,values[2]);
+        }
+        else
+        {
+        	savedObject = values[2];
+        }
         ValueBinding vb = getValueBinding("value");
         if (vb != null)
         {
-            vb.setValue(context, value);
+            vb.setValue(context, savedObject);
         }
     }
 

Modified: myfaces/tomahawk/trunk/core/src/test/java/org/apache/myfaces/custom/savestate/UISaveStateTest.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/test/java/org/apache/myfaces/custom/savestate/UISaveStateTest.java?view=diff&rev=465098&r1=465097&r2=465098
==============================================================================
--- myfaces/tomahawk/trunk/core/src/test/java/org/apache/myfaces/custom/savestate/UISaveStateTest.java (original)
+++ myfaces/tomahawk/trunk/core/src/test/java/org/apache/myfaces/custom/savestate/UISaveStateTest.java Tue Oct 17 16:43:09 2006
@@ -31,6 +31,7 @@
 public class UISaveStateTest extends AbstractJsfTestCase{
 
 	private UISaveState saveState;
+	private SaveStateTestBean saveStateTestBean;
 
 	public UISaveStateTest(String name) {
 		super(name);
@@ -43,33 +44,33 @@
 	public void setUp() throws Exception{
 		super.setUp();
 		saveState = new UISaveState();
-		facesContext.getExternalContext().getRequestMap().put("testBean", new SaveStateTestBean());
+		saveStateTestBean = new SaveStateTestBean();
+		facesContext.getExternalContext().getRequestMap().put("testBean", saveStateTestBean);
 	}
 
 	public void tearDown() throws Exception{
 		saveState = null;
+		saveStateTestBean = null;
 		super.tearDown();
 	}
 
-// Commented out by sean - the way this test is constructed we're really just testing the myfaces core (which is
-// currently broken) See also TOMAHAWK-738.
+	public void testWorksWithLinkedList() {
+		ValueBinding valueBinding = facesContext.getApplication().createValueBinding("#{testBean.linkedList}");
+		saveState.setValueBinding("value", valueBinding);
+
+		LinkedList linkedList = (LinkedList) valueBinding.getValue(facesContext);
 
-//	public void testWorksWithLinkedList() {
-//		ValueBinding valueBinding = facesContext.getApplication().createValueBinding("#{testBean.linkedList}");
-//		saveState.setValueBinding("value", valueBinding);
-//
-//		LinkedList linkedList = (LinkedList) valueBinding.getValue(facesContext);
-//
-//		try {
-//			Object state = saveState.saveState(facesContext);
-//			Object values[] = (Object[])state;
-//			assertEquals(values[1], linkedList);
-//
-//			saveState.restoreState(facesContext, state);
-//		}catch(Exception exception) {
-//			fail();
-//		}
-//	}
+		try {
+			Object state = saveState.saveState(facesContext);
+			Object values[] = (Object[])state;
+			assertEquals(values[2], linkedList);
+
+			saveState.restoreState(facesContext, state);
+			
+		}catch(Exception exception) {
+			fail();
+		}
+	}
 
 	public void testWorksWithStateHolder() {
 		ValueBinding valueBinding = facesContext.getApplication().createValueBinding("#{testBean}");
@@ -80,7 +81,7 @@
 		try {
 			Object state = saveState.saveState(facesContext);
 			Object values[] = (Object[])state;
-			assertNotSame(values[1], testBean); //values[1] should be a type of "javax.faces.component._AttachedStateWrapper"
+			assertNotSame(values[2], testBean); //values[2] should be a type of "javax.faces.component._AttachedStateWrapper"
 
 			saveState.restoreState(facesContext, state);
 		}catch(Exception exception) {