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/09/13 19:16:22 UTC

[tinkerpop] 12/17: TINKERPOP-2601 Added connectedComponent() to grammar

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

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

commit 480cf1604734a6bbf4f3a75ebe613e6185a95219
Author: Stephen Mallette <st...@amazon.com>
AuthorDate: Wed Sep 8 13:23:37 2021 -0400

    TINKERPOP-2601 Added connectedComponent() to grammar
    
    This probably needs to be backported to 3.5.x.
---
 .../language/grammar/GremlinBaseVisitor.java       | 25 +++++++++++++++++++++
 .../grammar/GremlinStringConstantsVisitor.java     | 21 +++++++++++++++++
 .../language/grammar/TraversalMethodVisitor.java   |  5 +++++
 gremlin-language/src/main/antlr4/Gremlin.g4        | 26 +++++++++++++++++++---
 .../gremlin/spark/SparkGraphFeatureTest.java       |  1 -
 .../gremlin/tinkergraph/TinkerGraphWorld.java      |  1 -
 6 files changed, 74 insertions(+), 5 deletions(-)

diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GremlinBaseVisitor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GremlinBaseVisitor.java
index ac55b96..caa0a8a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GremlinBaseVisitor.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GremlinBaseVisitor.java
@@ -1453,6 +1453,31 @@ public class GremlinBaseVisitor<T> extends AbstractParseTreeVisitor<T> implement
 		notImplemented(ctx); return null;
 	}
 
+	@Override
+	public T visitConnectedComponentConstants(final GremlinParser.ConnectedComponentConstantsContext ctx) {
+		notImplemented(ctx); return null;
+	}
+
+	@Override
+	public T visitGremlinStringConstants_connectedComponentStringConstants_component(final GremlinParser.GremlinStringConstants_connectedComponentStringConstants_componentContext ctx) {
+		notImplemented(ctx); return null;
+	}
+
+	@Override
+	public T visitGremlinStringConstants_connectedComponentStringConstants_edges(final GremlinParser.GremlinStringConstants_connectedComponentStringConstants_edgesContext ctx) {
+		notImplemented(ctx); return null;
+	}
+
+	@Override
+	public T visitGremlinStringConstants_connectedComponentStringConstants_propertyName(GremlinParser.GremlinStringConstants_connectedComponentStringConstants_propertyNameContext ctx) {
+		return null;
+	}
+
+	@Override
+	public T visitConnectedComponentStringConstant(final GremlinParser.ConnectedComponentStringConstantContext ctx) {
+		notImplemented(ctx); return null;
+	}
+
 	/**
 	 * {@inheritDoc}
 	 */
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GremlinStringConstantsVisitor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GremlinStringConstantsVisitor.java
index fee33d4..9b6b2a4 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GremlinStringConstantsVisitor.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GremlinStringConstantsVisitor.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.language.grammar;
 
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ConnectedComponent;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PageRank;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PeerPressure;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ShortestPath;
@@ -47,6 +48,11 @@ public class GremlinStringConstantsVisitor extends GremlinBaseVisitor<Object> {
     }
 
     @Override
+    public Object visitConnectedComponentStringConstant(GremlinParser.ConnectedComponentStringConstantContext ctx) {
+        return visitChildren(ctx);
+    }
+
+    @Override
     public Object visitPageRankStringConstants(final GremlinParser.PageRankStringConstantsContext ctx) {
         return visitChildren(ctx);
     }
@@ -72,6 +78,21 @@ public class GremlinStringConstantsVisitor extends GremlinBaseVisitor<Object> {
     }
 
     @Override
+    public Object visitGremlinStringConstants_connectedComponentStringConstants_edges(final GremlinParser.GremlinStringConstants_connectedComponentStringConstants_edgesContext ctx) {
+        return ConnectedComponent.edges;
+    }
+
+    @Override
+    public Object visitGremlinStringConstants_connectedComponentStringConstants_component(final GremlinParser.GremlinStringConstants_connectedComponentStringConstants_componentContext ctx) {
+        return ConnectedComponent.component;
+    }
+
+    @Override
+    public Object visitGremlinStringConstants_connectedComponentStringConstants_propertyName(final GremlinParser.GremlinStringConstants_connectedComponentStringConstants_propertyNameContext ctx) {
+        return ConnectedComponent.propertyName;
+    }
+
+    @Override
     public Object visitGremlinStringConstants_pageRankStringConstants_edges(final GremlinParser.GremlinStringConstants_pageRankStringConstants_edgesContext ctx) {
         return PageRank.edges;
     }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java
index 598dd45..1205d47 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java
@@ -1017,6 +1017,11 @@ public class TraversalMethodVisitor extends TraversalRootVisitor<GraphTraversal>
         return graphTraversal.outV();
     }
 
+    @Override
+    public Traversal visitTraversalMethod_connectedComponent(final GremlinParser.TraversalMethod_connectedComponentContext ctx) {
+        return graphTraversal.connectedComponent();
+    }
+
     /**
      * {@inheritDoc}
      */
diff --git a/gremlin-language/src/main/antlr4/Gremlin.g4 b/gremlin-language/src/main/antlr4/Gremlin.g4
index 2d8d030..8274337 100644
--- a/gremlin-language/src/main/antlr4/Gremlin.g4
+++ b/gremlin-language/src/main/antlr4/Gremlin.g4
@@ -738,9 +738,6 @@ traversalMethod_write
 	: 'write' LPAREN RPAREN
 	;
 
-
-
-
 /*********************************************
     ARGUMENT AND TERMINAL RULES
 **********************************************/
@@ -1042,12 +1039,19 @@ traversalSelfMethod_none
 
 gremlinStringConstants
     : withOptionsStringConstants
+    | connectedComponentConstants
     | shortestPathStringConstants
     | pageRankStringConstants
     | peerPressureStringConstants
     | ioOptionsStringConstants
     ;
 
+connectedComponentConstants
+    : gremlinStringConstants_connectedComponentStringConstants_component
+    | gremlinStringConstants_connectedComponentStringConstants_edges
+    | gremlinStringConstants_connectedComponentStringConstants_propertyName
+    ;
+
 pageRankStringConstants
     : gremlinStringConstants_pageRankStringConstants_edges
     | gremlinStringConstants_pageRankStringConstants_times
@@ -1089,6 +1093,18 @@ ioOptionsStringConstants
     | gremlinStringConstants_ioOptionsStringConstants_graphml
     ;
 
+gremlinStringConstants_connectedComponentStringConstants_component
+    : connectedComponentStringConstant DOT 'component'
+    ;
+
+gremlinStringConstants_connectedComponentStringConstants_edges
+    : connectedComponentStringConstant DOT 'edges'
+    ;
+
+gremlinStringConstants_connectedComponentStringConstants_propertyName
+    : connectedComponentStringConstant DOT 'propertyName'
+    ;
+
 gremlinStringConstants_pageRankStringConstants_edges
     : pageRankStringConstant DOT 'edges'
     ;
@@ -1193,6 +1209,10 @@ gremlinStringConstants_ioOptionsStringConstants_graphml
     : ioOptionsStringConstant DOT 'graphml'
     ;
 
+connectedComponentStringConstant
+    : 'ConnectedComponent'
+    ;
+
 pageRankStringConstant
     : 'PageRank'
     ;
diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/SparkGraphFeatureTest.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/SparkGraphFeatureTest.java
index 21a11ff..911aa10 100644
--- a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/SparkGraphFeatureTest.java
+++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/SparkGraphFeatureTest.java
@@ -88,7 +88,6 @@ public class SparkGraphFeatureTest {
     private static final List<String> TAGS_TO_IGNORE = Arrays.asList(
             "@StepDrop",
             "@StepV",
-            "@StepConnectedComponent", // need to implement this in the grammar
             "@StepIndex", // doesn't look like this works with Spark atm - doesn't serialize (IndexTest not in the ProcessComputerSuite)
             "@GraphComputerVerificationOneBulk",
             "@GraphComputerVerificationMidVNotSupported",
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/TinkerGraphWorld.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/TinkerGraphWorld.java
index f37e5ac..f5992f4 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/TinkerGraphWorld.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/TinkerGraphWorld.java
@@ -91,7 +91,6 @@ public class TinkerGraphWorld implements World {
         private static final List<String> TAGS_TO_IGNORE = Arrays.asList(
                 "@StepDrop",
                 "@StepV",
-                "@StepConnectedComponent", // need to implement this in the grammar
                 "@GraphComputerVerificationOneBulk",
                 "@GraphComputerVerificationMidVNotSupported",
                 "@GraphComputerVerificationInjectionNotSupported",