You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2021/01/08 13:27:01 UTC
[tinkerpop] 01/02: TINKERPOP-2500 Added none() to GLVs CTR
This is an automated email from the ASF dual-hosted git repository.
spmallette pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 931a75d3ace5647adc670e7cdb57b760ae09b749
Author: Stephen Mallette <st...@amazon.com>
AuthorDate: Fri Jan 8 08:08:07 2021 -0500
TINKERPOP-2500 Added none() to GLVs CTR
---
.../gremlin/process/traversal/Traversal.java | 4 +++-
.../traversal/dsl/graph/GraphTraversal.java | 13 +++++++++++
gremlin-dotnet/glv/generate.groovy | 26 +++++++++++-----------
.../Process/Traversal/GraphTraversal.cs | 9 ++++++++
gremlin-javascript/glv/generate.groovy | 18 +++++++--------
.../lib/process/graph-traversal.js | 10 +++++++++
gremlin-python/glv/generate.groovy | 12 +++++-----
.../gremlin_python/process/graph_traversal.py | 4 ++++
8 files changed, 67 insertions(+), 29 deletions(-)
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java
index 11c12c3..b1b45f3 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java
@@ -217,7 +217,9 @@ public interface Traversal<S, E> extends Iterator<E>, Serializable, Cloneable, A
}
/**
- * Filter all traversers in the traversal.
+ * Filter all traversers in the traversal. This step has narrow use cases and is primarily intended for use as a
+ * signal to remote servers that {@link #iterate()} was called. While it may be directly used, it is often a sign
+ * that a traversal should be re-written in another form.
*
* @return the updated traversal with respective {@link NoneStep}.
*/
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
index be465c9..ef541eb 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
@@ -59,6 +59,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DropStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.HasStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.IsStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.LambdaFilterStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.NoneStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.NotStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.OrStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.PathFilterStep;
@@ -2127,6 +2128,18 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
}
/**
+ * Filter all traversers in the traversal. This step has narrow use cases and is primarily intended for use as a
+ * signal to remote servers that {@link #iterate()} was called. While it may be directly used, it is often a sign
+ * that a traversal should be re-written in another form.
+ *
+ * @return the updated traversal with respective {@link NoneStep}.
+ */
+ @Override
+ default GraphTraversal<S, E> none() {
+ return (GraphTraversal<S, E>) Traversal.super.none();
+ }
+
+ /**
* Sets a {@link Property} value and related meta properties if supplied, if supported by the {@link Graph}
* and if the {@link Element} is a {@link VertexProperty}. This method is the long-hand version of
* {@link #property(Object, Object, Object...)} with the difference that the {@link VertexProperty.Cardinality}
diff --git a/gremlin-dotnet/glv/generate.groovy b/gremlin-dotnet/glv/generate.groovy
index a951907..a921a29 100644
--- a/gremlin-dotnet/glv/generate.groovy
+++ b/gremlin-dotnet/glv/generate.groovy
@@ -107,7 +107,7 @@ def getCSharpGenericTypeParam = { typeName ->
def toCSharpType = { name ->
String typeName = toCSharpTypeMap.getOrDefault(name, name)
- if (typeName.equals(name) && (typeName.contains("? extends") || typeName.equals("Tree"))) {
+ if (typeName == name && (typeName.contains("? extends") || typeName == "Tree")) {
typeName = "E2"
}
return typeName
@@ -124,10 +124,10 @@ def getJavaGenericTypeParameterTypeNames = { method ->
return typeArguments.
collect { (it instanceof Class) ? ((Class)it).simpleName : it.typeName }.
collect { name ->
- if (name.equals("A")) {
+ if (name == "A") {
name = "object"
}
- else if (name.equals("B")) {
+ else if (name == "B") {
name = "E2"
}
name
@@ -253,12 +253,12 @@ def binding = ["pmethods": P.class.getMethods().
unique().
sort { a, b -> a <=> b },
"sourceStepMethods": GraphTraversalSource.getMethods(). // SOURCE STEPS
- findAll { GraphTraversalSource.class.equals(it.returnType) }.
+ findAll { (GraphTraversalSource.class == it.returnType) }.
findAll {
- !it.name.equals("clone") &&
- !it.name.equals(TraversalSource.Symbols.with) &&
- !it.name.equals(TraversalSource.Symbols.withRemote) &&
- !it.name.equals(TraversalSource.Symbols.withComputer)
+ it.name != "clone" &&
+ it.name != TraversalSource.Symbols.with &&
+ it.name != TraversalSource.Symbols.withRemote &&
+ it.name != TraversalSource.Symbols.withComputer
}.
// 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) }.
@@ -269,7 +269,7 @@ 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) }.
+ findAll { (GraphTraversal.class == 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) }.
@@ -284,8 +284,8 @@ def binding = ["pmethods": P.class.getMethods().
return ["methodName": javaMethod.name, "t1":t1, "t2":t2, "tParam":tParam, "parameters":parameters, "paramNames":paramNames, "isArgsCastNecessary":isArgsCastNecessary]
},
"graphStepMethods": GraphTraversal.getMethods().
- findAll { GraphTraversal.class.equals(it.returnType) }.
- findAll { !it.name.equals("clone") && !it.name.equals("iterate") }.
+ findAll { (GraphTraversal.class == it.returnType) }.
+ findAll { it.name != "clone" && it.name != "iterate" }.
// 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) }.
@@ -305,9 +305,9 @@ def binding = ["pmethods": P.class.getMethods().
return ["methodName": javaMethod.name, "t1":t1, "t2":t2, "tParam":tParam, "parameters":parameters, "paramNames":paramNames, "isArgsCastNecessary":isArgsCastNecessary]
},
"anonStepMethods": __.class.getMethods().
- findAll { GraphTraversal.class.equals(it.returnType) }.
+ findAll { (GraphTraversal.class == it.returnType) }.
findAll { Modifier.isStatic(it.getModifiers()) }.
- findAll { !it.name.equals("__") && !it.name.equals("start") }.
+ findAll { it.name != "__" && it.name != "start" }.
// 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) }.
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
index 7394fe8..b6d3a83 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
@@ -1054,6 +1054,15 @@ namespace Gremlin.Net.Process.Traversal
}
/// <summary>
+ /// Adds the none step to this <see cref="GraphTraversal{SType, EType}" />.
+ /// </summary>
+ public GraphTraversal<S, E> None ()
+ {
+ Bytecode.AddStep("none");
+ return Wrap<S, E>(this);
+ }
+
+ /// <summary>
/// Adds the not step to this <see cref="GraphTraversal{SType, EType}" />.
/// </summary>
public GraphTraversal<S, E> Not (ITraversal notTraversal)
diff --git a/gremlin-javascript/glv/generate.groovy b/gremlin-javascript/glv/generate.groovy
index cfd1be5..2d3e1a1 100644
--- a/gremlin-javascript/glv/generate.groovy
+++ b/gremlin-javascript/glv/generate.groovy
@@ -82,33 +82,33 @@ def binding = ["enums": CoreImports.getClassImports()
unique().
sort { a, b -> a <=> b },
"sourceStepMethods": GraphTraversalSource.getMethods(). // SOURCE STEPS
- findAll { GraphTraversalSource.class.equals(it.returnType) }.
+ findAll { (GraphTraversalSource.class == it.returnType) }.
findAll {
!it.name.equals("clone") &&
// Use hardcoded name to be for forward-compatibility
- !it.name.equals("withBindings") &&
- !it.name.equals(TraversalSource.Symbols.with) &&
- !it.name.equals(TraversalSource.Symbols.withRemote) &&
- !it.name.equals(TraversalSource.Symbols.withComputer)
+ it.name != "withBindings" &&
+ it.name != TraversalSource.Symbols.with &&
+ it.name != TraversalSource.Symbols.withRemote &&
+ it.name != TraversalSource.Symbols.withComputer
}.
collect { it.name }.
unique().
sort { a, b -> a <=> b },
"sourceSpawnMethods": GraphTraversalSource.getMethods(). // SPAWN STEPS
- findAll { GraphTraversal.class.equals(it.returnType) }.
+ findAll { (GraphTraversal.class == it.returnType) }.
collect { it.name }.
unique().
sort { a, b -> a <=> b },
"graphStepMethods": GraphTraversal.getMethods().
- findAll { GraphTraversal.class.equals(it.returnType) }.
+ findAll { (GraphTraversal.class == it.returnType) }.
findAll { !it.name.equals("clone") && !it.name.equals("iterate") }.
collect { it.name }.
unique().
sort { a, b -> a <=> b },
"anonStepMethods": __.class.getMethods().
- findAll { GraphTraversal.class.equals(it.returnType) }.
+ findAll { (GraphTraversal.class == it.returnType) }.
findAll { Modifier.isStatic(it.getModifiers()) }.
- findAll { !it.name.equals("__") && !it.name.equals("start") }.
+ findAll { !it.name.equals("__") && it.name != "start" }.
collect { it.name }.
unique().
sort { a, b -> a <=> b },
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js
index 1e19609..9421730 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js
@@ -793,6 +793,16 @@ class GraphTraversal extends Traversal {
}
/**
+ * Graph traversal none method.
+ * @param {...Object} args
+ * @returns {GraphTraversal}
+ */
+ none(...args) {
+ this.bytecode.addStep('none', args);
+ return this;
+ }
+
+ /**
* Graph traversal not method.
* @param {...Object} args
* @returns {GraphTraversal}
diff --git a/gremlin-python/glv/generate.groovy b/gremlin-python/glv/generate.groovy
index 214eb2f..5856e81 100644
--- a/gremlin-python/glv/generate.groovy
+++ b/gremlin-python/glv/generate.groovy
@@ -87,7 +87,7 @@ def binding = ["enums": CoreImports.getClassImports()
unique().
sort { a, b -> a <=> b },
"sourceStepMethods": GraphTraversalSource.getMethods(). // SOURCE STEPS
- findAll { GraphTraversalSource.class.equals(it.returnType) }.
+ findAll { (GraphTraversalSource.class == it.returnType) }.
findAll {
!it.name.equals("clone") &&
!it.name.equals(TraversalSource.Symbols.with) &&
@@ -98,20 +98,20 @@ def binding = ["enums": CoreImports.getClassImports()
unique().
sort { a, b -> a <=> b },
"sourceSpawnMethods": GraphTraversalSource.getMethods(). // SPAWN STEPS
- findAll { GraphTraversal.class.equals(it.returnType) }.
+ findAll { (GraphTraversal.class == it.returnType) }.
collect { toPython(it.name) }.
unique().
sort { a, b -> a <=> b },
"graphStepMethods": GraphTraversal.getMethods().
- findAll { GraphTraversal.class.equals(it.returnType) }.
- findAll { !it.name.equals("clone") && !it.name.equals("iterate") }.
+ findAll { GraphTraversal.class == it.returnType }.
+ findAll { it.name != "clone" && it.name != "iterate" }.
collect { toPython(it.name) }.
unique().
sort { a, b -> a <=> b },
"anonStepMethods": __.class.getMethods().
- findAll { GraphTraversal.class.equals(it.returnType) }.
+ findAll { (GraphTraversal.class == it.returnType) }.
findAll { Modifier.isStatic(it.getModifiers()) }.
- findAll { !it.name.equals("__") && !it.name.equals("start") }.
+ findAll { it.name != "__" && it.name != "start" }.
collect { toPython(it.name) }.
unique().
sort { a, b -> a <=> b },
diff --git a/gremlin-python/src/main/jython/gremlin_python/process/graph_traversal.py b/gremlin-python/src/main/jython/gremlin_python/process/graph_traversal.py
index 545dce0..edf4ddf 100644
--- a/gremlin-python/src/main/jython/gremlin_python/process/graph_traversal.py
+++ b/gremlin-python/src/main/jython/gremlin_python/process/graph_traversal.py
@@ -377,6 +377,10 @@ class GraphTraversal(Traversal):
self.bytecode.add_step("min", *args)
return self
+ def none(self, *args):
+ self.bytecode.add_step("none", *args)
+ return self
+
def not_(self, *args):
self.bytecode.add_step("not", *args)
return self