将 gremlin 查询从 gremlin 控制台转换为字节码



我正在尝试将从 gremlin 控制台收到的 gremlin 查询转换为字节码以提取StepInstructions.我正在使用下面的代码来做到这一点,但对我来说它看起来很笨拙和丑陋。有没有更好的方法将 gremlin 查询从 gremlin 控制台转换为字节码?

String query = (String) requestMessage.getArgs().get(Tokens.ARGS_GREMLIN);
final GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine();
CompiledScript compiledScript = engine.compile(query);
final Graph graph = EmptyGraph.instance();
final GraphTraversalSource g = graph.traversal();
final Bindings bindings = engine.createBindings();
bindings.put("g", g);
DefaultGraphTraversal graphTraversal = (DefaultGraphTraversal) compiledScript.eval(bindings);
Bytecode bytecode = graphTraversal.getBytecode();

如果您需要获取 Gremlin 字符串并将其转换为Bytecode我认为没有更好的方法可以做到这一点。必须通过GremlinGroovyScriptEngine传递字符串,才能将其计算为可以操作的实际Traversal对象。我能想到的唯一改进是更直接地调用eval()

// construct all of this once and re-use it for your application
final GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine();
final Graph graph = EmptyGraph.instance();
final GraphTraversalSource g = graph.traversal();
final Bindings bindings = engine.createBindings();
bindings.put("g", g);
//////////////
String query = (String) requestMessage.getArgs().get(Tokens.ARGS_GREMLIN);
DefaultGraphTraversal graphTraversal = (DefaultGraphTraversal) engine.eval(query, bindings);    
Bytecode bytecode = graphTraversal.getBytecode();

最新更新