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

Hendy Irawan commented on WICKET-5776:
--------------------------------------

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)

Reply via email to