All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.thymeleaf.context.AbstractTemplateProcessingContext Maven / Gradle / Ivy

Go to download

Modern server-side Java template engine for both web and standalone environments

There is a newer version: 3.1.3.RELEASE
Show newest version
/*
 * =============================================================================
 * 
 *   Copyright (c) 2011-2014, The THYMELEAF team (http://www.thymeleaf.org)
 * 
 *   Licensed under the Apache License, Version 2.0 (the "License");
 *   you may not use this file except in compliance with the License.
 *   You may obtain a copy of the License at
 * 
 *       http://www.apache.org/licenses/LICENSE-2.0
 * 
 *   Unless required by applicable law or agreed to in writing, software
 *   distributed under the License is distributed on an "AS IS" BASIS,
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *   See the License for the specific language governing permissions and
 *   limitations under the License.
 * 
 * =============================================================================
 */
package org.thymeleaf.context;

import java.util.Locale;
import java.util.Map;

import org.thymeleaf.IEngineConfiguration;
import org.thymeleaf.engine.StandardModelFactory;
import org.thymeleaf.engine.TemplateManager;
import org.thymeleaf.model.IModelFactory;
import org.thymeleaf.templatemode.TemplateMode;
import org.thymeleaf.templateresolver.TemplateResolution;
import org.thymeleaf.util.Validate;

/**
 *
 * 

* Note these implementations do not have to be thread-safe, and in fact should not be shared by different threads * or template executions. They are meant to be local to a specific template engine execution. *

* * @author Daniel Fernández * @since 3.0.0 * */ public abstract class AbstractTemplateProcessingContext extends AbstractProcessingContext implements ITemplateProcessingContext { private final TemplateManager templateManager; private final TemplateResolution templateResolution; private final TemplateMode templateMode; private final IModelFactory modelFactory; private IdentifierSequences identifierSequences; protected AbstractTemplateProcessingContext( final IEngineConfiguration configuration, final TemplateManager templateManager, final TemplateResolution templateResolution, final IContext context) { super(configuration, context); // parent CAN be null, if this is a first-level template Validate.notNull(templateManager, "Template Manager cannot be null"); Validate.notNull(templateResolution, "Template Resolution cannot be null"); this.templateManager = templateManager; this.templateResolution = templateResolution; this.templateMode = this.templateResolution.getTemplateMode(); this.modelFactory = new StandardModelFactory( getConfiguration(), this.templateMode, this.templateResolution.getTemplateName(), this.templateManager); // Most templates will not need this, so we will initialize it lazily this.identifierSequences = null; } protected AbstractTemplateProcessingContext( final IEngineConfiguration configuration, final TemplateManager templateManager, final TemplateResolution templateResolution, final Locale locale, final Map variables) { super(configuration, locale, variables); // parent CAN be null, if this is a first-level template Validate.notNull(templateManager, "Template Manager cannot be null"); Validate.notNull(templateResolution, "Template Resolution cannot be null"); this.templateManager = templateManager; this.templateResolution = templateResolution; this.templateMode = this.templateResolution.getTemplateMode(); this.modelFactory = new StandardModelFactory( getConfiguration(), this.templateMode, this.templateResolution.getTemplateName(), this.templateManager); this.identifierSequences = new IdentifierSequences(); } public final TemplateManager getTemplateManager() { return this.templateManager; } public final TemplateResolution getTemplateResolution() { return this.templateResolution; } public final TemplateMode getTemplateMode() { return this.templateMode; } public final IModelFactory getModelFactory() { return this.modelFactory; } public IdentifierSequences getIdentifierSequences() { // No problem in lazily initializing this here, as IProcessingContext objects should not be used by // multiple threads. if (this.identifierSequences == null) { this.identifierSequences = new IdentifierSequences(); } return this.identifierSequences; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy