You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Hendy Irawan (JIRA)" <ji...@apache.org> on 2014/12/05 07:32:12 UTC

[jira] [Comment Edited] (WICKET-5776) Please wrap Exception mentioning the component path during "Error detaching RequestHandler in Component.detachModel[s]"

    [ https://issues.apache.org/jira/browse/WICKET-5776?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14235159#comment-14235159 ] 

Hendy Irawan edited comment on WICKET-5776 at 12/5/14 6:31 AM:
---------------------------------------------------------------

Yes I guess what you described is how the implementation would work:

{code}
void detach() {
  try {
    // detachChildren
  } catch (ComponentDetachException cde) {
    throw cde;
  } catch (Exception e) {
    throw new ComponentDetachException("Error detaching component " + getPath() + ": " + e, e);
  }  
}
{code}

I think that such code is relatively concise and expresses its purpose appropriately.



was (Author: ceefour):
Yes I guess what you described is how the implementation would work:

{code}
void detach() {
  try {
    // detachChildren
  } catch (ComponentDetachException cde) {
    throw cde;
  } catch (Exception e) {
    throw new ComponentDetachException("Cannot detach component " + getPath(), e);
  }  
}
{code}

I think that such code is relatively concise and expresses its purpose appropriately.


> Please wrap Exception mentioning the component path during "Error detaching RequestHandler in Component.detachModel[s]"
> -----------------------------------------------------------------------------------------------------------------------
>
>                 Key: WICKET-5776
>                 URL: https://issues.apache.org/jira/browse/WICKET-5776
>             Project: Wicket
>          Issue Type: Improvement
>          Components: wicket
>    Affects Versions: 6.18.0
>            Reporter: Anton Kurniawan
>            Priority: Minor
>
> I got error like this:
> {code}
> org.apache.wicket.request.RequestHandlerStack : Error detaching RequestHandler
> java.lang.ClassCastException: id.co.bippo.product.impl.VariedProductImpl cannot be cast to java.util.List
> 	at org.soluvas.web.site.EmfListModel.onDetach(EmfListModel.java:60) ~[classes/:na]
> 	at org.apache.wicket.model.LoadableDetachableModel.detach(LoadableDetachableModel.java:99) ~[wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.Component.detachModel(Component.java:3585) ~[wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.Component.detachModels(Component.java:1242) ~[wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.Component.detach(Component.java:1172) ~[wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.MarkupContainer.detachChildren(MarkupContainer.java:1609) ~[wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.Component.detach(Component.java:1179) ~[wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.MarkupContainer.detachChildren(MarkupContainer.java:1609) ~[wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.Component.detach(Component.java:1179) ~[wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.MarkupContainer.detachChildren(MarkupContainer.java:1609) ~[wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.Component.detach(Component.java:1179) ~[wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.MarkupContainer.detachChildren(MarkupContainer.java:1609) ~[wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.Component.detach(Component.java:1179) ~[wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.MarkupContainer.detachChildren(MarkupContainer.java:1609) ~[wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.Component.detach(Component.java:1179) ~[wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.MarkupContainer.detachChildren(MarkupContainer.java:1609) ~[wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.Component.detach(Component.java:1179) ~[wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.MarkupContainer.detachChildren(MarkupContainer.java:1609) ~[wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.Component.detach(Component.java:1179) ~[wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.core.request.handler.PageProvider.detach(PageProvider.java:327) ~[wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.core.request.handler.RenderPageRequestHandler.detach(RenderPageRequestHandler.java:156) ~[wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.detach(RequestCycle.java:873) ~[wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.request.RequestHandlerStack.detach(RequestHandlerStack.java:180) ~[wicket-request-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.request.cycle.RequestCycle.onDetach(RequestCycle.java:636) [wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.request.cycle.RequestCycle.detach(RequestCycle.java:589) [wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:293) [wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:259) [wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:201) [wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:282) [wicket-core-6.18.0.jar:6.18.0]
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) [catalina.jar:7.0.42]
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) [catalina.jar:7.0.42]
> 	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat-embed-websocket-7.0.56.jar:7.0.56]
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) [catalina.jar:7.0.42]
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) [catalina.jar:7.0.42]
> 	at org.soluvas.web.site.servlet.ShiroPrincipalsServletFilter.doFilter(ShiroPrincipalsServletFilter.java:59) [classes/:na]
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) [catalina.jar:7.0.42]
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) [catalina.jar:7.0.42]
> 	at org.soluvas.web.site.servlet.MoreMdcServletFilter.doFilter(MoreMdcServletFilter.java:62) [classes/:na]
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) [catalina.jar:7.0.42]
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) [catalina.jar:7.0.42]
> 	at ch.qos.logback.classic.helpers.MDCInsertingServletFilter.doFilter(MDCInsertingServletFilter.java:51) [logback-classic-1.0.13.jar:na]
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) [catalina.jar:7.0.42]
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) [catalina.jar:7.0.42]
> 	at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) [shiro-web-1.2.3.jar:1.2.3]
> 	at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) [shiro-web-1.2.3.jar:1.2.3]
> 	at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) [shiro-core-1.2.3.jar:1.2.3]
> 	at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) [shiro-core-1.2.3.jar:1.2.3]
> 	at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) [shiro-core-1.2.3.jar:1.2.3]
> 	at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) [shiro-web-1.2.3.jar:1.2.3]
> 	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) [shiro-web-1.2.3.jar:1.2.3]
> 	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344) [spring-web-4.1.2.RELEASE.jar:4.1.2.RELEASE]
> 	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261) [spring-web-4.1.2.RELEASE.jar:4.1.2.RELEASE]
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) [catalina.jar:7.0.42]
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) [catalina.jar:7.0.42]
> 	at com.codahale.metrics.servlet.AbstractInstrumentedFilter.doFilter(AbstractInstrumentedFilter.java:104) [metrics-servlet-3.1.0.jar:3.1.0]
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) [catalina.jar:7.0.42]
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) [catalina.jar:7.0.42]
> 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) [catalina.jar:7.0.42]
> 	at org.apache.catalina.core.StandardContextValve.__invoke(StandardContextValve.java:123) [catalina.jar:7.0.42]
> 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java) [catalina.jar:7.0.42]
> 	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) [catalina.jar:7.0.42]
> 	at org.apache.catalina.core.StandardHostValve.__invoke(StandardHostValve.java:171) [catalina.jar:7.0.42]
> 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java) [catalina.jar:7.0.42]
> 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) [catalina.jar:7.0.42]
> 	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) [catalina.jar:7.0.42]
> 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) [catalina.jar:7.0.42]
> 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) [catalina.jar:7.0.42]
> 	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) [tomcat-coyote.jar:7.0.42]
> 	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) [tomcat-coyote.jar:7.0.42]
> 	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) [tomcat-coyote.jar:7.0.42]
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_05]
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_05]
> 	at java.lang.Thread.run(Thread.java:745) [na:na]
> {code}
> It's possible to debug this error and in this case there's nothing wrong in Wicket. However, Wicket can help making the debugging much easier by wrapping the Exception and mentioning the component's path, which will allow us to pointpoint the problematic model rather quickly.
> In a page with tens or hundreds of (nested) components, without this info it will take some time.
> I'm pretty sure you'll approve this request. Thank you Wicket :) Thank you [~mgrigorov] :)
> Tag [~ceefour]



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