This is an automated email from the ASF dual-hosted git repository.

spmallette pushed a commit to branch gvalue
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit c83e12b1317013af4a28e2c14be16f9502315dfb
Author: Stephen Mallette <[email protected]>
AuthorDate: Mon Aug 26 12:50:30 2024 -0400

    wip - refactoring to use GValue static methods for instanceOf checks
---
 .../apache/tinkerpop/gremlin/process/traversal/step/GValue.java    | 1 -
 .../gremlin/process/traversal/step/util/HasContainer.java          | 4 ++--
 .../traversal/strategy/optimization/InlineFilterStrategy.java      | 7 ++-----
 gremlin-go/driver/cucumber/gremlin.go                              | 2 ++
 4 files changed, 6 insertions(+), 8 deletions(-)

diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/GValue.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/GValue.java
index f7692d6866..cb18dec8b9 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/GValue.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/GValue.java
@@ -367,7 +367,6 @@ public class GValue<V> implements Cloneable, Serializable {
      * {@link GType}.
      */
     public static boolean instanceOf(final Object o, final GType type) {
-        // todo: is this right for null?
         if (null == o)
             return false;
         else if (o instanceof GValue)
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java
index d456b09df6..35689f8367 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java
@@ -156,11 +156,11 @@ public class HasContainer implements Serializable, 
Cloneable, Predicate<Element>
             if (predicateValue instanceof Collection) {
                 final Collection collection = (Collection) predicateValue;
                 if (!collection.isEmpty()) {
-                    return ((Collection) predicateValue).stream().allMatch(c 
-> null == c || c instanceof String || (c instanceof GValue && ((GValue) 
c).getType() == GType.STRING));
+                    return ((Collection) predicateValue).stream().allMatch(c 
-> null == c || GValue.instanceOf(c, GType.STRING));
                 }
             }
 
-            return predicateValue instanceof String || (predicateValue 
instanceof GValue && ((GValue) predicateValue).getType() == GType.STRING);
+            return GValue.instanceOf(predicateValue, GType.STRING);
         }
 
         return false;
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/InlineFilterStrategy.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/InlineFilterStrategy.java
index 5ff63b3e0f..f7ff96009d 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/InlineFilterStrategy.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/InlineFilterStrategy.java
@@ -129,9 +129,7 @@ public final class InlineFilterStrategy extends 
AbstractTraversalStrategy<Traver
             final List<Object> edgeLabels = new ArrayList<>();
             for (final HasContainer hasContainer : new 
ArrayList<>(step.getHasContainers())) {
                 if (hasContainer.getKey().equals(T.label.getAccessor())) {
-                    if (hasContainer.getBiPredicate() == Compare.eq &&
-                            (hasContainer.getValue() instanceof String ||
-                                    (hasContainer.getValue() instanceof GValue 
&& ((GValue) hasContainer.getValue()).getType() == GType.STRING)) &&
+                    if (hasContainer.getBiPredicate() == Compare.eq && 
GValue.instanceOf(hasContainer.getValue(), GType.STRING) &&
                             edgeLabels.isEmpty()) {
                         edgeLabels.add(hasContainer.getValue());
                         step.removeHasContainer(hasContainer);
@@ -145,8 +143,7 @@ public final class InlineFilterStrategy extends 
AbstractTraversalStrategy<Traver
                         final List<P<?>> orps = ((OrP) 
hasContainer.getPredicate()).getPredicates();
                         final List<Object> newEdges = new ArrayList<>();
                         for (int i = 0; i < orps.size(); i++) {
-                            if (orps.get(i).getBiPredicate() == Compare.eq && 
(orps.get(i).getValue() instanceof String ||
-                                    (orps.get(i).getValue() instanceof GValue 
&& ((GValue) orps.get(i).getValue()).getType() == GType.STRING)))
+                            if (orps.get(i).getBiPredicate() == Compare.eq && 
GValue.instanceOf(orps.get(i).getValue(), GType.STRING))
                                 newEdges.add(orps.get(i).getValue());
                             else {
                                 removeContainer = false;
diff --git a/gremlin-go/driver/cucumber/gremlin.go 
b/gremlin-go/driver/cucumber/gremlin.go
index 55feb35dfe..449783b0f4 100644
--- a/gremlin-go/driver/cucumber/gremlin.go
+++ b/gremlin-go/driver/cucumber/gremlin.go
@@ -272,6 +272,8 @@ var translationMap = map[string][]func(g 
*gremlingo.GraphTraversalSource, p map[
     "g_E_hasLabelXuses_traversesX": {func(g *gremlingo.GraphTraversalSource, p 
map[string]interface{}) *gremlingo.GraphTraversal {return 
g.E().HasLabel("uses", "traverses")}}, 
     "g_V_hasLabelXperson_software_blahX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V().HasLabel("person", "software", 
"blah")}}, 
     "g_V_hasLabelXpersonX_hasLabelXsoftwareX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().HasLabel("person").HasLabel("software")}}, 
+    "g_V_hasLabelXpersonvarX_hasLabelXsoftwareX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().HasLabel(p["xx1"]).HasLabel("software")}}, 
+    "g_V_hasLabelXpersonvar_softwarevarX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V().HasLabel(p["xx1"], p["xx2"])}}, 
     
"g_V_hasLabelXpersonX_hasXage_notXlteX10X_andXnotXbetweenX11_20XXXX_andXltX29X_orXeqX35XXXX_name":
 {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V().HasLabel("person").Has("age", 
gremlingo.P.Not(gremlingo.P.Lte(10).And(gremlingo.P.Not(gremlingo.P.Between(11, 
20)))).And(gremlingo.P.Lt(29).Or(gremlingo.P.Eq(35)))).Values("name")}}, 
     "g_V_hasLabelXnullX": {func(g *gremlingo.GraphTraversalSource, p 
map[string]interface{}) *gremlingo.GraphTraversal {return 
g.V().HasLabel(nil)}}, 
     "g_V_hasXlabel_nullX": {func(g *gremlingo.GraphTraversalSource, p 
map[string]interface{}) *gremlingo.GraphTraversal {return 
g.V().Has(gremlingo.T.Label, nil)}}, 

Reply via email to