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/10/03 22:29:34 UTC
incubator-tinkerpop git commit: GroupStep no longer supports a reduce
traversal. Its just key/value traversals. This makes it so that GroupStep is
completely lazy and can reduce on the fly limiting the memory footprint of
group'ing.
Repository: incubator-tinkerpop
Updated Branches:
refs/heads/group_step_2 8403cf2be -> 86f707f0c
GroupStep no longer supports a reduce traversal. Its just key/value traversals. This makes it so that GroupStep is completely lazy and can reduce on the fly limiting the memory footprint of group'ing.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/86f707f0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/86f707f0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/86f707f0
Branch: refs/heads/group_step_2
Commit: 86f707f0c878af878e40ef1a4ee967ea8b063b52
Parents: 8403cf2
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Sat Oct 3 14:29:25 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Sat Oct 3 14:29:25 2015 -0600
----------------------------------------------------------------------
.../process/traversal/step/map/GroupStep.java | 84 ++++++++------------
.../step/util/CollectingBarrierStep.java | 17 +++-
.../traversal/step/filter/DedupTest.java | 2 +-
.../traversal/step/filter/SampleTest.java | 4 +-
.../process/traversal/step/map/MaxTest.java | 2 +-
.../process/traversal/step/map/MeanTest.java | 2 +-
.../process/traversal/step/map/MinTest.java | 2 +-
.../process/traversal/step/map/OrderTest.java | 2 +-
.../process/traversal/step/map/SumTest.java | 2 +-
.../traversal/step/sideEffect/GroupTest.java | 15 ++--
10 files changed, 67 insertions(+), 65 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/86f707f0/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 91f68e3..a06e251 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
@@ -29,7 +29,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
import org.apache.tinkerpop.gremlin.process.traversal.step.MapReducer;
import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.BarrierStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
@@ -54,13 +53,12 @@ import java.util.function.Supplier;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-public final class GroupStep<S, K, V, R> extends ReducingBarrierStep<S, Map<K, R>> implements MapReducer, TraversalParent {
+public final class GroupStep<S, K, V> extends ReducingBarrierStep<S, Map<K, V>> implements MapReducer, TraversalParent {
private char state = 'k';
private Traversal.Admin<S, K> keyTraversal = null;
- private Traversal.Admin<S, V> valueTraversal = null;
- private Traversal.Admin<V, R> reduceTraversal = (Traversal.Admin) __.<V>fold().asAdmin();
+ private Traversal.Admin<S, V> valueTraversal = this.integrateChild((Traversal.Admin) __.<V>fold().asAdmin());
public GroupStep(final Traversal.Admin traversal) {
super(traversal);
@@ -75,8 +73,7 @@ public final class GroupStep<S, K, V, R> extends ReducingBarrierStep<S, Map<K, R
children.add((Traversal.Admin) this.keyTraversal);
if (null != this.valueTraversal)
children.add((Traversal.Admin) this.valueTraversal);
- if (null != this.reduceTraversal)
- children.add((Traversal.Admin) this.reduceTraversal);
+ ;
return children;
}
@@ -87,12 +84,9 @@ public final class GroupStep<S, K, V, R> extends ReducingBarrierStep<S, Map<K, R
this.state = 'v';
} else if ('v' == this.state) {
this.valueTraversal = this.integrateChild(kvrTraversal);
- this.state = 'r';
- } else if ('r' == this.state) {
- this.reduceTraversal = this.integrateChild(kvrTraversal);
this.state = 'x';
} else {
- throw new IllegalStateException("The key, value, and reduce functions for group()-step have already been set");
+ throw new IllegalStateException("The key and value traversals for group()-step have already been set: " + this);
}
}
@@ -102,14 +96,12 @@ public final class GroupStep<S, K, V, R> extends ReducingBarrierStep<S, Map<K, R
}
@Override
- public GroupStep<S, K, V, R> clone() {
- final GroupStep<S, K, V, R> clone = (GroupStep<S, K, V, R>) super.clone();
+ public GroupStep<S, K, V> clone() {
+ final GroupStep<S, K, V> clone = (GroupStep<S, K, V>) super.clone();
if (null != this.keyTraversal)
clone.keyTraversal = clone.integrateChild(this.keyTraversal.clone());
if (null != this.valueTraversal)
clone.valueTraversal = clone.integrateChild(this.valueTraversal.clone());
- if (null != this.reduceTraversal)
- clone.reduceTraversal = clone.integrateChild(this.reduceTraversal.clone());
clone.setBiFunction(new GroupBiFunction<>((GroupStep) clone));
return clone;
}
@@ -124,15 +116,15 @@ public final class GroupStep<S, K, V, R> extends ReducingBarrierStep<S, Map<K, R
}
@Override
- public MapReduce<K, Collection<V>, K, R, Map<K, R>> getMapReduce() {
- return new GroupMapReduce<>(this);
+ public MapReduce<K, V, K, V, Map<K, V>> getMapReduce() {
+ return new GroupMapReduce(this);
}
@Override
- public Traverser<Map<K, R>> processNextStart() {
+ public Traverser<Map<K, V>> processNextStart() {
if (this.byPass) {
final Traverser.Admin<S> traverser = this.starts.next();
- final Object[] kvPair = new Object[]{TraversalUtil.applyNullable(traverser, (Traversal.Admin<S, Map>) this.keyTraversal), TraversalUtil.applyNullable(traverser, (Traversal.Admin<S, Map>) this.valueTraversal)};
+ final Object[] kvPair = new Object[]{TraversalUtil.applyNullable(traverser, (Traversal.Admin<S, Map>) this.keyTraversal), traverser.get()};
return traverser.asAdmin().split(kvPair, (Step) this);
} else {
return super.processNextStart();
@@ -141,29 +133,28 @@ public final class GroupStep<S, K, V, R> extends ReducingBarrierStep<S, Map<K, R
@Override
public String toString() {
- return StringFactory.stepString(this, this.keyTraversal, this.valueTraversal, this.reduceTraversal);
+ return StringFactory.stepString(this, this.keyTraversal, this.valueTraversal);
}
///////////
- private static class GroupBiFunction<S, K, V, R> implements BiFunction<Map<K, Traversal.Admin<V, R>>, Traverser.Admin<S>, Map<K, Traversal.Admin<V, R>>>, Serializable {
+ private static class GroupBiFunction<S, K, V> implements BiFunction<Map<K, Traversal.Admin<S, V>>, Traverser.Admin<S>, Map<K, Traversal.Admin<S, V>>>, Serializable {
- private final GroupStep<S, K, V, R> groupStep;
+ private final GroupStep<S, K, V> groupStep;
- private GroupBiFunction(final GroupStep<S, K, V, R> groupStep) {
+ private GroupBiFunction(final GroupStep<S, K, V> groupStep) {
this.groupStep = groupStep;
}
@Override
- public Map<K, Traversal.Admin<V, R>> apply(final Map<K, Traversal.Admin<V, R>> mutatingSeed, final Traverser.Admin<S> traverser) {
+ public Map<K, Traversal.Admin<S, V>> apply(final Map<K, Traversal.Admin<S, V>> mutatingSeed, final Traverser.Admin<S> traverser) {
final K key = TraversalUtil.applyNullable(traverser, this.groupStep.keyTraversal);
- final V value = TraversalUtil.applyNullable(traverser, this.groupStep.valueTraversal);
- Traversal.Admin<V, R> traversal = mutatingSeed.get(key);
+ Traversal.Admin<S, V> traversal = mutatingSeed.get(key);
if (null == traversal) {
- traversal = this.groupStep.reduceTraversal.clone();
+ traversal = this.groupStep.valueTraversal.clone();
mutatingSeed.put(key, traversal);
}
- traversal.addStart(traversal.getTraverserGenerator().generate(value, traversal.getStartStep(), 1l));
+ traversal.addStart(traverser.split());
TraversalHelper.getStepsOfClass(BarrierStep.class, traversal).stream().findFirst().ifPresent(BarrierStep::processAllStarts);
return mutatingSeed;
}
@@ -194,20 +185,20 @@ public final class GroupStep<S, K, V, R> extends ReducingBarrierStep<S, Map<K, R
///////////
- public static final class GroupMapReduce<K, V, R> implements MapReduce<K, Collection<V>, K, R, Map<K, R>> {
+ public static final class GroupMapReduce<S, K, V> implements MapReduce<K, S, K, V, Map<K, V>> {
public static final String GROUP_BY_STEP_STEP_ID = "gremlin.groupStep.stepId";
private String groupStepId;
- private Traversal.Admin<V, R> reduceTraversal;
+ private Traversal.Admin<S, V> valueTraversal;
private GroupMapReduce() {
}
- public GroupMapReduce(final GroupStep<?, K, V, R> step) {
+ public GroupMapReduce(final GroupStep<S, K, V> step) {
this.groupStepId = step.getId();
- this.reduceTraversal = step.reduceTraversal;
+ this.valueTraversal = step.valueTraversal;
}
@Override
@@ -219,7 +210,7 @@ public final class GroupStep<S, K, V, R> extends ReducingBarrierStep<S, Map<K, R
@Override
public void loadState(final Graph graph, final Configuration configuration) {
this.groupStepId = configuration.getString(GROUP_BY_STEP_STEP_ID);
- this.reduceTraversal = ((GroupStep) new TraversalMatrix<>(TraversalVertexProgram.getTraversal(graph, configuration)).getStepById(this.groupStepId)).reduceTraversal;
+ this.valueTraversal = ((GroupStep) new TraversalMatrix<>(TraversalVertexProgram.getTraversal(graph, configuration)).getStepById(this.groupStepId)).valueTraversal.clone();
}
@Override
@@ -228,29 +219,24 @@ public final class GroupStep<S, K, V, R> extends ReducingBarrierStep<S, Map<K, R
}
@Override
- public void map(final Vertex vertex, final MapEmitter<K, Collection<V>> emitter) {
+ public void map(final Vertex vertex, final MapEmitter<K, S> emitter) {
vertex.<TraverserSet<Object[]>>property(TraversalVertexProgram.HALTED_TRAVERSERS).ifPresent(traverserSet -> traverserSet.forEach(traverser -> {
final Object[] objects = traverser.get();
- if (objects[1] instanceof Collection)
- emitter.emit((K) objects[0], (Collection)objects[1]);
- else {
- final List<V> collection = new ArrayList<>();
- collection.add((V) objects[1]);
- emitter.emit((K) objects[0], collection);
- }
+ emitter.emit((K) objects[0], (S) objects[1]);
+
}));
}
@Override
- public void reduce(final K key, final Iterator<Collection<V>> values, final ReduceEmitter<K, R> emitter) {
- Traversal.Admin<V, R> reduceTraversalClone = this.reduceTraversal.clone();
- reduceTraversalClone.addStarts(reduceTraversalClone.getTraverserGenerator().generateIterator((Iterator) values, reduceTraversalClone.getStartStep(), 1l));
+ public void reduce(final K key, final Iterator<S> values, final ReduceEmitter<K, V> emitter) {
+ Traversal.Admin<S, V> reduceTraversalClone = this.valueTraversal.clone();
+ reduceTraversalClone.addStarts(reduceTraversalClone.getTraverserGenerator().generateIterator((Iterator)values, reduceTraversalClone.getStartStep(), 1l));
emitter.emit(key, reduceTraversalClone.next());
}
@Override
- public Map<K, R> generateFinalResult(final Iterator<KeyValue<K, R>> keyValues) {
- final Map<K, R> map = new HashMap<>();
+ public Map<K, V> generateFinalResult(final Iterator<KeyValue<K, V>> keyValues) {
+ final Map<K, V> map = new HashMap<>();
keyValues.forEachRemaining(keyValue -> map.put(keyValue.getKey(), keyValue.getValue()));
return map;
}
@@ -261,11 +247,11 @@ public final class GroupStep<S, K, V, R> extends ReducingBarrierStep<S, Map<K, R
}
@Override
- public GroupMapReduce<K, V, R> clone() {
+ public GroupMapReduce<S, K, V> clone() {
try {
- final GroupMapReduce<K, V, R> clone = (GroupMapReduce<K, V, R>) super.clone();
- if (null != clone.reduceTraversal)
- clone.reduceTraversal = this.reduceTraversal.clone();
+ final GroupMapReduce<S, K, V> clone = (GroupMapReduce<S, K, V>) super.clone();
+ if (null != clone.valueTraversal)
+ clone.valueTraversal = this.valueTraversal.clone();
return clone;
} catch (final CloneNotSupportedException e) {
throw new IllegalStateException(e.getMessage(), e);
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/86f707f0/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/CollectingBarrierStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/CollectingBarrierStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/CollectingBarrierStep.java
index e73c655..eb0f940 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/CollectingBarrierStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/CollectingBarrierStep.java
@@ -30,7 +30,7 @@ import java.util.Set;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-public abstract class CollectingBarrierStep<S> extends AbstractStep<S, S> {
+public abstract class CollectingBarrierStep<S> extends AbstractStep<S, S> implements BarrierStep {
private TraverserSet<S> traverserSet = new TraverserSet<>();
private int maxBarrierSize;
@@ -52,6 +52,21 @@ public abstract class CollectingBarrierStep<S> extends AbstractStep<S, S> {
}
@Override
+ public void processAllStarts() {
+ if (this.starts.hasNext()) {
+ if (Integer.MAX_VALUE == this.maxBarrierSize) {
+ this.starts.forEachRemaining(this.traverserSet::add);
+ this.barrierConsumer(this.traverserSet);
+ } else {
+ while (this.starts.hasNext() && this.traverserSet.size() < this.maxBarrierSize) {
+ this.traverserSet.add(this.starts.next());
+ }
+ this.barrierConsumer(this.traverserSet);
+ }
+ }
+ }
+
+ @Override
public Traverser<S> processNextStart() {
if (!this.traverserSet.isEmpty()) {
return this.traverserSet.remove();
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/86f707f0/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java
index 8fd5140..56b2d14 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java
@@ -251,7 +251,7 @@ public abstract class DedupTest extends AbstractGremlinProcessTest {
@Override
public Traversal<Vertex, Map<String, List<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXdedupXlocalXX() {
//return g.V().<String, Set<Double>>group().by(T.label).by(bothE().values("weight").fold()).by(dedup(Scope.local));
- return g.V().<String, List<Double>>group().by(T.label).by(bothE().values("weight").fold()).by(unfold().dedup().fold());
+ return g.V().<String, List<Double>>group().by(T.label).by(bothE().values("weight").dedup().fold());
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/86f707f0/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/SampleTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/SampleTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/SampleTest.java
index d65e2b6..2c324ac 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/SampleTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/SampleTest.java
@@ -133,12 +133,12 @@ public abstract class SampleTest extends AbstractGremlinProcessTest {
@Override
public Traversal<Vertex, Map<String, Collection<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_2XX() {
- return g.V().<String, Collection<Double>>group().by(T.label).by(bothE().values("weight").fold()).by(unfold().fold().sample(Scope.local, 2));
+ return g.V().<String, Collection<Double>>group().by(T.label).by(bothE().values("weight").fold().sample(Scope.local, 2));
}
@Override
public Traversal<Vertex, Map<String, Collection<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_5XX() {
- return g.V().<String, Collection<Double>>group().by(T.label).by(bothE().values("weight").fold()).by(unfold().fold().sample(Scope.local, 5));
+ return g.V().<String, Collection<Double>>group().by(T.label).by(bothE().values("weight").fold().sample(Scope.local,5));
}
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/86f707f0/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxTest.java
index 2c24575..4356ae4 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxTest.java
@@ -91,7 +91,7 @@ public abstract class MaxTest extends AbstractGremlinProcessTest {
@Override
public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmaxXlocalXX() {
- return g.V().hasLabel("software").<String, Number>group().by("name").by(bothE().values("weight").fold()).by(max(Scope.local));
+ return g.V().hasLabel("software").<String, Number>group().by("name").by(bothE().values("weight").max());
}
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/86f707f0/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanTest.java
index b2e7f29..8ec8a68 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanTest.java
@@ -79,7 +79,7 @@ public abstract class MeanTest extends AbstractGremlinProcessTest {
@Override
public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmeanXlocalXX() {
- return g.V().hasLabel("software").<String, Number>group().by("name").by(bothE().values("weight").fold()).by(mean(Scope.local));
+ return g.V().hasLabel("software").<String, Number>group().by("name").by(bothE().values("weight").mean());
}
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/86f707f0/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinTest.java
index 477f419..94c92a1 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinTest.java
@@ -91,7 +91,7 @@ public abstract class MinTest extends AbstractGremlinProcessTest {
@Override
public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXminXlocalXX() {
- return g.V().hasLabel("software").<String, Number>group().by("name").by(bothE().values("weight").fold()).by(min(Scope.local));
+ return g.V().hasLabel("software").<String, Number>group().by("name").by(bothE().values("weight").min());
}
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/86f707f0/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java
index 842141a..99dae26 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java
@@ -304,7 +304,7 @@ public abstract class OrderTest extends AbstractGremlinProcessTest {
@Override
public Traversal<Vertex, Map<String, List<Vertex>>> get_g_V_group_byXlabelX_byXnameX_byXorderXlocalX_byXdecrXX() {
- return g.V().<String, List<Vertex>>group().by(T.label).by("name").by(__.order().by(Order.decr).fold());
+ return g.V().<String, List<Vertex>>group().by(T.label).by(__.values("name").order().by(Order.decr).fold());
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/86f707f0/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumTest.java
index 3eb49de..62a170f 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumTest.java
@@ -76,7 +76,7 @@ public abstract class SumTest extends AbstractGremlinProcessTest {
@Override
public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXsumXlocalXX() {
- return g.V().hasLabel("software").<String, Number>group().by("name").by(bothE().values("weight").fold()).by(sum(Scope.local));
+ return g.V().hasLabel("software").<String, Number>group().by("name").by(bothE().values("weight").sum());
}
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/86f707f0/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTest.java
index 104e8c1..51794ac 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTest.java
@@ -19,15 +19,16 @@
package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect;
import org.apache.tinkerpop.gremlin.LoadGraphWith;
-import org.apache.tinkerpop.gremlin.process.*;
+import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
import org.apache.tinkerpop.gremlin.process.traversal.Scope;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.junit.Test;
import org.junit.runner.RunWith;
-import java.util.*;
+import java.util.Collection;
+import java.util.Map;
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*;
@@ -55,7 +56,7 @@ public abstract class GroupTest extends AbstractGremlinProcessTest {
@Test
@LoadGraphWith(MODERN)
public void g_V_group_byXnameX() {
- final Traversal<Vertex,Map<String,Collection<Vertex>>> traversal = get_g_V_group_byXnameX();
+ final Traversal<Vertex, Map<String, Collection<Vertex>>> traversal = get_g_V_group_byXnameX();
printTraversalForm(traversal);
assertCommonA(traversal);
}
@@ -63,7 +64,7 @@ public abstract class GroupTest extends AbstractGremlinProcessTest {
@Test
@LoadGraphWith(MODERN)
public void g_V_groupXaX_byXnameX_capXaX() {
- final Traversal<Vertex,Map<String,Collection<Vertex>>> traversal = get_g_V_groupXaX_byXnameX_capXaX();
+ final Traversal<Vertex, Map<String, Collection<Vertex>>> traversal = get_g_V_groupXaX_byXnameX_capXaX();
printTraversalForm(traversal);
assertCommonA(traversal);
}
@@ -166,7 +167,7 @@ public abstract class GroupTest extends AbstractGremlinProcessTest {
@Override
public Traversal<Vertex, Map<String, Long>> get_g_V_hasXlangX_group_byXlangX_byX1X_byXcountXlocalXX() {
- return g.V().has("lang").<String, Long>group().by("lang").by(inject(1)).by(count());
+ return g.V().has("lang").<String, Long>group().by("lang").by(count());
}
@Override
@@ -176,7 +177,7 @@ public abstract class GroupTest extends AbstractGremlinProcessTest {
@Override
public Traversal<Vertex, Map<Long, Collection<String>>> get_g_V_group_byXoutE_countX_byXnameX() {
- return g.V().<Long, Collection<String>>group().by(outE().count()).by("name");
+ return g.V().<Long, Collection<String>>group().by(outE().count()).by(values("name").fold());
}
}
}