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

org.thymeleaf.cache.ICacheManager 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.2.RELEASE
Show newest version
/*
 * =============================================================================
 *
 *   Copyright (c) 2011-2018, 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.cache;

import java.util.List;

import org.thymeleaf.engine.TemplateModel;


/**
 * 

* Common interface for all cache manager implementations. *

*

* This class is in charge of providing the corresponding cache objects to * the template engine. Every call to each of the {@code getXCache()} * methods must always return the XCache object (i.e. only one cache object * should be ever created for each type of cache, and returned every time it * is requested). *

*

* These caches are predefined: *

*
    *
  • A template cache, used for storing parsed templates referenced * by their template name and other resolution info (see {@link TemplateCacheKey}).
  • *
  • An expression cache, used for storing expression evaluation artifacts * (for example, {@link org.thymeleaf.standard.expression.Expression} parsed trees, * OGNL/Spring EL parsed trees, etc). Given that this cache can usually store objects * of different classes (referenced by their String representation), prefixes are * normally applied to the String keys in order to being able to differentiate these * classes when retrieving cache entries.
  • *
*

* Only the caches listed above are needed by the template engine when the standard dialects * are being used, but users might want to define new dialects and use new types of caches, * which can be provided by the cache manager using the {@link #getSpecificCache(String)} * method. *

*

* Any of these methods could return null, in which case the engine will consider that * no cache must be applied for that specific function. *

*

* Note a class with this name existed since 2.0.0, but it was completely reimplemented * in Thymeleaf 3.0 *

* * @author Daniel Fernández * * @since 3.0.0 * */ public interface ICacheManager { /** *

* Returns the cache of parsed templates. Keys are the template names, * as specified at the {@link org.thymeleaf.TemplateEngine#process(String, org.thymeleaf.context.IContext)} * method. *

* * @return the cache of parsed templates. */ public ICache getTemplateCache(); /** *

* Returns the cache of expression evaluation artifacts. *

*

* This cache is meant to store artifacts of diverse nature needed along the * process of parsing and executing expressions in the several languages * available: Standard expressions, OGNL expressions, Spring EL expressions... *

*

* Parsing these expressions usually results in some kind of syntax tree object * that represents the expression, and this is what this cache usually stores. *

*

* Keys are the expressions themselves (their String representation), along with * a type that is normally used for identifying the nature of the object being * cached (for example {@code {"ognl","person.name"}}). *

* * @return the cache of expression artifacts */ public ICache getExpressionCache(); /** *

* Returns a specific (non-default) cache, by its name. *

*

* User-defined dialects might make use of additional caches (besides template, * and expression) defined at custom-made implementations of this interface, and * they should use this method to retrieve them by their name. *

*

* Note the default {@link StandardCacheManager} will return {@code null} for every * call to this method, as it should be custom implementations of this interface (or * extensions of {@link AbstractCacheManager} or extensions {@link StandardCacheManager}) * who implement these specific caches and offer their names through the * {@link #getAllSpecificCacheNames()} method. *

* * @param name the name of the needed cache * @param the type of the cache keys * @param the type of the cache values * @return the required cache */ public ICache getSpecificCache(final String name); /** *

* Returns a list with the names of all the specific caches * managed by this implementation. *

*

* Might return null if no specific caches are managed. *

*

* Note the default {@link StandardCacheManager} will return {@code null}, as it should * be custom implementations of this interface (or * extensions of {@link AbstractCacheManager} or extensions {@link StandardCacheManager}) * who implement these specific caches and offer their names through the * {@link #getAllSpecificCacheNames()} method. *

* * @return a list with all the names of the "specific caches" * @since 2.0.16 */ public List getAllSpecificCacheNames(); /** *

* Clears all the caches managed by this cache manager instance. *

*

* This method is mainly intended for use from external tools that * might need to clean all caches completely, without having to worry * about implementation details. *

* * @since 2.0.16 */ public void clearAllCaches(); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy