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 2017/04/06 11:34:00 UTC
[33/50] tinkerpop git commit: fixed a Parameters.clone() bug
introduced with the Traversal caching work in this ticket. This fixes the
@twilmes AddEdgeTest case.
fixed a Parameters.clone() bug introduced with the Traversal caching work in this ticket. This fixes the @twilmes AddEdgeTest case.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/af5f3364
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/af5f3364
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/af5f3364
Branch: refs/heads/TINKERPOP-1443
Commit: af5f3364e12aadead8025f3724559d282105bfaa
Parents: 8e90349
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Wed Mar 29 10:07:55 2017 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Wed Mar 29 10:07:55 2017 -0600
----------------------------------------------------------------------
.../process/traversal/step/util/Parameters.java | 24 ++++++++++++++------
1 file changed, 17 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/af5f3364/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/Parameters.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/Parameters.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/Parameters.java
index 0583ed2..5cb6001 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/Parameters.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/Parameters.java
@@ -58,7 +58,7 @@ public final class Parameters implements Cloneable, Serializable {
* {@link #set(TraversalParent, Object...)} because when the parameter map is large the cost of iterating it repeatedly on the
* high number of calls to {@link #getTraversals()} is great.
*/
- private List<Traversal.Admin<?,?>> traversals = new ArrayList<>();
+ private List<Traversal.Admin<?, ?>> traversals = new ArrayList<>();
/**
* Checks for existence of key in parameter set.
@@ -199,7 +199,7 @@ public final class Parameters implements Cloneable, Serializable {
*/
public <S, E> List<Traversal.Admin<S, E>> getTraversals() {
// stupid generics - just need to return "traversals"
- return (List<Traversal.Admin<S, E>>) (Object) traversals;
+ return (List<Traversal.Admin<S, E>>) (Object) this.traversals;
}
/**
@@ -213,14 +213,24 @@ public final class Parameters implements Cloneable, Serializable {
try {
final Parameters clone = (Parameters) super.clone();
clone.parameters = new HashMap<>();
+ clone.traversals = new ArrayList<>();
for (final Map.Entry<Object, List<Object>> entry : this.parameters.entrySet()) {
final List<Object> values = new ArrayList<>();
for (final Object value : entry.getValue()) {
- values.add(value instanceof Traversal.Admin ? ((Traversal.Admin) value).clone() : value);
+ if (value instanceof Traversal.Admin) {
+ final Traversal.Admin<?, ?> traversalClone = ((Traversal.Admin) value).clone();
+ clone.traversals.add(traversalClone);
+ values.add(traversalClone);
+ } else
+ values.add(value);
}
- clone.parameters.put(entry.getKey() instanceof Traversal.Admin ? ((Traversal.Admin) entry.getKey()).clone() : entry.getKey(), values);
+ if (entry.getKey() instanceof Traversal.Admin) {
+ final Traversal.Admin<?, ?> traversalClone = ((Traversal.Admin) entry.getKey()).clone();
+ clone.traversals.add(traversalClone);
+ clone.parameters.put(traversalClone, values);
+ } else
+ clone.parameters.put(entry.getKey(), values);
}
-
clone.referencedLabels = new HashSet<>(this.referencedLabels);
return clone;
} catch (final CloneNotSupportedException e) {
@@ -253,11 +263,11 @@ public final class Parameters implements Cloneable, Serializable {
}
private void addTraversal(final Traversal.Admin t) {
- traversals.add(t);
+ this.traversals.add(t);
for (final Object ss : t.getSteps()) {
if (ss instanceof Scoping) {
for (String label : ((Scoping) ss).getScopeKeys()) {
- referencedLabels.add(label);
+ this.referencedLabels.add(label);
}
}
}