[ 
https://issues.apache.org/jira/browse/WICKET-6040?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sven Meier resolved WICKET-6040.
--------------------------------
       Resolution: Fixed
    Fix Version/s: 6.22.0

Same as in WICKET-6011 : DebugBar serializes the page before the Ajax header 
container is removed, thus keep reference to AbstractAjaxResponse in transient 
member only.

> DebugBar not serializable exception
> -----------------------------------
>
>                 Key: WICKET-6040
>                 URL: https://issues.apache.org/jira/browse/WICKET-6040
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket-devutils
>    Affects Versions: 6.21.0
>         Environment: jdk 7, ubuntu
>            Reporter: Elvis Ciocoiu
>            Assignee: Sven Meier
>             Fix For: 6.22.0
>
>
> After upgrading to 6.21.0 I encountered NotSerializableException when 
> refreshing DebugBar in an ajax event. Martin Grigorov suspects this is 
> related to 
> https://github.com/apache/wicket/commit/562d43ccdd7f305f8ca641817f4b63a07ee8b6a6.
> To reproduce this:
> 1. start the application in development mode
> 2. override onEvent in Application to refresh the DebugBar
> public void onEvent(IEvent<?> event) {
>               if(event.getPayload() instanceof AjaxRequestTarget) {
>                       AjaxRequestTarget target = (AjaxRequestTarget) 
> event.getPayload();                      
>               // if we are in development refresh the debugbar (if exists)
>               if(getConfigurationType() == 
> RuntimeConfigurationType.DEVELOPMENT) {
>                                       Component debugBar = 
> page.get("debugBar");
> if(debugBar != null) target.add(debugBar);
>               }
>       }
> From stacktrace it seems this is related to 
> org.apache.wicket.ajax.AbstractAjaxResponse$AjaxHtmlHeaderContainer:
> Caused by: java.lang.RuntimeException: An error occurred while getting the 
> model object for Component: [Component id = data, page = 
> ro.emp.wicket.StandaloneHomePage, path = 
> 2:debugBar:content:contributors:3:contrib:link:data.Label, isVisible = true, 
> isVersioned = true, markup = [markup = 
> jar:file:/home/fanfy/.m2/repository/org/apache/wicket/wicket-devutils/6.21.0/wicket-devutils-6.21.0.jar!/org/apache/wicket/devutils/debugbar/StandardDebugPanel.html
> <span wicket:id="data"></span>, index = 0, current =  '<span 
> wicket:id="data">' (line 0, column 0)]]
>       at 
> org.apache.wicket.Component.getDefaultModelObject(Component.java:1617) 
> ~[wicket-core-6.21.0.jar:6.21.0]
>       at 
> org.apache.wicket.Component.getDefaultModelObjectAsString(Component.java:1640)
>  ~[wicket-core-6.21.0.jar:6.21.0]
>       at 
> org.apache.wicket.markup.html.basic.Label.onComponentTagBody(Label.java:131) 
> ~[wicket-core-6.21.0.jar:6.21.0]
>       at 
> org.apache.wicket.markup.html.panel.DefaultMarkupSourcingStrategy.onComponentTagBody(DefaultMarkupSourcingStrategy.java:71)
>  ~[wicket-core-6.21.0.jar:6.21.0]
>       at 
> org.apache.wicket.Component.internalRenderComponent(Component.java:2536) 
> ~[wicket-core-6.21.0.jar:6.21.0]
>       ... 132 common frames omitted
> Caused by: org.apache.wicket.WicketRuntimeException: Internal error cloning 
> object
>       at 
> org.apache.wicket.core.util.lang.WicketObjects.cloneObject(WicketObjects.java:361)
>  ~[wicket-core-6.21.0.jar:6.21.0]
>       at 
> org.apache.wicket.core.util.lang.WicketObjects.sizeof(WicketObjects.java:425) 
> ~[wicket-core-6.21.0.jar:6.21.0]
>       at 
> org.apache.wicket.devutils.debugbar.PageSizeDebugPanel$2.getObject(PageSizeDebugPanel.java:96)
>  ~[wicket-devutils-6.21.0.jar:6.21.0]
>       at 
> org.apache.wicket.devutils.debugbar.PageSizeDebugPanel$2.getObject(PageSizeDebugPanel.java:89)
>  ~[wicket-devutils-6.21.0.jar:6.21.0]
>       at 
> org.apache.wicket.Component.getDefaultModelObject(Component.java:1612) 
> ~[wicket-core-6.21.0.jar:6.21.0]
>       ... 136 common frames omitted
> Caused by: java.io.NotSerializableException: 
> org.apache.wicket.ajax.AjaxRequestHandler$1
>       - field (class 
> "org.apache.wicket.ajax.AbstractAjaxResponse$AjaxHtmlHeaderContainer", name: 
> "this$0", type: "class org.apache.wicket.ajax.AbstractAjaxResponse")
>       - object (class 
> "org.apache.wicket.ajax.AbstractAjaxResponse$AjaxHtmlHeaderContainer", 
> [AjaxHtmlHeaderContainer [Component id = _header_]])
>       - element of array (index: 9)
>       - array (class "[Ljava.lang.Object;", size: 18)
>       - field (class "org.apache.wicket.MarkupContainer$ChildList", name: 
> "childs", type: "class [Ljava.lang.Object;")
>       - object (class "org.apache.wicket.MarkupContainer$ChildList", 
> [[Component id = applicationTitle], [FocusComponentFeedbackPanel [Component 
> id = feedbackPanel]], [DebugBar [Component id = debugBar]], 
> [StackComponentContainerImpl [Component id = contentContainer]], 
> [GlobalMenuPanel [Component id = menu]], [Fragment [Component id = 
> customHeader]], [Fragment [Component id = customFooter]], [WebMarkupContainer 
> [Component id = localeContainer]], [WebMarkupContainer [Component id = 
> userInformations]], [AjaxHtmlHeaderContainer [Component id = _header_]]])
>       - field (class "org.apache.wicket.MarkupContainer", name: "children", 
> type: "class java.lang.Object")
>       - root object (class "ro.emp.wicket.StandaloneHomePage", [Page class = 
> ro.emp.wicket.StandaloneHomePage, id = 2, render count = 3])
>       at 
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180) 
> ~[na:1.7.0_80]
>       at 
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1547) 
> ~[na:1.7.0_80]
>       at 
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1508) 
> ~[na:1.7.0_80]
>       at 
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431) 
> ~[na:1.7.0_80]
>       at 
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177) 
> ~[na:1.7.0_80]
>       at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1377) 
> ~[na:1.7.0_80]
>       at 
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1173) 
> ~[na:1.7.0_80]
>       at 
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1547) 
> ~[na:1.7.0_80]
>       at 
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1508) 
> ~[na:1.7.0_80]
>       at 
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431) 
> ~[na:1.7.0_80]
>       at 
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177) 
> ~[na:1.7.0_80]
>       at 
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1547) 
> ~[na:1.7.0_80]
>       at 
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1508) 
> ~[na:1.7.0_80]
>       at 
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431) 
> ~[na:1.7.0_80]
>       at 
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177) 
> ~[na:1.7.0_80]
>       at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347) 
> ~[na:1.7.0_80]
>       at 
> org.apache.wicket.core.util.lang.WicketObjects.cloneObject(WicketObjects.java:306)
>  ~[wicket-core-6.21.0.jar:6.21.0]
>       ... 140 common frames omitted



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to