AbstractGatheringModelProcessable( final IEngineConfiguration configuration, final ProcessorTemplateHandler processorTemplateHandler, final IEngineContext context, final TemplateModelController modelController, final TemplateFlowController flowController, final SkipBody buildTimeSkipBody, final boolean buildTimeSkipCloseTag, final ProcessorExecutionVars processorExecutionVars) { super(); this.processorTemplateHandler = processorTemplateHandler; this.context = context; this.modelController = modelController; this.flowController = flowController; this.buildTimeSkipBody = buildTimeSkipBody; this.buildTimeSkipCloseTag = buildTimeSkipCloseTag; if (this.context == null) { throw new TemplateProcessingException( "Neither iteration nor model gathering are supported because local variable support is DISABLED. " + "This is due to the use of an implementation of the " + ITemplateContext.class.getName() + " interface " + "that does not provide local-variable support. In order to have local-variable support, the context " + "implementation should also implement the " + IEngineContext.class.getName() + " interface"); } this.syntheticModel = new Model(configuration, context.getTemplateMode()); this.processorExecutionVars = processorExecutionVars.cloneVars(); this.gatheringFinished = false; this.modelLevel = 0; }
IteratedGatheringModelProcessable( final IEngineConfiguration configuration, ProcessorTemplateHandler processorTemplateHandler, final IEngineContext context, final TemplateModelController modelController, final TemplateFlowController flowController, final SkipBody gatheredSkipBody, final boolean gatheredSkipCloseTag, final ProcessorExecutionVars processorExecutionVars, final String iterVariableName, final String iterStatusVariableName, final Object iteratedObject, final Text precedingWhitespace) { super(configuration, processorTemplateHandler, context, modelController, flowController, gatheredSkipBody, gatheredSkipCloseTag, processorExecutionVars); this.context = context; this.templateMode = context.getTemplateMode(); this.iterator = computeIteratedObjectIterator(iteratedObject); this.iterVariableName = iterVariableName; if (StringUtils.isEmptyOrWhitespace(iterStatusVariableName)) { // If no name has been specified for the status variable, we will use the same as the iter var + "Stat" this.iterStatusVariableName = iterVariableName + DEFAULT_STATUS_VAR_SUFFIX; } else { this.iterStatusVariableName = iterStatusVariableName; } this.iterStatusVariable = new IterationStatusVar(); this.iterStatusVariable.index = 0; this.iterStatusVariable.size = computeIteratedObjectSize(iteratedObject); this.precedingWhitespace = precedingWhitespace; if (this.iterator != null && this.iterator instanceof DataDrivenTemplateIterator) { this.dataDrivenIterator = (DataDrivenTemplateIterator) iterator; } else { this.dataDrivenIterator = null; } this.iter = 0; this.iterOffset = 0; this.iterModel = null; }
final Set<IPreProcessor> preProcessors = configuration.getPreProcessors(context.getTemplateMode()); if (preProcessors != null && preProcessors.size() > 0) { for (final IPreProcessor preProcessor : preProcessors) { final Set<IPostProcessor> postProcessors = configuration.getPostProcessors(context.getTemplateMode()); if (postProcessors != null && postProcessors.size() > 0) { for (final IPostProcessor postProcessor : postProcessors) {
final ITemplateParser parser = getParserForTemplateMode(engineContext.getTemplateMode()); this.configuration, null, template, templateSelectors, templateData.getTemplateResource(), engineContext.getTemplateMode(), templateResolution.getUseDecoupledLogic(), builderHandler); this.configuration, null, template, templateSelectors, templateData.getTemplateResource(), engineContext.getTemplateMode(), templateResolution.getUseDecoupledLogic(), processingHandlerChain);
final ITemplateParser parser = getParserForTemplateMode(engineContext.getTemplateMode()); this.configuration, null, template, templateSelectors, templateData.getTemplateResource(), engineContext.getTemplateMode(), templateResolution.getUseDecoupledLogic(), builderHandler); final TemplateModel templateModel = builderHandler.getModel();