You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2024/11/19 16:25:36 UTC
(tinkerpop) 13/21: wip - fixup after rebase
This is an automated email from the ASF dual-hosted git repository.
spmallette pushed a commit to branch gvalue
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit cefa8e11b79651fe5253c224803dcfb7e150d145
Author: Stephen Mallette <st...@amazon.com>
AuthorDate: Mon Aug 26 15:15:20 2024 -0400
wip - fixup after rebase
---
.../process/traversal/dsl/graph/GraphTraversal.java | 4 ++--
.../process/traversal/step/map/MergeElementStep.java | 14 +++++++++++---
.../gremlin/process/traversal/step/map/MergeStep.java | 19 ++++++++++++++-----
3 files changed, 27 insertions(+), 10 deletions(-)
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
index 375a9993b8..6342c981c6 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
@@ -590,13 +590,13 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
/**
* Merges the list traverser and list argument. Also known as union.
*
- * @return the traversal with an appended {@link TraversalMergeStep}.
+ * @return the traversal with an appended {@link MergeStep}.
* @see <a href="http://tinkerpop.apache.org/docs/${project.version}/reference/#merge-step" target="_blank">Reference Documentation - Merge Step</a>
* @since 3.7.3
*/
public default <E2> GraphTraversal<S, E2> merge(final GValue<Object> values) {
this.asAdmin().getBytecode().addStep(GraphTraversal.Symbols.merge, values);
- return this.asAdmin().addStep(new TraversalMergeStep<>(this.asAdmin(), values));
+ return this.asAdmin().addStep(new MergeStep<>(this.asAdmin(), values));
}
/**
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MergeElementStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MergeElementStep.java
index 44e954fb31..6835387c5e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MergeElementStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MergeElementStep.java
@@ -35,6 +35,8 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
import org.apache.tinkerpop.gremlin.process.traversal.lambda.ConstantTraversal;
import org.apache.tinkerpop.gremlin.process.traversal.lambda.IdentityTraversal;
import org.apache.tinkerpop.gremlin.process.traversal.step.Deleting;
+import org.apache.tinkerpop.gremlin.process.traversal.step.GType;
+import org.apache.tinkerpop.gremlin.process.traversal.step.GValue;
import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent;
import org.apache.tinkerpop.gremlin.process.traversal.step.Writing;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters;
@@ -80,6 +82,11 @@ public abstract class MergeElementStep<S, E, C> extends FlatMapStep<S, E>
validate(mergeMap, false);
}
+ public MergeElementStep(final Traversal.Admin traversal, final boolean isStart, final GValue<Map> mergeMap) {
+ this(traversal, isStart, new ConstantTraversal<>(mergeMap));
+ validate(mergeMap.get(), false);
+ }
+
public MergeElementStep(final Traversal.Admin traversal, final boolean isStart,
final Traversal.Admin mergeTraversal) {
super(traversal);
@@ -279,7 +286,7 @@ public abstract class MergeElementStep<S, E, C> extends FlatMapStep<S, E>
op, allowedTokens, k));
}
if (k == T.label) {
- if (!(v instanceof String)) {
+ if (!(GValue.instanceOf(v, GType.STRING))) {
throw new IllegalArgumentException(String.format(
"%s() and option(onCreate) args expect T.label value to be of String - found: %s", op,
v.getClass().getSimpleName()));
@@ -318,7 +325,8 @@ public abstract class MergeElementStep<S, E, C> extends FlatMapStep<S, E>
* null Map == empty Map
*/
protected Map materializeMap(final Traverser.Admin<S> traverser, Traversal.Admin<S, ?> mapTraversal) {
- Map map = (Map) TraversalUtil.apply(traverser, mapTraversal);
+ final Object o = TraversalUtil.apply(traverser, mapTraversal);
+ Map map = GValue.getFrom(o);
// PartitionStrategy uses parameters as a mechanism for setting the partition key. trying to be as specific
// as possible here wrt parameters usage to avoid misuse
@@ -360,7 +368,7 @@ public abstract class MergeElementStep<S, E, C> extends FlatMapStep<S, E>
return id != null ? graph.traversal().V(id) : graph.traversal().V();
}
- protected GraphTraversal searchVerticesLabelConstraint(GraphTraversal t, final String label) {
+ protected GraphTraversal searchVerticesLabelConstraint(final GraphTraversal t, final String label) {
return label != null ? t.hasLabel(label) : t;
}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MergeStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MergeStep.java
index d11fdf0894..e40d11c71b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MergeStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MergeStep.java
@@ -20,6 +20,7 @@ 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.GValue;
import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
import org.apache.tinkerpop.gremlin.process.traversal.util.ListFunction;
@@ -40,7 +41,7 @@ import java.util.Set;
*/
public final class MergeStep<S, E> extends ScalarMapStep<S, E> implements TraversalParent, ListFunction {
private Traversal.Admin<S, E> valueTraversal;
- private Object parameterItems;
+ private GValue<Object> parameterItems;
public MergeStep(final Traversal.Admin traversal, final Object values) {
super(traversal);
@@ -48,10 +49,18 @@ public final class MergeStep<S, E> extends ScalarMapStep<S, E> implements Traver
if (values instanceof Traversal) {
valueTraversal = integrateChild(((Traversal<S, E>) values).asAdmin());
} else {
- parameterItems = values;
+ parameterItems = GValue.of(values);;
}
}
+ public Traversal.Admin<S, E> getValueTraversal() {
+ return valueTraversal;
+ }
+
+ public GValue<Object> getParameterItems() {
+ return parameterItems;
+ }
+
@Override
public String getStepName() { return "merge"; }
@@ -61,7 +70,7 @@ public final class MergeStep<S, E> extends ScalarMapStep<S, E> implements Traver
final Map mapA = (incoming instanceof Map) ? (Map) incoming : null;
if (mapA != null) {
- final Object mapB = (valueTraversal != null) ? TraversalUtil.apply(traverser, valueTraversal) : parameterItems;
+ final Object mapB = (valueTraversal != null) ? TraversalUtil.apply(traverser, valueTraversal) : parameterItems.get();
if (!(mapB instanceof Map)) {
throw new IllegalArgumentException(
String.format(
@@ -76,13 +85,13 @@ public final class MergeStep<S, E> extends ScalarMapStep<S, E> implements Traver
} else {
final Collection listA = convertTraverserToCollection(traverser);
- if (parameterItems instanceof Map) {
+ if (parameterItems != null && parameterItems.get() instanceof Map) {
throw new IllegalArgumentException(getStepName() + " step type mismatch: expected argument to be Iterable but got Map");
}
final Collection listB =
(null != valueTraversal)
? convertTraversalToCollection(traverser, valueTraversal)
- : convertArgumentToCollection(parameterItems);
+ : convertArgumentToCollection(parameterItems.get());
final Set elements = new HashSet();