[ https://issues.apache.org/jira/browse/TINKERPOP-3055?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17946876#comment-17946876 ]
ASF GitHub Bot commented on TINKERPOP-3055: ------------------------------------------- andreachild commented on code in PR #3099: URL: https://github.com/apache/tinkerpop/pull/3099#discussion_r2056963328 ########## docs/src/reference/gremlin-variants.asciidoc: ########## @@ -1396,6 +1396,29 @@ can be passed in the constructor of a new `Client` or `DriverRemoteConnection` : |options.pongTimeout |Number |Timeout of pong response in ms after sending a ping. |30000 |========================================================= +[[gremlin-javascript-strategies]] +=== Traversal Strategies + +In order to add and remove <<traversalstrategy,traversal strategies>> from a traversal source, Gremlin-Javascript has a +`TraversalStrategy` class along with a collection of subclasses that mirror the standard Gremlin-Java strategies. + +[source,javascript] +---- +// use the class name for the strategy directly for withoutStrategies() +g.withoutStrategies(InlineFilterStrategy); + +// use an instance for withStrategies() +g.withStrategies(new InlineFilterStrategy); + +// if the strategies has arguments, specify them as named arguments +g.withStrategies(new SeedStrategy({seed: 99999})) +---- + +NOTE: Many of the `TraversalStrategy` classes in Gremlin-Javascript are proxies to the respective strategy on +Apache TinkerPop's JVM-based Gremlin traversal machine. As such, their `apply(Traversal)` method does nothing. However, +the strategy is encoded in the Gremlin-Python bytecode and transmitted to the Gremlin traversal machine for Review Comment: Do you mean the Gremlin-Javascript bytecode? > withoutStrategies() mechanism in programming languages for providers > -------------------------------------------------------------------- > > Key: TINKERPOP-3055 > URL: https://issues.apache.org/jira/browse/TINKERPOP-3055 > Project: TinkerPop > Issue Type: Improvement > Components: dotnet, go, javascript, process, python > Affects Versions: 3.7.1 > Reporter: Stephen Mallette > Priority: Major > > {{withoutStrategies()}} is in the grammar for TINKERPOP-2862. That change did > not address its accessibility for provider strategies in language variants > very well. As the syntax requires a {{Class}} (and for the grammar, a > registered strategy class) you may not have that reference in a language > variant. Users could create dummy classes as the grammar works on simple > name, but that's not especially nice. Otoh, most users shouldn't be tinkering > with strategies so perhaps that's ok? It could be inconvenient for notebook > users and similar tools though to create the dummy. A simple alternative > could just be a {{withoutStrategies(String...)}} but that's not particularly > nice. Other ideas? > needs a general look at all strategy construction across all languages: > 1. check if the strategy construction makes sense in terms of types and > syntax in each language > 2. watch out for wrong types being parsed into {{Configuration}} which can > lead to weird looking errors. > 3. are there adequate tests to validate all our syntax is working. we > technically need to test every strategy configuration options as those > corners are where bugs can hide. > 4. double check {{List}} vs {{Set}} syntax because {{Set}} might be preferred > but a lot of folks will reach for {{[ ]}} just out of habit....do we want > them failing for that? can we ease the type there without losing {{Set}} in > type safe languages? -- This message was sent by Atlassian Jira (v8.20.10#820010)