You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2015/06/30 18:49:20 UTC

incubator-tinkerpop git commit: had a bad clone() implementation in OrderGlobalStep and TraversalComparator.

Repository: incubator-tinkerpop
Updated Branches:
  refs/heads/master b5186e28a -> 626ed80ac


had a bad clone() implementation in OrderGlobalStep and TraversalComparator.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/626ed80a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/626ed80a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/626ed80a

Branch: refs/heads/master
Commit: 626ed80ac3bb739fb7d03ad5df6efee653579b36
Parents: b5186e2
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Jun 30 10:49:26 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Jun 30 10:49:26 2015 -0600

----------------------------------------------------------------------
 .../traversal/step/map/OrderGlobalStep.java      | 19 +++++++++++++++++--
 .../traversal/step/util/TraversalComparator.java | 12 ++++++++----
 2 files changed, 25 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/626ed80a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java
index 829b912..55aaf6e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
+import org.apache.tinkerpop.gremlin.process.traversal.Order;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.ComparatorHolder;
@@ -26,7 +27,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.util.CollectingBarrie
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.TraversalComparator;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
-import org.apache.tinkerpop.gremlin.process.traversal.Order;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.function.ChainedComparator;
 
@@ -43,7 +43,7 @@ import java.util.stream.Collectors;
  */
 public final class OrderGlobalStep<S> extends CollectingBarrierStep<S> implements ComparatorHolder<S>, TraversalParent {
 
-    private final List<Comparator<S>> comparators = new ArrayList<>();
+    private List<Comparator<S>> comparators = new ArrayList<>();
 
     public OrderGlobalStep(final Traversal.Admin traversal) {
         super(traversal);
@@ -98,6 +98,21 @@ public final class OrderGlobalStep<S> extends CollectingBarrierStep<S> implement
         throw new UnsupportedOperationException("Use OrderGlobalStep.addComparator(" + TraversalComparator.class.getSimpleName() + ") to add a local child traversal:" + this);
     }
 
+    @Override
+    public OrderGlobalStep<S> clone() {
+        final OrderGlobalStep<S> clone = (OrderGlobalStep<S>) super.clone();
+        clone.comparators = new ArrayList<>();
+        for (final Comparator<S> comparator : this.comparators) {
+            if (comparator instanceof TraversalComparator) {
+                final TraversalComparator<S, ?> clonedTraversalComparator = ((TraversalComparator<S, ?>) comparator).clone();
+                clone.integrateChild(clonedTraversalComparator.getTraversal());
+                clone.comparators.add(clonedTraversalComparator);
+            } else
+                clone.comparators.add(comparator);
+        }
+        return clone;
+    }
+
 
     /////
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/626ed80a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/TraversalComparator.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/TraversalComparator.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/TraversalComparator.java
index c5ec0e6..c2f1711 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/TraversalComparator.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/TraversalComparator.java
@@ -48,10 +48,14 @@ public final class TraversalComparator<S, E> implements Comparator<S>, Serializa
     }
 
     @Override
-    public TraversalComparator clone() throws CloneNotSupportedException {
-        final TraversalComparator clone = (TraversalComparator) super.clone();
-        clone.traversal = this.traversal.clone();
-        return clone;
+    public TraversalComparator clone() {
+        try {
+            final TraversalComparator clone = (TraversalComparator) super.clone();
+            clone.traversal = this.traversal.clone();
+            return clone;
+        } catch (final CloneNotSupportedException e) {
+            throw new IllegalStateException(e.getMessage(), e);
+        }
     }
 
     public Traversal.Admin<S, E> getTraversal() {