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