Repository: tinkerpop
Updated Branches:
  refs/heads/master bd9dd29bb -> a62a0111f


Add GraphTraversalSource.Inject TINKERPOP-1868


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/1b13f052
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/1b13f052
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/1b13f052

Branch: refs/heads/master
Commit: 1b13f052629170097e303680e1a0da5fd9e2bfac
Parents: a94baa0
Author: florianhockmann <f...@florian-hockmann.de>
Authored: Fri Jan 12 18:13:45 2018 +0100
Committer: florianhockmann <f...@florian-hockmann.de>
Committed: Fri Jan 12 18:13:45 2018 +0100

----------------------------------------------------------------------
 gremlin-dotnet/glv/GraphTraversalSource.template       |  4 ++--
 gremlin-dotnet/glv/generate.groovy                     | 13 +++++++++----
 .../Process/Traversal/GraphTraversalSource.cs          | 13 +++++++++++++
 3 files changed, 24 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1b13f052/gremlin-dotnet/glv/GraphTraversalSource.template
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/glv/GraphTraversalSource.template 
b/gremlin-dotnet/glv/GraphTraversalSource.template
index b99397c..f14f2ae 100644
--- a/gremlin-dotnet/glv/GraphTraversalSource.template
+++ b/gremlin-dotnet/glv/GraphTraversalSource.template
@@ -127,9 +127,9 @@ namespace Gremlin.Net.Process.Traversal
         ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> off this 
graph traversal source and adds the <%= method.methodName %> step to that
         ///     traversal.
         /// </summary>
-        public GraphTraversal< <%= method.typeArguments.join(",") %> > <%= 
toCSharpMethodName.call(method.methodName) %>(<%= method.parameters %>)
+        public GraphTraversal< <%= method.typeNames.join(",") %> > <%= 
toCSharpMethodName.call(method.methodName) %><%= method.tParam %>(<%= 
method.parameters %>)
         {
-            var traversal = new GraphTraversal< <%= 
method.typeArguments.join(",") %> >(TraversalStrategies, new 
Bytecode(Bytecode));
+            var traversal = new GraphTraversal< <%= method.typeNames.join(",") 
%> >(TraversalStrategies, new Bytecode(Bytecode));
             <%  if (method.parameters.contains("params ")) {
           %>var args = new List<object>(<%= method.paramNames.init().size() %> 
+ <%= method.paramNames.last() %>.Length) {<%= method.paramNames.init().join(", 
") %>};
             args.AddRange(<%= method.paramNames.last() %>);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1b13f052/gremlin-dotnet/glv/generate.groovy
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/glv/generate.groovy 
b/gremlin-dotnet/glv/generate.groovy
index 52ca165..ecbea46 100644
--- a/gremlin-dotnet/glv/generate.groovy
+++ b/gremlin-dotnet/glv/generate.groovy
@@ -81,6 +81,9 @@ def getCSharpGenericTypeParam = { typeName ->
     else if (typeName.contains("<K, ")) {
         tParam = "<K>"
     }
+    else if (typeName.contains("S")) {
+        tParam = "<S>"
+    }
     return tParam
 }
 
@@ -234,15 +237,17 @@ def binding = ["pmethods": P.class.getMethods().
                             return ["methodName": javaMethod.name, 
"parameters":parameters, "paramNames":paramNames]
                         },
                "sourceSpawnMethods": GraphTraversalSource.getMethods(). // 
SPAWN STEPS
-                        findAll { GraphTraversal.class.equals(it.returnType) 
&& !it.name.equals('inject')}.          
+                        findAll { GraphTraversal.class.equals(it.returnType) 
}.          
                 // Select unique combination of C# parameter types and sort by 
Java parameter type combination                                                 
                   
                         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, 
false)
+                            def typeNames = 
getJavaGenericTypeParameterTypeNames(javaMethod)
+                            def t2 = toCSharpType(typeNames[1])
+                            def tParam = getCSharpGenericTypeParam(t2)
+                            def parameters = getCSharpParamString(javaMethod, 
true)
                             def paramNames = 
getParamNames(javaMethod.parameters)
-                            return ["methodName": javaMethod.name, 
"typeArguments": typeArguments, "parameters":parameters, 
"paramNames":paramNames]
+                            return ["methodName": javaMethod.name, 
"typeNames": typeNames, "tParam":tParam, "parameters":parameters, 
"paramNames":paramNames]
                         },
                "graphStepMethods": GraphTraversal.getMethods().
                         findAll { GraphTraversal.class.equals(it.returnType) }.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1b13f052/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 36fde7c..c536a78 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs
@@ -244,6 +244,19 @@ namespace Gremlin.Net.Process.Traversal
             return traversal;
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> off this 
graph traversal source and adds the inject step to that
+        ///     traversal.
+        /// </summary>
+        public GraphTraversal< S,S > Inject<S>(params object[] starts)
+        {
+            var traversal = new GraphTraversal< S,S >(TraversalStrategies, new 
Bytecode(Bytecode));
+            var args = new List<object>(0 + starts.Length) {};
+            args.AddRange(starts);
+            traversal.Bytecode.AddStep("inject", args.ToArray());
+            return traversal;
+        }
+
     }
     
 #pragma warning restore 1591

Reply via email to