Search in sources :

Example 46 with Link

use of org.apache.tapestry5.http.Link in project tapestry-5 by apache.

the class TapestryModule method contributeMarkupRenderer.

/**
 * Adds page render filters, each of which provides an {@link org.apache.tapestry5.annotations.Environmental}
 * service. Filters
 * often provide {@link org.apache.tapestry5.annotations.Environmental} services needed by
 * components as they render.
 * <dl>
 * <dt>DocumentLinker</dt>
 * <dd>Provides {@link org.apache.tapestry5.internal.services.DocumentLinker}</dd>
 * <dt>ClientBehaviorSupport (deprecated in 5.4)</dt>
 * <dd>Provides {@link ClientBehaviorSupport}</dd>
 * <dt>Heartbeat</dt>
 * <dd>Provides {@link org.apache.tapestry5.services.Heartbeat}</dd>
 * <dt>ValidationDecorator (deprecated in 5.4)</dt>
 * <dd>Provides {@link org.apache.tapestry5.ValidationDecorator} (via {@link ValidationDecoratorFactory#newInstance(org.apache.tapestry5.MarkupWriter)})</dd>
 * <dt>PageNameMeta (since 5.4)</dt>
 * <dd>Renders a {@code <meta/>} tag describing the active page name (development mode only)</dd>
 * <dt>ImportCoreStack (since 5.4) </dt>
 * <dd>Imports the "core" stack (necessary to get the Bootstrap CSS, if nothing else).</dd>
 * </dl>
 *
 * @see org.apache.tapestry5.SymbolConstants#OMIT_GENERATOR_META
 * @see org.apache.tapestry5.http.TapestryHttpSymbolConstants#PRODUCTION_MODE
 * @see org.apache.tapestry5.SymbolConstants#INCLUDE_CORE_STACK
 * @see org.apache.tapestry5.SymbolConstants#ENABLE_PAGELOADING_MASK
 */
public void contributeMarkupRenderer(OrderedConfiguration<MarkupRendererFilter> configuration, final ModuleManager moduleManager, @Symbol(SymbolConstants.OMIT_GENERATOR_META) final boolean omitGeneratorMeta, @Symbol(TapestryHttpConstants.TAPESTRY_VERSION) final String tapestryVersion, @Symbol(TapestryHttpSymbolConstants.PRODUCTION_MODE) boolean productionMode, @Symbol(SymbolConstants.INCLUDE_CORE_STACK) final boolean includeCoreStack, @Symbol(SymbolConstants.ENABLE_PAGELOADING_MASK) final boolean enablePageloadingMask, final ValidationDecoratorFactory validationDecoratorFactory) {
    MarkupRendererFilter documentLinker = new MarkupRendererFilter() {

        public void renderMarkup(MarkupWriter writer, MarkupRenderer renderer) {
            DocumentLinkerImpl linker = new DocumentLinkerImpl(moduleManager, omitGeneratorMeta, enablePageloadingMask, tapestryVersion);
            environment.push(DocumentLinker.class, linker);
            renderer.renderMarkup(writer);
            environment.pop(DocumentLinker.class);
            linker.updateDocument(writer.getDocument());
        }
    };
    MarkupRendererFilter clientBehaviorSupport = new MarkupRendererFilter() {

        public void renderMarkup(MarkupWriter writer, MarkupRenderer renderer) {
            ClientBehaviorSupportImpl clientBehaviorSupport = new ClientBehaviorSupportImpl();
            environment.push(ClientBehaviorSupport.class, clientBehaviorSupport);
            renderer.renderMarkup(writer);
            environment.pop(ClientBehaviorSupport.class);
        }
    };
    MarkupRendererFilter heartbeat = new MarkupRendererFilter() {

        public void renderMarkup(MarkupWriter writer, MarkupRenderer renderer) {
            Heartbeat heartbeat = new HeartbeatImpl();
            heartbeat.begin();
            environment.push(Heartbeat.class, heartbeat);
            renderer.renderMarkup(writer);
            environment.pop(Heartbeat.class);
            heartbeat.end();
        }
    };
    MarkupRendererFilter defaultValidationDecorator = new MarkupRendererFilter() {

        public void renderMarkup(MarkupWriter writer, MarkupRenderer renderer) {
            ValidationDecorator decorator = validationDecoratorFactory.newInstance(writer);
            environment.push(ValidationDecorator.class, decorator);
            renderer.renderMarkup(writer);
            environment.pop(ValidationDecorator.class);
        }
    };
    MarkupRendererFilter importCoreStack = new MarkupRendererFilter() {

        public void renderMarkup(MarkupWriter writer, MarkupRenderer renderer) {
            renderer.renderMarkup(writer);
            environment.peekRequired(JavaScriptSupport.class).importStack(InternalConstants.CORE_STACK_NAME);
        }
    };
    configuration.add("DocumentLinker", documentLinker);
    configuration.add("ClientBehaviorSupport", clientBehaviorSupport, "after:JavaScriptSupport");
    configuration.add("Heartbeat", heartbeat);
    configuration.add("ValidationDecorator", defaultValidationDecorator);
    if (includeCoreStack) {
        configuration.add("ImportCoreStack", importCoreStack);
    }
    if (productionMode) {
        configuration.add("PageNameMeta", null);
    } else {
        configuration.addInstance("PageNameMeta", PageNameMetaInjector.class);
    }
}
Also used : MarkupRenderer(org.apache.tapestry5.services.MarkupRenderer) PartialMarkupRenderer(org.apache.tapestry5.services.PartialMarkupRenderer) PartialMarkupRendererFilter(org.apache.tapestry5.services.PartialMarkupRendererFilter) MarkupRendererFilter(org.apache.tapestry5.services.MarkupRendererFilter) JavaScriptSupport(org.apache.tapestry5.services.javascript.JavaScriptSupport) Heartbeat(org.apache.tapestry5.services.Heartbeat) MarkupWriter(org.apache.tapestry5.MarkupWriter) ValidationDecorator(org.apache.tapestry5.ValidationDecorator)

Example 47 with Link

use of org.apache.tapestry5.http.Link in project tapestry-5 by apache.

the class AssetsModule method setupGlobalMessageCatalog.

/**
 * Contributes:
 * <dl>
 * <dt>ClientLocalization</dt>
 * <dd>A virtual resource of formatting symbols for decimal numbers</dd>
 * <dt>Core</dt>
 * <dd>Built in messages used by Tapestry's default validators and components</dd>
 * <dt>AppCatalog</dt>
 * <dd>The Resource defined by {@link SymbolConstants#APPLICATION_CATALOG}</dd>
 * <dt>
 *     </dl>
 *
 * @since 5.2.0
 */
@Contribute(ComponentMessagesSource.class)
public static void setupGlobalMessageCatalog(AssetSource assetSource, @Symbol(SymbolConstants.APPLICATION_CATALOG) Resource applicationCatalog, OrderedConfiguration<Resource> configuration) {
    configuration.add("ClientLocalization", new ClientLocalizationMessageResource());
    configuration.add("Core", assetSource.resourceForPath("org/apache/tapestry5/core.properties"));
    configuration.add("AppCatalog", applicationCatalog);
}
Also used : ClientLocalizationMessageResource(org.apache.tapestry5.internal.services.messages.ClientLocalizationMessageResource) Contribute(org.apache.tapestry5.ioc.annotations.Contribute)

Example 48 with Link

use of org.apache.tapestry5.http.Link in project tapestry-5 by apache.

the class PageTester method runComponentEventRequest.

private TestableResponse runComponentEventRequest() {
    while (true) {
        response.clear();
        try {
            boolean handled = requestHandler.service(request, response);
            if (!handled)
                throw new RuntimeException(String.format("Request for path '%s' was not handled by Tapestry.", request.getPath()));
            Link link = response.getRedirectLink();
            if (link != null) {
                setupRequestFromLink(link);
                continue;
            }
            return response;
        } catch (IOException ex) {
            throw new RuntimeException(ex);
        } finally {
            registry.cleanupThread();
        }
    }
}
Also used : IOException(java.io.IOException) Link(org.apache.tapestry5.http.Link)

Example 49 with Link

use of org.apache.tapestry5.http.Link in project tapestry-5 by apache.

the class TapestryTestCase method mockLink.

protected final Link mockLink(String absoluteURI) {
    Link link = mockLink();
    expect(link.toURI()).andReturn(absoluteURI).atLeastOnce();
    return link;
}
Also used : Link(org.apache.tapestry5.http.Link)

Example 50 with Link

use of org.apache.tapestry5.http.Link in project tapestry-5 by apache.

the class AbstractLinkTest method with_anchor.

@Test
public void with_anchor() {
    Link link = mockLink();
    ComponentResources resources = mockComponentResources();
    MarkupWriter writer = new MarkupWriterImpl();
    train_toURI(link, LINK_URI);
    // see note in no_anchor.
    expect(resources.isBound("parameters")).andReturn(false);
    resources.renderInformalParameters(writer);
    replay();
    linkFixture.inject("wilma", resources);
    linkFixture.writeLink(writer, link);
    verify();
    writer.write("link text");
    writer.end();
    assertEquals(writer.toString(), "<a href=\"/foo/bar.baz#wilma\">link text</a>");
}
Also used : MarkupWriterImpl(org.apache.tapestry5.internal.services.MarkupWriterImpl) MarkupWriter(org.apache.tapestry5.MarkupWriter) Link(org.apache.tapestry5.http.Link) ComponentResources(org.apache.tapestry5.ComponentResources) Test(org.testng.annotations.Test)

Aggregations

Link (org.apache.tapestry5.http.Link)66 Test (org.testng.annotations.Test)37 Response (org.apache.tapestry5.http.services.Response)19 MarkupWriter (org.apache.tapestry5.MarkupWriter)10 JSONObject (org.apache.tapestry5.json.JSONObject)10 ComponentEventLinkEncoder (org.apache.tapestry5.services.ComponentEventLinkEncoder)10 Request (org.apache.tapestry5.http.services.Request)8 PageRenderRequestParameters (org.apache.tapestry5.services.PageRenderRequestParameters)8 Element (org.apache.tapestry5.dom.Element)7 Contribute (org.apache.tapestry5.ioc.annotations.Contribute)7 Link (org.apache.tapestry5.Link)6 LinkCreationListener2 (org.apache.tapestry5.services.LinkCreationListener2)6 EventContext (org.apache.tapestry5.EventContext)5 ComponentClassResolver (org.apache.tapestry5.services.ComponentClassResolver)5 IOException (java.io.IOException)4 TapestryException (org.apache.tapestry5.commons.internal.util.TapestryException)4 BaseURLSource (org.apache.tapestry5.http.services.BaseURLSource)4 Page (org.apache.tapestry5.internal.structure.Page)4 List (java.util.List)3 ComponentResources (org.apache.tapestry5.ComponentResources)3