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) {