Example usage for org.apache.wicket.core.request.handler RenderPageRequestHandler getPageProvider

List of usage examples for org.apache.wicket.core.request.handler RenderPageRequestHandler getPageProvider

Introduction

In this page you can find the example usage for org.apache.wicket.core.request.handler RenderPageRequestHandler getPageProvider.

Prototype

public IPageProvider getPageProvider() 

Source Link

Usage

From source file:de.micromata.wicket.request.mapper.PageParameterAwareMountedMapper.java

License:Open Source License

@Override
protected IRequestHandler processHybrid(PageInfo pageInfo, Class<? extends IRequestablePage> pageClass,
        PageParameters pageParameters, Integer renderCount) {
    IRequestHandler handler = null;/*from  w  w w .  ja  v a2 s  .  c  om*/
    try {
        handler = super.processHybrid(pageInfo, pageClass, pageParameters, renderCount);
    } catch (PageExpiredException e) {
        // in case of pageExpiredException at this point, we just redirect to previous bookmarkable resource
        return processBookmarkable(pageClass, pageParameters);
    }
    if (handler != null && handler instanceof RenderPageRequestHandler) {
        // in the current implementation (wicket 1.5.6) super.processHybrid
        // returns a RenderPageRequestHandler
        RenderPageRequestHandler renderPageHandler = (RenderPageRequestHandler) handler;
        if (renderPageHandler.getPageProvider() instanceof PageProvider) {
            PageProvider provider = (PageProvider) renderPageHandler.getPageProvider();
            // This check is necessary to prevent a RestartResponseAtInterceptPageException at the wrong time in request cycle
            if (provider.hasPageInstance()) {
                // get page classes
                Class<? extends IRequestablePage> oldPageClass = renderPageHandler.getPageClass();
                Class<? extends IRequestablePage> newPageClass = renderPageHandler.getPageProvider()
                        .getPageClass();

                // get page parameters
                PageParameters newPageParameters = renderPageHandler.getPageParameters();
                PageParameters oldPageParameters = renderPageHandler.getPageProvider().getPageInstance()
                        .getPageParameters();

                if (oldPageClass != null && oldPageClass.equals(newPageClass) == false) {
                    return processBookmarkable(newPageClass, newPageParameters);
                }

                // if we recognize a change between the page parameter of the loaded
                // page and the page parameter of the current request, we redirect
                // to a fresh bookmarkable instance of that page.
                if (!PageParameters.equals(oldPageParameters, newPageParameters)) {
                    return processBookmarkable(newPageClass, newPageParameters);
                }
            }
        }
    }
    return handler;
}