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

lyndonb pushed a commit to branch 3.5-dev
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git


The following commit(s) were added to refs/heads/3.5-dev by this push:
     new aa2820bc4c Adding strategy support to cucumber world for gremlin-go
aa2820bc4c is described below

commit aa2820bc4cd223e97cb814e7edf2d8a0007ade5c
Author: Lyndon Bauto <[email protected]>
AuthorDate: Fri May 20 10:16:16 2022 -0700

    Adding strategy support to cucumber world for gremlin-go
---
 gremlin-go/driver/cucumber/cucumberWorld.go | 31 +++++++++++++++++++++++++++
 gremlin-go/driver/strategies.go             | 33 ++++++++++++++++-------------
 2 files changed, 49 insertions(+), 15 deletions(-)

diff --git a/gremlin-go/driver/cucumber/cucumberWorld.go 
b/gremlin-go/driver/cucumber/cucumberWorld.go
index 7b8c569b55..a4e43303c3 100644
--- a/gremlin-go/driver/cucumber/cucumberWorld.go
+++ b/gremlin-go/driver/cucumber/cucumberWorld.go
@@ -223,6 +223,37 @@ func strategyFactory(strategyName string, params 
map[string]interface{}) interfa
                        Configuration: nil,
                }
                return gremlingo.VertexProgramStrategy(config)
+       case "ProductiveByStrategy":
+               productiveKeys, _ := params["productiveKeys"]
+               productiveKeysInterface := productiveKeys.([]interface{})
+               var productiveKeysStrings = make([]string, 
len(productiveKeysInterface))
+               for i := range productiveKeysInterface {
+                       productiveKeysStrings[i] = 
productiveKeysInterface[i].(string)
+               }
+               config := gremlingo.ProductiveByStrategyConfig{
+                       ProductiveKeys: productiveKeysStrings,
+               }
+               return gremlingo.ProductiveByStrategy(config)
+       case "ReadOnlyStrategy":
+               return gremlingo.ReadOnlyStrategy()
+       case "SubgraphStrategy":
+               edges, _ := params["edges"].(*gremlingo.GraphTraversal)
+               vertices, _ := params["vertices"].(*gremlingo.GraphTraversal)
+               vertexProperties, _ := 
params["vertexProperties"].(*gremlingo.GraphTraversal)
+               checkAdjacentVertices, _ := params["checkAdjacentVertices"]
+               config := gremlingo.SubgraphStrategyConfig{
+                       Edges:                 edges,
+                       Vertices:              vertices,
+                       VertexProperties:      vertexProperties,
+                       CheckAdjacentVertices: checkAdjacentVertices,
+               }
+               return gremlingo.SubgraphStrategy(config)
+       case "SeedStrategy":
+               seed, _ := params["seed"]
+               config := gremlingo.SeedStrategyConfig{
+                       Seed: int64(seed.(int)),
+               }
+               return gremlingo.SeedStrategy(config)
        }
        return nil
 }
diff --git a/gremlin-go/driver/strategies.go b/gremlin-go/driver/strategies.go
index b7d25c9f1f..c6b751907b 100644
--- a/gremlin-go/driver/strategies.go
+++ b/gremlin-go/driver/strategies.go
@@ -67,7 +67,6 @@ type HaltedTraverserStrategyConfig struct {
        HaltedTraverserFactoryName string
 }
 
-
 // OptionsStrategy will not alter the Traversal. It is only a holder for 
configuration options associated with the
 // Traversal meant to be accessed by steps or other classes that might have 
some interaction with it. It is
 // essentially a way for users to provide Traversal level configuration 
options that can be used in various ways
@@ -96,9 +95,9 @@ func PartitionStrategy(config PartitionStrategyConfig) 
TraversalStrategy {
 // PartitionStrategyConfig provides configuration options for 
PartitionStrategy.
 // Zeroed (unset) values are ignored except IncludeMetaProperties.
 type PartitionStrategyConfig struct {
-       PartitionKey string
-       WritePartition string
-       ReadPartitions []string
+       PartitionKey          string
+       WritePartition        string
+       ReadPartitions        []string
        IncludeMetaProperties bool
 }
 
@@ -133,14 +132,18 @@ func SubgraphStrategy(config SubgraphStrategyConfig) 
TraversalStrategy {
        if config.VertexProperties != nil {
                configMap["vertexProperties"] = config.VertexProperties
        }
+       if config.CheckAdjacentVertices != nil {
+               configMap["checkAdjacentVertices"] = 
config.CheckAdjacentVertices.(bool)
+       }
        return &traversalStrategy{name: decorationNamespace + 
"SubgraphStrategy", configuration: configMap}
 }
 
 // SubgraphStrategyConfig provides configuration options for SubgraphStrategy. 
Zeroed (unset) values are ignored.
 type SubgraphStrategyConfig struct {
-       Vertices *GraphTraversal
-       Edges *GraphTraversal
-       VertexProperties *GraphTraversal
+       Vertices              *GraphTraversal
+       Edges                 *GraphTraversal
+       VertexProperties      *GraphTraversal
+       CheckAdjacentVertices interface{}
 }
 
 func VertexProgramStrategy(config VertexProgramStrategyConfig) 
TraversalStrategy {
@@ -173,11 +176,11 @@ func VertexProgramStrategy(config 
VertexProgramStrategyConfig) TraversalStrategy
 // Zeroed (unset) values are ignored.
 type VertexProgramStrategyConfig struct {
        GraphComputer string
-       Workers int
-       Persist string
-       Result string
-       Vertices *GraphTraversal
-       Edges *GraphTraversal
+       Workers       int
+       Persist       string
+       Result        string
+       Vertices      *GraphTraversal
+       Edges         *GraphTraversal
        Configuration map[string]interface{}
 }
 
@@ -214,7 +217,7 @@ func EdgeLabelVerificationStrategy(config 
EdgeLabelVerificationStrategyConfig) T
 // EdgeLabelVerificationStrategyConfig provides configuration options for 
EdgeLabelVerificationStrategy.
 // Zeroed (unset) values are used.
 type EdgeLabelVerificationStrategyConfig struct {
-       LogWarning bool
+       LogWarning      bool
        ThrowExcecption bool
 }
 
@@ -247,9 +250,9 @@ func ReservedKeysVerificationStrategy(config 
ReservedKeysVerificationStrategyCon
 // ReservedKeysVerificationStrategyConfig provides configuration options for 
ReservedKeysVerificationStrategy.
 // Zeroed (unset) values are used except Keys.
 type ReservedKeysVerificationStrategyConfig struct {
-       LogWarning bool
+       LogWarning     bool
        ThrowException bool
-       Keys []string
+       Keys           []string
 }
 
 // Optimization strategies

Reply via email to