/** * @see #execute(org.apache.clerezza.rdf.core.NonLiteral, javax.script.Bindings) */ public Object execute(NonLiteral scriptResource) throws ScriptException, NoEngineException { return execute(scriptResource, null); }
private ScriptLanguageDescription extractLanguageAndVersion(String str) { int begin = str.indexOf(" ("); int end = str.lastIndexOf(')'); String scriptLanguage = str.substring(0, begin); String scriptLanguageVersion = str.substring(begin + 2, end); return new ScriptLanguageDescription(scriptLanguage, scriptLanguageVersion); }
/** * Unbinds a ScriptEngineFactory. * * @param factory * the script engine factory to unbind */ protected void unbindScriptEngineFactory(ScriptEngineFactory factory) { String language = factory.getLanguageName(); String languageVersion = factory.getLanguageVersion(); removeScriptEngineFactory( new ScriptLanguageDescription(language, languageVersion), factory); }
@Path("update-script") public Response updateScript(MultiPartBody form, @Context UriInfo uriInfo) { AccessController.checkPermission(new ScriptManagerAppPermission()); UriRef scriptUri = new UriRef(form.getTextParameterValues("scriptUri")[0]); extractLanguageAndVersion(scriptLanguageAndVersion); saveScript(scriptUri, scriptFileBytes, scriptName, sld.getLanguage(), sld.getVersion(), mediaType, producedType);
String language, String languageVersion) throws ScriptException, NoEngineException { ScriptEngine engine = getScriptEngine(language, languageVersion); if (engine == null) { logger.warn("Cannot execute script: " + "No engine available for language {}({})", language, languageVersion); throw new NoEngineException(new ScriptLanguageDescription(language, languageVersion)); bindings = engine.createBindings(); addBindings(bindings); return engine.eval(script, bindings);
/** * Binds a ScriptEngineFactory. * If script engine factories for the same language and/or language version * already exist, they are shadowed. * * @param factory * the script engine factory to bind */ protected void bindScriptEngineFactory(ScriptEngineFactory factory) { String language = factory.getLanguageName(); String languageVersion = factory.getLanguageVersion(); addScriptEngineFactory( new ScriptLanguageDescription(language, languageVersion), factory); }
private GraphNode getScriptLanguageList(NonLiteral resource){ MGraph resultGraph = new SimpleMGraph(); Iterator<ScriptLanguageDescription> it = scriptExecution.getInstalledScriptLanguages(); while(it.hasNext()){ BNode languageDescription = new BNode(); ScriptLanguageDescription sld = it.next(); resultGraph.add(new TripleImpl(resource, SCRIPTMANAGER.scriptLanguageDescription, languageDescription)); resultGraph.add(new TripleImpl(languageDescription, SCRIPT.scriptLanguage, LiteralFactory.getInstance(). createTypedLiteral(sld.getLanguage()))); resultGraph.add(new TripleImpl(languageDescription, SCRIPT.scriptLanguageVersion, LiteralFactory.getInstance(). createTypedLiteral(sld.getVersion()))); } return new GraphNode(resource, resultGraph); }
@Path("execute") public Object executeScript(@QueryParam("script") String script) { AccessController.checkPermission(new ScriptManagerAppPermission()); try { return scriptExecution.execute(new UriRef(script)); } catch (NoEngineException ex) { throw new WebApplicationException(ex);
private void registerExistingEngineFactories() { if (componentContext == null) { logger.warn("componentContext is null while trying to register" + "script engine factories in started bundles"); return; } Bundle[] bundles = componentContext.getBundleContext().getBundles(); for (Bundle bundle : bundles) { if (bundle.getState() == Bundle.ACTIVE) { List<String> engineFactoryNames = getEngineFactoryNames(bundle); registerEngineFactories(bundle, engineFactoryNames); } } }
protected void activate(final ComponentContext componentContext) { this.componentContext = componentContext; registerExistingEngineFactories(); componentContext.getBundleContext().addBundleListener(this); }
protected void deactivate(final ComponentContext componentContext) { deregisterEngineFactories(); componentContext.getBundleContext().removeBundleListener(this); this.componentContext = null; }
factory = new JRubyScriptEngineFactoryWrapper( (ScriptEngineFactory) factoryClass.newInstance()); String[] wrappedClazzes = {
@Context UriInfo uriInfo) { AccessController.checkPermission(new ScriptManagerAppPermission()); TrailingSlash.enforceNotPresent(uriInfo); extractLanguageAndVersion(scriptLanguageAndVersion); if(!saveExecutionUri(scriptExecutionUri, scriptUri)) { logger.warn("The execution URI {} is already used.", scriptExecutionUri); saveScript(scriptUri, scriptFileBytes, scriptName, sld.getLanguage(), sld.getVersion(), mediaType, producedType);
bindings.put("request", request); bindings.put("httpHeaders", httpHeaders); return scriptExecution.execute(scriptResource, bindings); } catch (ScriptException ex) { logger.warn("Exception while executing script {}",
private ScriptEngine getScriptEngine(String language, String languageVersion) { List<ScriptEngineFactory> factoryList = null; try { factoryList = languageToFactoryMap.get( new ScriptLanguageDescription(language, languageVersion)); } catch (IllegalArgumentException ex) { return null; } if (factoryList == null || factoryList.isEmpty()) { return null; } return factoryList.get(factoryList.size() - 1).getScriptEngine(); }
@Override public void bundleChanged(BundleEvent event) { Bundle bundle = event.getBundle(); switch (event.getType()) { case BundleEvent.STARTED: registerEngineFactories(bundle, getEngineFactoryNames(bundle)); break; case BundleEvent.STOPPED: long bundleId = bundle.getBundleId(); List<ServiceRegistration> serviceRegList = registeredFactories.get(bundleId); if (serviceRegList != null && !serviceRegList.isEmpty()) { for (ServiceRegistration serviceReg : serviceRegList) { serviceReg.unregister(); } registeredFactories.remove(bundleId); } break; } } }
contentHandler.getData((UriRef) scriptResource)); Object result = execute( scriptString, bindings, scriptLanguage, scriptLanguageVersion); if (result instanceof GraphNode) {