Class PageLoaderImpl

  • All Implemented Interfaces:
    ComponentAssemblerSource, PageLoader

    public class PageLoaderImpl
    extends Object
    implements PageLoader, ComponentAssemblerSource
    There's still a lot of room to beef up ComponentAssembler and EmbeddedComponentAssembler to perform more static analysis, but that may no longer be necessary, given the switch to shared (non-pooled) pages in 5.2. Loading a page involves a recursive process of creating ComponentAssemblers: for the root component, then down the tree for each embedded component. A ComponentAssembler is largely a collection of PageAssemblyActions. Once created, a ComponentAssembler can quickly assemble any number of component instances. All of the expensive logic, such as fitting template tokens together and matching parameters to bindings, is done as part of the one-time construction of the ComponentAssembler. The end result removes a huge amount of computational redundancy that was present in Tapestry 5.0, but to understand this, you need to split your mind into two phases: construction (of the ComponentAssemblers) and assembly. And truly, This is the Tapestry Heart, This is the Tapestry Soul...