Fix generation of methods with equal signatures Now only one method with the same name and combination of parameter names is allowed. This solves the problem where different parameter combinations in Java lead to the same combination in C# as their types have no equivalent and thus object is used instead.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/3717bc0c Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/3717bc0c Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/3717bc0c Branch: refs/heads/TINKERPOP-1752 Commit: 3717bc0c713d69cc56c2c60ada6a5dbac1adc3e2 Parents: 8a16d4b Author: florianhockmann <[email protected]> Authored: Sun Sep 3 16:39:20 2017 +0200 Committer: florianhockmann <[email protected]> Committed: Tue Sep 12 16:39:38 2017 +0200 ---------------------------------------------------------------------- gremlin-dotnet/pom.xml | 20 ++++--- .../Process/Traversal/GraphTraversal.cs | 10 ---- .../Process/Traversal/GraphTraversalSource.cs | 63 -------------------- 3 files changed, 13 insertions(+), 80 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3717bc0c/gremlin-dotnet/pom.xml ---------------------------------------------------------------------- diff --git a/gremlin-dotnet/pom.xml b/gremlin-dotnet/pom.xml index 783a358..ebaaeb3 100644 --- a/gremlin-dotnet/pom.xml +++ b/gremlin-dotnet/pom.xml @@ -177,18 +177,20 @@ def toCSharpParamString = { param -> } def getJavaParamTypeString = { method -> - def parameters = method.parameters; - if (parameters.length == 0) - return "" - return parameters.collect { param -> - param.type.simpleName - }.join(",") + getJavaParameterTypeNames(method).join(",") +} + +def getCSharpParamTypeString = { method -> + return method.parameters. + collect { param -> + toCSharpType(param.type.simpleName) + }.join(",") } def getCSharpParamString = { method -> def parameters = method.parameters; if (parameters.length == 0) - return "" + return "" def csharpParameters = parameters. init(). collect { param -> @@ -260,6 +262,7 @@ def binding = ["pmethods": P.class.getMethods(). !it.name.equals(TraversalSource.Symbols.withComputer) }. sort { a, b -> a.name <=> b.name ?: getJavaParamTypeString(a) <=> getJavaParamTypeString(b) }. + unique { a,b -> a.name <=> b.name ?: getCSharpParamTypeString(a) <=> getCSharpParamTypeString(b) }. collect { javaMethod -> def parameters = getCSharpParamString(javaMethod) def paramNames = getParamNames(javaMethod.parameters).join(", ") @@ -268,6 +271,7 @@ def binding = ["pmethods": P.class.getMethods(). "sourceSpawnMethods": GraphTraversalSource.getMethods(). // SPAWN STEPS findAll { GraphTraversal.class.equals(it.returnType) && !it.name.equals('inject')}. sort { a, b -> a.name <=> b.name ?: getJavaParamTypeString(a) <=> getJavaParamTypeString(b) }. + unique { a,b -> a.name <=> b.name ?: getCSharpParamTypeString(a) <=> getCSharpParamTypeString(b) }. collect { javaMethod -> def typeArguments = javaMethod.genericReturnType.actualTypeArguments.collect{t -> ((java.lang.Class)t).simpleName} def parameters = getCSharpParamString(javaMethod) @@ -278,6 +282,7 @@ def binding = ["pmethods": P.class.getMethods(). findAll { GraphTraversal.class.equals(it.returnType) }. findAll { !it.name.equals("clone") && !it.name.equals("iterate") }. sort { a, b -> a.name <=> b.name ?: getJavaParamTypeString(a) <=> getJavaParamTypeString(b) }. + unique { a,b -> a.name <=> b.name ?: getCSharpParamTypeString(a) <=> getCSharpParamTypeString(b) }. collect { javaMethod -> def typeNames = getJavaGenericTypeParameterTypeNames(javaMethod) def t1 = toCSharpType(typeNames[0]) @@ -292,6 +297,7 @@ def binding = ["pmethods": P.class.getMethods(). findAll { Modifier.isStatic(it.getModifiers()) }. findAll { !it.name.equals("__") && !it.name.equals("start") }. sort { a, b -> a.name <=> b.name ?: getJavaParamTypeString(a) <=> getJavaParamTypeString(b) }. + unique { a,b -> a.name <=> b.name ?: getCSharpParamTypeString(a) <=> getCSharpParamTypeString(b) }. collect { javaMethod -> def typeNames = getJavaGenericTypeParameterTypeNames(javaMethod) def t2 = toCSharpType(typeNames[1]) http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3717bc0c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs ---------------------------------------------------------------------- diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs index b702069..cd5a9b7 100644 --- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs +++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs @@ -275,16 +275,6 @@ namespace Gremlin.Net.Process.Traversal /// <summary> /// Adds the by step to this <see cref="GraphTraversal{SType, EType}" />. /// </summary> - public GraphTraversal< S , E > By (object function) - { - var args = new List<object> { function }; - Bytecode.AddStep("by", args); - return Wrap< S , E >(this); - } - - /// <summary> - /// Adds the by step to this <see cref="GraphTraversal{SType, EType}" />. - /// </summary> public GraphTraversal< S , E > By (object function, object comparator) { var args = new List<object> { function, comparator }; http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3717bc0c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs ---------------------------------------------------------------------- diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs index 27e0e73..6819298 100644 --- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs +++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs @@ -108,15 +108,6 @@ namespace Gremlin.Net.Process.Traversal return source; } - public GraphTraversalSource WithSack(object initialValue, object splitOperator) - { - var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies), - new Bytecode(Bytecode)); - var args = new List<object> { initialValue, splitOperator }; - source.Bytecode.AddSource("withSack", args); - return source; - } - public GraphTraversalSource WithSack(object initialValue, object splitOperator, object mergeOperator) { var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies), @@ -126,60 +117,6 @@ namespace Gremlin.Net.Process.Traversal return source; } - public GraphTraversalSource WithSack(object initialValue) - { - var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies), - new Bytecode(Bytecode)); - var args = new List<object> { initialValue }; - source.Bytecode.AddSource("withSack", args); - return source; - } - - public GraphTraversalSource WithSack(object initialValue, object mergeOperator) - { - var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies), - new Bytecode(Bytecode)); - var args = new List<object> { initialValue, mergeOperator }; - source.Bytecode.AddSource("withSack", args); - return source; - } - - public GraphTraversalSource WithSack(object initialValue, object splitOperator) - { - var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies), - new Bytecode(Bytecode)); - var args = new List<object> { initialValue, splitOperator }; - source.Bytecode.AddSource("withSack", args); - return source; - } - - public GraphTraversalSource WithSack(object initialValue, object splitOperator, object mergeOperator) - { - var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies), - new Bytecode(Bytecode)); - var args = new List<object> { initialValue, splitOperator, mergeOperator }; - source.Bytecode.AddSource("withSack", args); - return source; - } - - public GraphTraversalSource WithSideEffect(string key, object initialValue) - { - var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies), - new Bytecode(Bytecode)); - var args = new List<object> { key, initialValue }; - source.Bytecode.AddSource("withSideEffect", args); - return source; - } - - public GraphTraversalSource WithSideEffect(string key, object initialValue, object reducer) - { - var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies), - new Bytecode(Bytecode)); - var args = new List<object> { key, initialValue, reducer }; - source.Bytecode.AddSource("withSideEffect", args); - return source; - } - public GraphTraversalSource WithSideEffect(string key, object initialValue) { var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
