You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tinkerpop.apache.org by "Jim Hatcher (JIRA)" <ji...@apache.org> on 2018/09/27 17:00:00 UTC

[jira] [Created] (TINKERPOP-2050) Add a .toGremlinGroovyString() method to Traversal class

Jim Hatcher created TINKERPOP-2050:
--------------------------------------

             Summary: Add a .toGremlinGroovyString() method to Traversal class
                 Key: TINKERPOP-2050
                 URL: https://issues.apache.org/jira/browse/TINKERPOP-2050
             Project: TinkerPop
          Issue Type: Improvement
            Reporter: Jim Hatcher


I am working on a project where there is Java code being written to dynamically generate a Traversal based on a request coming in to an API. You can think of this as a "Traversal Builder."

The code looks something like this:


{code:java}
Traversal<Vertex, Vertex> traversal = g.V();
if (request.searchByAddress == true) {
 traversal.hasLabel("address");
 if (request.address.addressLine1 != null){
 traversal.has("address_line_1", request.address.addressLine1)
 }
}
etc.
{code}

When that code is being debugged, a traversal.toString() is run on the traversal to see the ouptut. This output is Gremlin bytecode.

It would be nice to have a way to easily see the Gremlin Groovy that was built so that you could take the Groovy, drop it into Studio, make sure it runs, run a profile() on it, and make sure it's efficient.

I figured out that you can do this by running this code:

{code:java}
private String toGremlinGroovyString(Traversal traversal){
 if (traversal == null){
 return null;
 }

Bytecode bc = traversal.asAdmin().getBytecode();
 return GroovyTranslator.of("g").translate(bc);
 }
{code}

I think it would be nice to add that as a method on the Traversal class so that it could be used by driver users more easily.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)