You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by xi...@apache.org on 2026/06/25 17:11:44 UTC
(tinkerpop) 06/06: remove dead edge code
This is an automated email from the ASF dual-hosted git repository.
xiazcy pushed a commit to branch multi-label-experiment
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 93b3b0c9cc90922c1272513ac700e9538b5485fe
Author: Yang Xia <xi...@gmail.com>
AuthorDate: Thu Jun 25 10:11:15 2026 -0700
remove dead edge code
---
.../traversal/dsl/graph/GraphTraversal.java | 23 -----
.../traversal/dsl/graph/GraphTraversalSource.java | 25 -----
.../gremlin/process/traversal/dsl/graph/__.java | 7 --
.../step/map/AbstractAddEdgeStepPlaceholder.java | 5 -
.../traversal/step/map/AddEdgeStartStep.java | 32 +-----
.../step/map/AddEdgeStartStepPlaceholder.java | 10 +-
.../process/traversal/step/map/AddEdgeStep.java | 32 +-----
.../traversal/step/map/AddEdgeStepPlaceholder.java | 10 +-
.../process/traversal/step/map/MergeEdgeStep.java | 111 +++------------------
.../structure/io/graphml/GraphMLWriter.java | 6 +-
.../io/graphson/GraphSONSerializersV1.java | 8 +-
.../io/graphson/GraphSONSerializersV2.java | 8 +-
.../io/graphson/GraphSONSerializersV3.java | 8 +-
.../structure/io/gryo/GryoSerializersV3.java | 10 +-
14 files changed, 39 insertions(+), 256 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 b402e506a8..3e0a847154 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
@@ -1665,29 +1665,6 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
return this.asAdmin().addStep(step);
}
- /**
- * Multi-label edge creation.
- *
- * @param label1 the first label
- * @param label2 the second label
- * @param moreLabels additional labels
- * @return the traversal with the {@link AddEdgeStepContract} added
- * @since 4.0.0
- */
- public default GraphTraversal<S, Edge> addE(final String label1, final String label2, final String... moreLabels) {
- if (null == label1) throw new IllegalArgumentException("edgeLabel cannot be null");
- if (null == label2) throw new IllegalArgumentException("edgeLabel cannot be null");
- for (final String l : moreLabels) {
- if (null == l) throw new IllegalArgumentException("edgeLabel cannot be null");
- }
- this.asAdmin().getGremlinLang().addStep(Symbols.addE, label1, label2, moreLabels);
- final Set<String> allLabels = new LinkedHashSet<>();
- allLabels.add(label1);
- allLabels.add(label2);
- Collections.addAll(allLabels, moreLabels);
- return this.asAdmin().addStep(new AddEdgeStepPlaceholder<>(this.asAdmin(), allLabels));
- }
-
/**
* Provide {@code from()}-modulation to respective steps.
*
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
index bea323f252..ce5286de06 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
@@ -432,31 +432,6 @@ public class GraphTraversalSource implements TraversalSource {
return traversal.addStep(new AddEdgeStartStepPlaceholder(traversal, label));
}
- /**
- * Spawns a {@link GraphTraversal} by adding an edge with multiple labels.
- *
- * @param label1 the first label
- * @param label2 the second label
- * @param moreLabels additional labels
- * @return the traversal with the edge added
- * @since 4.0.0
- */
- public GraphTraversal<Edge, Edge> addE(final String label1, final String label2, final String... moreLabels) {
- if (null == label1) throw new IllegalArgumentException("edgeLabel cannot be null");
- if (null == label2) throw new IllegalArgumentException("edgeLabel cannot be null");
- for (final String l : moreLabels) {
- if (null == l) throw new IllegalArgumentException("edgeLabel cannot be null");
- }
- final GraphTraversalSource clone = this.clone();
- clone.gremlinLang.addStep(GraphTraversal.Symbols.addE, label1, label2, moreLabels);
- final GraphTraversal.Admin<Edge, Edge> traversal = new DefaultGraphTraversal<>(clone);
- final Set<String> allLabels = new LinkedHashSet<>();
- allLabels.add(label1);
- allLabels.add(label2);
- Collections.addAll(allLabels, moreLabels);
- return traversal.addStep(new AddEdgeStartStepPlaceholder(traversal, allLabels));
- }
-
/**
* Spawns a {@link GraphTraversal} by doing a merge (i.e. upsert) style operation for an {@link Vertex} using a
* {@code Map} as an argument. The {@code Map} represents search criteria and will match each of the supplied
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
index 506bc4e91f..421a1f33ad 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
@@ -756,13 +756,6 @@ public class __ {
return __.<A>start().addE(edgeLabel);
}
- /**
- * @see GraphTraversal#addE(String, String, String...)
- */
- public static <A> GraphTraversal<A, Edge> addE(final String label1, final String label2, final String... moreLabels) {
- return __.<A>start().addE(label1, label2, moreLabels);
- }
-
/**
* @see GraphTraversal#addE(GValue)
*/
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AbstractAddEdgeStepPlaceholder.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AbstractAddEdgeStepPlaceholder.java
index 95d377c317..fb1ce7e8c9 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AbstractAddEdgeStepPlaceholder.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AbstractAddEdgeStepPlaceholder.java
@@ -29,7 +29,6 @@ import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceVertex;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
-import java.util.Set;
public abstract class AbstractAddEdgeStepPlaceholder<S> extends AbstractAddElementStepPlaceholder<S, Edge, Event.EdgeAddedEvent> implements AddEdgeStepContract<S> {
protected Traversal.Admin<?, ?> from;
@@ -43,10 +42,6 @@ public abstract class AbstractAddEdgeStepPlaceholder<S> extends AbstractAddEleme
super(traversal, label);
}
- public AbstractAddEdgeStepPlaceholder(Traversal.Admin traversal, Set<String> labels) {
- super(traversal, labels);
- }
-
public AbstractAddEdgeStepPlaceholder(Traversal.Admin traversal, Traversal.Admin<S, String> labelTraversal) {
super(traversal, labelTraversal);
}
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 99ccd7ce9e..628587a509 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
@@ -19,10 +19,7 @@
package org.apache.tinkerpop.gremlin.process.traversal.step.map;
-import java.util.Arrays;
import java.util.Collections;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -70,15 +67,6 @@ public class AddEdgeStartStep extends AbstractStep<Edge, Edge> implements AddEdg
this.internalParameters.set(this, T.label, edgeLabelTraversal);
}
- public AddEdgeStartStep(final Traversal.Admin traversal, final Set<String> labels) {
- super(traversal);
- if (labels == null || labels.isEmpty()) {
- this.internalParameters.set(this, T.label, Edge.DEFAULT_LABEL);
- } else {
- this.internalParameters.set(this, T.label, labels);
- }
- }
-
@Override
public <S, E> List<Traversal.Admin<S, E>> getLocalChildren() {
return this.internalParameters.getTraversals();
@@ -133,21 +121,7 @@ public class AddEdgeStartStep extends AbstractStep<Edge, Edge> implements AddEdg
// a dead traverser to trigger the traversal
final Traverser.Admin traverser = generator.generate(1, (Step) this, 1);
- final Object labelParam = this.internalParameters.get(traverser, T.label, () -> Edge.DEFAULT_LABEL).get(0);
- final String edgeLabel;
- final Set<String> additionalLabels;
- if (labelParam instanceof Set) {
- final Set<String> labelSet = (Set<String>) labelParam;
- final Iterator<String> iter = labelSet.iterator();
- edgeLabel = iter.next();
- additionalLabels = new LinkedHashSet<>();
- while (iter.hasNext()) {
- additionalLabels.add(iter.next());
- }
- } else {
- edgeLabel = (String) labelParam;
- additionalLabels = Collections.emptySet();
- }
+ final String edgeLabel = (String) this.internalParameters.get(traverser, T.label, () -> Edge.DEFAULT_LABEL).get(0);
// FROM/TO must be set and must be vertices
Object theTo = this.internalParameters.get(traverser, TO, () -> null).get(0);
@@ -191,10 +165,6 @@ public class AddEdgeStartStep extends AbstractStep<Edge, Edge> implements AddEdg
}
final Edge edge = fromVertex.addEdge(edgeLabel, toVertex, this.internalParameters.getKeyValues(traverser, TO, FROM, T.label));
- if (!additionalLabels.isEmpty()) {
- final String[] extra = additionalLabels.toArray(new String[0]);
- edge.addLabel(extra[0], Arrays.copyOfRange(extra, 1, extra.length));
- }
EventUtil.registerEdgeCreation(callbackRegistry, getTraversal(), edge);
return generator.generate(edge, this, 1L);
} else
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStartStepPlaceholder.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStartStepPlaceholder.java
index bbf4d429f3..6042823e17 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStartStepPlaceholder.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStartStepPlaceholder.java
@@ -24,8 +24,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.lambda.GValueConstantTrave
import org.apache.tinkerpop.gremlin.process.traversal.step.GValue;
import org.apache.tinkerpop.gremlin.structure.Edge;
-import java.util.Set;
-
public class AddEdgeStartStepPlaceholder extends AbstractAddEdgeStepPlaceholder<Edge> {
public AddEdgeStartStepPlaceholder(final Traversal.Admin traversal, final String edgeLabel) {
@@ -42,16 +40,10 @@ public class AddEdgeStartStepPlaceholder extends AbstractAddEdgeStepPlaceholder<
(Traversal.Admin<Edge, String>) edgeLabelTraversal);
}
- public AddEdgeStartStepPlaceholder(final Traversal.Admin traversal, final Set<String> labels) {
- super(traversal, labels);
- }
-
@Override
public AddEdgeStartStep asConcreteStep() {
AddEdgeStartStep step;
- if (label instanceof Set) {
- step = new AddEdgeStartStep(traversal, (Set<String>) label);
- } else if (label instanceof Traversal) {
+ if (label instanceof Traversal) {
step = new AddEdgeStartStep(traversal, ((Traversal<?, String>) label).asAdmin());
} else if (label instanceof GValue) {
step = new AddEdgeStartStep(traversal, ((GValue<String>) label).get());
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 7073a7e80f..753d9ae993 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
@@ -18,10 +18,7 @@
*/
package org.apache.tinkerpop.gremlin.process.traversal.step.map;
-import java.util.Arrays;
import java.util.Collections;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -65,15 +62,6 @@ public class AddEdgeStep<S> extends ScalarMapStep<S, Edge> implements AddEdgeSte
this.internalParameters.set(this, T.label, edgeLabelTraversal);
}
- public AddEdgeStep(final Traversal.Admin traversal, final Set<String> labels) {
- super(traversal);
- if (labels == null || labels.isEmpty()) {
- this.internalParameters.set(this, T.label, Edge.DEFAULT_LABEL);
- } else {
- this.internalParameters.set(this, T.label, labels);
- }
- }
-
@Override
public <S, E> List<Traversal.Admin<S, E>> getLocalChildren() {
return this.internalParameters.getTraversals();
@@ -121,21 +109,7 @@ public class AddEdgeStep<S> extends ScalarMapStep<S, Edge> implements AddEdgeSte
@Override
protected Edge map(final Traverser.Admin<S> traverser) {
- final Object labelParam = this.internalParameters.get(traverser, T.label, () -> Edge.DEFAULT_LABEL).get(0);
- final String edgeLabel;
- final Set<String> additionalLabels;
- if (labelParam instanceof Set) {
- final Set<String> labelSet = (Set<String>) labelParam;
- final Iterator<String> iter = labelSet.iterator();
- edgeLabel = iter.next();
- additionalLabels = new LinkedHashSet<>();
- while (iter.hasNext()) {
- additionalLabels.add(iter.next());
- }
- } else {
- edgeLabel = (String) labelParam;
- additionalLabels = Collections.emptySet();
- }
+ final String edgeLabel = this.internalParameters.get(traverser, T.label, () -> Edge.DEFAULT_LABEL).get(0);
Vertex toVertex = getAdjacentVertex(this.internalParameters, TO, traverser, edgeLabel);
Vertex fromVertex = getAdjacentVertex(this.internalParameters, FROM, traverser, edgeLabel);
@@ -161,10 +135,6 @@ public class AddEdgeStep<S> extends ScalarMapStep<S, Edge> implements AddEdgeSte
}
final Edge edge = fromVertex.addEdge(edgeLabel, toVertex, this.internalParameters.getKeyValues(traverser, TO, FROM, T.label));
- if (!additionalLabels.isEmpty()) {
- final String[] extra = additionalLabels.toArray(new String[0]);
- edge.addLabel(extra[0], Arrays.copyOfRange(extra, 1, extra.length));
- }
EventUtil.registerEdgeCreation(callbackRegistry, getTraversal(), edge);
return edge;
}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStepPlaceholder.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStepPlaceholder.java
index a992a1314a..a6a5a4466a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStepPlaceholder.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStepPlaceholder.java
@@ -24,8 +24,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.lambda.GValueConstantTrave
import org.apache.tinkerpop.gremlin.process.traversal.step.GValue;
import org.apache.tinkerpop.gremlin.structure.Edge;
-import java.util.Set;
-
public class AddEdgeStepPlaceholder<S> extends AbstractAddEdgeStepPlaceholder<S> {
public AddEdgeStepPlaceholder(final Traversal.Admin traversal, final String edgeLabel) {
@@ -41,16 +39,10 @@ public class AddEdgeStepPlaceholder<S> extends AbstractAddEdgeStepPlaceholder<S>
new ConstantTraversal<>(Edge.DEFAULT_LABEL) : edgeLabelTraversal);
}
- public AddEdgeStepPlaceholder(final Traversal.Admin traversal, final Set<String> labels) {
- super(traversal, labels);
- }
-
@Override
public AddEdgeStep<S> asConcreteStep() {
AddEdgeStep<S> step;
- if (label instanceof Set) {
- step = new AddEdgeStep<>(traversal, (Set<String>) label);
- } else if (label instanceof Traversal) {
+ if (label instanceof Traversal) {
step = new AddEdgeStep<>(traversal, ((Traversal<S, String>) label).asAdmin());
} else if (label instanceof GValue) {
step = new AddEdgeStep<>(traversal, ((GValue<String>) label).get());
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MergeEdgeStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MergeEdgeStep.java
index 9bc4e59f78..3535143192 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MergeEdgeStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MergeEdgeStep.java
@@ -20,7 +20,6 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
@@ -167,21 +166,17 @@ public class MergeEdgeStep<S> extends MergeElementStep<S, Edge, Map<Object, Obje
final Graph graph = getGraph();
final Object edgeId = search.get(T.id);
- final Object labelValue = search.get(T.label);
+ final String edgeLabel = (String) search.get(T.label);
final Object fromId = search.get(Direction.OUT);
final Object toId = search.get(Direction.IN);
- // Extract a single label string for use in outE(label)/inE(label) calls.
- // For multi-label (collection), we use hasLabel() chaining instead.
- final String singleLabel = labelValue instanceof String ? (String) labelValue : null;
- final boolean hasLabelConstraint = labelValue != null;
-
GraphTraversal t;
if (edgeId != null) {
// g.E(eid).hasLabel(label).where(outV().hasId(fromId)).where(inV().hasId(toId));
t = graph.traversal().E(edgeId);
- t = applyLabelConstraint(t, labelValue);
+ if (edgeLabel != null)
+ t = t.hasLabel(edgeLabel);
if (fromId != null)
t = t.where(outV().hasId(fromId));
if (toId != null)
@@ -191,14 +186,10 @@ public class MergeEdgeStep<S> extends MergeElementStep<S, Edge, Map<Object, Obje
// g.V(fromId).outE(label).where(inV().hasId(toId));
t = graph.traversal().V(fromId);
- if (singleLabel != null)
- t = t.outE(singleLabel);
- else {
+ if (edgeLabel != null)
+ t = t.outE(edgeLabel);
+ else
t = t.outE();
- // apply multi-label constraint after outE() if it's a collection
- if (hasLabelConstraint && singleLabel == null)
- t = applyLabelConstraint(t, labelValue);
- }
if (toId != null)
t = t.where(inV().hasId(toId));
@@ -206,20 +197,17 @@ public class MergeEdgeStep<S> extends MergeElementStep<S, Edge, Map<Object, Obje
// g.V(toId).inE(edgeLabel);
t = graph.traversal().V(toId);
- if (singleLabel != null)
- t = t.inE(singleLabel);
- else {
+ if (edgeLabel != null)
+ t = t.inE(edgeLabel);
+ else
t = t.inE();
- // apply multi-label constraint after inE() if it's a collection
- if (hasLabelConstraint && singleLabel == null)
- t = applyLabelConstraint(t, labelValue);
- }
} else {
// g.E().hasLabel(label)
t = graph.traversal().E();
- t = applyLabelConstraint(t, labelValue);
+ if (edgeLabel != null)
+ t = t.hasLabel(edgeLabel);
}
@@ -234,26 +222,6 @@ public class MergeEdgeStep<S> extends MergeElementStep<S, Edge, Map<Object, Obje
return CloseableIterator.of(t);
}
- /**
- * Apply label constraint(s) to the traversal. Supports both single String labels and
- * Collection labels with AND semantics (edge must have ALL specified labels).
- */
- protected GraphTraversal applyLabelConstraint(GraphTraversal t, final Object labelValue) {
- if (labelValue == null) {
- return t;
- }
- if (labelValue instanceof String) {
- return t.hasLabel((String) labelValue);
- } else if (labelValue instanceof java.util.Collection) {
- // Multi-label: AND semantics - must have ALL specified labels
- for (final Object label : (java.util.Collection<?>) labelValue) {
- t = t.hasLabel((String) label);
- }
- return t;
- }
- return t;
- }
-
protected Map<?,?> resolveVertices(final Map map, final Traverser.Admin<S> traverser) {
resolveVertex(Merge.outV, Direction.OUT, map, traverser, outVTraversal);
resolveVertex(Merge.inV, Direction.IN, map, traverser, inVTraversal);
@@ -311,32 +279,14 @@ public class MergeEdgeStep<S> extends MergeElementStep<S, Edge, Map<Object, Obje
traverser.set((S) e);
// assume good input from GraphTraversal - folks might drop in a T here even though it is immutable
- final Map onMatchMap = materializeMap(traverser, onMatchTraversal);
+ final Map<String, ?> onMatchMap = materializeMap(traverser, onMatchTraversal);
validateMapInput(onMatchMap, true);
onMatchMap.forEach((key, value) -> {
- // Handle T.label for multi-label support: append only (addLabel semantics)
- // No label removal via onMatch — follows cardinality exceptions
- if (T.label.equals(key) || T.label.getAccessor().equals(key)) {
- if (value instanceof String) {
- e.addLabel((String) value);
- } else if (value instanceof java.util.Collection) {
- final java.util.Collection<?> labels = (java.util.Collection<?>) value;
- if (!labels.isEmpty()) {
- final String[] labelArray = labels.stream()
- .map(l -> (String) l)
- .toArray(String[]::new);
- e.addLabel(labelArray[0],
- Arrays.copyOfRange(labelArray, 1, labelArray.length));
- }
- }
- return;
- }
-
// trigger callbacks for eventing - in this case, it's a EdgePropertyChangedEvent. if there's no
// registry/callbacks then just set the property
- EventUtil.registerEdgePropertyChange(callbackRegistry, getTraversal(), e, (String) key, value);
- e.property((String) key, value);
+ EventUtil.registerEdgePropertyChange(callbackRegistry, getTraversal(), e, key, value);
+ e.property(key, value);
});
});
@@ -367,30 +317,7 @@ public class MergeEdgeStep<S> extends MergeElementStep<S, Edge, Map<Object, Obje
final Vertex fromV = resolveVertex(onCreateMap.get(Direction.OUT));
final Vertex toV = resolveVertex(onCreateMap.get(Direction.IN));
- final Object labelValue = onCreateMap.getOrDefault(T.label, Edge.DEFAULT_LABEL);
- final String primaryLabel;
- final java.util.Collection<String> additionalLabels;
-
- if (labelValue instanceof String) {
- primaryLabel = (String) labelValue;
- additionalLabels = Collections.emptyList();
- } else if (labelValue instanceof java.util.Collection) {
- final java.util.Collection<?> labelCollection = (java.util.Collection<?>) labelValue;
- if (labelCollection.isEmpty()) {
- primaryLabel = Edge.DEFAULT_LABEL;
- additionalLabels = Collections.emptyList();
- } else {
- final Iterator<?> iter = labelCollection.iterator();
- primaryLabel = (String) iter.next();
- additionalLabels = new ArrayList<>();
- while (iter.hasNext()) {
- additionalLabels.add((String) iter.next());
- }
- }
- } else {
- primaryLabel = Edge.DEFAULT_LABEL;
- additionalLabels = Collections.emptyList();
- }
+ final String label = (String) onCreateMap.getOrDefault(T.label, Edge.DEFAULT_LABEL);
final List<Object> properties = new ArrayList<>();
@@ -402,13 +329,7 @@ public class MergeEdgeStep<S> extends MergeElementStep<S, Edge, Map<Object, Obje
properties.add(e.getValue());
}
- final Edge edge = fromV.addEdge(primaryLabel, toV, properties.toArray());
-
- // add any additional labels from a multi-label collection
- if (!additionalLabels.isEmpty()) {
- final String[] extraLabels = additionalLabels.toArray(new String[0]);
- edge.addLabel(extraLabels[0], Arrays.copyOfRange(extraLabels, 1, extraLabels.length));
- }
+ final Edge edge = fromV.addEdge(label, toV, properties.toArray());
// trigger callbacks for eventing - in this case, it's a VertexAddedEvent
EventUtil.registerEdgeCreationWithGenericEventRegistry(callbackRegistry, getTraversal(), edge);
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphml/GraphMLWriter.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphml/GraphMLWriter.java
index 0c75805f3a..cae0f9c987 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphml/GraphMLWriter.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphml/GraphMLWriter.java
@@ -266,7 +266,7 @@ public final class GraphMLWriter implements GraphWriter {
writer.writeStartElement(GraphMLTokens.DATA);
writer.writeAttribute(GraphMLTokens.KEY, this.edgeLabelKey);
- writer.writeCharacters(edge.label() == null ? "" : edge.label());
+ writer.writeCharacters(edge.label());
writer.writeEndElement();
final List<String> keys = new ArrayList<>(edge.keys());
@@ -296,7 +296,7 @@ public final class GraphMLWriter implements GraphWriter {
writer.writeStartElement(GraphMLTokens.DATA);
writer.writeAttribute(GraphMLTokens.KEY, this.edgeLabelKey);
- writer.writeCharacters(edge.label() == null ? "" : edge.label());
+ writer.writeCharacters(edge.label());
writer.writeEndElement();
for (String key : edge.keys()) {
@@ -328,7 +328,7 @@ public final class GraphMLWriter implements GraphWriter {
writer.writeStartElement(GraphMLTokens.DATA);
writer.writeAttribute(GraphMLTokens.KEY, this.vertexLabelKey);
- writer.writeCharacters(vertex.label() == null ? "" : vertex.label());
+ writer.writeCharacters(vertex.label());
writer.writeEndElement();
for (String key : keys) {
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV1.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV1.java
index feb49e9487..db4d4a8d60 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV1.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV1.java
@@ -139,10 +139,10 @@ final class GraphSONSerializersV1 {
if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
GraphSONUtil.writeWithType(GraphSONTokens.ID, edge.id(), jsonGenerator, serializerProvider, typeSerializer);
- jsonGenerator.writeStringField(GraphSONTokens.LABEL, edge.label() == null ? "" : edge.label());
+ jsonGenerator.writeStringField(GraphSONTokens.LABEL, edge.label());
jsonGenerator.writeStringField(GraphSONTokens.TYPE, GraphSONTokens.EDGE);
- jsonGenerator.writeStringField(GraphSONTokens.IN_LABEL, edge.inVertex().label() == null ? "" : edge.inVertex().label());
- jsonGenerator.writeStringField(GraphSONTokens.OUT_LABEL, edge.outVertex().label() == null ? "" : edge.outVertex().label());
+ jsonGenerator.writeStringField(GraphSONTokens.IN_LABEL, edge.inVertex().label());
+ jsonGenerator.writeStringField(GraphSONTokens.OUT_LABEL, edge.outVertex().label());
GraphSONUtil.writeWithType(GraphSONTokens.IN, edge.inVertex().id(), jsonGenerator, serializerProvider, typeSerializer);
GraphSONUtil.writeWithType(GraphSONTokens.OUT, edge.outVertex().id(), jsonGenerator, serializerProvider, typeSerializer);
writeProperties(edge, jsonGenerator, serializerProvider, typeSerializer);
@@ -195,7 +195,7 @@ final class GraphSONSerializersV1 {
jsonGenerator.writeStartObject();
if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
GraphSONUtil.writeWithType(GraphSONTokens.ID, vertex.id(), jsonGenerator, serializerProvider, typeSerializer);
- jsonGenerator.writeStringField(GraphSONTokens.LABEL, vertex.label() == null ? "" : vertex.label());
+ jsonGenerator.writeStringField(GraphSONTokens.LABEL, vertex.label());
jsonGenerator.writeStringField(GraphSONTokens.TYPE, GraphSONTokens.VERTEX);
writeProperties(vertex, jsonGenerator, serializerProvider, typeSerializer);
jsonGenerator.writeEndObject();
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV2.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV2.java
index 745d9ceb90..c3113ebfe4 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV2.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV2.java
@@ -100,7 +100,7 @@ class GraphSONSerializersV2 {
jsonGenerator.writeStartObject();
jsonGenerator.writeObjectField(GraphSONTokens.ID, vertex.id());
- jsonGenerator.writeStringField(GraphSONTokens.LABEL, vertex.label() == null ? "" : vertex.label());
+ jsonGenerator.writeStringField(GraphSONTokens.LABEL, vertex.label());
writeProperties(vertex, jsonGenerator);
jsonGenerator.writeEndObject();
@@ -149,9 +149,9 @@ class GraphSONSerializersV2 {
jsonGenerator.writeStartObject();
jsonGenerator.writeObjectField(GraphSONTokens.ID, edge.id());
- jsonGenerator.writeStringField(GraphSONTokens.LABEL, edge.label() == null ? "" : edge.label());
- jsonGenerator.writeStringField(GraphSONTokens.IN_LABEL, edge.inVertex().label() == null ? "" : edge.inVertex().label());
- jsonGenerator.writeStringField(GraphSONTokens.OUT_LABEL, edge.outVertex().label() == null ? "" : edge.outVertex().label());
+ jsonGenerator.writeStringField(GraphSONTokens.LABEL, edge.label());
+ jsonGenerator.writeStringField(GraphSONTokens.IN_LABEL, edge.inVertex().label());
+ jsonGenerator.writeStringField(GraphSONTokens.OUT_LABEL, edge.outVertex().label());
jsonGenerator.writeObjectField(GraphSONTokens.IN, edge.inVertex().id());
jsonGenerator.writeObjectField(GraphSONTokens.OUT, edge.outVertex().id());
writeProperties(edge, jsonGenerator);
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV3.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV3.java
index 650d8e599f..b6761dc529 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV3.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV3.java
@@ -101,7 +101,7 @@ class GraphSONSerializersV3 {
jsonGenerator.writeStartObject();
jsonGenerator.writeObjectField(GraphSONTokens.ID, vertex.id());
- jsonGenerator.writeStringField(GraphSONTokens.LABEL, vertex.label() == null ? "" : vertex.label());
+ jsonGenerator.writeStringField(GraphSONTokens.LABEL, vertex.label());
writeTypeForGraphObjectIfUntyped(jsonGenerator, typeInfo, GraphSONTokens.VERTEX);
writeProperties(vertex, jsonGenerator, serializerProvider);
@@ -161,10 +161,10 @@ class GraphSONSerializersV3 {
jsonGenerator.writeStartObject();
jsonGenerator.writeObjectField(GraphSONTokens.ID, edge.id());
- jsonGenerator.writeStringField(GraphSONTokens.LABEL, edge.label() == null ? "" : edge.label());
+ jsonGenerator.writeStringField(GraphSONTokens.LABEL, edge.label());
writeTypeForGraphObjectIfUntyped(jsonGenerator, typeInfo, GraphSONTokens.EDGE);
- jsonGenerator.writeStringField(GraphSONTokens.IN_LABEL, edge.inVertex().label() == null ? "" : edge.inVertex().label());
- jsonGenerator.writeStringField(GraphSONTokens.OUT_LABEL, edge.outVertex().label() == null ? "" : edge.outVertex().label());
+ jsonGenerator.writeStringField(GraphSONTokens.IN_LABEL, edge.inVertex().label());
+ jsonGenerator.writeStringField(GraphSONTokens.OUT_LABEL, edge.outVertex().label());
jsonGenerator.writeObjectField(GraphSONTokens.IN, edge.inVertex().id());
jsonGenerator.writeObjectField(GraphSONTokens.OUT, edge.outVertex().id());
writeProperties(edge, jsonGenerator);
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializersV3.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializersV3.java
index a54239972d..0b748813f5 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializersV3.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializersV3.java
@@ -75,7 +75,7 @@ public final class GryoSerializersV3 {
@Override
public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Edge edge) {
kryo.writeClassAndObject(output, edge.id());
- output.writeString(edge.label() == null ? "" : edge.label());
+ output.writeString(edge.label());
kryo.writeClassAndObject(output, edge.inVertex().id());
// temporary try/catch perhaps? need this to get SparkSingleIterationStrategyTest to work. Trying to grab
@@ -85,8 +85,7 @@ public final class GryoSerializersV3 {
//
// ghetto
try {
- final String inLabel = edge.inVertex().label();
- output.writeString(inLabel == null ? Vertex.DEFAULT_LABEL : inLabel);
+ output.writeString(edge.inVertex().label());
} catch (Exception ex) {
output.writeString(Vertex.DEFAULT_LABEL);
}
@@ -95,8 +94,7 @@ public final class GryoSerializersV3 {
// same nonsense as above for a default label
try {
- final String outLabel = edge.outVertex().label();
- output.writeString(outLabel == null ? Vertex.DEFAULT_LABEL : outLabel);
+ output.writeString(edge.outVertex().label());
} catch (Exception ex) {
output.writeString(Vertex.DEFAULT_LABEL);
}
@@ -135,7 +133,7 @@ public final class GryoSerializersV3 {
@Override
public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Vertex vertex) {
kryo.writeClassAndObject(output, vertex.id());
- output.writeString(vertex.label() == null ? "" : vertex.label());
+ output.writeString(vertex.label());
final Iterator<? extends VertexProperty> properties = vertex.properties();
output.writeBoolean(properties.hasNext());