/** * Gets a {@link GremlinScriptEngine} from cache or creates a new one from the {@link GremlinScriptEngineFactory}. * <p/> * {@inheritDoc} */ @Override public GremlinScriptEngine getEngineByMimeType(final String mimeType) { if (!mimeToName.containsKey(mimeType)) { final GremlinScriptEngine engine = super.getEngineByMimeType(mimeType); registerLookUpInfo(engine, engine.getFactory().getEngineName()); return engine; } return cache.get(mimeToName.get(mimeType)); }
private void registerLookUpInfo(final GremlinScriptEngine engine, final String shortName) { if (null == engine) throw new IllegalArgumentException(String.format("%s is not an available GremlinScriptEngine", shortName)); cache.putIfAbsent(shortName, engine); engine.getFactory().getExtensions().forEach(ext -> extensionToName.putIfAbsent(ext, shortName)); engine.getFactory().getMimeTypes().forEach(mime -> mimeToName.putIfAbsent(mime, shortName)); } }
List<String> names = null; try { names = spi.getNames(); } catch (Exception exp) { logger.error("Could not get GremlinScriptEngine names", exp);
private GremlinScriptEngine createGremlinScriptEngine(final GremlinScriptEngineFactory spi) { final GremlinScriptEngine engine = spi.getScriptEngine(); getCustomizers(spi.getEngineName()).stream() .filter(p -> p instanceof BindingsCustomizer) .map(p -> ((BindingsCustomizer) p)) getCustomizers(spi.getEngineName()).stream() .filter(p -> p instanceof BindingsCustomizer) .map(p -> ((BindingsCustomizer) p)) .forEach(bc -> engine.getBindings(ScriptContext.ENGINE_SCOPE).putAll(bc.getBindings())); final List<ScriptCustomizer> scriptCustomizers = getCustomizers(spi.getEngineName()).stream() .filter(p -> p instanceof ScriptCustomizer) .map(p -> ((ScriptCustomizer) p))
private void initEngines(final ClassLoader loader) { Iterator<GremlinScriptEngineFactory> itty; try { final ServiceLoader<GremlinScriptEngineFactory> sl = AccessController.doPrivileged( (PrivilegedAction<ServiceLoader<GremlinScriptEngineFactory>>) () -> getServiceLoader(loader)); itty = sl.iterator(); } catch (ServiceConfigurationError err) { logger.error("Can't find GremlinScriptEngineFactory providers: " + err.getMessage(), err); // do not throw any exception here. user may want to manager their own factories using this manager // by explicit registration (by registerXXX) methods. return; } try { while (itty.hasNext()) { try { final GremlinScriptEngineFactory factory = itty.next(); factory.setCustomizerManager(this); engineSpis.add(factory); } catch (ServiceConfigurationError err) { logger.error("GremlinScriptEngineManager providers.next(): " + err.getMessage(), err); } } } catch (ServiceConfigurationError err) { logger.error("GremlinScriptEngineManager providers.hasNext(): " + err.getMessage(), err); // do not throw any exception here. user may want to manage their own factories using this manager // by explicit registration (by registerXXX) methods. } }
List<String> exts = null; try { exts = spi.getExtensions(); } catch (Exception exp) { logger.error("Could not get GremlinScriptEngine extensions", exp);
List<String> types = null; try { types = spi.getMimeTypes(); } catch (Exception exp) { logger.error("Could not get GremlinScriptEngine mimetypes", exp);
private GremlinScriptEngine createGremlinScriptEngine(final GremlinScriptEngineFactory spi) { final GremlinScriptEngine engine = spi.getScriptEngine(); getCustomizers(spi.getEngineName()).stream() .filter(p -> p instanceof BindingsCustomizer) .map(p -> ((BindingsCustomizer) p)) getCustomizers(spi.getEngineName()).stream() .filter(p -> p instanceof BindingsCustomizer) .map(p -> ((BindingsCustomizer) p)) .forEach(bc -> engine.getBindings(ScriptContext.ENGINE_SCOPE).putAll(bc.getBindings())); final List<ScriptCustomizer> scriptCustomizers = getCustomizers(spi.getEngineName()).stream() .filter(p -> p instanceof ScriptCustomizer) .map(p -> ((ScriptCustomizer) p))
private void initEngines(final ClassLoader loader) { Iterator<GremlinScriptEngineFactory> itty; try { final ServiceLoader<GremlinScriptEngineFactory> sl = AccessController.doPrivileged( (PrivilegedAction<ServiceLoader<GremlinScriptEngineFactory>>) () -> getServiceLoader(loader)); itty = sl.iterator(); } catch (ServiceConfigurationError err) { logger.error("Can't find GremlinScriptEngineFactory providers: " + err.getMessage(), err); // do not throw any exception here. user may want to manager their own factories using this manager // by explicit registration (by registerXXX) methods. return; } try { while (itty.hasNext()) { try { final GremlinScriptEngineFactory factory = itty.next(); factory.setCustomizerManager(this); engineSpis.add(factory); } catch (ServiceConfigurationError err) { logger.error("GremlinScriptEngineManager providers.next(): " + err.getMessage(), err); } } } catch (ServiceConfigurationError err) { logger.error("GremlinScriptEngineManager providers.hasNext(): " + err.getMessage(), err); // do not throw any exception here. user may want to manage their own factories using this manager // by explicit registration (by registerXXX) methods. } }
List<String> exts = null; try { exts = spi.getExtensions(); } catch (Exception exp) { logger.error("Could not get GremlinScriptEngine extensions", exp);
List<String> types = null; try { types = spi.getMimeTypes(); } catch (Exception exp) { logger.error("Could not get GremlinScriptEngine mimetypes", exp);
/** * Gets a {@link GremlinScriptEngine} from cache or creates a new one from the {@link GremlinScriptEngineFactory}. * <p/> * {@inheritDoc} */ @Override public GremlinScriptEngine getEngineByExtension(final String extension) { if (!extensionToName.containsKey(extension)) { final GremlinScriptEngine engine = super.getEngineByExtension(extension); registerLookUpInfo(engine, engine.getFactory().getEngineName()); return engine; } return cache.get(extensionToName.get(extension)); }
private void registerLookUpInfo(final GremlinScriptEngine engine, final String shortName) { if (null == engine) throw new IllegalArgumentException(String.format("%s is not an available GremlinScriptEngine", shortName)); cache.putIfAbsent(shortName, engine); engine.getFactory().getExtensions().forEach(ext -> extensionToName.putIfAbsent(ext, shortName)); engine.getFactory().getMimeTypes().forEach(mime -> mimeToName.putIfAbsent(mime, shortName)); } }
List<String> names = null; try { names = spi.getNames(); } catch (Exception exp) { logger.error("Could not get GremlinScriptEngine names", exp);
@Test public void shouldGetEngineByName() throws Exception { final GremlinScriptEngine scriptEngine = manager.getEngineByName(ENGINE_TO_TEST); assertEquals(ENGINE_TO_TEST, scriptEngine.getFactory().getEngineName()); }
/** * Gets a {@link GremlinScriptEngine} from cache or creates a new one from the {@link GremlinScriptEngineFactory}. * <p/> * {@inheritDoc} */ @Override public GremlinScriptEngine getEngineByMimeType(final String mimeType) { if (!mimeToName.containsKey(mimeType)) { final GremlinScriptEngine engine = super.getEngineByMimeType(mimeType); registerLookUpInfo(engine, engine.getFactory().getEngineName()); return engine; } return cache.get(mimeToName.get(mimeType)); }
/** * Gets a {@link GremlinScriptEngine} from cache or creates a new one from the {@link GremlinScriptEngineFactory}. * <p/> * {@inheritDoc} */ @Override public GremlinScriptEngine getEngineByExtension(final String extension) { if (!extensionToName.containsKey(extension)) { final GremlinScriptEngine engine = super.getEngineByExtension(extension); registerLookUpInfo(engine, engine.getFactory().getEngineName()); return engine; } return cache.get(extensionToName.get(extension)); }
@Test public void shouldGetEngineByName() throws Exception { final GremlinScriptEngine scriptEngine = manager.getEngineByName(ENGINE_TO_TEST); assertEquals(ENGINE_TO_TEST, scriptEngine.getFactory().getEngineName()); }