Marko A. Rodriguez created TINKERPOP-1240:
---------------------------------------------
Summary: Provide support g.script("V().map{closure}")
Key: TINKERPOP-1240
URL: https://issues.apache.org/jira/browse/TINKERPOP-1240
Project: TinkerPop
Issue Type: Improvement
Components: process
Affects Versions: 3.1.1-incubating
Reporter: Marko A. Rodriguez
We have lots in place for remoting traversals -- {{RemoteStep}} and
{{TraversalVertexProgramStep}}. I think the final piece to this puzzle is
sending closure-based traversals. I believe we should add:
{code}
g.V().out().script("map{it.bulk()}").sum()
{code}
I think this would direct compile to:
{code}
[GraphStep,VertexStep,ScriptStep,SumStep]
{code}
What happens is that this gets fully compiled remotely for both {{RemoteGraph}}
and {{GraphComputer}}. When a full compilation happens, it will look like:
{code}
[GraphStep,VertexStep,MapStep,SumStep]
{code}
There will exist {{ScriptStrategy}} that will do this:
* Can be defined by
{{g.withStrategy(ScriptStrategy.build().engine("gremlin-groovy").create())}}.
* Will find all {{ScriptSteps}}, evaluate their {{ScriptTraversal}} and then
insert their steps into the master {{Traversal}}.
Thats it.
This also allows people to go so far as:
{code}
g.script("V().out().map{..}.in().blah()"}
{code}
If they don't want to move between....
This would allow us to completely deprecate {{:>}} for both {{GremlinServer}}
and {{HadoopRemoteAcceptor}}... which I believe are the only places they are
used.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)