This is an automated email from the ASF dual-hosted git repository. colegreer pushed a commit to branch strategyConstruction in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 40131c6e1dca79578cae3b4bbee31dabbb403f8c Author: Cole-Greer <[email protected]> AuthorDate: Thu Sep 19 13:05:16 2024 -0700 update translators, core imports, and parser --- .../java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java | 10 ++++++++++ .../gremlin/jsr223/DefaultGremlinScriptEngineManager.java | 2 +- .../gremlin/language/translator/PythonTranslateVisitor.java | 2 +- .../gremlin/process/traversal/TraversalStrategies.java | 5 ++++- .../process/traversal/strategy/decoration/OptionsStrategy.java | 2 +- .../gremlin/language/translator/GremlinTranslatorTest.java | 9 +++++++++ 6 files changed, 26 insertions(+), 4 deletions(-) diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java index e83185382f..28f96bd803 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java @@ -50,7 +50,9 @@ 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; import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy; +import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.finalization.ComputerFinalizationStrategy; import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.optimization.GraphFilterStrategy; +import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.optimization.MessagePassingReductionStrategy; import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.verification.VertexProgramRestrictionStrategy; import org.apache.tinkerpop.gremlin.process.remote.RemoteConnection; import org.apache.tinkerpop.gremlin.process.traversal.AnonymousTraversalSource; @@ -75,6 +77,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.Connec import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ElementIdStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.EventStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.HaltedTraverserStrategy; +import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.OptionsStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.PartitionStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SeedStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy; @@ -88,6 +91,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.Earl import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.FilterRankingStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.IdentityRemovalStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.IncidentToAdjacentStrategy; +import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.InlineFilterStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.LazyBarrierStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.MatchPredicateStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.OrderLimitStrategy; @@ -99,6 +103,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.Comp import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.EdgeLabelVerificationStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.LambdaRestrictionStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategy; +import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReservedKeysVerificationStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.StandardVerificationStrategy; import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMetrics; import org.apache.tinkerpop.gremlin.structure.Column; @@ -247,10 +252,15 @@ public final class CoreImports { CLASS_IMPORTS.add(Configurations.class); // strategies CLASS_IMPORTS.add(ConnectiveStrategy.class); + CLASS_IMPORTS.add(ComputerFinalizationStrategy.class); CLASS_IMPORTS.add(ElementIdStrategy.class); CLASS_IMPORTS.add(EventStrategy.class); CLASS_IMPORTS.add(HaltedTraverserStrategy.class); + CLASS_IMPORTS.add(InlineFilterStrategy.class); + CLASS_IMPORTS.add(MessagePassingReductionStrategy.class); + CLASS_IMPORTS.add(OptionsStrategy.class); CLASS_IMPORTS.add(PartitionStrategy.class); + CLASS_IMPORTS.add(ReservedKeysVerificationStrategy.class); CLASS_IMPORTS.add(SubgraphStrategy.class); CLASS_IMPORTS.add(LazyBarrierStrategy.class); CLASS_IMPORTS.add(MatchAlgorithmStrategy.class); diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/DefaultGremlinScriptEngineManager.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/DefaultGremlinScriptEngineManager.java index e485c05589..84b3d8fa48 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/DefaultGremlinScriptEngineManager.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/DefaultGremlinScriptEngineManager.java @@ -53,7 +53,7 @@ import java.util.stream.Stream; * This class is based quite heavily on the workings of the {@code ScriptEngineManager} supplied in the * {@code javax.script} packages, but adds some additional features that are specific to Gremlin and TinkerPop. * Unfortunately, it's not easily possible to extend {@code ScriptEngineManager} directly as there certain behaviors - * don't appear to be be straightforward to implement and member variables are all private. It is important to note + * don't appear to be straightforward to implement and member variables are all private. It is important to note * that this class is designed to provide support for "Gremlin-enabled" {@code ScriptEngine} instances (i.e. those * that extend from {@link GremlinScriptEngine}) and is not meant to manage just any {@code ScriptEngine} instance * that may be on the path. diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/translator/PythonTranslateVisitor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/translator/PythonTranslateVisitor.java index 092c41fe5e..0d2aa7a0d1 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/translator/PythonTranslateVisitor.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/translator/PythonTranslateVisitor.java @@ -78,7 +78,7 @@ public class PythonTranslateVisitor extends AbstractTranslateVisitor { if (ctx.getChildCount() == 1) sb.append(ctx.getText()).append("()"); else { - sb.append(ctx.getChild(1).getText()).append("("); + sb.append(ctx.getChild(0).getText().equals("new") ? ctx.getChild(1).getText() : ctx.getChild(0).getText()).append("("); final List<ParseTree> configs = ctx.children.stream(). filter(c -> c instanceof GremlinParser.ConfigurationContext).collect(Collectors.toList()); diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java index eca8ba75db..c36afa8081 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java @@ -23,6 +23,7 @@ import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decorati import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.finalization.ComputerFinalizationStrategy; import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.optimization.GraphFilterStrategy; import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.optimization.MessagePassingReductionStrategy; +import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.verification.VertexProgramRestrictionStrategy; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ConnectiveStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ElementIdStrategy; @@ -30,6 +31,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.EventS import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.HaltedTraverserStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.OptionsStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.PartitionStrategy; +import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SackStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SeedStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.MatchAlgorithmStrategy; @@ -263,6 +265,7 @@ public interface TraversalStrategies extends Serializable, Cloneable, Iterable<T put(LambdaRestrictionStrategy.class.getSimpleName(), LambdaRestrictionStrategy.class); put(ReadOnlyStrategy.class.getSimpleName(), ReadOnlyStrategy.class); put(ReservedKeysVerificationStrategy.class.getSimpleName(), ReservedKeysVerificationStrategy.class); + put(VertexProgramRestrictionStrategy.class.getSimpleName(), VertexProgramRestrictionStrategy.class); }}; static { @@ -328,7 +331,7 @@ public interface TraversalStrategies extends Serializable, Cloneable, Iterable<T /** * Unregisters a strategy by its simple name. If the strategy is not in the registry then the grammar cannot * reference it which means that it cannot be removed from execution using - * {{@link GraphTraversalSource#withoutStrategies(Class[])}}.. + * {{@link GraphTraversalSource#withoutStrategies(Class[])}}. */ public static void unregisterStrategy(final Class<? extends TraversalStrategy> clazz) { GLOBAL_REGISTRY.remove(clazz.getSimpleName()); diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/OptionsStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/OptionsStrategy.java index 1a7a81f46b..78ab8a6d2b 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/OptionsStrategy.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/OptionsStrategy.java @@ -82,7 +82,7 @@ public class OptionsStrategy extends AbstractTraversalStrategy<TraversalStrategy private final Map<String, Object> options = new HashMap<>(); /** - * Adds an key to the configuration with the value of {@code true}. + * Adds a key to the configuration with the value of {@code true}. */ public Builder with(final String key) { return with(key, true); diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/translator/GremlinTranslatorTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/translator/GremlinTranslatorTest.java index b16fbf057d..c83c2a111e 100644 --- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/translator/GremlinTranslatorTest.java +++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/translator/GremlinTranslatorTest.java @@ -601,6 +601,15 @@ public class GremlinTranslatorTest { "g.withStrategies(PartitionStrategy.build().includeMetaProperties(true).partitionKey(\"x\").create())", "g.withStrategies(new PartitionStrategy({includeMetaProperties: true, partitionKey: \"x\"}))", "g.with_strategies(PartitionStrategy(include_meta_properties=True, partition_key='x'))"}, + {"g.withStrategies(PartitionStrategy(includeMetaProperties: true, partitionKey:'x'))", + "g.withStrategies(new PartitionStrategy(includeMetaProperties:true, partitionKey:'x'))", + "g.withStrategies(new PartitionStrategy(includeMetaProperties:boolean0, partitionKey:string0))", + "g.WithStrategies(new PartitionStrategy(includeMetaProperties: true, partitionKey: \"x\"))", + "g.WithStrategies(gremlingo.PartitionStrategy(gremlingo.PartitionStrategyConfig{IncludeMetaProperties: true, PartitionKey: \"x\"}))", + "g.withStrategies(new PartitionStrategy(includeMetaProperties:true, partitionKey:'x'))", + "g.withStrategies(PartitionStrategy.build().includeMetaProperties(true).partitionKey(\"x\").create())", + "g.withStrategies(new PartitionStrategy({includeMetaProperties: true, partitionKey: \"x\"}))", + "g.with_strategies(PartitionStrategy(include_meta_properties=True, partition_key='x'))"}, {"g.withStrategies(new SubgraphStrategy(vertices:__.has('name', 'vadas'), edges: has('weight', gt(0.5))))", "g.withStrategies(new SubgraphStrategy(vertices:__.has('name', 'vadas'), edges:__.has('weight', P.gt(0.5))))", "g.withStrategies(new SubgraphStrategy(vertices:__.has(string0, string1), edges:__.has(string2, P.gt(number0))))",
