Hendy Irawan created WICKET-5661:
------------------------------------

             Summary: IRequestHandler implementation for 
RestartResponseAtInterceptPageException
                 Key: WICKET-5661
                 URL: https://issues.apache.org/jira/browse/WICKET-5661
             Project: Wicket
          Issue Type: Improvement
          Components: wicket
    Affects Versions: 6.16.0
            Reporter: Hendy Irawan
            Priority: Minor


I'd like to throw e.g. {{NotLoggedInException}} which will be handled by 
{{onException}} which then does a {{RestartResponseAtInterceptPage}}:

{code}
private final class NotLoggedInRequestCycleListener extends 
AbstractRequestCycleListener {
        @Override
        public IRequestHandler onException(RequestCycle cycle, Exception ex) {
                // Since our actual exception is wrapped, we need to find based 
on the chain
                final List<Throwable> chain = Throwables.getCausalChain(ex);
                final NotLoggedInException notLoggedInException = 
Iterables.getFirst(
                                Iterables.filter(chain, 
NotLoggedInException.class), null);
                if (notLoggedInException != null) {
                        final Url url = cycle.getRequest().getClientUrl();
                        log.debug("Got exception " + 
notLoggedInException.getClass().getName() + " on " + url, ex);
                        final SoluvasWebSession session = (SoluvasWebSession) 
Session.get();
                        session.setOriginalUrl(url);
                        session.info("Please log in");
                        session.dirty();
                        throw new 
RestartResponseAtInterceptPageException(DedicatedLoginPage.class);
                } else {
                        return super.onException(cycle, ex);
                }
        }
}
{code}

which doesn't work:

{code}
Caused by: javax.servlet.ServletException: Cannot process filter: 
org.apache.wicket.RestartResponseAtInterceptPageException
        at 
org.soluvas.web.site.SecuredWicketAtmosphereHandler$CustomFilterChain.doFilter(SecuredWicketAtmosphereHandler.java:201)
        at 
org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
        at 
org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
        at 
org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
        at 
org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
        at 
org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
        at 
org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
        at 
org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
        at 
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
        at 
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
        at 
org.soluvas.web.site.SecuredWicketAtmosphereHandler$CustomFilterChain.doFilter(SecuredWicketAtmosphereHandler.java:199)
        ... 25 more
Caused by: org.apache.wicket.RestartResponseAtInterceptPageException
{code}

because Wicket requires an {{IRequestHandler}} instead in this phase.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to