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

org.thymeleaf.cache.ICacheManager Maven / Gradle / Ivy

The newest version!
/*
 * =============================================================================
 *
 *   Copyright (c) 2011-2013, 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 java.util.Properties;

import org.thymeleaf.Template;
import org.thymeleaf.dom.Node;


/**
 * 

* 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 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). *

*

* Four caches are predefined: *

*
    *
  • A template cache, used for storing parsed templates referenced * by their template name.
  • *
  • A fragment cache, used for storing the parsed DOM tree correspondence * of fragments: pieces of template code that need to be parsed before being * added to the template tree, like for example messages coming from * .properties files with HTML tags that are included in results using * th:utext processors.
  • *
  • A message cache, used for storing messages (usually from internationalization * files) referenced by template name and locale (like "home_gl_ES").
  • *
  • 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 * differente classes when retrieving cache entries.
  • *
*

* Only these four caches 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. *

* * @author Daniel Fernández * * @since 2.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 template code fragments. These fragments are pieces of * template code that need to be parsed before adding them to the template DOM * being processed. *

*

* Typical examples of these fragments are externalized/internationalized messages like: *

* * home.header=Welcome to the <i>fruit market</i>! * *

* ...which are used in templates like th:utext="#{home.header}", and therefore * need parsing in order to be converted to a DOM subtree (because that "<i>" should * be a DOM element by itself). *

*

* Keys in this cache are the String representation of fragments themselves along with * the template mode used for such parsing (like * "{HTML5}Welcome to the <i>fruit market</i>"), and values * are the list of DOM {@link Node}s that correspond to parsing each fragment. *

*

* Important: this fragments are not related to th:fragment processors. *

* * @return the cache of parsed template code fragments */ public ICache> getFragmentCache(); /** *

* Returns the cache used for externalized/internationalized messages. *

*

* This cache uses as keys the template names (as specified at * {@link org.thymeleaf.TemplateEngine#process(String, org.thymeleaf.context.IContext)}) * along with the locale the messages refer to (like "main_gl_ES"), and * as values the Properties object containing the messages. *

* * @return the message cache */ public ICache getMessageCache(); /** *

* 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 prefix that is normally used for identifying the nature of the object being * cached (for example "{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, * fragment, message and expression) defined at custom-made * implementations of this interface, and they should use this method * to retrieve them by their name. *

* * @param name the name of the needed cache * @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. *

* * @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