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),

Reply via email to