public void createdPageRenderLink(Link link, PageRenderRequestParameters parameters) { trigger(parameters.getLogicalPageName(), EventConstants.DECORATE_PAGE_RENDER_LINK, link, parameters); }
@Override public void handlePageRender(PageRenderRequestParameters parameters, ComponentRequestHandler handler) throws IOException { if (logger.isTraceEnabled()) { logger.trace("handlePageRender"); } if (redirectUnauthorizedUser(parameters.getLogicalPageName())) { return; } handler.handlePageRender(parameters); }
public void handlePageRender(PageRenderRequestParameters parameters, ComponentRequestHandler handler) throws IOException { globals.storeActivePageName(parameters.getLogicalPageName()); handler.handlePageRender(parameters); }
public boolean checkForInsecurePageRenderRequest(PageRenderRequestParameters parameters) throws IOException { if (!needsRedirect(parameters.getLogicalPageName())) return false; // Page is secure but request is not, so redirect. Link link = componentEventLinkEncoder.createPageRenderLink(parameters); response.sendRedirect(link); return true; }
public Link createPageRenderLink(PageRenderRequestParameters parameters) { StringBuilder builder = new StringBuilder(BUFFER_SIZE); // Build up the absolute URI. String activePageName = parameters.getLogicalPageName(); builder.append(contextPath); encodeAppFolderAndLocale(builder); builder.append(SLASH); String encodedPageName = encodePageName(activePageName); builder.append(encodedPageName); appendContext(encodedPageName.length() > 0, parameters.getActivationContext(), builder); Link link = new LinkImpl(builder.toString(), false, requestSecurityManager.checkPageSecurity(activePageName), response, contextPathEncoder, baseURLSource); if (parameters.isLoopback()) { link.addParameter(TapestryConstants.PAGE_LOOPBACK_PARAMETER_NAME, "t"); } return link; }
public Link transformPageRenderLink(Link defaultLink, PageRenderRequestParameters parameters) { if (!parameters.getLogicalPageName().equals("View")) return null; StringBuilder path = new StringBuilder(); Locale locale = persistentLocale.get(); if (locale != null) path.append('/').append(locale.toString()); path.append('/'); // Cheating: we know there's exactly one value in the context. path.append(parameters.getActivationContext().get(String.class, 0)); return defaultLink.copyWithBasePath(path.toString()); }
public void handlePageRender(final PageRenderRequestParameters parameters, final ComponentRequestHandler handler) throws IOException { final Holder<IOException> holder = Holder.create(); tracker.run("Handling page render request for page " + parameters.getLogicalPageName(), new Runnable() { public void run() { try { handler.handlePageRender(parameters); } catch (IOException e) { holder.put(e); } } } ); if (holder.hasValue()) { throw holder.get(); } } }
public void handle(PageRenderRequestParameters parameters) throws IOException { Page page = cache.get(parameters.getLogicalPageName()); if (request.getAttribute(InternalConstants.BYPASS_ACTIVATION) == null) { if (pageActivator.activatePage(page.getRootElement().getComponentResources(), parameters.getActivationContext(), resultProcessor)) { return; } if (!parameters.isLoopback()) { page.pageReset(); } } pageResponseRenderer.renderPageResponse(page); } }
@Test public void page_requires_whitelist_and_client_on_whitelist() throws Exception { ComponentClassResolver resolver = mockComponentClassResolver(); Request request = mockRequest(false); LocalizationSetter ls = mockLocalizationSetter(); MetaDataLocator metaDataLocator = mockMetaDataLocator(); ClientWhitelist whitelist = newMock(ClientWhitelist.class); String path = "/foo/Bar"; train_getPath(request, path); train_setLocaleFromLocaleName(ls, "foo", false); train_isPageName(resolver, "foo/Bar", true); train_canonicalizePageName(resolver, "foo/Bar", "foo/bar"); expect(metaDataLocator.findMeta(MetaDataConstants.WHITELIST_ONLY_PAGE, "foo/bar", boolean.class)).andReturn(true); expect(whitelist.isClientRequestOnWhitelist()).andReturn(true); replay(); ComponentEventLinkEncoderImpl linkEncoder = new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls, null, null, null, null, true, null, "", metaDataLocator, whitelist); PageRenderRequestParameters parameters = linkEncoder.decodePageRenderRequest(request); assertEquals(parameters.getLogicalPageName(), "foo/bar"); assertEquals(parameters.getActivationContext().getCount(), 0); assertFalse(parameters.isLoopback()); verify(); }
/** * TAPESTRY-2226 */ @Test public void page_activation_context_for_root_index_page() throws Exception { ComponentClassResolver resolver = mockComponentClassResolver(); Request request = mockRequest(false); LocalizationSetter ls = mockLocalizationSetter(); MetaDataLocator metaDataLocator = neverWhitelistProtected(); train_getPath(request, "/foo/bar"); train_setLocaleFromLocaleName(ls, "foo", false); train_isPageName(resolver, "foo/bar", false); train_isPageName(resolver, "foo", false); train_isPageName(resolver, "", true); train_canonicalizePageName(resolver, "", "index"); train_getLocale(request, Locale.ITALIAN); ls.setNonPersistentLocaleFromLocaleName("it"); replay(); ComponentEventLinkEncoderImpl linkEncoder = new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls, null, null, null, null, true, null, "", metaDataLocator, null); PageRenderRequestParameters parameters = linkEncoder.decodePageRenderRequest(request); assertEquals(parameters.getLogicalPageName(), "index"); assertArraysEqual(parameters.getActivationContext().toStrings(), "foo", "bar"); assertFalse(parameters.isLoopback()); verify(); }
private void no_extra_context(boolean finalSlash) throws Exception { ComponentClassResolver resolver = mockComponentClassResolver(); Request request = mockRequest(false); LocalizationSetter ls = mockLocalizationSetter(); MetaDataLocator metaDataLocator = neverWhitelistProtected(); String path = "/foo/Bar" + (finalSlash ? "/" : ""); train_getPath(request, path); train_setLocaleFromLocaleName(ls, "foo", false); train_isPageName(resolver, "foo/Bar", true); train_canonicalizePageName(resolver, "foo/Bar", "foo/bar"); replay(); ComponentEventLinkEncoderImpl linkEncoder = new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls, null, null, null, null, true, null, "", metaDataLocator, null); PageRenderRequestParameters parameters = linkEncoder.decodePageRenderRequest(request); assertEquals(parameters.getLogicalPageName(), "foo/bar"); assertEquals(parameters.getActivationContext().getCount(), 0); assertFalse(parameters.isLoopback()); verify(); }
private void context_passed_in_path(boolean finalSlash) throws Exception { ComponentClassResolver resolver = mockComponentClassResolver(); Request request = mockRequest(true); LocalizationSetter ls = mockLocalizationSetter(); MetaDataLocator metaDataLocator = neverWhitelistProtected(); String path = "/foo/Bar/zip/zoom" + (finalSlash ? "/" : ""); train_getPath(request, path); train_setLocaleFromLocaleName(ls, "foo", false); train_isPageName(resolver, "foo/Bar/zip/zoom", false); train_isPageName(resolver, "foo/Bar/zip", false); train_isPageName(resolver, "foo/Bar", true); train_canonicalizePageName(resolver, "foo/Bar", "foo/bar"); replay(); ComponentEventLinkEncoderImpl linkEncoder = new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls, null, null, null, null, true, null, "", metaDataLocator, null); PageRenderRequestParameters parameters = linkEncoder.decodePageRenderRequest(request); assertEquals(parameters.getLogicalPageName(), "foo/bar"); assertArraysEqual(parameters.getActivationContext().toStrings(), "zip", "zoom"); assertTrue(parameters.isLoopback()); verify(); }