private synchronized ScriptEngineState getEngineByName(String name, boolean reset) throws SoarException { ScriptEngineState state = engines.get(name); if (state != null && reset) { state.dispose(); engines.remove(name); state = null; } if (state == null) { final ScriptEngine engine = getEngineManager().getEngineByName(name); if (engine == null) { throw new SoarException("Unsupported script engine '" + name + "'"); } final ScriptEngineFactory f = engine.getFactory(); logger.info( String.format( "Loaded '%s' script engine for %s: %s version %s, %s version %s", name, context, f.getEngineName(), f.getEngineVersion(), f.getLanguageName(), f.getLanguageVersion())); engines.put(name, state = new ScriptEngineState(context, name, engine)); } return state; }
private synchronized String disposeEngine(String name) throws SoarException { final ScriptEngineState state = engines.remove(name); if (state != null) { state.dispose(); return "Disposed '" + name + "'"; } else { return "No engine '" + name + "'"; } }