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;
+    }
 }

Reply via email to