You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Alexander Zynevich (JIRA)" <de...@myfaces.apache.org> on 2007/07/11 11:35:04 UTC

[jira] Commented: (TRINIDAD-91) UIOutput puts Converter as element of object arrays (holding component state), w/o calling to its saveState() method. It causes NotSerializableException

    [ https://issues.apache.org/jira/browse/TRINIDAD-91?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12511702 ] 

Alexander Zynevich commented on TRINIDAD-91:
--------------------------------------------

Thanks, that helped!

> UIOutput puts Converter as element of object arrays (holding component state), w/o calling to its saveState() method. It causes NotSerializableException
> --------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: TRINIDAD-91
>                 URL: https://issues.apache.org/jira/browse/TRINIDAD-91
>             Project: MyFaces Trinidad
>          Issue Type: Bug
>          Components: Plugins
>    Affects Versions: 1.2.1-plugins,  1.2.2-plugins
>         Environment: Geronimo-2.0-tomcat6-jee5-m6-rc1
>            Reporter: Alexander Zynevich
>            Assignee: Matthias Weßendorf
>             Fix For:  1.2.1.1-plugins,  1.2.2-plugins
>
>
> The following snipet:
> 				<h:outputText id="cellStrtDate" styleClass="table-text-norm" value="#{obj.srvDate}" >
> 					<f:convertDateTime pattern="yyyy-MM-dd" timeZone="#{commonInfo.timeZone}" />
> 				</h:outputText>
> causes:
> java.io.NotSerializableException: *javax.faces.convert.DateTimeConverter*
> 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156)
> 	at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
> 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
> 	at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
> 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
> 	at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
> 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
> 	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
> 	at java.util.ArrayList.writeObject(ArrayList.java:570)
> 	at sun.reflect.GeneratedMethodAccessor311.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
> 	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
> 	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
> 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
> 	at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
> 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
> 	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
> 	at java.util.ArrayList.writeObject(ArrayList.java:570)
> 	at sun.reflect.GeneratedMethodAccessor311.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
> 	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
> 	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
> 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
> 	at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
> 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
> 	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
> 	at java.util.ArrayList.writeObject(ArrayList.java:570)
> 	at sun.reflect.GeneratedMethodAccessor311.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
> 	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
> 	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
> 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
> 	at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
> 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
> 	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
> 	at java.util.ArrayList.writeObject(ArrayList.java:570)
> 	at sun.reflect.GeneratedMethodAccessor311.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
> 	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
> 	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
> 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
> 	at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
> 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
> 	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
> 	at java.util.ArrayList.writeObject(ArrayList.java:570)
> 	at sun.reflect.GeneratedMethodAccessor311.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
> 	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
> 	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
> 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
> 	at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
> 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
> 	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
> 	at java.util.ArrayList.writeObject(ArrayList.java:570)
> 	at sun.reflect.GeneratedMethodAccessor311.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
> 	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
> 	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
> 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
> 	at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
> 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
> 	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
> 	at org.apache.myfaces.application.jsp.JspStateManagerImpl.serializeView(JspStateManagerImpl.java:638)
> 	at org.apache.myfaces.application.jsp.JspStateManagerImpl.saveSerializedViewInServletSession(JspStateManagerImpl.java:538)
> 	at org.apache.myfaces.application.jsp.JspStateManagerImpl.saveSerializedView(JspStateManagerImpl.java:371)
> 	at javax.faces.application.StateManager.saveView(StateManager.java:47)
> 	at org.apache.myfaces.application.jsp.JspViewHandlerImpl$StateMarkerAwareWriter.flushToWriter(JspViewHandlerImpl.java:387)
> 	at org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:322)
> 	at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
> 	at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:132)
> 	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:138)
> of course Converter and DateTimeConverter are not serializable....
> The problem is that in 1.2 branch of JSF in UIOutput converter is put to Object[] array for serialization w/o delegating to StateHolder interface of Converter (from decompiled code):
>     public Object saveState(FacesContext facesContext)
>     {
>         Object values[] = new Object[3];
>         values[0] = super.saveState(facesContext);
>         values[1] = _value;
>         values[2] = _converter;
>         return ((Object) (values));
>     }
> however it should be like in trunk http://svn.apache.org/viewvc/myfaces/core/trunk/api/src/main/java/javax/faces/component/UIOutput.java?revision=482726&view=markup:
>     public Object saveState(FacesContext context)
>     {
>         Object values[] = new Object[3];
>         values[0] = super.saveState(context);
>         values[1] = saveAttachedState(context, _converter);
>         values[2] = _value;
>         return values;
>      }
> by the way, I failed to find UIOutput at http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/api/src/main/java/javax/faces/component/
> does it mean that UIOutput is somehow generated in "jsf12" branch or comes from https://javaserverfaces.dev.java.net/?
> But on https://javaserverfaces.dev.java.net/ the latest sources has correct variant.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.