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 2016/02/23 02:15:13 UTC

incubator-tinkerpop git commit: some more work on GroupStep ---- converging on final solution.

Repository: incubator-tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1166 9f8252b81 -> 90debb4fe


some more work on GroupStep ---- converging on final solution.


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

Branch: refs/heads/TINKERPOP-1166
Commit: 90debb4fed3bffa5833543566620bcf0a30ae7f4
Parents: 9f8252b
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Mon Feb 22 18:15:09 2016 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Mon Feb 22 18:15:09 2016 -0700

----------------------------------------------------------------------
 .../process/traversal/step/map/GroupStep.java   | 60 +++++++++-----------
 1 file changed, 28 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/90debb4f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
index 35d0acd..00d9a8d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
@@ -62,24 +62,26 @@ public final class GroupStep<S, K, V> extends ReducingBarrierStep<S, Map<K, V>>
     }
 
     @Override
+    public void onGraphComputer() {
+        this.onComputer = true;
+        this.setSeedSupplier(HashMapSupplier.instance());
+        this.setReducingBiOperator(new GroupComputerBiOperator<>());
+    }
+
+    @Override
     public Map<K, V> projectTraverser(final Traverser.Admin<S> traverser) {
-           if(this.onComputer) {
-               final K key = TraversalUtil.applyNullable(traverser, this.keyTraversal);
-               this.valueTraversal.reset();
-               this.valueTraversal.addStart(traverser);
-               final TraverserSet traverserSet = new TraverserSet();
-               this.valueTraversal.getEndStep().forEachRemaining(t -> traverserSet.add(t.asAdmin()));
-               final Map<K, V> map = new HashMap<>();
-               map.put(key, (V) traverserSet);
-               return map;
-           } else {
-               final K key = TraversalUtil.applyNullable(traverser, this.keyTraversal);
-               final TraverserSet traverserSet = new TraverserSet();
-               traverserSet.add(traverser);
-               final Map<K, V> map = new HashMap<>();
-               map.put(key, (V) traverserSet);
-               return map;
-           }
+        final K key = TraversalUtil.applyNullable(traverser, this.keyTraversal);
+        final TraverserSet traverserSet = new TraverserSet();
+        if (this.onComputer) {
+            this.valueTraversal.reset();
+            this.valueTraversal.addStart(traverser);
+            this.valueTraversal.getEndStep().forEachRemaining(t -> traverserSet.add(t.asAdmin()));
+        } else
+            traverserSet.add(traverser);
+
+        final Map<K, V> map = new HashMap<>();
+        map.put(key, (V) traverserSet);
+        return map;
     }
 
     @Override
@@ -148,18 +150,11 @@ public final class GroupStep<S, K, V> extends ReducingBarrierStep<S, Map<K, V>>
         return reducedMap;
     }
 
-    @Override
-    public void onGraphComputer() {
-        this.onComputer = true;
-        this.setSeedSupplier(HashMapSupplier.instance());
-        this.setReducingBiOperator(new GroupBiOperator<>());
-    }
-
     ///////////
 
-    private static class GroupBiOperator<S, K, V> implements BinaryOperator<Map<K, V>>, Serializable {
+    private static class GroupComputerBiOperator<S, K, V> implements BinaryOperator<Map<K, V>>, Serializable {
 
-        private GroupBiOperator() {
+        private GroupComputerBiOperator() {
         }
 
         @Override
@@ -176,7 +171,7 @@ public final class GroupStep<S, K, V> extends ReducingBarrierStep<S, Map<K, V>>
         }
     }
 
-    private static class GroupStandardBiOperator<S, K, V> implements BinaryOperator<Map<K, V>>, Serializable {
+    private static class GroupStandardBiOperator<K, V> implements BinaryOperator<Map<K, V>>, Serializable {
 
         private final GroupStep groupStep;
 
@@ -187,12 +182,13 @@ public final class GroupStep<S, K, V> extends ReducingBarrierStep<S, Map<K, V>>
         @Override
         public Map<K, V> apply(final Map<K, V> mutatingSeed, final Map<K, V> map) {
             for (final K key : map.keySet()) {
-                Traversal.Admin reduce = (Traversal.Admin) mutatingSeed.get(key);
-                if (null == reduce) {
-                    reduce = this.groupStep.valueReduceTraversal.clone();
-                    mutatingSeed.put(key, (V) reduce);
+                final TraverserSet<?> traverserSet = (TraverserSet<?>) map.get(key);
+                Traversal.Admin valueReduceTraversal = (Traversal.Admin) mutatingSeed.get(key);
+                if (null == valueReduceTraversal) {
+                    valueReduceTraversal = this.groupStep.valueReduceTraversal.clone();
+                    mutatingSeed.put(key, (V) valueReduceTraversal);
                 }
-                ((TraverserSet<?>) map.get(key)).forEach(reduce::addStart);
+                traverserSet.forEach(valueReduceTraversal::addStart);
             }
             return mutatingSeed;
         }