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