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