
org.jppf.scripting.ScriptRunnerFactory Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jppf-common Show documentation
Show all versions of jppf-common Show documentation
JPPF, the open source grid computing solution
/*
* JPPF.
* Copyright (C) 2005-2015 JPPF Team.
* http://www.jppf.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.jppf.scripting;
import java.util.*;
/**
* Factory used to instantiate script runners.
* @author Laurent Cohen
*/
public final class ScriptRunnerFactory {
/**
* Mapping of languages to associated pool of engines.
*/
private static final Map runnerMap = new HashMap<>();
/**
* Instantiation of this class is not allowed.
*/
private ScriptRunnerFactory() {
}
/**
* Get a new script runner instance based on the specified script language.
* @param language the name of the script language to use.
* @return A ScriptRunner
instance, or null if no known script engine
* exists for the specified language.
*/
public static ScriptRunner getScriptRunner(final String language) {
if (language == null) return null;
ScriptRunnerPool pool = null;
synchronized(runnerMap) {
pool = runnerMap.get(language);
if (pool == null) {
pool = new ScriptRunnerPool(language);
runnerMap.put(language, pool);
}
return pool == null ? null : pool.get();
}
}
/**
* Release the specified runner back into its pool when no longer used.
* @param runner the script runner to release.
*/
public static void releaseScriptRunner(final ScriptRunner runner) {
if (runner != null) {
ScriptRunnerPool pool = null;
synchronized(runnerMap) {
pool = runnerMap.get(runner.getLanguage());
}
if (pool != null) pool.put(runner);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy