List of usage examples for org.apache.wicket.core.request.handler IPageClassRequestHandler getPageClass
Class<? extends IRequestablePage> getPageClass();
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); } }