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);
}
}
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);
}
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();
}
}
}
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;
}
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>");
}
Aggregations