This is an automated email from the ASF dual-hosted git repository.
Cole-Greer pushed a commit to branch 3.8-dev
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
The following commit(s) were added to refs/heads/3.8-dev by this push:
new bec044ea00 CTR Add Configuring to GraphStepPlaceholder and
VertexStepPlaceholder
bec044ea00 is described below
commit bec044ea00ec52759de2e9499437eb4f073f69cb
Author: Cole Greer <[email protected]>
AuthorDate: Tue Apr 28 10:28:10 2026 -0700
CTR Add Configuring to GraphStepPlaceholder and VertexStepPlaceholder
---
CHANGELOG.asciidoc | 2 ++
.../process/traversal/step/map/GraphStep.java | 3 +--
.../traversal/step/map/GraphStepContract.java | 3 ++-
.../traversal/step/map/GraphStepPlaceholder.java | 20 ++++++++++++++++++--
.../process/traversal/step/map/VertexStep.java | 3 +--
.../traversal/step/map/VertexStepContract.java | 3 ++-
.../traversal/step/map/VertexStepPlaceholder.java | 20 ++++++++++++++++++--
7 files changed, 44 insertions(+), 10 deletions(-)
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 3d9c2024a6..a897e4b052 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -27,6 +27,8 @@
image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
This release also includes changes from prior 3.7.x releases.
+* Add missing `Configuring` interface to `GraphStepPlaceholder` and
`VertexStepPlaceholder`
+
[[release-3-8-1]]
=== TinkerPop 3.8.1 (Release Date: April 1, 2026)
diff --git
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java
index b0b7daa0c2..7e64cd391a 100644
---
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java
+++
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java
@@ -24,7 +24,6 @@ import
org.apache.tinkerpop.gremlin.process.traversal.Contains;
import org.apache.tinkerpop.gremlin.process.traversal.Step;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-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.util.AbstractStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.HasContainer;
@@ -49,7 +48,7 @@ import java.util.function.Supplier;
* @author Marko A. Rodriguez (http://markorodriguez.com)
* @author Pieter Martin
*/
-public class GraphStep<S, E extends Element> extends AbstractStep<S, E>
implements Configuring, GraphStepContract<S, E> {
+public class GraphStep<S, E extends Element> extends AbstractStep<S, E>
implements GraphStepContract<S, E> {
protected Parameters parameters = new Parameters();
protected final Class<E> returnClass;
diff --git
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStepContract.java
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStepContract.java
index 901045dd66..a7f25303bf 100644
---
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStepContract.java
+++
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStepContract.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.GraphComputing;
import org.apache.tinkerpop.gremlin.structure.Element;
@@ -27,7 +28,7 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.List;
-public interface GraphStepContract<S, E extends Element> extends Step<S, E>,
GraphComputing, AutoCloseable {
+public interface GraphStepContract<S, E extends Element> extends Step<S, E>,
GraphComputing, Configuring, AutoCloseable {
/**
* Concrete implementations of this contract that can be referenced as
TinkerPop implementations.
diff --git
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStepPlaceholder.java
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStepPlaceholder.java
index f8d25e0213..9f909e6be5 100644
---
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStepPlaceholder.java
+++
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStepPlaceholder.java
@@ -23,6 +23,7 @@ import
org.apache.tinkerpop.gremlin.process.traversal.Traverser;
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.Parameters;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
import org.apache.tinkerpop.gremlin.structure.Edge;
import org.apache.tinkerpop.gremlin.structure.Element;
@@ -37,6 +38,7 @@ import java.util.Set;
public class GraphStepPlaceholder<S, E extends Element> extends
AbstractStep<S, E> implements GValueHolder<S, E>, GraphStepContract<S, E> {
+ protected Parameters withConfiguration = new Parameters();
protected final Class<E> returnClass;
protected GValue<?>[] ids;
private final boolean isStart;
@@ -121,12 +123,13 @@ public class GraphStepPlaceholder<S, E extends Element>
extends AbstractStep<S,
return isStart == that.isStart &&
onGraphComputer == that.onGraphComputer &&
Objects.equals(returnClass, that.returnClass) &&
- Objects.deepEquals(ids, that.ids);
+ Objects.deepEquals(ids, that.ids) &&
+ Objects.equals(withConfiguration, that.withConfiguration);
}
@Override
public int hashCode() {
- return Objects.hash(super.hashCode(), returnClass,
Arrays.hashCode(ids), isStart, onGraphComputer);
+ return Objects.hash(super.hashCode(), returnClass,
Arrays.hashCode(ids), isStart, onGraphComputer, withConfiguration);
}
@Override
@@ -138,6 +141,8 @@ public class GraphStepPlaceholder<S, E extends Element>
extends AbstractStep<S,
}
TraversalHelper.copyLabels(this, step, false);
+ this.withConfiguration.getRaw().forEach((key, values) ->
+ values.forEach(value -> step.configure(key, value)));
return step;
}
@@ -175,10 +180,21 @@ public class GraphStepPlaceholder<S, E extends Element>
extends AbstractStep<S,
public GraphStepPlaceholder<S, E> clone() {
GraphStepPlaceholder<S, E> clone = (GraphStepPlaceholder<S, E>)
super.clone();
clone.onGraphComputer = this.onGraphComputer;
+ clone.withConfiguration = this.withConfiguration.clone();
clone.ids = new GValue<?>[this.ids.length];
for (int i = 0; i < this.ids.length; i++) {
clone.ids[i] = this.ids[i].clone();
}
return clone;
}
+
+ @Override
+ public void configure(final Object... keyValues) {
+ this.withConfiguration.set(null, keyValues);
+ }
+
+ @Override
+ public Parameters getParameters() {
+ return this.withConfiguration;
+ }
}
diff --git
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexStep.java
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexStep.java
index c79df62382..270cc28ff3 100644
---
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexStep.java
+++
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexStep.java
@@ -20,7 +20,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.step.Configuring;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters;
import
org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
import org.apache.tinkerpop.gremlin.structure.Direction;
@@ -44,7 +43,7 @@ import java.util.stream.Collectors;
*
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-public class VertexStep<E extends Element> extends FlatMapStep<Vertex, E>
implements Configuring, VertexStepContract<E> {
+public class VertexStep<E extends Element> extends FlatMapStep<Vertex, E>
implements VertexStepContract<E> {
protected Parameters parameters = new Parameters();
private final String[] edgeLabels;
diff --git
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexStepContract.java
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexStepContract.java
index 1fc1d2eb48..19bf6df81e 100644
---
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexStepContract.java
+++
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexStepContract.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.traverser.TraverserRequirement;
import org.apache.tinkerpop.gremlin.structure.Direction;
@@ -29,7 +30,7 @@ import java.util.Arrays;
import java.util.List;
import java.util.Set;
-public interface VertexStepContract<E extends Element> extends Step<Vertex,
E>, AutoCloseable {
+public interface VertexStepContract<E extends Element> extends Step<Vertex,
E>, Configuring, AutoCloseable {
/**
* Concrete implementations of this contract that can be referenced as
TinkerPop implementations.
diff --git
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexStepPlaceholder.java
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexStepPlaceholder.java
index 9e4afff771..49a09a3f4e 100644
---
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexStepPlaceholder.java
+++
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexStepPlaceholder.java
@@ -23,6 +23,7 @@ import
org.apache.tinkerpop.gremlin.process.traversal.Traverser;
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.Parameters;
import
org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
import org.apache.tinkerpop.gremlin.structure.Direction;
@@ -48,6 +49,7 @@ import java.util.stream.Collectors;
*/
public class VertexStepPlaceholder<E extends Element> extends
FlatMapStep<Vertex, E> implements GValueHolder<Vertex, E>,
VertexStepContract<E> {
+ protected Parameters withConfiguration = new Parameters();
private GValue<String>[] edgeLabels;
private Direction direction;
private final Class<E> returnClass;
@@ -124,18 +126,20 @@ public class VertexStepPlaceholder<E extends Element>
extends FlatMapStep<Vertex
VertexStepPlaceholder<?> that = (VertexStepPlaceholder<?>) o;
return Objects.equals(sortEdgeLabels(edgeLabels),
sortEdgeLabels(that.edgeLabels)) &&
direction == that.direction &&
- Objects.equals(returnClass, that.returnClass);
+ Objects.equals(returnClass, that.returnClass) &&
+ Objects.equals(withConfiguration, that.withConfiguration);
}
@Override
public int hashCode() {
- return Objects.hash(super.hashCode(), sortEdgeLabels(edgeLabels),
direction, returnClass);
+ return Objects.hash(super.hashCode(), sortEdgeLabels(edgeLabels),
direction, returnClass, withConfiguration);
}
@Override
public VertexStepPlaceholder<E> clone() {
VertexStepPlaceholder<E> clone = (VertexStepPlaceholder<E>)
super.clone();
clone.direction = this.direction;
+ clone.withConfiguration = this.withConfiguration.clone();
clone.edgeLabels = new GValue[this.edgeLabels.length];
for (int i = 0; i < this.edgeLabels.length; i++) {
clone.edgeLabels[i] = this.edgeLabels[i].clone();
@@ -154,6 +158,8 @@ public class VertexStepPlaceholder<E extends Element>
extends FlatMapStep<Vertex
.map(String.class::cast)
.toArray(String[]::new));
TraversalHelper.copyLabels(this, step, false);
+ this.withConfiguration.getRaw().forEach((key, values) ->
+ values.forEach(value -> step.configure(key, value)));
return step;
}
@@ -181,6 +187,16 @@ public class VertexStepPlaceholder<E extends Element>
extends FlatMapStep<Vertex
closeIterator();
}
+ @Override
+ public void configure(final Object... keyValues) {
+ this.withConfiguration.set(null, keyValues);
+ }
+
+ @Override
+ public Parameters getParameters() {
+ return this.withConfiguration;
+ }
+
/**
* Helper method for hashCode() and equals() as edgeLabel's order should
not influence equality.
* in("x", "y") and in("y", "x") must be considered equal.