[ 
https://issues.apache.org/jira/browse/TINKERPOP-1752?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16125960#comment-16125960
 ] 

Florian Hockmann commented on TINKERPOP-1752:
---------------------------------------------

I already put some time into this, but unfortunately I didn't have enough time 
yet to get it completely working as this involves of course some edge cases 
around types that we simply don't have in C# like {{Comparator}}. Most methods 
already look quite good. The problem with the {{Group}} step mentioned in 
TINKERPOP-1751 for example would already be resolved:
{code}
/// <summary>
///     Adds the group step to this <see cref="GraphTraversal{SType, EType}" />.
/// </summary>
public GraphTraversal< S , E > Group (string sideEffectKey)
{
    var args = new List<object> { sideEffectKey };
    Bytecode.AddStep("group", args);
    return Wrap< S , E >(this);
}

/// <summary>
///     Adds the group step to this <see cref="GraphTraversal{SType, EType}" />.
/// </summary>
public GraphTraversal< S , IDictionary<K, V> > Group<K, V> ()
{
    var args = new List<object> {  };
    Bytecode.AddStep("group", args);
    return Wrap< S , IDictionary<K, V> >(this);
}
{code}

I can publish my feature branch for this in case anyone wants to put some time 
into this.

> Gremlin.Net: Generate completely type-safe methods
> --------------------------------------------------
>
>                 Key: TINKERPOP-1752
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-1752
>             Project: TinkerPop
>          Issue Type: Improvement
>          Components: language-variant
>    Affects Versions: 3.2.5
>            Reporter: Florian Hockmann
>            Priority: Minor
>
> Currently the generated traversal methods in Gremlin.Net take {{params 
> object[] args}} as an argument which allows the user to provide an arbitrary 
> number of arguments with any type. While this makes the generation rather 
> simple, it doesn't tell the user which arguments are actually valid so users 
> can submit completely invalid traversals like:
> {code}
> g.V(1).AddE(1234, "invalidArgument2").Next()
> {code}
> Type-safe methods could also use the original argument names to tell users 
> something about what kind of values the methods expect. Consider for example 
> the following method signatures for the C# step {{AddE}} that are basically a 
> 1:1 representation of the original Java {{addE}} step:
> {code}
> public GraphTraversal< S , Edge > AddE (Direction direction, string 
> firstVertexKeyOrEdgeLabel, string edgeLabelOrSecondVertexKey, params object[] 
> propertyKeyValues);
> public GraphTraversal< S , Edge > AddE (string edgeLabel);
> {code}
> Implementing this should make TINKERPOP-1725 obsolete and also resolve 
> TINKERPOP-1751.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to