You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2010/01/31 01:54:13 UTC
svn commit: r904942 - in /myfaces/core/trunk:
api/src/main/java/javax/faces/component/
impl/src/main/java/org/apache/myfaces/renderkit/html/
Author: lu4242
Date: Sun Jan 31 00:54:13 2010
New Revision: 904942
URL: http://svn.apache.org/viewvc?rev=904942&view=rev
Log:
MYFACES-2342 New objects added for new api in UIViewRoot, UIComponent and UIComponentBase could be saved and restored
Modified:
myfaces/core/trunk/api/src/main/java/javax/faces/component/UIComponent.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlScriptRenderer.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlStylesheetRenderer.java
Modified: myfaces/core/trunk/api/src/main/java/javax/faces/component/UIComponent.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/api/src/main/java/javax/faces/component/UIComponent.java?rev=904942&r1=904941&r2=904942&view=diff
==============================================================================
--- myfaces/core/trunk/api/src/main/java/javax/faces/component/UIComponent.java (original)
+++ myfaces/core/trunk/api/src/main/java/javax/faces/component/UIComponent.java Sun Jan 31 00:54:13 2010
@@ -1128,24 +1128,45 @@
public void restoreState(FacesContext context, Object state)
{
- //TODO: Delta
+ if (state == null)
+ {
+ return;
+ }
Object[] values = (Object[]) state;
componentClass = (Class) values[0];
- listener = values[1] == null ?
- UIComponent.getCurrentComponent(context) :
- (ComponentSystemEventListener) UIComponentBase.restoreAttachedState(context, values[1]);
+ if (values[1] instanceof _AttachedDeltaWrapper)
+ {
+ ((StateHolder)listener).restoreState(context, ((_AttachedDeltaWrapper)values[1]).getWrappedStateObject());
+ }
+ else
+ {
+ listener = values[1] == null ?
+ UIComponent.getCurrentComponent(context) :
+ (ComponentSystemEventListener) UIComponentBase.restoreAttachedState(context, values[1]);
+ }
}
public Object saveState(FacesContext context)
{
- //TODO: Delta
- Object[] state = new Object[2];
- state[0] = componentClass;
- if (!(listener instanceof UIComponent))
+ if (!initialStateMarked())
+ {
+ Object[] state = new Object[2];
+ state[0] = componentClass;
+ if (!(listener instanceof UIComponent))
+ {
+ state[1] = UIComponentBase.saveAttachedState(context, listener);
+ }
+ return state;
+ }
+ else
{
- state[1] = UIComponentBase.saveAttachedState(context, listener);
+ Object listenerSaved = ((StateHolder) listener).saveState(context);
+ if (listenerSaved == null)
+ {
+ return null;
+ }
+ return new Object[]{componentClass, new _AttachedDeltaWrapper(listener.getClass(), listenerSaved)};
}
- return state;
}
public void setTransient(boolean newTransientValue)
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlScriptRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlScriptRenderer.java?rev=904942&r1=904941&r2=904942&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlScriptRenderer.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlScriptRenderer.java Sun Jan 31 00:54:13 2010
@@ -27,6 +27,7 @@
import javax.faces.application.FacesMessage;
import javax.faces.application.ProjectStage;
import javax.faces.application.Resource;
+import javax.faces.component.PartialStateHolder;
import javax.faces.component.UIComponent;
import javax.faces.component.UIViewRoot;
import javax.faces.component.UniqueIdVendor;
@@ -55,7 +56,7 @@
@JSFRenderer(renderKitId = "HTML_BASIC", family = "javax.faces.Output", type = "javax.faces.resource.Script")
@ListenerFor(systemEventClass = PostAddToViewEvent.class)
public class HtmlScriptRenderer extends Renderer implements
- ComponentSystemEventListener
+ ComponentSystemEventListener, PartialStateHolder
{
//private static final Log log = LogFactory.getLog(HtmlScriptRenderer.class);
private static final Logger log = Logger.getLogger(HtmlScriptRenderer.class.getName());
@@ -246,4 +247,39 @@
writer.endElement(HTML.SCRIPT_ELEM);
}
}
+
+ private boolean _initialStateMarked;
+
+ public void clearInitialState()
+ {
+ _initialStateMarked = false;
+ }
+
+ public boolean initialStateMarked()
+ {
+ return _initialStateMarked;
+ }
+
+ public void markInitialState()
+ {
+ _initialStateMarked = true;
+ }
+
+ public boolean isTransient()
+ {
+ return false;
+ }
+
+ public void restoreState(FacesContext context, Object state)
+ {
+ }
+
+ public Object saveState(FacesContext context)
+ {
+ return null;
+ }
+
+ public void setTransient(boolean newTransientValue)
+ {
+ }
}
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlStylesheetRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlStylesheetRenderer.java?rev=904942&r1=904941&r2=904942&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlStylesheetRenderer.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlStylesheetRenderer.java Sun Jan 31 00:54:13 2010
@@ -27,6 +27,7 @@
import javax.faces.application.FacesMessage;
import javax.faces.application.ProjectStage;
import javax.faces.application.Resource;
+import javax.faces.component.PartialStateHolder;
import javax.faces.component.UIComponent;
import javax.faces.component.UIViewRoot;
import javax.faces.component.UniqueIdVendor;
@@ -55,7 +56,7 @@
@JSFRenderer(renderKitId = "HTML_BASIC", family = "javax.faces.Output", type = "javax.faces.resource.Stylesheet")
@ListenerFor(systemEventClass = PostAddToViewEvent.class)
public class HtmlStylesheetRenderer extends Renderer implements
- ComponentSystemEventListener
+ ComponentSystemEventListener, PartialStateHolder
{
//private static final Log log = LogFactory.getLog(HtmlStylesheetRenderer.class);
private static final Logger log = Logger.getLogger(HtmlStylesheetRenderer.class.getName());
@@ -239,4 +240,39 @@
writer.endElement(HTML.LINK_ELEM);
}
}
+
+ private boolean _initialStateMarked;
+
+ public void clearInitialState()
+ {
+ _initialStateMarked = false;
+ }
+
+ public boolean initialStateMarked()
+ {
+ return _initialStateMarked;
+ }
+
+ public void markInitialState()
+ {
+ _initialStateMarked = true;
+ }
+
+ public boolean isTransient()
+ {
+ return false;
+ }
+
+ public void restoreState(FacesContext context, Object state)
+ {
+ }
+
+ public Object saveState(FacesContext context)
+ {
+ return null;
+ }
+
+ public void setTransient(boolean newTransientValue)
+ {
+ }
}