public void contributeMarkupRenderer()

in tapestry-core/src/main/java/org/apache/tapestry5/modules/TapestryModule.java [1792:1903]


    public void contributeMarkupRenderer(OrderedConfiguration<MarkupRendererFilter> configuration,

                                         final ModuleManager moduleManager,

                                         @Symbol(SymbolConstants.OMIT_GENERATOR_META)
                                         final boolean omitGeneratorMeta,

                                         @Symbol(TapestryHttpSymbolConstants.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);
        }
    }