List of usage examples for org.apache.wicket.core.request.handler RenderPageRequestHandler RenderPageRequestHandler
public RenderPageRequestHandler(IPageProvider pageProvider, RedirectPolicy redirectPolicy)
From source file:eu.uqasar.web.UQasarExceptionRequestCycleListener.java
License:Apache License
private RenderPageRequestHandler createPageRequestHandler(PageProvider pageProvider) { RequestCycle requestCycle = RequestCycle.get(); if (requestCycle == null) { throw new IllegalStateException("there is no current request cycle attached to this thread"); }/*from www . j a v a 2 s. c o m*/ /* * Use NEVER_REDIRECT policy to preserve the original page's URL for * non-Ajax requests and always redirect for ajax requests */ RenderPageRequestHandler.RedirectPolicy redirect = RenderPageRequestHandler.RedirectPolicy.NEVER_REDIRECT; if (isProcessingAjaxRequest()) { redirect = RenderPageRequestHandler.RedirectPolicy.AUTO_REDIRECT; } return new RenderPageRequestHandler(pageProvider, redirect); }
From source file:lt.inventi.wicket.shiro.ShiroWicketPlugin.java
License:Apache License
/** * React to an uncaught Exception by redirecting the browser to * the unauthorized page or login page if appropriate. This method will automatically be * called by Wicket if this plugin was installed by the standard {@link #install install()} * mechanism, via the {@link IRequestCycleListener} system. * This allows uncaught Shiro exceptions thrown by the backend to be * handled gracefully by the Wicket layer. * <p>//from w w w . j a va2 s . c o m * If the exception is a Shiro {@link AuthorizationException}, redirect * to the unauthorized page or login page depending on the type of error. * If the exception is not a Shiro {@link AuthorizationException} * return {@code null}. * * @param cycle The current request cycle, as provided by Wicket. * * @param error The exception to handle. If it is not a subclass of * Shiro's {@link AuthorizationException}, this method will * not have any effect. * * @return A {@link RenderPageRequestHandler} redirect to the login * page if the error is due to the user being * <em>unauthenticated</em>; * {@link RenderPageRequestHandler} to render the unauthorized page * if the error is due to the user being * <em>unauthorized</em>. */ @Override public IRequestHandler onException(RequestCycle cycle, Exception error) { Class<? extends Page> respondWithPage = null; RedirectPolicy redirectPolicy = RedirectPolicy.NEVER_REDIRECT; if (error instanceof AuthorizationException) { AuthorizationException ae = (AuthorizationException) error; if (authenticationNeeded(ae)) { if (loginPage != null) { onLoginRequired(); // Create a RestartResponseAtInterceptPageException to set the intercept, // even though we don't throw the exception. (The magic happens in the // RestartResponseAtInterceptPageException constructor.) new RestartResponseAtInterceptPageException(loginPage); respondWithPage = loginPage; redirectPolicy = RedirectPolicy.ALWAYS_REDIRECT; } } else { onUnauthorized(); if (this.unauthorizedRedirect || (cycle.getRequest() instanceof WebRequest && ((WebRequest) cycle.getRequest()).isAjax())) { redirectPolicy = RedirectPolicy.ALWAYS_REDIRECT; } respondWithPage = getUnauthorizedPage(); } } if (respondWithPage != null) { return new RenderPageRequestHandler(new PageProvider(respondWithPage), redirectPolicy); } return null; }
From source file:name.martingeisse.admin.application.wicket.ExceptionMapper.java
License:Open Source License
/** * /*from www. j a v a 2s. co m*/ */ @SuppressWarnings("unused") private RenderPageRequestHandler createPageRequestHandler(final IRequestablePage page) { return new RenderPageRequestHandler(new PageProvider(page), RenderPageRequestHandler.RedirectPolicy.NEVER_REDIRECT); }
From source file:net.databinder.auth.components.DataSignInPageBase.java
License:Open Source License
public DataSignInPageBase(PageParameters params, ReturnPage returnPage) { AuthApplication<T> app = null; try {/* ww w. j a v a 2 s . com*/ app = ((AuthApplication<T>) Application.get()); } catch (ClassCastException e) { } // make sure the user is not trying to sign in or register with the wrong page if (app == null || !app.getSignInPageClass().isInstance(this)) throw new UnauthorizedInstantiationException(DataSignInPageBase.class); if (params != null) { String username = params.get("username").toString(); String token = params.get("token").toString(); // e-mail auth, for example if (username != null && token != null) { T user = app.getUser(username); if (user != null && app.getToken(user).equals(token)) getAuthSession().signIn(user, true); setResponsePage(((Application) app).getHomePage()); RequestCycle.get() .scheduleRequestHandlerAfterCurrent(new RenderPageRequestHandler( new PageProvider(((Application) app).getHomePage(), params), RenderPageRequestHandler.RedirectPolicy.NEVER_REDIRECT)); return; } } add(new Label("title", new ResourceModel("data.auth.title.sign_in", "Please sign in"))); sourceList = new SourceList(); add(profileSocket = profileSocket("profileSocket", returnPage)); add(new WebMarkupContainer("profileLinkWrapper") { public boolean isVisible() { return profileLink.isEnabled(); } }.add((profileLink = sourceList.new SourceLink("profileLink", profileSocket)) .add(new Label("text", getString("data.auth.register_link", null, "Register now")))) .add(new Label("text", getString("data.auth.pre_register_link", null, "Don't have an account?")))); add(signinSocket = signinSocket("signinSocket", returnPage)); add(new WebMarkupContainer("signinLinkWrapper") { @Override public boolean isVisible() { return signinLink.isEnabled(); } }.add(new Label("text", getString("data.auth.pre_sign_in_link", null, "Already have an account?"))) .add((signinLink = sourceList.new SourceLink("signinLink", signinSocket)) .add(new Label("text", getString("data.auth.sign_in_link", null, "Sign in"))))); signinLink.onClick(); // show sign in first }
From source file:org.apache.isis.viewer.wicket.viewer.integration.wicket.WebRequestCycleForIsis.java
License:Apache License
@Override public IRequestHandler onException(RequestCycle cycle, Exception ex) { PageProvider errorPageProvider = errorPageProviderFor(ex); // avoid infinite redirect loops RedirectPolicy redirectPolicy = ex instanceof PageExpiredException ? RedirectPolicy.NEVER_REDIRECT : RedirectPolicy.ALWAYS_REDIRECT; return errorPageProvider != null ? new RenderPageRequestHandler(errorPageProvider, redirectPolicy) : null; }
From source file:org.hippoecm.frontend.Main.java
License:Apache License
@Override protected void init() { super.init(); addRequestCycleListeners();/*from w ww .j a v a2s. c o m*/ registerSessionListeners(); getPageSettings().setVersionPagesByDefault(false); // getPageSettings().setAutomaticMultiWindowSupport(false); // getSessionSettings().setPageMapEvictionStrategy(new LeastRecentlyAccessedEvictionStrategy(1)); getApplicationSettings().setPageExpiredErrorPage(PageExpiredErrorPage.class); try { String cfgParam = getConfigurationParameter(MAXUPLOAD_PARAM, null); if (cfgParam != null && cfgParam.trim().length() > 0) { getApplicationSettings().setDefaultMaximumUploadSize(Bytes.valueOf(cfgParam)); } } catch (StringValueConversionException ex) { log.warn("Unable to parse number as specified by " + MAXUPLOAD_PARAM, ex); } final IClassResolver originalResolver = getApplicationSettings().getClassResolver(); getApplicationSettings().setClassResolver(new IClassResolver() { @Override public Class resolveClass(String name) throws ClassNotFoundException { if (Session.exists()) { UserSession session = UserSession.get(); ClassLoader loader = session.getClassLoader(); if (loader != null) { return session.getClassLoader().loadClass(name); } } return originalResolver.resolveClass(name); } @Override public Iterator<URL> getResources(String name) { List<URL> resources = new LinkedList<>(); for (Iterator<URL> iter = originalResolver.getResources(name); iter.hasNext();) { resources.add(iter.next()); } if (Session.exists()) { UserSession session = UserSession.get(); ClassLoader loader = session.getClassLoader(); if (loader != null) { try { for (Enumeration<URL> resourceEnum = session.getClassLoader() .getResources(name); resourceEnum.hasMoreElements();) { resources.add(resourceEnum.nextElement()); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } return resources.iterator(); } @Override public ClassLoader getClassLoader() { return Main.class.getClassLoader(); } }); final IResourceSettings resourceSettings = getResourceSettings(); // replace current loaders with own list, starting with component-specific List<IStringResourceLoader> loaders = resourceSettings.getStringResourceLoaders(); loaders.add(new ClassFromKeyStringResourceLoader()); loaders.add(new IStringResourceLoader() { @Override public String loadStringResource(final Class<?> clazz, final String key, final Locale locale, final String style, final String variation) { return null; } @Override public String loadStringResource(final Component component, String key, final Locale locale, final String style, final String variation) { if (key.contains(",")) { key = key.substring(0, key.lastIndexOf(',')); return resourceSettings.getLocalizer().getStringIgnoreSettings(key, component, null, locale, style, variation); } return null; } }); if (RuntimeConfigurationType.DEVELOPMENT.equals(getConfigurationType())) { resourceSettings.setCachingStrategy(new NoOpResourceCachingStrategy()); } else { resourceSettings.setCachingStrategy( new FilenameWithVersionResourceCachingStrategy(new LastModifiedResourceVersion())); } mount(new MountMapper("binaries", new IMountedRequestMapper() { @Override public IRequestHandler mapRequest(final Request request, final MountParameters mountParams) { String path = Strings.join("/", request.getUrl().getSegments()); try { javax.jcr.Session subSession = UserSession.get().getJcrSession(); Node node = ((HippoWorkspace) subSession.getWorkspace()).getHierarchyResolver() .getNode(subSession.getRootNode(), path); // YUCK: no exception! if (node == null) { log.info("no binary found at " + path); } else { if (node.isNodeType(HippoNodeType.NT_DOCUMENT)) { node = (Node) JcrHelper.getPrimaryItem(node); } return new JcrResourceRequestHandler(node); } } catch (PathNotFoundException e) { log.info("binary not found " + e.getMessage()); } catch (javax.jcr.LoginException ex) { log.warn(ex.getMessage()); } catch (RepositoryException ex) { log.error(ex.getMessage()); } return null; } @Override public int getCompatibilityScore(final Request request) { return 1; } @Override public Mount mapHandler(final IRequestHandler requestHandler) { return null; } })); String applicationName = getPluginApplicationName(); if (PLUGIN_APPLICATION_VALUE_CMS.equals(applicationName)) { // the following is only applicable and needed for the CMS application, not the Console /* * HST SAML kind of authentication handler needed for Template Composer integration * */ cmsContextService = (CmsInternalCmsContextService) HippoServiceRegistry .getService(CmsContextService.class); if (cmsContextService == null) { cmsContextServiceImpl = new CmsContextServiceImpl(); cmsContextService = cmsContextServiceImpl; HippoServiceRegistry.registerService(cmsContextServiceImpl, new Class[] { CmsContextService.class, CmsInternalCmsContextService.class }); } mount(new MountMapper("auth", new IMountedRequestMapper() { @Override public IRequestHandler mapRequest(final Request request, final MountParameters mountParams) { IRequestHandler requestTarget = new RenderPageRequestHandler( new PageProvider(getHomePage(), null), RedirectPolicy.AUTO_REDIRECT); IRequestParameters requestParameters = request.getRequestParameters(); final List<StringValue> cmsCSIDParams = requestParameters.getParameterValues("cmsCSID"); final List<StringValue> destinationPathParams = requestParameters .getParameterValues("destinationPath"); final String destinationPath = destinationPathParams != null && !destinationPathParams.isEmpty() ? destinationPathParams.get(0).toString() : null; PluginUserSession userSession = (PluginUserSession) Session.get(); final UserCredentials userCredentials = userSession.getUserCredentials(); HttpSession httpSession = ((ServletWebRequest) request).getContainerRequest().getSession(); final CmsSessionContext cmsSessionContext = CmsSessionContext.getContext(httpSession); if (destinationPath != null && destinationPath.startsWith("/") && (cmsSessionContext != null || userCredentials != null)) { requestTarget = new IRequestHandler() { @Override public void respond(IRequestCycle requestCycle) { String destinationUrl = RequestUtils.getFarthestUrlPrefix(request) + destinationPath; WebResponse response = (WebResponse) RequestCycle.get().getResponse(); String cmsCSID = cmsCSIDParams == null ? null : cmsCSIDParams.get(0) == null ? null : cmsCSIDParams.get(0).toString(); if (!cmsContextService.getId().equals(cmsCSID)) { // redirect to destinationURL and include marker that it is a retry. This way // the destination can choose to not redirect for SSO handshake again if it still does not // have a key if (destinationUrl.contains("?")) { response.sendRedirect(destinationUrl + "&retry"); } else { response.sendRedirect(destinationUrl + "?retry"); } return; } String cmsSessionContextId = cmsSessionContext != null ? cmsSessionContext.getId() : null; if (cmsSessionContextId == null) { CmsSessionContext newCmsSessionContext = cmsContextService.create(httpSession); CmsSessionUtil.populateCmsSessionContext(cmsContextService, newCmsSessionContext, userSession); cmsSessionContextId = newCmsSessionContext.getId(); } if (destinationUrl.contains("?")) { response.sendRedirect(destinationUrl + "&cmsCSID=" + cmsContextService.getId() + "&cmsSCID=" + cmsSessionContextId); } else { response.sendRedirect(destinationUrl + "?cmsCSID=" + cmsContextService.getId() + "&cmsSCID=" + cmsSessionContextId); } } @Override public void detach(IRequestCycle requestCycle) { //Nothing to detach. } }; } return requestTarget; } @Override public int getCompatibilityScore(final Request request) { return 0; } @Override public Mount mapHandler(final IRequestHandler requestHandler) { return null; } })); } // caching resource stream locator implementation that allows the class argument to be null. final IResourceStreamLocator resourceStreamLocator = resourceSettings.getResourceStreamLocator(); resourceSettings.setResourceStreamLocator(new IResourceStreamLocator() { @Override public IResourceStream locate(Class<?> clazz, final String path) { if (clazz == null) { clazz = CACHING_RESOURCE_STREAM_LOCATOR_CLASS; } return resourceStreamLocator.locate(clazz, path); } @Override public IResourceStream locate(Class<?> clazz, final String path, final String style, final String variation, final Locale locale, final String extension, final boolean strict) { if (clazz == null) { clazz = CACHING_RESOURCE_STREAM_LOCATOR_CLASS; } return resourceStreamLocator.locate(clazz, path, style, variation, locale, extension, strict); } @Override public IResourceNameIterator newResourceNameIterator(final String path, final Locale locale, final String style, final String variation, final String extension, final boolean strict) { return resourceStreamLocator.newResourceNameIterator(path, locale, style, variation, extension, strict); } }); if (RuntimeConfigurationType.DEVELOPMENT.equals(getConfigurationType())) { // disable cache resourceSettings.getLocalizer().setEnableCache(false); final long timeout = NumberUtils.toLong( getConfigurationParameter(DEVELOPMENT_REQUEST_TIMEOUT_PARAM, null), DEFAULT_DEVELOPMENT_REQUEST_TIMEOUT_MS); if (timeout > 0L) { log.info("Setting wicket request timeout to {} ms.", timeout); getRequestCycleSettings().setTimeout(Duration.milliseconds(timeout)); } // render comments with component class names getDebugSettings().setOutputMarkupContainerClassName(true); // do not render Wicket-specific markup since it can break CSS getMarkupSettings().setStripWicketTags(true); } else { // don't serialize pages for performance setPageManagerProvider(new DefaultPageManagerProvider(this) { @Override protected IPageStore newPageStore(final IDataStore dataStore) { return new AmnesicPageStore(); } }); // don't throw on missing resource resourceSettings.setThrowExceptionOnMissingResource(false); // don't show exception page getExceptionSettings().setUnexpectedExceptionDisplay(IExceptionSettings.SHOW_NO_EXCEPTION_PAGE); final long timeout = NumberUtils .toLong(getConfigurationParameter(DEPLOYMENT_REQUEST_TIMEOUT_PARAM, null)); if (timeout > 0L) { log.info("Setting wicket request timeout to {} ms.", timeout); getRequestCycleSettings().setTimeout(Duration.milliseconds(timeout)); } } String outputWicketpaths = obtainOutputWicketPathsParameter(); if (outputWicketpaths != null && "true".equalsIgnoreCase(outputWicketpaths)) { getDebugSettings().setOutputComponentPath(true); } final IContextProvider<AjaxRequestTarget, Page> ajaxRequestTargetProvider = getAjaxRequestTargetProvider(); setAjaxRequestTargetProvider(context -> new PluginRequestTarget(ajaxRequestTargetProvider.get(context))); setPageRendererProvider(new IPageRendererProvider() { @Override public PageRenderer get(final RenderPageRequestHandler context) { return new WebPageRenderer(context) { @Override protected BufferedWebResponse renderPage(final Url targetUrl, final RequestCycle requestCycle) { IRequestHandler scheduled = requestCycle.getRequestHandlerScheduledAfterCurrent(); if (scheduled == null) { IRequestablePage page = getPage(); if (page instanceof Home) { Home home = (Home) page; home.processEvents(); home.render(null); } } return super.renderPage(targetUrl, requestCycle); } }; } }); // don't allow public access to any package resource (empty whitelist) by default resourceSettings.setPackageResourceGuard(new WhitelistedClassesResourceGuard()); if (log.isInfoEnabled()) { log.info("Hippo CMS application " + applicationName + " has started"); } }
From source file:org.hippoecm.frontend.RepositoryRuntimeExceptionHandlingRequestCycleListener.java
License:Apache License
/** * Creates IRequestHandler based on the given <code>RepositoryRuntimeException</code>. * @param rrEx RepositoryRuntimeException * @return/*from www.j a v a 2 s .co m*/ */ protected IRequestHandler createRequestHandler(final RepositoryRuntimeException rrEx) { IRequestHandler handler = null; if (rrEx instanceof InvalidSessionException) { log.error("Creating RequestHandler for InvalidSessionException: {}", rrEx.toString(), rrEx); handler = new RenderPageRequestHandler(new PageProvider(WebApplication.get().getHomePage()), RedirectPolicy.AUTO_REDIRECT); } else if (rrEx instanceof RepositoryUnavailableException) { log.error("Creating RequestHandler for RepositoryUnavailableException: {}", rrEx.toString(), rrEx); handler = new RenderPageRequestHandler(new PageProvider(NoRepositoryAvailablePage.class), RedirectPolicy.AUTO_REDIRECT); } return handler; }