/*
* Hibernate Validator, declare and validate application constraints
*
* License: Apache License, Version 2.0
* See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>.
*/
package org.hibernate.validator.spi.scripting;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import org.hibernate.validator.Incubating;
Basic cacheable factory responsible for the creation of ScriptEvaluator
s. This class is thread-safe. Caches ScriptEvaluator
when they are requested. Author: Gunnar Morling, Kevin Pollet <kevin.pollet@serli.com> (C) 2011 SERLI, Marko Bekhta Since: 6.0.3
/**
* Basic cacheable factory responsible for the creation of {@link ScriptEvaluator}s. This
* class is thread-safe. Caches {@code ScriptEvaluator} when they are requested.
*
* @author Gunnar Morling
* @author Kevin Pollet <kevin.pollet@serli.com> (C) 2011 SERLI
* @author Marko Bekhta
* @since 6.0.3
*/
@Incubating
public abstract class AbstractCachingScriptEvaluatorFactory implements ScriptEvaluatorFactory {
A cache of script evaluators (keyed by language name).
/**
* A cache of script evaluators (keyed by language name).
*/
private final ConcurrentMap<String, ScriptEvaluator> scriptEvaluatorCache = new ConcurrentHashMap<>();
Retrieves a script executor for the given language.
Params: - languageName – the name of a scripting language
Throws: - ScriptEvaluatorNotFoundException – in case no compatible evaluator for the given language has been found
Returns: a script executor for the given language. Never null.
/**
* Retrieves a script executor for the given language.
*
* @param languageName the name of a scripting language
* @return a script executor for the given language. Never null.
*
* @throws ScriptEvaluatorNotFoundException in case no compatible evaluator for the given language has been found
*/
@Override
public ScriptEvaluator getScriptEvaluatorByLanguageName(String languageName) {
return scriptEvaluatorCache.computeIfAbsent( languageName, this::createNewScriptEvaluator );
}
@Override
public void clear() {
scriptEvaluatorCache.clear();
}
Creates a new script evaluator for the given language.
Params: - languageName – the name of a scripting language
Throws: - ScriptEvaluatorNotFoundException – in case no compatible engine for the given language has been found
Returns: a newly created script evaluator for the given language
/**
* Creates a new script evaluator for the given language.
*
* @param languageName the name of a scripting language
* @return a newly created script evaluator for the given language
*
* @throws ScriptEvaluatorNotFoundException in case no compatible engine for the given language has been found
*/
protected abstract ScriptEvaluator createNewScriptEvaluator(String languageName) throws ScriptEvaluatorNotFoundException;
}