Example usage for org.apache.wicket.core.request.handler IPageClassRequestHandler getPageClass

List of usage examples for org.apache.wicket.core.request.handler IPageClassRequestHandler getPageClass

Introduction

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

Prototype

Class<? extends IRequestablePage> getPageClass();

Source Link

Document

Returns the page class

Usage

From source file:name.martingeisse.admin.application.wicket.LoginRequestCycleListener.java

License:Open Source License

@Override
public void onRequestHandlerResolved(final RequestCycle cycle, final IRequestHandler handler) {
    logger.trace("LoginRequestCycleListener: checking...");
    ParameterUtil.ensureNotNull(cycle, "cycle");
    ParameterUtil.ensureNotNull(handler, "handler");

    // this handler has no business with the request if he user is logged in
    if (SecurityUtil.isLoggedIn()) {
        logger.trace("user is logged in -> ok");
        return;//w w w .j a  va  2  s .  c o m
    }

    // decide by handler type whether the request is allowed, blocked or redirected
    logger.trace("user is not logged in -> checking handler...");
    if (handler instanceof IPageClassRequestHandler) {

        // handler for a page -- allowed if it is the login page
        final IPageClassRequestHandler pageClassRequestHandler = (IPageClassRequestHandler) handler;
        final Class<?> pageClass = pageClassRequestHandler.getPageClass();
        logger.trace("handler is for page: " + pageClass);
        final Class<? extends Page> loginPageClass = SecurityConfiguration.getInstanceSafe()
                .getLoginPageClass();
        ReturnValueUtil.nullMeansMissing(loginPageClass, "security configuration: login page class");
        if (pageClass != loginPageClass) {
            logger.trace("sending intercept-redirect to the login page");
            throw new RestartResponseAtInterceptPageException(loginPageClass);
        }
        logger.trace("accepted.");
        return;

    } else if (handler instanceof ResourceReferenceRequestHandler || handler instanceof ResourceRequestHandler
            || handler instanceof ResourceStreamRequestHandler) {

        // accessing resources is allowed
        logger.trace("handler is for a resource -> ok");
        return;

    } else if (handler.getClass().getCanonicalName()
            .equals("org.apache.wicket.request.flow.ResetResponseException.ResponseResettingDecorator")) {

        // needed for ResetResponseException to work
        logger.trace("handler is from a ResetResponseException");
        return;

    } else if (handler.getClass().getCanonicalName()
            .equals("org.apache.wicket.protocol.https.SwitchProtocolRequestHandler")) {

        // needed for automatically switching to HTTPS
        logger.trace("handler is a SwitchProtocolRequestHandler");
        return;

    } else if (handler instanceof BufferedResponseRequestHandler) {

        // needed to render stateful login pages
        logger.trace("handler is a BufferedResponseRequestHandler");
        return;

    }

    // any other type of request handler is blocked
    logger.trace("blocking handler: " + handler + " / " + handler.getClass().getCanonicalName());
    throw new AbortWithHttpErrorCodeException(403);

}

From source file:name.martingeisse.wicket.util.WicketPageUtil.java

License:Open Source License

/**
 * Redirects to a new instance of the current page class, with the current page
 * parameters. Useful to escape when stuck in a stateful page with outdated values.
 *///from w  w  w.  j  a  v  a2  s  . co  m
public static void setResponsePageToNewPageInstance() {
    RequestCycle requestCycle = RequestCycle.get();
    IPageClassRequestHandler requestHandler = requestCycle.find(IPageClassRequestHandler.class);
    if (requestHandler == null) {
        throw new IllegalStateException("no IPageClassRequestHandler found");
    }
    requestCycle.setResponsePage(requestHandler.getPageClass(), requestHandler.getPageParameters());
}

From source file:org.wicketstuff.jamon.request.cycle.JamonAwareRequestCycleListener.java

License:Apache License

private void resolveTargetLabel(IRequestHandler requestHandler, RequestCycle cycle) {
    JamonMonitoredRequestCycleContext context;
    if (requestHandler instanceof IPageClassRequestHandler) {
        context = getContextOf(cycle);// w  ww.  j a  v  a2  s.c  o m
        IPageClassRequestHandler target = (IPageClassRequestHandler) requestHandler;
        Class<? extends IRequestablePage> pageClass = target.getPageClass();
        context.setTarget(pageClass);
    } else if (requestHandler instanceof BufferedResponseRequestHandler) {
        context = getContextOf(cycle);
        context.dontMonitorThisRequest();
    } else {
        doResolveTargetLabel(requestHandler, cycle);
    }
}