@Test
/**
* Test that we can use same script name in repeated evals with --loader-per-compile=false
* We used to get "class redefinition error" as name was derived from script name.
*/
public void noLoaderPerCompilerWithSameNameTest() {
final ScriptEngineManager sm = new ScriptEngineManager();
for (final ScriptEngineFactory fac : sm.getEngineFactories()) {
if (fac instanceof NashornScriptEngineFactory) {
final NashornScriptEngineFactory nfac = (NashornScriptEngineFactory)fac;
final String[] options = new String[] { "--loader-per-compile=false" };
final ScriptEngine e = nfac.getScriptEngine(options);
e.put(ScriptEngine.FILENAME, "test.js");
try {
e.eval("2 + 3");
e.eval("4 + 4");
} catch (final ScriptException se) {
se.printStackTrace();
fail(se.getMessage());
}
return;
}
}
fail("Cannot find nashorn factory!");
}
java类javax.script.ScriptEngineFactory的实例源码
TrustedScriptEngineTest.java 文件源码
项目:jdk8u_nashorn
阅读 23
收藏 0
点赞 0
评论 0
ScriptBuilder.java 文件源码
项目:Camel
阅读 26
收藏 0
点赞 0
评论 0
protected static ScriptEngineFactory lookupScriptEngineFactory(String language) {
ScriptEngineManager manager = new ScriptEngineManager();
for (ScriptEngineFactory factory : manager.getEngineFactories()) {
// some script names has alias
String[] names = getScriptNames(language);
for (String name : names) {
if (factory.getLanguageName().equals(name)) {
return factory;
}
}
}
// fallback to get engine by name
ScriptEngine engine = createScriptEngine(language, true);
if (engine != null) {
return engine.getFactory();
}
return null;
}
LanguageBox.java 文件源码
项目:binnavi
阅读 18
收藏 0
点赞 0
评论 0
private void fillLanguageBox(final ScriptEngineManager manager) {
final List<ScriptEngineFactory> factories = manager.getEngineFactories();
final List<ScriptingLanguage> languages = new ArrayList<ScriptingLanguage>();
for (final ScriptEngineFactory factory : factories) {
// Disable Rhino scripting engine for JavaScript / ECMAScript.
if (factory.getLanguageName().equals("python")) {
languages
.add(new ScriptingLanguage(factory.getLanguageName(), factory.getLanguageVersion()));
}
}
Collections.sort(languages);
for (final ScriptingLanguage language : languages) {
addItem(language);
}
}
JythonExample.java 文件源码
项目:JythonExample
阅读 15
收藏 0
点赞 0
评论 0
/**
* Display all script engines.
*/
public static void listEngines() {
final ScriptEngineManager mgr = new ScriptEngineManager();
final List<ScriptEngineFactory> factories =
mgr.getEngineFactories();
for (final ScriptEngineFactory factory: factories) {
System.out.println("ScriptEngineFactory Info");
final String engName = factory.getEngineName();
final String engVersion = factory.getEngineVersion();
final String langName = factory.getLanguageName();
final String langVersion = factory.getLanguageVersion();
System.out.printf("\tScript Engine: %s (%s)\n", engName, engVersion);
final List<String> engNames = factory.getNames();
for (final String name: engNames) {
System.out.printf("\tEngine Alias: %s\n", name);
}
System.out.printf("\tLanguage: %s (%s)\n", langName, langVersion);
}
}
JSR223Demo.java 文件源码
项目:jjsb4a
阅读 18
收藏 0
点赞 0
评论 0
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ScriptEngineManager m = new ScriptEngineManager();
ScriptEngine engine = m.getEngineByMimeType("application/javascript");
if (engine != null) {
// workaround until we find a way to get a headless WebView object
WebView wv = new WebView(getBaseContext());
((JJSBridge4AndroidEngine) engine).setView(wv);
Log.d(TAG, ScriptEngine.NAME + " " + engine.get(ScriptEngine.NAME));
Log.d(TAG, ScriptEngine.ENGINE + " " + engine.get(ScriptEngine.ENGINE));
ScriptEngineFactory f = engine.getFactory();
String program = f.getOutputStatement("\"Hello world\"");
try {
engine.eval(program);
} catch (ScriptException ex) {
Log.e(TAG, "eval()", ex);
}
}
}
Jsr223LanguageAdapter.java 文件源码
项目:scripturian
阅读 23
收藏 0
点赞 0
评论 0
/**
* Constructor. Uses the JSR-223 script engine factory to gather the
* language adapter attributes. Sub-classes must be annotated with
* {@link ScriptEngines}.
*
* @throws LanguageAdapterException
*/
public Jsr223LanguageAdapter() throws LanguageAdapterException
{
ScriptEngines scriptEngineNames = getClass().getAnnotation( ScriptEngines.class );
if( scriptEngineNames == null )
throw new LanguageAdapterException( getClass(), getClass().getCanonicalName() + " does not have a ScriptEngines annotation" );
String scriptEngineName = scriptEngineNames.value()[0];
ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
scriptEngine = scriptEngineManager.getEngineByName( scriptEngineName );
if( scriptEngine == null )
throw new LanguageAdapterException( getClass(), getClass().getCanonicalName() + " could not load ScriptEngine " + scriptEngineName );
ScriptEngineFactory factory = scriptEngine.getFactory();
attributes.put( NAME, "JSR-223/" + factory.getEngineName() );
attributes.put( VERSION, factory.getEngineVersion() );
attributes.put( LANGUAGE_NAME, factory.getLanguageName() );
attributes.put( LANGUAGE_VERSION, factory.getLanguageVersion() );
attributes.put( EXTENSIONS, new ArrayList<String>( factory.getExtensions() ) );
attributes.put( DEFAULT_EXTENSION, factory.getExtensions().get( 0 ) );
attributes.put( TAGS, Arrays.asList( scriptEngineNames.value() ) );
attributes.put( DEFAULT_TAG, factory.getNames().get( 0 ) );
attributes.put( JSR223_SCRIPT_ENGINE_NAME, scriptEngineName );
}
Script.java 文件源码
项目:scheduling
阅读 30
收藏 0
点赞 0
评论 0
private Map<ScriptEngine, Integer> findScriptEngineCandidates(boolean findByName) {
Map<ScriptEngine, Integer> matchPositionPerScriptEngineCandidate = new HashMap<>();
int matchPosition;
List<String> lookupCriteria;
for (ScriptEngineFactory factory : new ScriptEngineManager().getEngineFactories()) {
matchPosition = 0;
if (findByName) {
lookupCriteria = factory.getNames();
} else {
lookupCriteria = factory.getExtensions();
}
for (String criteria : lookupCriteria) {
if (criteria.equalsIgnoreCase(scriptEngineLookupName)) {
matchPositionPerScriptEngineCandidate.put(factory.getScriptEngine(), matchPosition);
}
matchPosition++;
}
}
return matchPositionPerScriptEngineCandidate;
}
ScriptManager.java 文件源码
项目:openhab-hdl
阅读 27
收藏 0
点赞 0
评论 0
public ScriptManager(RuleTriggerManager triggerManager, ItemRegistry itemRegistry) {
this.triggerManager = triggerManager;
instance = this;
logger.info("Available engines:");
for (ScriptEngineFactory f : new ScriptEngineManager().getEngineFactories()) {
logger.info(f.getEngineName());
}
this.setItemRegistry(itemRegistry);
File folder = getFolder("scripts");
if (folder.exists() && folder.isDirectory()) {
loadScripts(folder);
scriptUpdateWatcher = new Thread(new ScriptUpdateWatcher(this, folder));
scriptUpdateWatcher.start();
} else {
logger.warn("Script directory: jsr_scripts missing, no scripts will be added!");
}
}
StatelessScriptUpdateProcessorFactory.java 文件源码
项目:search
阅读 17
收藏 0
点赞 0
评论 0
/**
* For error messages - returns null if there are any exceptions of any
* kind building the string (or of the list is empty for some unknown reason).
* @param ext - if true, list of extensions, otherwise a list of engine names
*/
private static String getSupportedEngines(ScriptEngineManager mgr,
boolean ext) {
String result = null;
try {
List<ScriptEngineFactory> factories = mgr.getEngineFactories();
if (null == factories) return result;
Set<String> engines = new LinkedHashSet<>(factories.size());
for (ScriptEngineFactory f : factories) {
if (ext) {
engines.addAll(f.getExtensions());
} else {
engines.addAll(f.getNames());
}
}
result = StringUtils.join(engines, ", ");
} catch (RuntimeException e) {
/* :NOOP: */
}
return result;
}
TrustedScriptEngineTest.java 文件源码
项目:infobip-open-jdk-8
阅读 38
收藏 0
点赞 0
评论 0
@Test
public void factoryClassLoaderTest() {
final ScriptEngineManager sm = new ScriptEngineManager();
for (final ScriptEngineFactory fac : sm.getEngineFactories()) {
if (fac instanceof NashornScriptEngineFactory) {
final NashornScriptEngineFactory nfac = (NashornScriptEngineFactory)fac;
final MyClassLoader loader = new MyClassLoader();
// set the classloader as app class loader
final ScriptEngine e = nfac.getScriptEngine(loader);
try {
e.eval("Packages.foo");
// check that the class loader was attempted
assertTrue(loader.reached(), "did not reach class loader!");
} catch (final ScriptException se) {
se.printStackTrace();
fail(se.getMessage());
}
return;
}
}
fail("Cannot find nashorn factory!");
}