org.apache.tapestry5.services
Class TapestryModule

java.lang.Object
  extended by org.apache.tapestry5.services.TapestryModule

@Marker(value=Core.class)
@SubModule(value=InternalModule.class)
public final class TapestryModule
extends Object

The root module for Tapestry.


Constructor Summary
TapestryModule(PipelineBuilder pipelineBuilder, PropertyShadowBuilder shadowBuilder, RequestGlobals requestGlobals, ApplicationGlobals applicationGlobals, ChainBuilder chainBuilder, Environment environment, StrategyBuilder strategyBuilder, ComponentInstantiatorSource componentInstantiatorSource, PropertyAccess propertyAccess, Request request, Response response, ThreadLocale threadLocale, EnvironmentalShadowBuilder environmentalBuilder)
          We inject all sorts of common dependencies (including builders) into the module itself (note: even though some of these service are defined by the module itself, that's ok because services are always lazy proxies).
 
Method Summary
static void bind(ServiceBinder binder)
           
 ComponentEventRequestHandler buildAjaxComponentEventRequestHandler(List<ComponentEventRequestFilter> configuration, org.slf4j.Logger logger, AjaxComponentEventRequestHandler terminator)
          Builds the action request handler for Ajax requests, based on a pipeline around AjaxComponentEventRequestHandler.
 ComponentEventResultProcessor buildAjaxComponentEventResultProcessor(Map<Class,ComponentEventResultProcessor> configuration)
          The component event result processor used for Ajax-oriented component requests.
static Alias buildAlias(org.slf4j.Logger logger, String mode, AliasManager overridesManager, Collection<AliasContribution> configuration)
           
 ApplicationInitializer buildApplicationInitializer(org.slf4j.Logger logger, List<ApplicationInitializerFilter> configuration)
          Initializes the application, using a pipeline of ApplicationInitializers.
 AssetFactory buildClasspathAssetFactory(ResourceCache resourceCache, ClasspathAssetAliasManager aliasManager)
           
 PersistentFieldStrategy buildClientPersistentFieldStrategy(LinkFactory linkFactory, ClientPersistentFieldStrategy service)
           
 ClassFactory buildComponentClassFactory()
          Returns a ClassFactory that can be used to create extra classes around component classes.
 ComponentClassResolver buildComponentClassResolver(ComponentClassResolverImpl service)
           
 ComponentClassTransformWorker buildComponentClassTransformWorker(List<ComponentClassTransformWorker> configuration)
          Allows the exact steps in the component class transformation process to be defined.
 ComponentEventRequestHandler buildComponentEventRequestHandler(List<ComponentEventRequestFilter> configuration, org.slf4j.Logger logger, ComponentEventRequestHandlerImpl terminator)
          Builds the component action request handler for traditional (non-Ajax) requests.
 ComponentEventResultProcessor buildComponentEventResultProcessor(Map<Class,ComponentEventResultProcessor> configuration)
          The component event result processor used for normal component requests.
 Context buildContext(ApplicationGlobals globals)
           
 AssetFactory buildContextAssetFactory(ApplicationGlobals globals, RequestPathOptimizer optimizer)
           
 DataTypeAnalyzer buildDataTypeAnalyzer(List<DataTypeAnalyzer> configuration)
          Analyzes properties to determine the data types, used to contributeBeanBlockSource(org.apache.tapestry5.ioc.Configuration) locale display and edit blocks} for properties.
 DataTypeAnalyzer buildDefaultDataTypeAnalyzer(DefaultDataTypeAnalyzer service)
          The default data type analyzer is the final analyzer consulted and identifies the type entirely pased on the property type, working against its own configuration (mapping property type class to data type).
 FormSupport buildFormSupport()
          Builds a proxy to the current FormSupport inside this thread's Environment.
 HttpServletRequest buildHttpServletRequest()
          Builds a shadow of the RequestGlobals.HTTPServletRequest property.
 HttpServletRequestHandler buildHttpServletRequestHandler(org.slf4j.Logger logger, List<HttpServletRequestFilter> configuration, RequestHandler handler, String applicationCharset)
           
 InjectionProvider buildInjectionProvider(List<InjectionProvider> configuration)
          A chain of command for providing values for Inject-ed fields in component classes.
 MarkupRenderer buildMarkupRenderer(PageRenderQueue pageRenderQueue, org.slf4j.Logger logger, List<MarkupRendererFilter> configuration)
          The MarkupRenderer service is used to render a full page as markup.
 Dispatcher buildMasterDispatcher(List<Dispatcher> configuration)
          Ordered contributions to the MasterDispatcher service allow different URL matching strategies to occur.
 MetaDataLocator buildMetaDataLocator(MetaDataLocatorImpl service)
           
 ObjectRenderer buildObjectRenderer(Map<Class,ObjectRenderer> configuration)
           
 PageRenderRequestHandler buildPageRenderRequestHandler(List<PageRenderRequestFilter> configuration, org.slf4j.Logger logger, PageRenderRequestHandlerImpl terminator)
           
 PartialMarkupRenderer buildPartialMarkupRenderer(org.slf4j.Logger logger, List<PartialMarkupRendererFilter> configuration, PageRenderQueue renderQueue)
          A wrapper around PageRenderQueue used for partial page renders.
 BindingFactory buildPropBindingFactory(List<BindingFactory> configuration, PropertyConduitSource propertyConduitSource)
          Builds the PropBindingFactory as a chain of command.
 PropertyConduitSource buildPropertyConduitSource(ClassFactory componentClassFactory)
           
 RenderSupport buildRenderSupport()
          Builds a proxy to the current RenderSupport inside this thread's Environment.
 Request buildRequest()
          Builds a shadow of the RequestGlobals.request property.
 RequestHandler buildRequestHandler(org.slf4j.Logger logger, List<RequestFilter> configuration, Dispatcher masterDispatcher)
           
 Response buildResponse()
          Builds a shadow of the RequestGlobals.response property.
 ServletApplicationInitializer buildServletApplicationInitializer(org.slf4j.Logger logger, List<ServletApplicationInitializerFilter> configuration, ApplicationInitializer initializer)
           
 TranslatorSource buildTranslatorSource(TranslatorSourceImpl service, ServiceResources resources)
           
 ValidationMessagesSource buildValidationMessagesSource(List<String> configuration, UpdateListenerHub updateListenerHub, AssetFactory classpathAssetFactory)
          Builds the source of Messages containing validation messages.
 ValueEncoderSource buildValueEncoderSource(Map<Class,ValueEncoderFactory> configuration)
           
static void contributeAjaxComponentEventResultProcessor(MappedConfiguration<Class,ComponentEventResultProcessor> configuration)
          Contributes handlers for the following types: Object Failure case, added to provide more useful exception message RenderCommand Typically, a Block Component Renders the component and its body (unless its a page, in which case a redirect JSON response is sent) JSONObject or JSONArray The JSONObject is returned as a text/javascript response StreamResponse The stream response is sent as the actual response String Interprets the value as a logical page name and sends a client response to redirect to that page Link Sends a JSON response to redirect to the link Class Treats the class as a page class and sends a redirect for a page render for that page
 void contributeApplicationInitializer(OrderedConfiguration<ApplicationInitializerFilter> configuration, TypeCoercer typeCoercer, ComponentClassResolver componentClassResolver)
          Adds a listener to the ComponentInstantiatorSource that clears the PropertyAccess and TypeCoercer caches on a class loader invalidation.
 void contributeApplicationStatePersistenceStrategySource(MappedConfiguration<String,ApplicationStatePersistenceStrategy> configuration, ApplicationStatePersistenceStrategy sessionStategy)
          Contributes the default "session" strategy.
 void contributeAssetSource(MappedConfiguration<String,AssetFactory> configuration, AssetFactory contextAssetFactory, AssetFactory classpathAssetFactory)
           
static void contributeBeanBlockSource(Configuration<BeanBlockContribution> configuration)
           
static void contributeBindingSource(MappedConfiguration<String,BindingFactory> configuration, BindingFactory propBindingFactory, BindingFactory messageBindingFactory, BindingFactory validateBindingFactory, BindingFactory translateBindingFactory, BindingFactory assetBindingFactory, BindingFactory nullFieldStrategyBindingFactory)
          Contributes the factory for serveral built-in binding prefixes ("asset", "block", "component", "literal", prop", "nullfieldstrategy", "message", "validate", "translate", "var").
static void contributeClasspathAssetAliasManager(MappedConfiguration<String,String> configuration, String version, String scriptaculousPath, String datepickerPath)
           
static void contributeComponentClassResolver(Configuration<LibraryMapping> configuration)
           
static void contributeComponentClassTransformWorker(OrderedConfiguration<ComponentClassTransformWorker> configuration, ObjectLocator locator, InjectionProvider injectionProvider, ComponentClassResolver resolver)
          Adds a number of standard component class transform workers: Retain Allows fields to retain their values between requests Persist Allows fields to store their their value persistently between requests Parameter Identifies parameters based on the Parameter annotation Component Defines embedded components based on the Component annotation Mixin Adds a mixin as part of a component's implementation Environment Allows fields to contain values extracted from the Environment service Inject Used with the Inject annotation, when a value is supplied InjectPage Adds code to allow access to other pages via the InjectPage field annotation InjectBlock Allows a block from the template to be injected into a field IncludeStylesheet Supports the IncludeStylesheet annotation IncludeJavaScriptLibrary Supports the IncludeJavaScriptLibrary annotation SupportsInformalParameters Checks for the annotation Meta Checks for meta data and adds it to the component model ApplicationState Converts fields that reference application state objects UnclaimedField Identifies unclaimed fields and resets them to null/0/false at the end of the request RenderCommand Ensures all components also implement RenderCommand SetupRender, BeginRender, etc.
 void contributeComponentEventRequestHandler(OrderedConfiguration<ComponentEventRequestFilter> configuration, RequestSecurityManager requestSecurityManager, ComponentEventRequestHandler ajaxHandler)
          Contributes filters: Ajax Determines if the request is Ajax oriented, and redirects to an alternative handler if so ImmediateRender When immediate action response rendering is enabled, generates the markup response (instead of a page redirect response, which is the normal behavior) Secure Sends a redirect if an non-secure request accesses a secure page
 void contributeComponentEventResultProcessor(ComponentEventResultProcessor componentInstanceProcessor, MappedConfiguration<Class,ComponentEventResultProcessor> configuration)
          Contributes handlers for the following types: Object Failure case, added to provide a more useful exception message Link Sends a redirect to the link (which is typically a page render link) String Sends a page render redirect Class Interpreted as the class name of a page, sends a page render render redirect (this is more refactoring safe than the page name) Component A page's root component (though a non-root component will work, but will generate a warning).
static void contributeDataTypeAnalyzer(OrderedConfiguration<DataTypeAnalyzer> configuration, DataTypeAnalyzer defaultDataTypeAnalyzer)
           Annotation Checks for DataType annotation Default (ordered last) DefaultDataTypeAnalyzer service (contributeDefaultDataTypeAnalyzer(org.apache.tapestry5.ioc.MappedConfiguration) })
static void contributeDefaultDataTypeAnalyzer(MappedConfiguration<Class,String> configuration)
          Maps property types to data type names: String --> text Number --> number Enum --> enum Boolean --> boolean Date --> date
static void contributeFactoryDefaults(MappedConfiguration<String,String> configuration)
          Contributes factory defaults that map be overridden.
static void contributeFieldValidatorSource(MappedConfiguration<String,Validator> configuration)
          Contributes the basic set of validators: required minlength maxlength min max regexp
static void contributeHiddenFieldLocationRules(MappedConfiguration<String,RelativeElementPosition> configuration)
          Determines positioning of hidden fields relative to other elements (this is needed by FormFragment and others.
static void contributeHttpServletRequestHandler(OrderedConfiguration<HttpServletRequestFilter> configuration, HttpServletRequestFilter ignoredPathsFilter)
           
static void contributeInjectionProvider(OrderedConfiguration<InjectionProvider> configuration, MasterObjectProvider masterObjectProvider, ObjectLocator locator, SymbolSource symbolSource, AssetSource assetSource)
          Contributes the base set of injection providers: Default based on MasterObjectProvider Block injects fields of type Block ComponentResources give component access to its resources CommonResources access to properties of resources (log, messages, etc.) Asset injection of assets (triggered via Path annotation), with the path relative to the component class Service ordered last, for use when Inject is present and nothing else works, matches field type against Tapestry IoC services
 void contributeMarkupRenderer(OrderedConfiguration<MarkupRendererFilter> configuration, boolean productionMode, boolean scriptsAtTop, Asset stylesheetAsset, Asset spacerImage, ValidationMessagesSource validationMessagesSource, SymbolSource symbolSource, AssetSource assetSource)
          Adds page render filters, each of which provides an Environmental service.
static void contributeMasterDispatcher(OrderedConfiguration<Dispatcher> configuration)
          The MasterDispatcher is a chain-of-command of individual Dispatchers, each handling (like a servlet) a particular kind of incoming request.
static void contributeMasterObjectProvider(OrderedConfiguration<ObjectProvider> configuration, Alias alias, ObjectProvider assetObjectProvider)
          Contributes two object providers: Alias Searches by type among contributions to the Alias service Asset Checks for the Path annotation, and injects an Asset Service Injects based on the Service annotation, if present
static void contributeNullFieldStrategySource(MappedConfiguration<String,NullFieldStrategy> configuration)
          Contributes strategies accessible via the NullFieldStrategySource service.
 void contributeObjectRenderer(MappedConfiguration<Class,ObjectRenderer> configuration, ObjectRenderer locationRenderer, TypeCoercer typeCoercer)
          Contributes a default object renderer for type Object, plus specialized renderers for Request, Location, ComponentResources, EventContext, List, and Object[].
 void contributePageRenderRequestHandler(OrderedConfiguration<PageRenderRequestFilter> configuration, RequestSecurityManager securityManager)
          Contributes a single filter, "Secure", which checks for non-secure requests that access secure pages.
 void contributePartialMarkupRenderer(OrderedConfiguration<PartialMarkupRendererFilter> configuration, Asset spacerImage, SymbolSource symbolSource, AssetSource assetSource, ValidationMessagesSource validationMessagesSource)
          Contributes PartialMarkupRendererFilters used when rendering a partial Ajax response.
 void contributePersistentFieldManager(MappedConfiguration<String,PersistentFieldStrategy> configuration, Request request, PersistentFieldStrategy clientStrategy)
          Contributes several strategies: session Values are stored in the Session flash Values are stored in the Session, until the next request (for the page) client Values are encoded into URLs (or hidden form fields)
 void contributePropBindingFactory(OrderedConfiguration<BindingFactory> configuration)
           
 void contributeRequestHandler(OrderedConfiguration<RequestFilter> configuration, Context context, long checkInterval, long updateTimeout, UpdateListenerHub updateListenerHub, LocalizationSetter localizationSetter, EndOfRequestListenerHub endOfRequestListenerHub)
          Continues a number of filters into the RequestHandler service: StaticFiles Checks to see if the request is for an actual file, if so, returns true to let the servlet container process the request CheckForUpdates Periodically fires events that checks to see if the file system sources for any cached data has changed (see CheckForUpdatesFilter).
static void contributeResourceDigestGenerator(Configuration<String> configuration)
          Configures the extensions that will require a digest to be downloaded via the asset dispatcher.
 void contributeResourceStreamer(MappedConfiguration<String,String> configuration)
          Adds content types for "css" and "js" file extensions.
static void contributeTemplateParser(MappedConfiguration<String,URL> config)
           
static void contributeTranslatorSource(Configuration<Translator> configuration)
          Contributes the basic set of named translators: string byte integer long float double short
static void contributeTypeCoercer(Configuration<CoercionTuple> configuration)
          Adds coercions: String to SelectModel String to InsertPosition Map to SelectModel Collection to GridDataSource null to GridDataSource String to GridPagerPosition List to SelectModel ComponentResourcesAware (typically, a component) to ComponentResources String to BlankOption ComponentResources to PropertyOverrides String to Renderable Renderable to Block String to DateFormat
static void contributeValidationConstraintGenerator(OrderedConfiguration<ValidationConstraintGenerator> configuration)
          Adds built-in constraint generators: PrimtiveField -- primitive fields are always required ValidateAnnotation -- adds constraints from a Validate annotation
 void contributeValidationMessagesSource(OrderedConfiguration<String> configuration)
          Contributes org/apache/tapestry5/internal/ValidationMessages as "Default", ordered first.
static void contributeValueEncoderSource(MappedConfiguration<Class,ValueEncoderFactory> configuration)
          Contributes ValueEncoderFactorys for types: Object String Enum
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TapestryModule

public TapestryModule(PipelineBuilder pipelineBuilder,
                      PropertyShadowBuilder shadowBuilder,
                      RequestGlobals requestGlobals,
                      ApplicationGlobals applicationGlobals,
                      ChainBuilder chainBuilder,
                      Environment environment,
                      StrategyBuilder strategyBuilder,
                      ComponentInstantiatorSource componentInstantiatorSource,
                      PropertyAccess propertyAccess,
                      Request request,
                      Response response,
                      ThreadLocale threadLocale,
                      EnvironmentalShadowBuilder environmentalBuilder)
We inject all sorts of common dependencies (including builders) into the module itself (note: even though some of these service are defined by the module itself, that's ok because services are always lazy proxies). This isn't about efficiency (it may be slightly more efficient, but not in any noticable way), it's about eliminating the need to keep injecting these dependencies into invividual service builder and contribution methods.

Method Detail

bind

public static void bind(ServiceBinder binder)

buildAlias

public static Alias buildAlias(org.slf4j.Logger logger,
                               @Inject@Symbol(value="tapestry.alias-mode")
                               String mode,
                               @InjectService(value="AliasOverrides")
                               AliasManager overridesManager,
                               Collection<AliasContribution> configuration)

contributeBindingSource

public static void contributeBindingSource(MappedConfiguration<String,BindingFactory> configuration,
                                           @InjectService(value="PropBindingFactory")
                                           BindingFactory propBindingFactory,
                                           @InjectService(value="MessageBindingFactory")
                                           BindingFactory messageBindingFactory,
                                           @InjectService(value="ValidateBindingFactory")
                                           BindingFactory validateBindingFactory,
                                           @InjectService(value="TranslateBindingFactory")
                                           BindingFactory translateBindingFactory,
                                           @InjectService(value="AssetBindingFactory")
                                           BindingFactory assetBindingFactory,
                                           @InjectService(value="NullFieldStrategyBindingFactory")
                                           BindingFactory nullFieldStrategyBindingFactory)
Contributes the factory for serveral built-in binding prefixes ("asset", "block", "component", "literal", prop", "nullfieldstrategy", "message", "validate", "translate", "var").


contributeClasspathAssetAliasManager

public static void contributeClasspathAssetAliasManager(MappedConfiguration<String,String> configuration,
                                                        @Symbol(value="tapestry.version")
                                                        String version,
                                                        @Symbol(value="tapestry.scriptaculous.path")
                                                        String scriptaculousPath,
                                                        @Symbol(value="tapestry.datepicker.path")
                                                        String datepickerPath)

contributeComponentClassResolver

public static void contributeComponentClassResolver(Configuration<LibraryMapping> configuration)

contributeComponentClassTransformWorker

public static void contributeComponentClassTransformWorker(OrderedConfiguration<ComponentClassTransformWorker> configuration,
                                                           ObjectLocator locator,
                                                           InjectionProvider injectionProvider,
                                                           ComponentClassResolver resolver)
Adds a number of standard component class transform workers:
Retain
Allows fields to retain their values between requests
Persist
Allows fields to store their their value persistently between requests
Parameter
Identifies parameters based on the Parameter annotation
Component
Defines embedded components based on the Component annotation
Mixin
Adds a mixin as part of a component's implementation
Environment
Allows fields to contain values extracted from the Environment service
Inject
Used with the Inject annotation, when a value is supplied
InjectPage
Adds code to allow access to other pages via the InjectPage field annotation
InjectBlock
Allows a block from the template to be injected into a field
IncludeStylesheet
Supports the IncludeStylesheet annotation
IncludeJavaScriptLibrary
Supports the IncludeJavaScriptLibrary annotation
SupportsInformalParameters
Checks for the annotation
Meta
Checks for meta data and adds it to the component model
ApplicationState
Converts fields that reference application state objects
UnclaimedField
Identifies unclaimed fields and resets them to null/0/false at the end of the request
RenderCommand
Ensures all components also implement RenderCommand
SetupRender, BeginRender, etc.
Correspond to component render phases and annotations
InvokePostRenderCleanupOnResources
Makes sure InternalComponentResources.postRenderCleanup() is invoked after a component finishes rendering
Secure
Checks for the Secure annotation
ContentType
Checks for ContentType annotation
GenerateAccessors
Generates accessor methods if Property annotation is present
Cached
Checks for the Cached annotation
Log
Checks for the Log annotation


contributeDataTypeAnalyzer

public static void contributeDataTypeAnalyzer(OrderedConfiguration<DataTypeAnalyzer> configuration,
                                              @InjectService(value="DefaultDataTypeAnalyzer")
                                              DataTypeAnalyzer defaultDataTypeAnalyzer)
Annotation
Checks for DataType annotation
Default (ordered last)
DefaultDataTypeAnalyzer service (contributeDefaultDataTypeAnalyzer(org.apache.tapestry5.ioc.MappedConfiguration) })


contributeDefaultDataTypeAnalyzer

public static void contributeDefaultDataTypeAnalyzer(MappedConfiguration<Class,String> configuration)
Maps property types to data type names:


contributeBeanBlockSource

public static void contributeBeanBlockSource(Configuration<BeanBlockContribution> configuration)

contributeFieldValidatorSource

public static void contributeFieldValidatorSource(MappedConfiguration<String,Validator> configuration)
Contributes the basic set of validators:


contributeInjectionProvider

public static void contributeInjectionProvider(OrderedConfiguration<InjectionProvider> configuration,
                                               MasterObjectProvider masterObjectProvider,
                                               ObjectLocator locator,