[
https://issues.apache.org/jira/browse/TINKERPOP-786?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15112876#comment-15112876
]
Marko A. Rodriguez commented on TINKERPOP-786:
----------------------------------------------
Jeremy Hanna was interested in how this will look. Its easy.
{code}
public SocailTraversal<S,E> extends DefaultTraversal<S,E> {
private final GraphTraversal<S,E> rawTraversal = new
DefaultGraphTraversal<S,E>();
public SocialTraversal<S,Vertex> know(final String personName) {
this.rawTraversal.out("knows").hasLabel("person").has("name",personName);
return this;
}
public SocialTraversal<S,Vertex> olderThan(final String personName) {
this.rawTraversal.filter(as("xx").V().has("name",personName").values("age").where(lt("xx")));
return this;
}
public SocialTraversal<S,Vertex> people() {
this.rawTraversal.V().hasLabel("person");
return this;
}
public SocialTraversal<S,String> name() {
this.rawTraversal.values("name");
return this;
}
public SocialTraversal<S,E> who() {
return this;
}
public SocialTraversal<S,E> thatAre() {
return this;
}
......
}
{code}
They will then need a {{TraversalSource}} implementation which we will have a
{{DefaultTraversalSource}} to make things easy. And finally, in action:
{code}
social = graph.traversal(SocialTraversal.class)
final String name =
social.people().who().know("stephen").thatAre().olderThan("daniel").name().next()
{code}
TADA!
> Patterns for DSL Development
> ----------------------------
>
> Key: TINKERPOP-786
> URL: https://issues.apache.org/jira/browse/TINKERPOP-786
> Project: TinkerPop
> Issue Type: Improvement
> Components: process
> Affects Versions: 3.0.2-incubating
> Reporter: stephen mallette
> Assignee: Marko A. Rodriguez
> Fix For: 3.2.0-incubating
>
>
> Develop and document the patterns for custom DSLs. The method previously
> described and under consideration at 3.0.0 seems a bit cumbersome to deal
> with.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)