public void testRemoveNamespace() { SailGraph graph = new MemoryStoreSailGraph(); GremlinScriptContext context = new GremlinScriptContext(); context .getBindings(ScriptContext.ENGINE_SCOPE) .put(Tokens.GRAPH_VARIABLE, new Atom<Graph>(graph)); Function<Object> function = new RemoveNamespaceFunction(); assertNotNull(graph.getNamespaces().get("rdf")); this.stopWatch(); Atom<Object> atom = function.compute(createUnaryArgs(graph, "rdf"), context); printPerformance( function.getFunctionName() + " function", 1, "namespace removed", this.stopWatch()); assertNull(atom.getValue()); assertNull(graph.getNamespaces().get("rdf")); assertNotNull(graph.getNamespaces().get("rdfs")); this.stopWatch(); atom = function.compute(createUnaryArgs("rdfs"), context); printPerformance( function.getFunctionName() + " function", 1, "namespace removed", this.stopWatch()); assertTrue(atom.isNull()); assertNull(graph.getNamespaces().get("rdfs")); graph.shutdown(); }
public Object invokeFunction(String name, Object... args) throws NoSuchMethodException, ScriptException { GremlinScriptContext ctx = (GremlinScriptContext) this.getContext(); int colonIndex = name.indexOf(":"); Function function; try { function = ctx.getFunctionLibrary() .getFunction(name.substring(0, colonIndex), name.substring(colonIndex + 1)); } catch (RuntimeException e) { throw new NoSuchMethodException(); } List<Operation> arguments = new ArrayList<Operation>(); for (Object arg : args) { arguments.add(new UnaryOperation(new Atom(arg))); } try { Atom ret = function.compute(arguments, ctx); if (ret.isNull()) return null; else return ret.getValue(); } catch (Exception e) { throw new ScriptException(e.getMessage()); } }