java类javax.script.ScriptEngineFactory的实例源码

TrustedScriptEngineTest.java 文件源码 项目:jdk8u_nashorn 阅读 23 收藏 0 点赞 0 评论 0
@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!");
}
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!");
}


问题


面经


文章

微信
公众号

扫码关注公众号