"Tapestry is an open-source framework for creating dynamic, robust, highly scalable web applications in Java ..."
Integration with the Tapestry framework is done through TapestryConnectionHandler . That class sets up a hivemind registry and substitutes/extends several important service points. There are set of classes that are given instead of original implementations: DanubeActivator , DanubeContext , DanubeCookieSource , DanubeRequest , DanubeResponse and DanubeSession .
TapestryConnectionHandler 's init method should be called before the class can be used. This class has several important parameters:
applicationSpecificationResourceName
- name of main .application file. It defaults to "tapestry.application"initialParameters
- map of initial parameters.sessionManager
- session manager to be used. It must implement HTTPSessionManager
.
If not set then defaulted to SimpleSessionManager
.
Also there are a few parameters that are exposed as a expansion points but there is no reason for them to be set unless some internal behaviour is to be changed. Here there are:
classResolver
- Class resolver implementation of ClassResolver
type.webActivator
- web activator implementation of WebActivator
type.webContext
- web context implementation of WebContext
type.Pages and all other resources are accesses through class loader - so make sure that they are in the classpath.
Aside of org.abstracthorizon.danube.tapestry.TapestryConnectionHandler
there is org.abstracthorizon.danube.tapestry.spring.TapestryConnectionHandler
supplied as well. Difference is that Spring
version uses application context's resource for obtaining Tapestry's application
resources (applicationSpecificationName
).
Non-Spring version of
TapestryConnectionHandler
searches for applicationSpecificationResourceName
using WebContextResource
- in WEB-INF/
path. Spring version of
TapestryConnectionHandler
first checks for
applicationSpecificationResourceName
as application context's resource and if failed then as application context's resource at path
WEB-INF/
.
Here is an example of an configuration of Tapestry taken from supplied demo:
<!-- * This bean defines beans application context. * It references to two components: File component that accepts only file named "style.css" and * MVC controller defined at the "/app" path. --> <bean name="web-application" class="org.abstracthorizon.danube.http.HTTPContext"> <property name="components"> <list> <bean class="org.abstracthorizon.danube.http.matcher.Pattern"> <property name="pattern"><value>/style\.css</value></property> <property name="connectionHandler"><ref bean="files"/></property> </bean> <bean class="org.abstracthorizon.danube.http.matcher.Prefix"> <property name="prefix"><value>/app</value></property> <property name="connectionHandler"><ref bean="tapestry-application"/></property> </bean> </list> </property> </bean> <!-- * This bean defines serving files from directory "pages" as given file path. --> <bean name="files" class="org.abstracthorizon.danube.http.util.FileConnectionHandler"> <property name="filePath"><value>src/pages</value></property> </bean> <!-- * This is connection handler that handles Tapestry requests. --> <bean name="tapestry-application" class="org.abstracthorizon.danube.tapestry.TapestryConnectionHandler" init-method="init"> </bean>