This is an automated email from the ASF dual-hosted git repository. colegreer pushed a commit to branch TINKERPOP-3193 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit e8313223c786b7bc5f635935f4068eb55f151dd3 Author: Cole-Greer <[email protected]> AuthorDate: Mon Sep 22 15:06:13 2025 -0700 Migrate configuring from concrete steps to contracts, and add to appropriate step placeholders --- .../step/map/AbstractAddElementStepPlaceholder.java | 17 +++++++++++++++++ .../process/traversal/step/map/AddEdgeStartStep.java | 4 +--- .../process/traversal/step/map/AddEdgeStep.java | 4 +--- .../traversal/step/map/AddElementStepContract.java | 3 ++- .../traversal/step/map/AddVertexStartStep.java | 3 +-- .../process/traversal/step/map/AddVertexStep.java | 3 +-- .../traversal/step/sideEffect/AddPropertyStep.java | 2 +- .../step/sideEffect/AddPropertyStepContract.java | 4 +++- .../step/sideEffect/AddPropertyStepPlaceholder.java | 19 +++++++++++++++++++ 9 files changed, 46 insertions(+), 13 deletions(-) diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AbstractAddElementStepPlaceholder.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AbstractAddElementStepPlaceholder.java index 401ea0ece9..0e92a70587 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AbstractAddElementStepPlaceholder.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AbstractAddElementStepPlaceholder.java @@ -28,6 +28,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.Scoping; import org.apache.tinkerpop.gremlin.process.traversal.step.Writing; import org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep; import org.apache.tinkerpop.gremlin.process.traversal.step.util.GValueHelper; +import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters; import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.CallbackRegistry; import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event; import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement; @@ -54,6 +55,7 @@ public abstract class AbstractAddElementStepPlaceholder<S, E extends Element, X protected Map<Object, List<Object>> properties = new HashMap<>(); protected GValue<Object> elementId; protected Set<String> scopeKeys = new HashSet<>(); + protected Parameters withConfiguration = new Parameters(); public AbstractAddElementStepPlaceholder(final Traversal.Admin traversal, final String label) { this(traversal, label == null ? null : new ConstantTraversal<>(label)); @@ -131,6 +133,11 @@ public abstract class AbstractAddElementStepPlaceholder<S, E extends Element, X if (elementId != null) { step.setElementId(elementId.get()); } + for (Map.Entry<Object, List<Object>> entry : withConfiguration.getRaw().entrySet()) { + for (Object value : entry.getValue()) { + step.configure(entry.getKey(), value); + } + } TraversalHelper.copyLabels(this, step, false); } @@ -318,7 +325,17 @@ public abstract class AbstractAddElementStepPlaceholder<S, E extends Element, X clone.elementId = this.elementId; clone.scopeKeys = new HashSet<>(this.scopeKeys); + clone.withConfiguration = this.withConfiguration.clone(); return clone; } + @Override + public Parameters getParameters() { + return this.withConfiguration; + } + + @Override + public void configure(final Object... keyValues) { + this.withConfiguration.set(this, keyValues); + } } diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStartStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStartStep.java index 76f67e7d7d..b6a4a2fcbf 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStartStep.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStartStep.java @@ -28,7 +28,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.Traverser; import org.apache.tinkerpop.gremlin.process.traversal.TraverserGenerator; import org.apache.tinkerpop.gremlin.process.traversal.lambda.ConstantTraversal; -import org.apache.tinkerpop.gremlin.process.traversal.step.Configuring; import org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep; import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters; import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.CallbackRegistry; @@ -48,8 +47,7 @@ import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceVertex; /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ -public class AddEdgeStartStep extends AbstractStep<Edge, Edge> - implements AddEdgeStepContract<Edge>, Configuring { +public class AddEdgeStartStep extends AbstractStep<Edge, Edge> implements AddEdgeStepContract<Edge> { private static final String FROM = Graph.Hidden.hide("from"); private static final String TO = Graph.Hidden.hide("to"); diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java index d7c495f216..2fc4a3c8bf 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java @@ -25,7 +25,6 @@ import java.util.Set; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.Traverser; import org.apache.tinkerpop.gremlin.process.traversal.lambda.ConstantTraversal; -import org.apache.tinkerpop.gremlin.process.traversal.step.Configuring; import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters; import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.CallbackRegistry; import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event; @@ -44,8 +43,7 @@ import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph; * @author Marko A. Rodriguez (http://markorodriguez.com) * @author Stephen Mallette (http://stephen.genoprime.com) */ -public class AddEdgeStep<S> extends ScalarMapStep<S, Edge> - implements AddEdgeStepContract<S>, Configuring { +public class AddEdgeStep<S> extends ScalarMapStep<S, Edge> implements AddEdgeStepContract<S> { private static final String FROM = Graph.Hidden.hide("from"); private static final String TO = Graph.Hidden.hide("to"); diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddElementStepContract.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddElementStepContract.java index 7468a5ae69..ba60b1018a 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddElementStepContract.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddElementStepContract.java @@ -19,6 +19,7 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map; import org.apache.tinkerpop.gremlin.process.traversal.Step; +import org.apache.tinkerpop.gremlin.process.traversal.step.Configuring; import org.apache.tinkerpop.gremlin.process.traversal.step.GValue; import org.apache.tinkerpop.gremlin.process.traversal.step.PropertiesHolder; import org.apache.tinkerpop.gremlin.process.traversal.step.Scoping; @@ -26,7 +27,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent; import java.util.HashSet; -public interface AddElementStepContract<S, E> extends Step<S, E>, PropertiesHolder, TraversalParent, Scoping { +public interface AddElementStepContract<S, E> extends Step<S, E>, PropertiesHolder, TraversalParent, Scoping, Configuring { Object getLabel(); default GValue<?> getLabelAsGValue(){ diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java index db50f0c1e2..75c936f05a 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java @@ -27,7 +27,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.Traverser; import org.apache.tinkerpop.gremlin.process.traversal.TraverserGenerator; import org.apache.tinkerpop.gremlin.process.traversal.lambda.ConstantTraversal; -import org.apache.tinkerpop.gremlin.process.traversal.step.Configuring; import org.apache.tinkerpop.gremlin.process.traversal.step.Scoping; import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent; import org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep; @@ -47,7 +46,7 @@ import org.apache.tinkerpop.gremlin.structure.util.StringFactory; * @author Stephen Mallette (http://stephen.genoprime.com) */ public class AddVertexStartStep extends AbstractStep<Vertex, Vertex> - implements TraversalParent, Scoping, AddVertexStepContract<Vertex>, Configuring { + implements TraversalParent, Scoping, AddVertexStepContract<Vertex> { private Parameters internalParameters = new Parameters(); private Parameters withConfiguration = new Parameters(); diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java index f839402cd5..8bb827e001 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java @@ -21,7 +21,6 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.Traverser; import org.apache.tinkerpop.gremlin.process.traversal.lambda.ConstantTraversal; -import org.apache.tinkerpop.gremlin.process.traversal.step.Configuring; import org.apache.tinkerpop.gremlin.process.traversal.step.Scoping; import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent; import org.apache.tinkerpop.gremlin.process.traversal.step.Writing; @@ -45,7 +44,7 @@ import java.util.Set; * @author Stephen Mallette (http://stephen.genoprime.com) */ public class AddVertexStep<S> extends ScalarMapStep<S, Vertex> - implements Writing<Event.VertexAddedEvent>, TraversalParent, Scoping, AddVertexStepContract<S>, Configuring { + implements Writing<Event.VertexAddedEvent>, TraversalParent, Scoping, AddVertexStepContract<S> { private Parameters internalParameters = new Parameters(); private Parameters withConfiguration = new Parameters(); diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java index f757531c58..bb372081a0 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java @@ -48,7 +48,7 @@ import java.util.Set; * @author Marko A. Rodriguez (http://markorodriguez.com) */ public class AddPropertyStep<S extends Element> extends SideEffectStep<S> - implements AddPropertyStepContract<S>, Writing<Event.ElementPropertyChangedEvent>, Deleting<Event.ElementPropertyChangedEvent>, Configuring { + implements AddPropertyStepContract<S>, Writing<Event.ElementPropertyChangedEvent>, Deleting<Event.ElementPropertyChangedEvent> { private Parameters internalParameters = new Parameters(); private Parameters withConfiguration = new Parameters(); diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStepContract.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStepContract.java index f7f0691a92..c17226a6d4 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStepContract.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStepContract.java @@ -19,6 +19,7 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect; import org.apache.tinkerpop.gremlin.process.traversal.Step; +import org.apache.tinkerpop.gremlin.process.traversal.step.Configuring; import org.apache.tinkerpop.gremlin.process.traversal.step.Deleting; import org.apache.tinkerpop.gremlin.process.traversal.step.GValue; import org.apache.tinkerpop.gremlin.process.traversal.step.Scoping; @@ -30,7 +31,8 @@ import org.apache.tinkerpop.gremlin.structure.VertexProperty; import java.util.HashSet; -public interface AddPropertyStepContract<S> extends Step<S, S>, TraversalParent, Scoping, PropertiesHolder, Writing<Event.ElementPropertyChangedEvent>, Deleting<Event.ElementPropertyChangedEvent> { +public interface AddPropertyStepContract<S> extends Step<S, S>, TraversalParent, Scoping, PropertiesHolder, + Writing<Event.ElementPropertyChangedEvent>, Deleting<Event.ElementPropertyChangedEvent>, Configuring { VertexProperty.Cardinality getCardinality(); @Override diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStepPlaceholder.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStepPlaceholder.java index af3cb92846..846e85eb21 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStepPlaceholder.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStepPlaceholder.java @@ -24,6 +24,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.GValue; import org.apache.tinkerpop.gremlin.process.traversal.step.GValueHolder; import org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep; import org.apache.tinkerpop.gremlin.process.traversal.step.util.GValueHelper; +import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters; import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.CallbackRegistry; import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event; import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement; @@ -60,6 +61,8 @@ public class AddPropertyStepPlaceholder<S extends Element> extends AbstractStep< */ private Map<Object, List<Object>> properties = new HashMap<>(); + private Parameters withConfiguration = new Parameters(); + public AddPropertyStepPlaceholder(final Traversal.Admin traversal, final VertexProperty.Cardinality cardinality, final Object keyObject, final Object valueObject) { super(traversal); if (keyObject instanceof GValue) { @@ -145,6 +148,12 @@ public class AddPropertyStepPlaceholder<S extends Element> extends AbstractStep< } } + for (Map.Entry<Object, List<Object>> entry : withConfiguration.getRaw().entrySet()) { + for (Object value : entry.getValue()) { + step.configure(entry.getKey(), value); + } + } + TraversalHelper.copyLabels(this, step, false); return step; } @@ -223,4 +232,14 @@ public class AddPropertyStepPlaceholder<S extends Element> extends AbstractStep< public CallbackRegistry<Event.ElementPropertyChangedEvent> getMutatingCallbackRegistry() { throw new IllegalStateException("Cannot get mutating CallbackRegistry on GValue placeholder step"); } + + @Override + public void configure(final Object... keyValues) { + this.withConfiguration.set(this, keyValues); + } + + @Override + public Parameters getParameters() { + return withConfiguration; + } }
