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/02/13 23:41:11 UTC
[1/8] incubator-tinkerpop git commit: simplified local aggregation
steps
Repository: incubator-tinkerpop
Updated Branches:
refs/heads/master 446df04f0 -> 4172c3a2d
simplified local aggregation steps
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/8226a0be
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/8226a0be
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/8226a0be
Branch: refs/heads/master
Commit: 8226a0be8e725026d6ad7fdba4d05c0e66ec68d2
Parents: e1da1e1
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Fri Feb 13 16:34:04 2015 +0100
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Fri Feb 13 16:34:04 2015 +0100
----------------------------------------------------------------------
.../traversal/step/map/CountLocalStep.java | 17 +------
.../traversal/step/map/LocalAggregateStep.java | 53 ++++++++++++++++++++
.../graph/traversal/step/map/MaxLocalStep.java | 23 ++-------
.../graph/traversal/step/map/MeanLocalStep.java | 24 ++-------
.../graph/traversal/step/map/MinLocalStep.java | 23 ++-------
.../graph/traversal/step/map/SumLocalStep.java | 24 +--------
6 files changed, 66 insertions(+), 98 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/8226a0be/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/CountLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/CountLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/CountLocalStep.java
index 7f89abb..8a1d0e0 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/CountLocalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/CountLocalStep.java
@@ -22,15 +22,13 @@ import org.apache.tinkerpop.gremlin.process.Traversal;
import org.apache.tinkerpop.gremlin.process.Traverser;
import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-import java.util.Collection;
import java.util.Collections;
-import java.util.Map;
import java.util.Set;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-public final class CountLocalStep<S> extends MapStep<S, Long> {
+public final class CountLocalStep<S> extends LocalAggregateStep<S, Long> {
public CountLocalStep(final Traversal.Admin traversal) {
super(traversal);
@@ -38,17 +36,6 @@ public final class CountLocalStep<S> extends MapStep<S, Long> {
@Override
protected Long map(final Traverser.Admin<S> traverser) {
- final S start = traverser.get();
- if (start instanceof Collection)
- return (long) ((Collection) start).size();
- else if (start instanceof Map)
- return (long) ((Map) start).size();
- else
- return 1L;
- }
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- return Collections.singleton(TraverserRequirement.OBJECT);
+ return (long) collect(traverser).size();
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/8226a0be/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/LocalAggregateStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/LocalAggregateStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/LocalAggregateStep.java
new file mode 100644
index 0000000..4e99de2
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/LocalAggregateStep.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.graph.traversal.step.map;
+
+import org.apache.tinkerpop.gremlin.process.Traversal;
+import org.apache.tinkerpop.gremlin.process.Traverser;
+import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @author Daniel Kuppitz (http://gremlin.guru)
+ */
+public abstract class LocalAggregateStep<S, E> extends MapStep<S, E> {
+
+ public LocalAggregateStep(final Traversal.Admin traversal) {
+ super(traversal);
+ }
+
+ protected <E2> Collection<E2> collect(final Traverser.Admin<S> traverser) {
+ final S start = traverser.get();
+ if (start instanceof Collection)
+ return (Collection<E2>) start;
+ else if (start instanceof Map)
+ return (Collection<E2>) ((Map) start).values();
+ else
+ return Collections.singleton((E2) start);
+ }
+
+ @Override
+ public Set<TraverserRequirement> getRequirements() {
+ return Collections.singleton(TraverserRequirement.OBJECT);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/8226a0be/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxLocalStep.java
index 059af47..b19e8dc 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxLocalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxLocalStep.java
@@ -22,14 +22,13 @@ import org.apache.tinkerpop.gremlin.process.Traversal;
import org.apache.tinkerpop.gremlin.process.Traverser;
import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-import java.util.Collection;
import java.util.Collections;
import java.util.Set;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-public final class MaxLocalStep<S> extends MapStep<S, Number> {
+public final class MaxLocalStep<S> extends LocalAggregateStep<S, Number> {
public MaxLocalStep(final Traversal.Admin traversal) {
super(traversal);
@@ -37,23 +36,7 @@ public final class MaxLocalStep<S> extends MapStep<S, Number> {
@Override
protected Number map(final Traverser.Admin<S> traverser) {
- final S start = traverser.get();
- if (start instanceof Number) {
- return (Number) start;
- } else if (start instanceof Collection) {
- Number temp = Double.MIN_VALUE;
- for (final Number number : (Collection<Number>) start) {
- if (number.doubleValue() > temp.doubleValue())
- temp = number;
- }
- return temp;
- } else
- return Double.NaN;
- }
-
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- return Collections.singleton(TraverserRequirement.OBJECT);
+ return this.<Number>collect(traverser).stream().mapToDouble(Number::doubleValue).max()
+ .orElseGet(() -> Double.NaN);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/8226a0be/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanLocalStep.java
index 659e4d3..1a01f8c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanLocalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanLocalStep.java
@@ -22,14 +22,13 @@ import org.apache.tinkerpop.gremlin.process.Traversal;
import org.apache.tinkerpop.gremlin.process.Traverser;
import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-import java.util.Collection;
import java.util.Collections;
import java.util.Set;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-public final class MeanLocalStep<S> extends MapStep<S, Double> {
+public final class MeanLocalStep<S> extends LocalAggregateStep<S, Double> {
public MeanLocalStep(final Traversal.Admin traversal) {
super(traversal);
@@ -37,24 +36,7 @@ public final class MeanLocalStep<S> extends MapStep<S, Double> {
@Override
protected Double map(final Traverser.Admin<S> traverser) {
- final S start = traverser.get();
- if (start instanceof Collection) {
- double sum = 0.0d;
- int count = 0;
- for (final Number number : (Collection<Number>) start) {
- count++;
- sum = sum + number.doubleValue();
- }
- return sum / count;
- } else if (start instanceof Number) {
- return ((Number) start).doubleValue();
- } else {
- return Double.NaN;
- }
- }
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- return Collections.singleton(TraverserRequirement.OBJECT);
+ return this.<Number>collect(traverser).stream().mapToDouble(Number::doubleValue).average()
+ .orElseGet(() -> Double.NaN);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/8226a0be/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinLocalStep.java
index 7bf71a7..72aa2a7 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinLocalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinLocalStep.java
@@ -22,14 +22,13 @@ import org.apache.tinkerpop.gremlin.process.Traversal;
import org.apache.tinkerpop.gremlin.process.Traverser;
import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-import java.util.Collection;
import java.util.Collections;
import java.util.Set;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-public final class MinLocalStep<S> extends MapStep<S, Number> {
+public final class MinLocalStep<S> extends LocalAggregateStep<S, Number> {
public MinLocalStep(final Traversal.Admin traversal) {
super(traversal);
@@ -37,23 +36,7 @@ public final class MinLocalStep<S> extends MapStep<S, Number> {
@Override
protected Number map(final Traverser.Admin<S> traverser) {
- final S start = traverser.get();
- if (start instanceof Number) {
- return (Number) start;
- } else if (start instanceof Collection) {
- Number temp = Double.MAX_VALUE;
- for (final Number number : (Collection<Number>) start) {
- if (number.doubleValue() < temp.doubleValue())
- temp = number;
- }
- return temp;
- } else
- return Double.NaN;
- }
-
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- return Collections.singleton(TraverserRequirement.OBJECT);
+ return this.<Number>collect(traverser).stream().mapToDouble(Number::doubleValue).min()
+ .orElseGet(() -> Double.NaN);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/8226a0be/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SumLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SumLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SumLocalStep.java
index 1398f71..933331b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SumLocalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SumLocalStep.java
@@ -20,16 +20,11 @@ package org.apache.tinkerpop.gremlin.process.graph.traversal.step.map;
import org.apache.tinkerpop.gremlin.process.Traversal;
import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Set;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-public final class SumLocalStep<S> extends MapStep<S, Double> {
+public final class SumLocalStep<S> extends LocalAggregateStep<S, Double> {
public SumLocalStep(final Traversal.Admin traversal) {
super(traversal);
@@ -37,21 +32,6 @@ public final class SumLocalStep<S> extends MapStep<S, Double> {
@Override
protected Double map(final Traverser.Admin<S> traverser) {
- final S start = traverser.get();
- if (start instanceof Collection) {
- double sum = 0.0d;
- for (final Number number : (Collection<Number>) start) {
- sum = sum + number.doubleValue();
- }
- return sum;
- } else if (start instanceof Number) {
- return ((Number) start).doubleValue();
- } else
- return Double.NaN;
- }
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- return Collections.singleton(TraverserRequirement.OBJECT);
+ return this.<Number>collect(traverser).stream().mapToDouble(Number::doubleValue).sum();
}
}
[4/8] incubator-tinkerpop git commit: fixed return type
Posted by ok...@apache.org.
fixed return type
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/1e85ddfa
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/1e85ddfa
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/1e85ddfa
Branch: refs/heads/master
Commit: 1e85ddfa95c3dbac59f4fd3707e2d747bf3f6919
Parents: 3d4335b
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Fri Feb 13 21:44:32 2015 +0100
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Fri Feb 13 21:44:32 2015 +0100
----------------------------------------------------------------------
.../process/graph/traversal/step/map/GroovyMaxTest.groovy | 7 ++++---
.../process/graph/traversal/step/map/GroovyMeanTest.groovy | 4 ++--
.../process/graph/traversal/step/map/GroovyMinTest.groovy | 4 ++--
.../process/graph/traversal/step/map/GroovySumTest.groovy | 4 ++--
4 files changed, 10 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/1e85ddfa/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMaxTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMaxTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMaxTest.groovy
index 8469834..100f943 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMaxTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMaxTest.groovy
@@ -24,7 +24,8 @@ import org.apache.tinkerpop.gremlin.process.Traversal
import org.apache.tinkerpop.gremlin.process.graph.traversal.__
import org.apache.tinkerpop.gremlin.structure.Vertex
-import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.*
+import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.bothE
+import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.max
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -44,7 +45,7 @@ public abstract class GroovyMaxTest {
}
@Override
- public Traversal<Vertex, Map<String, Integer>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmaxXlocalXX() {
+ public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmaxXlocalXX() {
g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(max(Scope.local)).cap()
}
}
@@ -62,7 +63,7 @@ public abstract class GroovyMaxTest {
}
@Override
- public Traversal<Vertex, Map<String, Integer>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmaxXlocalXX() {
+ public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmaxXlocalXX() {
ComputerTestHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(max(Scope.local)).cap()", g)
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/1e85ddfa/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMeanTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMeanTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMeanTest.groovy
index 9bd3d10..8524e6e 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMeanTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMeanTest.groovy
@@ -39,7 +39,7 @@ public abstract class GroovyMeanTest {
}
@Override
- public Traversal<Vertex, Map<String, Integer>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmeanXlocalXX() {
+ public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmeanXlocalXX() {
g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(mean(Scope.local)).cap()
}
}
@@ -52,7 +52,7 @@ public abstract class GroovyMeanTest {
}
@Override
- public Traversal<Vertex, Map<String, Integer>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmeanXlocalXX() {
+ public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmeanXlocalXX() {
ComputerTestHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(mean(Scope.local)).cap()", g)
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/1e85ddfa/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMinTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMinTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMinTest.groovy
index 6f4c4fe..3b6152a 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMinTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMinTest.groovy
@@ -45,7 +45,7 @@ public abstract class GroovyMinTest {
}
@Override
- public Traversal<Vertex, Map<String, Integer>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXminXlocalXX() {
+ public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXminXlocalXX() {
g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(min(Scope.local)).cap()
}
}
@@ -63,7 +63,7 @@ public abstract class GroovyMinTest {
}
@Override
- public Traversal<Vertex, Map<String, Integer>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXminXlocalXX() {
+ public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXminXlocalXX() {
ComputerTestHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(min(Scope.local)).cap()", g)
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/1e85ddfa/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovySumTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovySumTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovySumTest.groovy
index f039363..f78bbc7 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovySumTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovySumTest.groovy
@@ -39,7 +39,7 @@ public abstract class GroovySumTest {
}
@Override
- public Traversal<Vertex, Map<String, Integer>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXsumXlocalXX() {
+ public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXsumXlocalXX() {
g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(sum(Scope.local)).cap()
}
}
@@ -52,7 +52,7 @@ public abstract class GroovySumTest {
}
@Override
- public Traversal<Vertex, Map<String, Integer>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXsumXlocalXX() {
+ public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXsumXlocalXX() {
ComputerTestHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(sum(Scope.local)).cap()", g)
}
}
[5/8] incubator-tinkerpop git commit: Added `dedup(local)` and
`sample(local)`.
Posted by ok...@apache.org.
Added `dedup(local)` and `sample(local)`.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/a40babe2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/a40babe2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/a40babe2
Branch: refs/heads/master
Commit: a40babe22fec50507c6a536cfc00e70a733ba53b
Parents: 1e85ddf
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Fri Feb 13 22:53:01 2015 +0100
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Fri Feb 13 22:53:01 2015 +0100
----------------------------------------------------------------------
CHANGELOG.asciidoc | 1 +
.../graph/traversal/ElementTraversal.java | 29 ++++-----
.../process/graph/traversal/GraphTraversal.java | 42 ++++---------
.../gremlin/process/graph/traversal/__.java | 23 +++----
.../traversal/step/map/DedupLocalStep.java | 40 ++++++++++++
.../traversal/step/map/SampleLocalStep.java | 49 +++++++++++++++
.../step/filter/GroovyDedupTest.groovy | 28 +++++++--
.../step/filter/GroovySampleTest.groovy | 28 ++++++++-
.../process/GroovyProcessComputerSuite.java | 2 +-
.../gremlin/process/ProcessComputerSuite.java | 2 +-
.../graph/traversal/step/filter/DedupTest.java | 63 ++++++++++++++++++-
.../graph/traversal/step/filter/SampleTest.java | 66 ++++++++++++++++++--
.../tinkergraph/structure/TinkerGraphTest.java | 16 ++++-
13 files changed, 307 insertions(+), 82 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/a40babe2/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index c94a08b..33a381d 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -9,6 +9,7 @@ image::http://www.tinkerpop.com/docs/current/images/gremlin-hindu.png[width=225]
TinkerPop 3.0.0.M8 (Release Date: NOT OFFICIALLY RELEASED YET)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+* Added `dedup(local)` and `sample(local)`.
* Added `count(local)`, `sum(local)`, `max(local)`, `min(local)`, and `mean(local)` operating on the local object (e.g. collection, map, etc.)
* `TraversalComparator` exists which allows for `order().by(outE().count(),decr)`.
* Apache refactoring: `com.tinkerpop` -> `org.apache.tinkerpop`.
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/a40babe2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/ElementTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/ElementTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/ElementTraversal.java
index 516acff..4612c18 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/ElementTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/ElementTraversal.java
@@ -18,30 +18,15 @@
*/
package org.apache.tinkerpop.gremlin.process.graph.traversal;
-import org.apache.tinkerpop.gremlin.process.Path;
-import org.apache.tinkerpop.gremlin.process.Scope;
-import org.apache.tinkerpop.gremlin.process.T;
-import org.apache.tinkerpop.gremlin.process.Traversal;
-import org.apache.tinkerpop.gremlin.process.Traverser;
+import org.apache.tinkerpop.gremlin.process.*;
import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
-import org.apache.tinkerpop.gremlin.structure.Direction;
-import org.apache.tinkerpop.gremlin.structure.Edge;
-import org.apache.tinkerpop.gremlin.structure.Element;
-import org.apache.tinkerpop.gremlin.structure.Property;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.*;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.function.BiFunction;
-import java.util.function.BiPredicate;
-import java.util.function.BinaryOperator;
-import java.util.function.Consumer;
-import java.util.function.Function;
-import java.util.function.Predicate;
-import java.util.function.Supplier;
-import java.util.function.UnaryOperator;
+import java.util.function.*;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -240,6 +225,10 @@ public abstract interface ElementTraversal<A extends Element> {
return this.start().dedup();
}
+ public default GraphTraversal<A, A> dedup(final Scope scope) {
+ return this.start().dedup(scope);
+ }
+
public default GraphTraversal<A, A> except(final String sideEffectKeyOrPathLabel) {
return this.start().except(sideEffectKeyOrPathLabel);
}
@@ -360,6 +349,10 @@ public abstract interface ElementTraversal<A extends Element> {
return this.start().sample(amountToSample);
}
+ public default GraphTraversal<A, A> sample(final Scope scope, final int amountToSample) {
+ return this.start().sample(scope, amountToSample);
+ }
+
///////////////////// SIDE-EFFECT STEPS /////////////////////
public default GraphTraversal<A, A> sideEffect(final Consumer<Traverser<A>> consumer) {
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/a40babe2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/GraphTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/GraphTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/GraphTraversal.java
index 83e4175..2520cc5 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/GraphTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/GraphTraversal.java
@@ -53,37 +53,7 @@ import org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter.SampleSt
import org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter.SimplePathStep;
import org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter.TimeLimitStep;
import org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter.WhereStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.BackStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.CoalesceStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.CountGlobalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.CountLocalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.EdgeOtherVertexStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.EdgeVertexStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.FoldStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.IdStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.KeyStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.LabelStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.LambdaFlatMapStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.LambdaMapStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.MaxGlobalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.MaxLocalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.MeanGlobalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.MeanLocalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.MinGlobalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.MinLocalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.OrderGlobalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.OrderLocalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.PathStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.PropertiesStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.PropertyMapStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.PropertyValueStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.SackStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.SelectOneStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.SelectStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.SumGlobalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.SumLocalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.UnfoldStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.VertexStep;
+import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.*;
import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.match.MatchStep;
import org.apache.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.AddEdgeStep;
import org.apache.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.AggregateStep;
@@ -394,6 +364,10 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
return this.asAdmin().addStep(new DedupStep<>(this.asAdmin()));
}
+ public default GraphTraversal<S, E> dedup(final Scope scope) {
+ return this.asAdmin().addStep(scope.equals(Scope.global) ? new DedupStep<>(this.asAdmin()) : new DedupLocalStep<>(this.asAdmin()));
+ }
+
public default GraphTraversal<S, E> except(final String sideEffectKeyOrPathLabel) {
return this.asAdmin().addStep(new ExceptStep<E>(this.asAdmin(), sideEffectKeyOrPathLabel));
}
@@ -514,6 +488,12 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
return this.asAdmin().addStep(new SampleStep<>(this.asAdmin(), amountToSample));
}
+ public default GraphTraversal<S, E> sample(final Scope scope, final int amountToSample) {
+ return this.asAdmin().addStep(scope.equals(Scope.global)
+ ? new SampleStep<>(this.asAdmin(), amountToSample)
+ : new SampleLocalStep<>(this.asAdmin(), amountToSample));
+ }
+
///////////////////// SIDE-EFFECT STEPS /////////////////////
public default GraphTraversal<S, E> sideEffect(final Consumer<Traverser<E>> consumer) {
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/a40babe2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/__.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/__.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/__.java
index 56f1ff7..6148dbc 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/__.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/__.java
@@ -18,11 +18,7 @@
*/
package org.apache.tinkerpop.gremlin.process.graph.traversal;
-import org.apache.tinkerpop.gremlin.process.Path;
-import org.apache.tinkerpop.gremlin.process.Scope;
-import org.apache.tinkerpop.gremlin.process.T;
-import org.apache.tinkerpop.gremlin.process.Traversal;
-import org.apache.tinkerpop.gremlin.process.Traverser;
+import org.apache.tinkerpop.gremlin.process.*;
import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
import org.apache.tinkerpop.gremlin.structure.Direction;
import org.apache.tinkerpop.gremlin.structure.Edge;
@@ -33,14 +29,7 @@ import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.function.BiFunction;
-import java.util.function.BiPredicate;
-import java.util.function.BinaryOperator;
-import java.util.function.Consumer;
-import java.util.function.Function;
-import java.util.function.Predicate;
-import java.util.function.Supplier;
-import java.util.function.UnaryOperator;
+import java.util.function.*;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -271,6 +260,10 @@ public class __ {
return __.<A>start().dedup();
}
+ public static <A> GraphTraversal<A, A> dedup(final Scope scope) {
+ return __.<A>start().dedup(scope);
+ }
+
public static <A> GraphTraversal<A, A> except(final String sideEffectKeyOrPathLabel) {
return __.<A>start().except(sideEffectKeyOrPathLabel);
}
@@ -391,6 +384,10 @@ public class __ {
return __.<A>start().sample(amountToSample);
}
+ public static <A> GraphTraversal<A, A> sample(final Scope scope, final int amountToSample) {
+ return __.<A>start().sample(scope, amountToSample);
+ }
+
///////////////////// SIDE-EFFECT STEPS /////////////////////
public static <A> GraphTraversal<A, A> sideEffect(final Consumer<Traverser<A>> consumer) {
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/a40babe2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/DedupLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/DedupLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/DedupLocalStep.java
new file mode 100644
index 0000000..6aa546d
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/DedupLocalStep.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.graph.traversal.step.map;
+
+import org.apache.tinkerpop.gremlin.process.Traversal;
+import org.apache.tinkerpop.gremlin.process.Traverser;
+
+import java.util.HashSet;
+import java.util.stream.Collectors;
+
+/**
+ * @author Daniel Kuppitz (http://gremlin.guru)
+ */
+public final class DedupLocalStep<S> extends LocalBarrierStep<S, S> {
+
+ public DedupLocalStep(final Traversal.Admin traversal) {
+ super(traversal);
+ }
+
+ @Override
+ protected S map(final Traverser.Admin<S> traverser) {
+ return (S) this.collect(traverser).stream().collect(Collectors.toCollection(HashSet::new));
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/a40babe2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SampleLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SampleLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SampleLocalStep.java
new file mode 100644
index 0000000..16fc673
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SampleLocalStep.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tinkerpop.gremlin.process.graph.traversal.step.map;
+
+import org.apache.tinkerpop.gremlin.process.Traversal;
+import org.apache.tinkerpop.gremlin.process.Traverser;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * @author Daniel Kuppitz (http://gremlin.guru)
+ */
+public final class SampleLocalStep<S> extends LocalBarrierStep<S, S> {
+
+ private final int amountToSample;
+
+ public SampleLocalStep(final Traversal.Admin traversal, final int amountToSample) {
+ super(traversal);
+ this.amountToSample = amountToSample;
+ }
+
+ @Override
+ protected S map(final Traverser.Admin<S> traverser) {
+ final List elements = new ArrayList(this.collect(traverser));
+ if (elements.size() <= this.amountToSample) return (S) elements;
+ Collections.shuffle(elements);
+ return (S) elements.subList(0, this.amountToSample);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/a40babe2/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/GroovyDedupTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/GroovyDedupTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/GroovyDedupTest.groovy
index 8ef306f..3e69814 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/GroovyDedupTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/GroovyDedupTest.groovy
@@ -18,12 +18,15 @@
*/
package org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter
+import org.apache.tinkerpop.gremlin.process.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.Scope
import org.apache.tinkerpop.gremlin.process.T
import org.apache.tinkerpop.gremlin.process.Traversal
-import org.apache.tinkerpop.gremlin.process.ComputerTestHelper
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter.DedupTest
import org.apache.tinkerpop.gremlin.structure.Vertex
+import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.bothE
+import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.dedup
+
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
* @author Daniel Kuppitz (http://gremlin.guru)
@@ -45,22 +48,35 @@ public abstract class GroovyDedupTest {
public Traversal<Vertex, String> get_g_V_both_propertiesXnameX_orderXa_bX_dedup_value() {
g.V().both().properties('name').order.by { a, b -> a.value() <=> b.value() }.dedup.value
}
+
+ @Override
+ Traversal<Vertex, Map<String, Set<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXdedupXlocalXX_cap() {
+ g.V().group().by(T.label).by(bothE().values('weight').fold()).by(dedup(Scope.local)).cap()
+ }
}
- public static class ComputerTestImpl extends DedupTest {
+ public static class ComputerTest extends DedupTest {
@Override
public Traversal<Vertex, String> get_g_V_both_dedup_name() {
- ComputerTestHelper.compute("g.V.both.dedup.name", g);
+ g.V.both.dedup.name // TODO
+ //ComputerTestHelper.compute("g.V.both.dedup.name", g);
}
@Override
public Traversal<Vertex, String> get_g_V_both_hasXlabel_softwareX_dedup_byXlangX_name() {
- ComputerTestHelper.compute("g.V.both.has(T.label,'software').dedup.by('lang').name", g);
+ g.V.both.has(T.label, 'software').dedup.by('lang').name // TODO
+ //ComputerTestHelper.compute("g.V.both.has(T.label,'software').dedup.by('lang').name", g);
}
@Override
public Traversal<Vertex, String> get_g_V_both_propertiesXnameX_orderXa_bX_dedup_value() {
- ComputerTestHelper.compute("g.V.both.properties('name').order.by { a, b -> a.value() <=> b.value() }.dedup.value", g);
+ g.V().both().properties('name').order.by { a, b -> a.value() <=> b.value() }.dedup.value // TODO
+ //ComputerTestHelper.compute("g.V.both.properties('name').order.by { a, b -> a.value() <=> b.value() }.dedup.value", g);
+ }
+
+ @Override
+ Traversal<Vertex, Map<String, Set<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXdedupXlocalXX_cap() {
+ ComputerTestHelper.compute("g.V().group().by(T.label).by(bothE().values('weight').fold()).by(dedup(Scope.local)).cap()", g);
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/a40babe2/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/GroovySampleTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/GroovySampleTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/GroovySampleTest.groovy
index 84d0b8a..801a527 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/GroovySampleTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/GroovySampleTest.groovy
@@ -18,13 +18,17 @@
*/
package org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter
+import org.apache.tinkerpop.gremlin.process.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.Scope
+import org.apache.tinkerpop.gremlin.process.T
import org.apache.tinkerpop.gremlin.process.Traversal
import org.apache.tinkerpop.gremlin.process.graph.traversal.__
-import org.apache.tinkerpop.gremlin.process.ComputerTestHelper
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter.SampleTest
import org.apache.tinkerpop.gremlin.structure.Edge
import org.apache.tinkerpop.gremlin.structure.Vertex
+import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.bothE
+import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.sample
+
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
@@ -46,6 +50,16 @@ public abstract class GroovySampleTest {
public Traversal<Vertex, Edge> get_g_V_localXoutE_sampleX1X_byXweightXX() {
g.V.local(__.outE.sample(1).by('weight'))
}
+
+ @Override
+ Traversal<Vertex, Map<String, Collection<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_2XX() {
+ g.V().group().by(T.label).by(bothE().values('weight').fold()).by(sample(Scope.local, 2)).cap()
+ }
+
+ @Override
+ Traversal<Vertex, Map<String, Collection<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_5XX() {
+ g.V().group().by(T.label).by(bothE().values('weight').fold()).by(sample(Scope.local, 5)).cap()
+ }
}
public static class ComputerTest extends SampleTest {
@@ -64,5 +78,15 @@ public abstract class GroovySampleTest {
public Traversal<Vertex, Edge> get_g_V_localXoutE_sampleX1X_byXweightXX() {
ComputerTestHelper.compute("g.V.local(__.outE.sample(1).by('weight'))", g)
}
+
+ @Override
+ Traversal<Vertex, Map<String, Collection<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_2XX() {
+ ComputerTestHelper.compute("g.V().group().by(T.label).by(bothE().values('weight').fold()).by(sample(Scope.local, 2)).cap()", g)
+ }
+
+ @Override
+ Traversal<Vertex, Map<String, Collection<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_5XX() {
+ ComputerTestHelper.compute("g.V().group().by(T.label).by(bothE().values('weight').fold()).by(sample(Scope.local, 5)).cap()", g)
+ }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/a40babe2/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java
index 239e234..2d61246 100644
--- a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java
+++ b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java
@@ -55,7 +55,7 @@ public class GroovyProcessComputerSuite extends ProcessComputerSuite {
GroovyAndTest.ComputerTest.class,
GroovyCoinTest.ComputerTest.class,
GroovyCyclicPathTest.ComputerTest.class,
- // TODO: GroovyDedupTest.ComputerTest.class
+ GroovyDedupTest.ComputerTest.class,
// TODO: GroovyExceptTest.ComputerTest.class,
GroovyFilterTest.ComputerTest.class,
GroovyHasNotTest.ComputerTest.class,
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/a40babe2/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
index cf03949..a894f34 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
@@ -83,7 +83,7 @@ public class ProcessComputerSuite extends AbstractGremlinSuite {
AndTest.ComputerTest.class,
CoinTest.ComputerTest.class,
CyclicPathTest.ComputerTest.class,
- // TODO: DedupTest.ComputerTest.class
+ DedupTest.ComputerTest.class,
ExceptTest.ComputerTest.class,
FilterTest.ComputerTest.class,
HasNotTest.ComputerTest.class,
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/a40babe2/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/DedupTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/DedupTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/DedupTest.java
index 7b82f7a..234a182 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/DedupTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/DedupTest.java
@@ -18,18 +18,21 @@
*/
package org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter;
-import org.apache.tinkerpop.gremlin.AbstractGremlinTest;
import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.Scope;
import org.apache.tinkerpop.gremlin.process.T;
import org.apache.tinkerpop.gremlin.process.Traversal;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.apache.tinkerpop.gremlin.util.StreamFactory;
import org.junit.Test;
-import java.util.List;
+import java.util.*;
import java.util.stream.Collectors;
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
+import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.bothE;
+import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.dedup;
import static org.junit.Assert.*;
/**
@@ -37,7 +40,7 @@ import static org.junit.Assert.*;
* @author Stephen Mallette (http://stephen.genoprime.com)
* @author Daniel Kuppitz (http://gremlin.guru)
*/
-public abstract class DedupTest extends AbstractGremlinTest {
+public abstract class DedupTest extends AbstractGremlinProcessTest {
public abstract Traversal<Vertex, String> get_g_V_both_dedup_name();
@@ -45,6 +48,8 @@ public abstract class DedupTest extends AbstractGremlinTest {
public abstract Traversal<Vertex, String> get_g_V_both_propertiesXnameX_orderXa_bX_dedup_value();
+ public abstract Traversal<Vertex, Map<String, Set<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXdedupXlocalXX_cap();
+
@Test
@LoadGraphWith(MODERN)
public void g_V_both_dedup_name() {
@@ -88,8 +93,28 @@ public abstract class DedupTest extends AbstractGremlinTest {
assertFalse(traversal.hasNext());
}
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXdedupXlocalXX_cap() {
+ final Traversal<Vertex, Map<String, Set<Double>>> traversal =
+ get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXdedupXlocalXX_cap();
+ printTraversalForm(traversal);
+ assertTrue(traversal.hasNext());
+ final Map<String, Set<Double>> map = traversal.next();
+ assertFalse(traversal.hasNext());
+ assertEquals(2, map.size());
+ assertEquals(3, map.get("software").size());
+ assertEquals(4, map.get("person").size());
+ assertEquals(new HashSet<>(Arrays.asList(0.2, 0.4, 1.0)), map.get("software"));
+ assertEquals(new HashSet<>(Arrays.asList(0.2, 0.4, 0.5, 1.0)), map.get("person"));
+ }
+
public static class StandardTest extends DedupTest {
+ public StandardTest() {
+ requiresGraphComputer = false;
+ }
+
@Override
public Traversal<Vertex, String> get_g_V_both_dedup_name() {
return g.V().both().dedup().values("name");
@@ -104,5 +129,37 @@ public abstract class DedupTest extends AbstractGremlinTest {
public Traversal<Vertex, String> get_g_V_both_propertiesXnameX_orderXa_bX_dedup_value() {
return g.V().both().<String>properties("name").order().by((a, b) -> a.value().compareTo(b.value())).dedup().value();
}
+
+ @Override
+ public Traversal<Vertex, Map<String, Set<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXdedupXlocalXX_cap() {
+ return g.V().group().by(T.label).by(bothE().values("weight").fold()).by(dedup(Scope.local)).cap();
+ }
+ }
+
+ public static class ComputerTest extends StandardTest {
+
+ public ComputerTest() {
+ requiresGraphComputer = true;
+ }
+
+ @Override
+ public Traversal<Vertex, String> get_g_V_both_dedup_name() {
+ return super.get_g_V_both_dedup_name()/*.submit(g.compute())*/; // TODO
+ }
+
+ @Override
+ public Traversal<Vertex, String> get_g_V_both_hasXlabel_softwareX_dedup_byXlangX_name() {
+ return super.get_g_V_both_hasXlabel_softwareX_dedup_byXlangX_name()/*.submit(g.compute())*/; // TODO
+ }
+
+ @Override
+ public Traversal<Vertex, String> get_g_V_both_propertiesXnameX_orderXa_bX_dedup_value() {
+ return super.get_g_V_both_propertiesXnameX_orderXa_bX_dedup_value()/*.submit(g.compute())*/; // TODO
+ }
+
+ @Override
+ public Traversal<Vertex, Map<String, Set<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXdedupXlocalXX_cap() {
+ return super.get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXdedupXlocalXX_cap().submit(g.compute());
+ }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/a40babe2/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/SampleTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/SampleTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/SampleTest.java
index 2b830c4..bcd2724 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/SampleTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/SampleTest.java
@@ -20,11 +20,16 @@ package org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter;
import org.apache.tinkerpop.gremlin.LoadGraphWith;
import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.Scope;
+import org.apache.tinkerpop.gremlin.process.T;
import org.apache.tinkerpop.gremlin.process.Traversal;
import org.apache.tinkerpop.gremlin.structure.Edge;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.junit.Test;
+import java.util.Collection;
+import java.util.Map;
+
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.*;
import static org.junit.Assert.*;
@@ -40,6 +45,10 @@ public abstract class SampleTest extends AbstractGremlinProcessTest {
public abstract Traversal<Vertex, Edge> get_g_V_localXoutE_sampleX1X_byXweightXX();
+ public abstract Traversal<Vertex, Map<String, Collection<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_2XX();
+
+ public abstract Traversal<Vertex, Map<String, Collection<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_5XX();
+
@Test
@LoadGraphWith(MODERN)
public void g_E_sampleX1X() {
@@ -73,6 +82,34 @@ public abstract class SampleTest extends AbstractGremlinProcessTest {
assertFalse(traversal.hasNext());
}
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_2XX() {
+ final Traversal<Vertex, Map<String, Collection<Double>>> traversal =
+ get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_2XX();
+ printTraversalForm(traversal);
+ assertTrue(traversal.hasNext());
+ final Map<String, Collection<Double>> map = traversal.next();
+ assertFalse(traversal.hasNext());
+ assertEquals(2, map.size());
+ assertEquals(2, map.get("software").size());
+ assertEquals(2, map.get("person").size());
+ }
+
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_5XX() {
+ final Traversal<Vertex, Map<String, Collection<Double>>> traversal =
+ get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_5XX();
+ printTraversalForm(traversal);
+ assertTrue(traversal.hasNext());
+ final Map<String, Collection<Double>> map = traversal.next();
+ assertFalse(traversal.hasNext());
+ assertEquals(2, map.size());
+ assertEquals(4, map.get("software").size());
+ assertEquals(5, map.get("person").size());
+ }
+
public static class StandardTest extends SampleTest {
public StandardTest() {
@@ -93,26 +130,47 @@ public abstract class SampleTest extends AbstractGremlinProcessTest {
public Traversal<Vertex, Edge> get_g_V_localXoutE_sampleX1X_byXweightXX() {
return g.V().local(outE().sample(1).by("weight"));
}
+
+ @Override
+ public Traversal<Vertex, Map<String, Collection<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_2XX() {
+ return g.V().group().by(T.label).by(bothE().values("weight").fold()).by(sample(Scope.local, 2)).cap();
+ }
+
+ @Override
+ public Traversal<Vertex, Map<String, Collection<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_5XX() {
+ return g.V().group().by(T.label).by(bothE().values("weight").fold()).by(sample(Scope.local, 5)).cap();
+ }
}
- public static class ComputerTest extends SampleTest {
+ public static class ComputerTest extends StandardTest {
+
public ComputerTest() {
requiresGraphComputer = true;
}
@Override
public Traversal<Edge, Edge> get_g_E_sampleX1X() {
- return g.E().sample(1); // TODO: makes no sense when its global
+ return super.get_g_E_sampleX1X(); // TODO: makes no sense when its global
}
@Override
public Traversal<Edge, Edge> get_g_E_sampleX2X_byXweightX() {
- return g.E().sample(2).by("weight"); // TODO: makes no sense when its global
+ return super.get_g_E_sampleX2X_byXweightX(); // TODO: makes no sense when its global
}
@Override
public Traversal<Vertex, Edge> get_g_V_localXoutE_sampleX1X_byXweightXX() {
- return g.V().local(outE().sample(1).by("weight")).submit(g.compute());
+ return super.get_g_V_localXoutE_sampleX1X_byXweightXX().submit(g.compute());
+ }
+
+ @Override
+ public Traversal<Vertex, Map<String, Collection<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_2XX() {
+ return super.get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_2XX().submit(g.compute());
+ }
+
+ @Override
+ public Traversal<Vertex, Map<String, Collection<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_5XX() {
+ return super.get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_5XX().submit(g.compute());
}
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/a40babe2/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
index 0684723..5186eb7 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
@@ -189,10 +189,20 @@ public class TinkerGraphTest {
public void testPlayDK() throws Exception {
Graph g = TinkerFactory.createModern();
- Traversal t = g.V().hasLabel("software").group().by("name").by(bothE().values("weight").fold()).cap();
- System.out.println(t.toString());
+ Traversal t = g.V().group().by(T.label).by(bothE().values("weight").fold()).by(dedup(Scope.local)).cap();
+ t.forEachRemaining(System.out::println);
+ System.out.println("--");
+
+ t = g.V().group().by(T.label).by(bothE().values("weight").fold()).cap();
+ t.forEachRemaining(System.out::println);
+ System.out.println("--");
+
+ t = g.V().group().by(T.label).by(bothE().values("weight").fold()).by(sample(Scope.local, 2)).cap();
+ t.forEachRemaining(System.out::println);
+ System.out.println("--");
+
+ t = g.V().group().by(T.label).by(bothE().values("weight").fold()).by(sample(Scope.local, 4)).cap();
t.forEachRemaining(System.out::println);
- System.out.println(t.toString());
}
/**
[2/8] incubator-tinkerpop git commit: renamed LocalAggregateStep to
LocalBarrierStep
Posted by ok...@apache.org.
renamed LocalAggregateStep to LocalBarrierStep
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/2f679ab6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/2f679ab6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/2f679ab6
Branch: refs/heads/master
Commit: 2f679ab6b316353291aa150fc697a5e0eccb3789
Parents: 8226a0b
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Fri Feb 13 16:41:24 2015 +0100
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Fri Feb 13 16:41:24 2015 +0100
----------------------------------------------------------------------
.../traversal/step/map/CountLocalStep.java | 6 +--
.../traversal/step/map/LocalAggregateStep.java | 53 --------------------
.../traversal/step/map/LocalBarrierStep.java | 53 ++++++++++++++++++++
.../graph/traversal/step/map/MaxLocalStep.java | 6 +--
.../graph/traversal/step/map/MeanLocalStep.java | 6 +--
.../graph/traversal/step/map/MinLocalStep.java | 6 +--
.../graph/traversal/step/map/SumLocalStep.java | 2 +-
7 files changed, 58 insertions(+), 74 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/2f679ab6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/CountLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/CountLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/CountLocalStep.java
index 8a1d0e0..5fc5f2c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/CountLocalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/CountLocalStep.java
@@ -20,15 +20,11 @@ package org.apache.tinkerpop.gremlin.process.graph.traversal.step.map;
import org.apache.tinkerpop.gremlin.process.Traversal;
import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-
-import java.util.Collections;
-import java.util.Set;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-public final class CountLocalStep<S> extends LocalAggregateStep<S, Long> {
+public final class CountLocalStep<S> extends LocalBarrierStep<S, Long> {
public CountLocalStep(final Traversal.Admin traversal) {
super(traversal);
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/2f679ab6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/LocalAggregateStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/LocalAggregateStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/LocalAggregateStep.java
deleted file mode 100644
index 4e99de2..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/LocalAggregateStep.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.graph.traversal.step.map;
-
-import org.apache.tinkerpop.gremlin.process.Traversal;
-import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * @author Daniel Kuppitz (http://gremlin.guru)
- */
-public abstract class LocalAggregateStep<S, E> extends MapStep<S, E> {
-
- public LocalAggregateStep(final Traversal.Admin traversal) {
- super(traversal);
- }
-
- protected <E2> Collection<E2> collect(final Traverser.Admin<S> traverser) {
- final S start = traverser.get();
- if (start instanceof Collection)
- return (Collection<E2>) start;
- else if (start instanceof Map)
- return (Collection<E2>) ((Map) start).values();
- else
- return Collections.singleton((E2) start);
- }
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- return Collections.singleton(TraverserRequirement.OBJECT);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/2f679ab6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/LocalBarrierStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/LocalBarrierStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/LocalBarrierStep.java
new file mode 100644
index 0000000..54b9e97
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/LocalBarrierStep.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.graph.traversal.step.map;
+
+import org.apache.tinkerpop.gremlin.process.Traversal;
+import org.apache.tinkerpop.gremlin.process.Traverser;
+import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @author Daniel Kuppitz (http://gremlin.guru)
+ */
+public abstract class LocalBarrierStep<S, E> extends MapStep<S, E> {
+
+ public LocalBarrierStep(final Traversal.Admin traversal) {
+ super(traversal);
+ }
+
+ protected <E2> Collection<E2> collect(final Traverser.Admin<S> traverser) {
+ final S start = traverser.get();
+ if (start instanceof Collection)
+ return (Collection<E2>) start;
+ else if (start instanceof Map)
+ return (Collection<E2>) ((Map) start).values();
+ else
+ return Collections.singleton((E2) start);
+ }
+
+ @Override
+ public Set<TraverserRequirement> getRequirements() {
+ return Collections.singleton(TraverserRequirement.OBJECT);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/2f679ab6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxLocalStep.java
index b19e8dc..b3b8ce3 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxLocalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxLocalStep.java
@@ -20,15 +20,11 @@ package org.apache.tinkerpop.gremlin.process.graph.traversal.step.map;
import org.apache.tinkerpop.gremlin.process.Traversal;
import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-
-import java.util.Collections;
-import java.util.Set;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-public final class MaxLocalStep<S> extends LocalAggregateStep<S, Number> {
+public final class MaxLocalStep<S> extends LocalBarrierStep<S, Number> {
public MaxLocalStep(final Traversal.Admin traversal) {
super(traversal);
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/2f679ab6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanLocalStep.java
index 1a01f8c..873fd8f 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanLocalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanLocalStep.java
@@ -20,15 +20,11 @@ package org.apache.tinkerpop.gremlin.process.graph.traversal.step.map;
import org.apache.tinkerpop.gremlin.process.Traversal;
import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-
-import java.util.Collections;
-import java.util.Set;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-public final class MeanLocalStep<S> extends LocalAggregateStep<S, Double> {
+public final class MeanLocalStep<S> extends LocalBarrierStep<S, Double> {
public MeanLocalStep(final Traversal.Admin traversal) {
super(traversal);
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/2f679ab6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinLocalStep.java
index 72aa2a7..04fdb45 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinLocalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinLocalStep.java
@@ -20,15 +20,11 @@ package org.apache.tinkerpop.gremlin.process.graph.traversal.step.map;
import org.apache.tinkerpop.gremlin.process.Traversal;
import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-
-import java.util.Collections;
-import java.util.Set;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-public final class MinLocalStep<S> extends LocalAggregateStep<S, Number> {
+public final class MinLocalStep<S> extends LocalBarrierStep<S, Number> {
public MinLocalStep(final Traversal.Admin traversal) {
super(traversal);
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/2f679ab6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SumLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SumLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SumLocalStep.java
index 933331b..834dc8a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SumLocalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SumLocalStep.java
@@ -24,7 +24,7 @@ import org.apache.tinkerpop.gremlin.process.Traverser;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-public final class SumLocalStep<S> extends LocalAggregateStep<S, Double> {
+public final class SumLocalStep<S> extends LocalBarrierStep<S, Double> {
public SumLocalStep(final Traversal.Admin traversal) {
super(traversal);
[6/8] incubator-tinkerpop git commit: Merge branch 'master' into local
Posted by ok...@apache.org.
Merge branch 'master' into local
Resolved Conflicts:
CHANGELOG.asciidoc
gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/GroovySampleTest.groovy
gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/SampleTest.java
tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/962150e7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/962150e7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/962150e7
Branch: refs/heads/master
Commit: 962150e77fffa65f3abde9ed207f09f3a4857a92
Parents: a40babe 9024bbd
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Fri Feb 13 23:24:47 2015 +0100
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Fri Feb 13 23:24:47 2015 +0100
----------------------------------------------------------------------
.travis.yml | 16 +++
CHANGELOG.asciidoc | 20 +++
CONTRIBUTING.asciidoc | 16 +++
README.asciidoc | 18 +++
docs/preprocessor/processor.groovy | 19 +++
docs/src/acknowledgements.asciidoc | 16 +++
docs/src/conclusion.asciidoc | 16 +++
docs/src/gremlin-applications.asciidoc | 16 +++
docs/src/implementations.asciidoc | 16 +++
docs/src/index.asciidoc | 16 +++
docs/src/intro.asciidoc | 16 +++
docs/src/preface.asciidoc | 16 +++
docs/src/the-graph.asciidoc | 16 +++
docs/src/the-graphcomputer.asciidoc | 16 +++
docs/src/the-traversal.asciidoc | 16 +++
docs/src/tinkerpop-contributors.asciidoc | 16 +++
gremlin-console/bin/gremlin.bat | 17 +++
gremlin-console/bin/gremlin.sh | 19 +++
gremlin-console/conf/log4j-console.properties | 24 ++++
gremlin-console/conf/log4j-repl.properties | 8 --
gremlin-console/conf/log4j.properties | 17 +++
gremlin-console/conf/remote-objects.yaml | 17 +++
gremlin-console/conf/remote.yaml | 17 +++
gremlin-console/src/main/bin/gremlin.bat | 17 +++
gremlin-console/src/main/bin/gremlin.sh | 2 +-
.../plugin/gremlin-server-integration.yaml | 17 +++
.../gremlin/console/groovy/plugin/remote.yaml | 17 +++
.../tinkerpop/gremlin/process/Traversal.java | 71 +++++-----
.../gremlin/process/TraversalEngine.java | 22 ++-
.../process/TraversalInterruptedException.java | 50 +++++++
.../gremlin/process/TraversalStrategies.java | 2 +-
.../gremlin/process/TraversalStrategy.java | 2 +-
.../traversal/TraversalVertexProgram.java | 14 +-
.../traversal/step/map/ComputerResultStep.java | 70 ++++++----
.../computer/util/DefaultComputerResult.java | 2 +
.../graph/traversal/DefaultGraphTraversal.java | 4 +-
.../process/graph/traversal/EdgeTraversal.java | 2 +-
.../graph/traversal/ElementTraversal.java | 6 -
.../process/graph/traversal/GraphTraversal.java | 19 +--
.../traversal/VertexPropertyTraversal.java | 2 +-
.../graph/traversal/VertexTraversal.java | 2 +-
.../gremlin/process/graph/traversal/__.java | 8 +-
.../graph/traversal/step/map/BackStep.java | 2 +-
.../graph/traversal/step/map/SelectOneStep.java | 2 +-
.../graph/traversal/step/map/SelectStep.java | 2 +-
.../traversal/step/sideEffect/GraphStep.java | 2 +-
.../traversal/step/sideEffect/GroupStep.java | 2 +-
.../traversal/step/sideEffect/ProfileStep.java | 6 +-
.../sideEffect/mapreduce/GroupMapReduce.java | 7 +-
.../traversal/step/util/ComputerAwareStep.java | 4 +-
.../ComparatorHolderRemovalStrategy.java | 4 +-
.../traversal/strategy/ConjunctionStrategy.java | 2 +-
.../strategy/DedupOptimizerStrategy.java | 2 +-
.../strategy/EngineDependentStrategy.java | 4 +-
.../strategy/IdentityRemovalStrategy.java | 2 +-
.../strategy/LabeledEndStepStrategy.java | 2 +-
.../traversal/strategy/MatchWhereStrategy.java | 2 +-
.../traversal/strategy/ProfileStrategy.java | 2 +-
.../strategy/RangeByIsCountStrategy.java | 2 +-
.../traversal/strategy/ReducingStrategy.java | 4 +-
.../strategy/SideEffectCapStrategy.java | 2 +-
.../SideEffectRegistrationStrategy.java | 2 +-
.../strategy/TraversalVerificationStrategy.java | 9 +-
.../traversal/util/EmptyGraphTraversal.java | 5 -
.../process/traversal/DefaultTraversal.java | 76 ++++++++---
.../traversal/DefaultTraversalStrategies.java | 4 +-
.../engine/ComputerTraversalEngine.java | 57 ++++++++
.../engine/StandardTraversalEngine.java | 54 ++++++++
.../lambda/AbstractLambdaTraversal.java | 23 +++-
.../traversal/lambda/HasNextTraversal.java | 16 ++-
.../process/traversal/util/EmptyTraversal.java | 18 ++-
.../util/EmptyTraversalStrategies.java | 2 +-
.../tinkerpop/gremlin/structure/Graph.java | 14 +-
.../structure/strategy/PartitionStrategy.java | 9 +-
.../structure/strategy/StrategyGraph.java | 11 ++
.../structure/util/batch/BatchGraph.java | 12 ++
.../structure/util/empty/EmptyGraph.java | 12 ++
.../util/InterruptedRuntimeException.java | 41 ++++++
.../loaders/SugarLoaderPerformanceTest.groovy | 136 +++++++++++++++++++
.../groovy/loaders/SugarLoaderTest.groovy | 60 --------
.../step/branch/GroovyUnionTest.groovy | 2 +
.../step/filter/GroovyDedupTest.groovy | 10 +-
.../step/filter/GroovySampleTest.groovy | 3 +
.../step/filter/GroovyWhereTest.groovy | 3 +
.../traversal/step/map/GroovyCountTest.groovy | 2 +
.../traversal/step/map/GroovyFoldTest.groovy | 2 +
.../traversal/step/map/GroovyMapTest.groovy | 3 +
.../traversal/step/map/GroovyOrderTest.groovy | 8 +-
.../traversal/step/map/GroovySelectTest.groovy | 7 +
.../GroovyEnvironmentPerformanceSuite.java | 4 +-
.../engine/GremlinExecutorPerformanceTest.java | 1 -
.../groovy/engine/GremlinExecutorTest.java | 77 ++++++++++-
.../jsr223/GremlinGroovyScriptEngineTest.java | 31 +++++
.../process/GroovyProcessComputerSuite.java | 2 +-
.../META-INF/javax.script.ScriptEngineFactory | 1 -
.../AbstractImportCustomizerProvider.java | 8 +-
.../gremlin/groovy/engine/GremlinExecutor.java | 107 ++++++++-------
.../groovy/engine/GroovyTraversalScript.java | 17 +--
gremlin-server/bin/gremlin-server.bat | 17 +++
gremlin-server/conf/gremlin-server-classic.yaml | 17 +++
gremlin-server/conf/gremlin-server-min.yaml | 17 +++
gremlin-server/conf/gremlin-server-modern.yaml | 17 +++
gremlin-server/conf/gremlin-server-neo4j.yaml | 17 +++
.../conf/gremlin-server-rest-modern.yaml | 17 +++
gremlin-server/conf/gremlin-server.yaml | 17 +++
gremlin-server/src/main/bin/gremlin-server.bat | 17 +++
.../server/gremlin-server-integration.yaml | 17 +++
.../server/gremlin-server-performance.yaml | 17 +++
.../tinkerpop/gremlin/AbstractGremlinTest.java | 5 +-
.../apache/tinkerpop/gremlin/GraphProvider.java | 7 +-
.../ranking/PageRankVertexProgramTest.java | 2 +
.../graph/traversal/step/branch/BranchTest.java | 4 +-
.../graph/traversal/step/branch/ChooseTest.java | 2 +-
.../graph/traversal/step/branch/LocalTest.java | 18 +--
.../graph/traversal/step/branch/RepeatTest.java | 18 +--
.../graph/traversal/step/branch/UnionTest.java | 12 +-
.../graph/traversal/step/filter/AndTest.java | 4 +-
.../graph/traversal/step/filter/CoinTest.java | 4 +-
.../traversal/step/filter/CyclicPathTest.java | 4 +-
.../graph/traversal/step/filter/DedupTest.java | 12 +-
.../graph/traversal/step/filter/ExceptTest.java | 19 ++-
.../graph/traversal/step/filter/FilterTest.java | 25 ++--
.../graph/traversal/step/filter/HasNotTest.java | 4 +-
.../graph/traversal/step/filter/HasTest.java | 28 ++--
.../graph/traversal/step/filter/IsTest.java | 10 +-
.../graph/traversal/step/filter/OrTest.java | 4 +-
.../graph/traversal/step/filter/RetainTest.java | 8 +-
.../graph/traversal/step/filter/SampleTest.java | 14 +-
.../traversal/step/filter/SimplePathTest.java | 4 +-
.../graph/traversal/step/filter/WhereTest.java | 8 +-
.../graph/traversal/step/map/BackTest.java | 18 +--
.../graph/traversal/step/map/CoalesceTest.java | 10 +-
.../graph/traversal/step/map/CountTest.java | 16 ++-
.../graph/traversal/step/map/FoldTest.java | 6 +-
.../graph/traversal/step/map/MapTest.java | 13 +-
.../graph/traversal/step/map/MaxTest.java | 6 +-
.../graph/traversal/step/map/MeanTest.java | 4 +-
.../graph/traversal/step/map/MinTest.java | 10 +-
.../graph/traversal/step/map/OrderTest.java | 20 ++-
.../graph/traversal/step/map/PathTest.java | 4 +-
.../traversal/step/map/PropertiesTest.java | 4 +-
.../graph/traversal/step/map/SelectTest.java | 20 ++-
.../graph/traversal/step/map/SumTest.java | 4 +-
.../graph/traversal/step/map/UnfoldTest.java | 6 +-
.../graph/traversal/step/map/ValueMapTest.java | 9 +-
.../graph/traversal/step/map/VertexTest.java | 50 +++----
.../step/sideEffect/AggregateTest.java | 6 +-
.../step/sideEffect/GroupCountTest.java | 12 +-
.../traversal/step/sideEffect/GroupTest.java | 10 +-
.../traversal/step/sideEffect/InjectTest.java | 4 +-
.../traversal/step/sideEffect/ProfileTest.java | 4 +-
.../traversal/step/sideEffect/SackTest.java | 8 +-
.../step/sideEffect/SideEffectCapTest.java | 4 +-
.../traversal/step/sideEffect/StoreTest.java | 8 +-
.../traversal/step/sideEffect/TreeTest.java | 6 +-
.../strategy/RangeByIsCountStrategyTest.java | 4 +-
.../TraversalVerificationStrategyTest.java | 21 +--
.../process/traversal/CoreTraversalTest.java | 100 ++++++++++++++
.../process/traversal/DefaultTraversalTest.java | 4 +-
.../structure/GraphConstructionTest.java | 1 +
.../process/TraversalStrategiesTest.java | 2 +-
.../process/util/TraversalHelperTest.java | 9 +-
.../groovy/plugin/HadoopRemoteAcceptor.java | 4 +-
.../strategy/HadoopElementStepStrategy.java | 4 +-
.../gremlin/hadoop/structure/HadoopGraph.java | 21 ++-
.../structure/hdfs/HadoopElementIterator.java | 6 +
.../strategy/Neo4jGraphStepStrategy.java | 2 +-
.../gremlin/neo4j/structure/Neo4jGraph.java | 19 ++-
pom.xml | 37 +++++
.../strategy/TinkerElementStepStrategy.java | 4 +-
.../strategy/TinkerGraphStepStrategy.java | 5 +-
.../tinkergraph/structure/TinkerFactory.java | 2 +-
.../tinkergraph/structure/TinkerGraph.java | 21 ++-
.../tinkergraph/TinkerGraphGraphProvider.java | 3 +-
.../tinkergraph/structure/TinkerGraphTest.java | 27 ++--
175 files changed, 1960 insertions(+), 601 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/962150e7/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --cc CHANGELOG.asciidoc
index 33a381d,8a32d56..a8a48bd
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@@ -9,9 -25,12 +25,13 @@@ image::http://www.tinkerpop.com/docs/cu
TinkerPop 3.0.0.M8 (Release Date: NOT OFFICIALLY RELEASED YET)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+* Added `dedup(local)` and `sample(local)`.
+ * `TraversalStrategy.apply(traversal)` is the new method signature as the `TraversalEngine` can be retrieved from the `Traversal`.
+ * `TraversalEngine` is now an interface and provided by the graph to the traversal at construction. `Graph` methods added to set the desired traversal engine to use.
* Added `count(local)`, `sum(local)`, `max(local)`, `min(local)`, and `mean(local)` operating on the local object (e.g. collection, map, etc.)
* `TraversalComparator` exists which allows for `order().by(outE().count(),decr)`.
+ * Added Apache Rat plugin to detect the proper inclusion of license headers in files.
+ * A `Traversal` now respects thread interruption during iteration, throwing a `TraversalInterruptionException` if it encounters interruption on the current thread.
* Apache refactoring: `com.tinkerpop` -> `org.apache.tinkerpop`.
* `Traversal` is now `Serializable` and with 99% of queries no longer needing lambdas, Gremlin-Java works over the wire.
* Added `VertexProperty.Cardinality` with `list`, `set`, and `single`. No more `Vertex.singleProperty()` method.
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/962150e7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/ElementTraversal.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/962150e7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/GraphTraversal.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/962150e7/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/__.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/962150e7/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/GroovyDedupTest.groovy
----------------------------------------------------------------------
diff --cc gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/GroovyDedupTest.groovy
index 3e69814,8ef306f..a756cc8
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/GroovyDedupTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/GroovyDedupTest.groovy
@@@ -18,15 -18,12 +18,16 @@@
*/
package org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter
+import org.apache.tinkerpop.gremlin.process.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.Scope
import org.apache.tinkerpop.gremlin.process.T
import org.apache.tinkerpop.gremlin.process.Traversal
-import org.apache.tinkerpop.gremlin.process.ComputerTestHelper
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter.DedupTest
++import org.apache.tinkerpop.gremlin.process.traversal.engine.StandardTraversalEngine
import org.apache.tinkerpop.gremlin.structure.Vertex
+import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.bothE
+import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.dedup
+
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
* @author Daniel Kuppitz (http://gremlin.guru)
@@@ -48,35 -45,22 +49,38 @@@ public abstract class GroovyDedupTest
public Traversal<Vertex, String> get_g_V_both_propertiesXnameX_orderXa_bX_dedup_value() {
g.V().both().properties('name').order.by { a, b -> a.value() <=> b.value() }.dedup.value
}
+
+ @Override
+ Traversal<Vertex, Map<String, Set<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXdedupXlocalXX_cap() {
+ g.V().group().by(T.label).by(bothE().values('weight').fold()).by(dedup(Scope.local)).cap()
+ }
}
- public static class ComputerTestImpl extends DedupTest {
+ public static class ComputerTest extends DedupTest {
@Override
public Traversal<Vertex, String> get_g_V_both_dedup_name() {
- g.V.both.dedup.name // TODO
- ComputerTestHelper.compute("g.V.both.dedup.name", g);
++ g.engine(StandardTraversalEngine.instance()) // TODO
++ g.V.both.dedup.name
+ //ComputerTestHelper.compute("g.V.both.dedup.name", g);
}
@Override
public Traversal<Vertex, String> get_g_V_both_hasXlabel_softwareX_dedup_byXlangX_name() {
- g.V.both.has(T.label, 'software').dedup.by('lang').name // TODO
- ComputerTestHelper.compute("g.V.both.has(T.label,'software').dedup.by('lang').name", g);
++ g.engine(StandardTraversalEngine.instance()) // TODO
++ g.V.both.has(T.label, 'software').dedup.by('lang').name
+ //ComputerTestHelper.compute("g.V.both.has(T.label,'software').dedup.by('lang').name", g);
}
@Override
public Traversal<Vertex, String> get_g_V_both_propertiesXnameX_orderXa_bX_dedup_value() {
- g.V().both().properties('name').order.by { a, b -> a.value() <=> b.value() }.dedup.value // TODO
- ComputerTestHelper.compute("g.V.both.properties('name').order.by { a, b -> a.value() <=> b.value() }.dedup.value", g);
++ g.engine(StandardTraversalEngine.instance()) // TODO
++ g.V().both().properties('name').order.by { a, b -> a.value() <=> b.value() }.dedup.value
+ //ComputerTestHelper.compute("g.V.both.properties('name').order.by { a, b -> a.value() <=> b.value() }.dedup.value", g);
+ }
+
+ @Override
+ Traversal<Vertex, Map<String, Set<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXdedupXlocalXX_cap() {
+ ComputerTestHelper.compute("g.V().group().by(T.label).by(bothE().values('weight').fold()).by(dedup(Scope.local)).cap()", g);
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/962150e7/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/GroovySampleTest.groovy
----------------------------------------------------------------------
diff --cc gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/GroovySampleTest.groovy
index 801a527,06a691f..6f829f0
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/GroovySampleTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/GroovySampleTest.groovy
@@@ -18,11 -18,11 +18,12 @@@
*/
package org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter
+import org.apache.tinkerpop.gremlin.process.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.Scope
+import org.apache.tinkerpop.gremlin.process.T
import org.apache.tinkerpop.gremlin.process.Traversal
import org.apache.tinkerpop.gremlin.process.graph.traversal.__
-import org.apache.tinkerpop.gremlin.process.ComputerTestHelper
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter.SampleTest
+ import org.apache.tinkerpop.gremlin.process.traversal.engine.StandardTraversalEngine
import org.apache.tinkerpop.gremlin.structure.Edge
import org.apache.tinkerpop.gremlin.structure.Vertex
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/962150e7/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/962150e7/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/DedupTest.java
----------------------------------------------------------------------
diff --cc gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/DedupTest.java
index 234a182,7b82f7a..9e9b1f0
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/DedupTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/DedupTest.java
@@@ -18,11 -18,10 +18,12 @@@
*/
package org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter;
-import org.apache.tinkerpop.gremlin.AbstractGremlinTest;
import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.Scope;
import org.apache.tinkerpop.gremlin.process.T;
import org.apache.tinkerpop.gremlin.process.Traversal;
++import org.apache.tinkerpop.gremlin.process.traversal.engine.StandardTraversalEngine;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.apache.tinkerpop.gremlin.util.StreamFactory;
import org.junit.Test;
@@@ -129,37 -104,5 +130,40 @@@ public abstract class DedupTest extend
public Traversal<Vertex, String> get_g_V_both_propertiesXnameX_orderXa_bX_dedup_value() {
return g.V().both().<String>properties("name").order().by((a, b) -> a.value().compareTo(b.value())).dedup().value();
}
+
+ @Override
+ public Traversal<Vertex, Map<String, Set<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXdedupXlocalXX_cap() {
+ return g.V().group().by(T.label).by(bothE().values("weight").fold()).by(dedup(Scope.local)).cap();
+ }
+ }
+
+ public static class ComputerTest extends StandardTest {
+
+ public ComputerTest() {
+ requiresGraphComputer = true;
+ }
+
+ @Override
+ public Traversal<Vertex, String> get_g_V_both_dedup_name() {
- return super.get_g_V_both_dedup_name()/*.submit(g.compute())*/; // TODO
++ g.engine(StandardTraversalEngine.instance()); // TODO
++ return super.get_g_V_both_dedup_name();
+ }
+
+ @Override
+ public Traversal<Vertex, String> get_g_V_both_hasXlabel_softwareX_dedup_byXlangX_name() {
- return super.get_g_V_both_hasXlabel_softwareX_dedup_byXlangX_name()/*.submit(g.compute())*/; // TODO
++ g.engine(StandardTraversalEngine.instance()); // TODO
++ return super.get_g_V_both_hasXlabel_softwareX_dedup_byXlangX_name();
+ }
+
+ @Override
+ public Traversal<Vertex, String> get_g_V_both_propertiesXnameX_orderXa_bX_dedup_value() {
- return super.get_g_V_both_propertiesXnameX_orderXa_bX_dedup_value()/*.submit(g.compute())*/; // TODO
++ g.engine(StandardTraversalEngine.instance()); // TODO
++ return super.get_g_V_both_propertiesXnameX_orderXa_bX_dedup_value();
+ }
+
+ @Override
+ public Traversal<Vertex, Map<String, Set<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXdedupXlocalXX_cap() {
- return super.get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXdedupXlocalXX_cap().submit(g.compute());
++ return super.get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXdedupXlocalXX_cap();
+ }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/962150e7/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/SampleTest.java
----------------------------------------------------------------------
diff --cc gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/SampleTest.java
index bcd2724,ce3bfe6..e761d66
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/SampleTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/filter/SampleTest.java
@@@ -20,9 -20,8 +20,10 @@@ package org.apache.tinkerpop.gremlin.pr
import org.apache.tinkerpop.gremlin.LoadGraphWith;
import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.Scope;
+import org.apache.tinkerpop.gremlin.process.T;
import org.apache.tinkerpop.gremlin.process.Traversal;
+ import org.apache.tinkerpop.gremlin.process.traversal.engine.StandardTraversalEngine;
import org.apache.tinkerpop.gremlin.structure.Edge;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.junit.Test;
@@@ -150,27 -103,19 +151,30 @@@ public abstract class SampleTest extend
@Override
public Traversal<Edge, Edge> get_g_E_sampleX1X() {
- return super.get_g_E_sampleX1X(); // TODO: makes no sense when its global
+ g.engine(StandardTraversalEngine.instance()); // TODO
- return g.E().sample(1);
++ return super.get_g_E_sampleX1X();
}
@Override
public Traversal<Edge, Edge> get_g_E_sampleX2X_byXweightX() {
- return super.get_g_E_sampleX2X_byXweightX(); // TODO: makes no sense when its global
+ g.engine(StandardTraversalEngine.instance()); // TODO
- return g.E().sample(2).by("weight");
++ return super.get_g_E_sampleX2X_byXweightX();
}
@Override
public Traversal<Vertex, Edge> get_g_V_localXoutE_sampleX1X_byXweightXX() {
- return super.get_g_V_localXoutE_sampleX1X_byXweightXX().submit(g.compute());
- return g.V().local(outE().sample(1).by("weight"));
++ g.engine(StandardTraversalEngine.instance()); // TODO
++ return super.get_g_V_localXoutE_sampleX1X_byXweightXX();
+ }
+
+ @Override
+ public Traversal<Vertex, Map<String, Collection<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_2XX() {
- return super.get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_2XX().submit(g.compute());
++ return super.get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_2XX();
+ }
+
+ @Override
+ public Traversal<Vertex, Map<String, Collection<Double>>> get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_5XX() {
- return super.get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_5XX().submit(g.compute());
++ return super.get_g_V_group_byXlabelX_byXbothE_valuesXweightX_foldX_byXsampleXlocal_5XX();
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/962150e7/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxTest.java
----------------------------------------------------------------------
diff --cc gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxTest.java
index f2370c1,38bac12..0807a64
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxTest.java
@@@ -96,13 -74,7 +96,13 @@@ public abstract class MaxTest extends A
@Override
public Traversal<Vertex, Integer> get_g_V_repeatXbothX_timesX5X_age_max() {
- return g.V().repeat(both()).times(5).values("age").<Integer>max().submit(g.compute());
+ return g.V().repeat(both()).times(5).values("age").<Integer>max();
}
+
+ @Override
+ public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmaxXlocalXX() {
+ return g.V().hasLabel("software").group().by("name").by(bothE().values("weight").fold()).
- by(max(Scope.local)).<Map<String, Number>>cap().submit(g.compute());
++ by(max(Scope.local)).<Map<String, Number>>cap();
+ }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/962150e7/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanTest.java
----------------------------------------------------------------------
diff --cc gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanTest.java
index 8fe5267,d061ad4..408df98
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanTest.java
@@@ -86,13 -65,8 +86,13 @@@ public abstract class MeanTest extends
@Override
public Traversal<Vertex, Double> get_g_V_age_mean() {
- return g.V().values("age").mean().submit(g.compute());
+ return g.V().values("age").mean();
}
+ @Override
+ public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmeanXlocalXX() {
+ return g.V().hasLabel("software").group().by("name").by(bothE().values("weight").fold()).
- by(mean(Scope.local)).<Map<String, Number>>cap().submit(g.compute());
++ by(mean(Scope.local)).<Map<String, Number>>cap();
+ }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/962150e7/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinTest.java
----------------------------------------------------------------------
diff --cc gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinTest.java
index 982c7bd,5fb65a1..000db05
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinTest.java
@@@ -31,9 -29,6 +31,7 @@@ import java.util.Map
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.*;
- import static org.junit.Assert.assertEquals;
- import static org.junit.Assert.assertFalse;
- import static org.junit.Assert.assertTrue;
++import static org.junit.Assert.*;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
@@@ -98,13 -74,7 +96,13 @@@ public abstract class MinTest extends A
@Override
public Traversal<Vertex, Integer> get_g_V_repeatXbothX_timesX5X_age_min() {
- return g.V().repeat(both()).times(5).values("age").<Integer>min().submit(g.compute());
+ return g.V().repeat(both()).times(5).values("age").<Integer>min();
}
+
+ @Override
+ public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXminXlocalXX() {
+ return g.V().hasLabel("software").group().by("name").by(bothE().values("weight").fold()).
- by(min(Scope.local)).<Map<String, Number>>cap().submit(g.compute());
++ by(min(Scope.local)).<Map<String, Number>>cap();
+ }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/962150e7/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SumTest.java
----------------------------------------------------------------------
diff --cc gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SumTest.java
index bc66621,0000000..3da3143
mode 100644,000000..100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SumTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SumTest.java
@@@ -1,93 -1,0 +1,93 @@@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.graph.traversal.step.map;
+
+import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.Scope;
+import org.apache.tinkerpop.gremlin.process.Traversal;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.junit.Test;
+
+import java.util.Map;
+
+import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
+import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.bothE;
+import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.sum;
+import static org.junit.Assert.*;
+
+/**
+ * @author Daniel Kuppitz (http://gremlin.guru)
+ */
+public abstract class SumTest extends AbstractGremlinProcessTest {
+
+ public abstract Traversal<Vertex, Double> get_g_V_valuesXageX_sum();
+
+ public abstract Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXsumXlocalXX();
+
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_valuesXageX_sum() {
+ final Traversal<Vertex, Double> traversal = get_g_V_valuesXageX_sum();
+ printTraversalForm(traversal);
+ final Number sum = traversal.next();
+ assertEquals(123.0, sum);
+ assertFalse(traversal.hasNext());
+ }
+
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_hasLabelXsoftwareX_group_byXnameX_byXin_valuesXageX_foldX_byXsumXlocalXX() {
+ final Traversal<Vertex, Map<String, Number>> traversal = get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXsumXlocalXX();
+ printTraversalForm(traversal);
+ assertTrue(traversal.hasNext());
+ final Map<String, Number> map = traversal.next();
+ assertFalse(traversal.hasNext());
+ assertEquals(2, map.size());
+ assertEquals(1.0, map.get("ripple"));
+ assertEquals(1.0, map.get("lop"));
+ }
+
+ public static class StandardTest extends SumTest {
+
+ @Override
+ public Traversal<Vertex, Double> get_g_V_valuesXageX_sum() {
+ return g.V().values("age").sum();
+ }
+
+ @Override
+ public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXsumXlocalXX() {
+ return g.V().hasLabel("software").group().by("name").by(bothE().values("weight").fold()).by(sum(Scope.local)).cap();
+ }
+ }
+
+ public static class ComputerTest extends SumTest {
+
+ @Override
+ public Traversal<Vertex, Double> get_g_V_valuesXageX_sum() {
- return g.V().values("age").sum().submit(g.compute());
++ return g.V().values("age").sum();
+ }
+
+ @Override
+ public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXsumXlocalXX() {
+ return g.V().hasLabel("software").group().by("name").by(bothE().values("weight").fold()).
- by(sum(Scope.local)).<Map<String, Number>>cap().submit(g.compute());
++ by(sum(Scope.local)).<Map<String, Number>>cap();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/962150e7/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
----------------------------------------------------------------------
diff --cc tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
index 5186eb7,ee04e8c..ada9914
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
@@@ -20,18 -20,19 +20,12 @@@ package org.apache.tinkerpop.gremlin.ti
import org.apache.commons.io.FileUtils;
import org.apache.tinkerpop.gremlin.AbstractGremlinTest;
+ import org.apache.tinkerpop.gremlin.process.ComputerTestHelper;
+import org.apache.tinkerpop.gremlin.process.Scope;
import org.apache.tinkerpop.gremlin.process.T;
import org.apache.tinkerpop.gremlin.process.Traversal;
--import org.apache.tinkerpop.gremlin.process.graph.traversal.strategy.RangeByIsCountStrategy;
--import org.apache.tinkerpop.gremlin.process.traversal.DefaultTraversal;
- import org.apache.tinkerpop.gremlin.process.util.metric.TraversalMetrics;
- import org.apache.tinkerpop.gremlin.structure.Direction;
- import org.apache.tinkerpop.gremlin.structure.Edge;
- import org.apache.tinkerpop.gremlin.structure.Graph;
- import org.apache.tinkerpop.gremlin.structure.Operator;
- import org.apache.tinkerpop.gremlin.structure.Order;
- import org.apache.tinkerpop.gremlin.structure.Vertex;
+ import org.apache.tinkerpop.gremlin.process.traversal.engine.ComputerTraversalEngine;
-import org.apache.tinkerpop.gremlin.process.util.metric.TraversalMetrics;
-import org.apache.tinkerpop.gremlin.structure.Direction;
-import org.apache.tinkerpop.gremlin.structure.Edge;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.structure.Operator;
-import org.apache.tinkerpop.gremlin.structure.Order;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
++import org.apache.tinkerpop.gremlin.structure.*;
import org.apache.tinkerpop.gremlin.structure.io.GraphReader;
import org.apache.tinkerpop.gremlin.structure.io.graphml.GraphMLWriter;
import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper;
@@@ -43,13 -44,13 +37,8 @@@ import org.junit.BeforeClass
import org.junit.Ignore;
import org.junit.Test;
--import java.io.File;
--import java.io.FileOutputStream;
--import java.io.IOException;
--import java.io.InputStream;
--import java.io.OutputStream;
++import java.io.*;
import java.util.Arrays;
--import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.function.Supplier;
[7/8] incubator-tinkerpop git commit: Merge branch 'local' of
https://github.com/dkuppitz/incubator-tinkerpop
Posted by ok...@apache.org.
Merge branch 'local' of https://github.com/dkuppitz/incubator-tinkerpop
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/4083888e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/4083888e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/4083888e
Branch: refs/heads/master
Commit: 4083888e6a6f1813555034912d45fbaec751f1e5
Parents: 446df04 962150e
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri Feb 13 15:40:19 2015 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri Feb 13 15:40:19 2015 -0700
----------------------------------------------------------------------
CHANGELOG.asciidoc | 1 +
.../graph/traversal/ElementTraversal.java | 29 +++---
.../process/graph/traversal/GraphTraversal.java | 42 +++------
.../gremlin/process/graph/traversal/__.java | 23 +++--
.../traversal/step/map/CountLocalStep.java | 21 +----
.../traversal/step/map/DedupLocalStep.java | 40 +++++++++
.../traversal/step/map/LocalBarrierStep.java | 53 +++++++++++
.../graph/traversal/step/map/MaxLocalStep.java | 27 +-----
.../graph/traversal/step/map/MeanLocalStep.java | 28 +-----
.../graph/traversal/step/map/MinLocalStep.java | 27 +-----
.../traversal/step/map/SampleLocalStep.java | 49 +++++++++++
.../graph/traversal/step/map/SumLocalStep.java | 24 +----
.../step/filter/GroovyDedupTest.groovy | 32 +++++--
.../step/filter/GroovySampleTest.groovy | 28 +++++-
.../traversal/step/map/GroovyMaxTest.groovy | 16 +++-
.../traversal/step/map/GroovyMeanTest.groovy | 16 +++-
.../traversal/step/map/GroovyMinTest.groovy | 16 +++-
.../traversal/step/map/GroovySumTest.groovy | 59 +++++++++++++
.../process/GroovyProcessComputerSuite.java | 2 +-
.../gremlin/process/ProcessComputerSuite.java | 13 +--
.../gremlin/process/ProcessStandardSuite.java | 2 +
.../graph/traversal/step/filter/DedupTest.java | 67 +++++++++++++-
.../graph/traversal/step/filter/SampleTest.java | 67 +++++++++++++-
.../graph/traversal/step/map/MaxTest.java | 28 ++++++
.../graph/traversal/step/map/MeanTest.java | 30 ++++++-
.../graph/traversal/step/map/MinTest.java | 28 ++++++
.../graph/traversal/step/map/SumTest.java | 93 ++++++++++++++++++++
.../tinkergraph/structure/TinkerGraphTest.java | 41 +++------
28 files changed, 668 insertions(+), 234 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4083888e/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --cc CHANGELOG.asciidoc
index 85e4362,a8a48bd..5bdd704
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@@ -25,8 -25,9 +25,9 @@@ image::http://www.tinkerpop.com/docs/cu
TinkerPop 3.0.0.M8 (Release Date: NOT OFFICIALLY RELEASED YET)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ * Added `dedup(local)` and `sample(local)`.
* `TraversalStrategy.apply(traversal)` is the new method signature as the `TraversalEngine` can be retrieved from the `Traversal`.
-* `TraversalEngine` is now an interface and provided by the graph to the traversal at construction. `Graph` methods added to set the desired traversal engine to use.
+* `TraversalEngine` is now an interface and provided to the traversal by the graph. `Graph` methods added to set the desired traversal engine to use.
* Added `count(local)`, `sum(local)`, `max(local)`, `min(local)`, and `mean(local)` operating on the local object (e.g. collection, map, etc.)
* `TraversalComparator` exists which allows for `order().by(outE().count(),decr)`.
* Added Apache Rat plugin to detect the proper inclusion of license headers in files.
[8/8] incubator-tinkerpop git commit: tweaked CHANGELOG.
Posted by ok...@apache.org.
tweaked CHANGELOG.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/4172c3a2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/4172c3a2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/4172c3a2
Branch: refs/heads/master
Commit: 4172c3a2df7d8f5eb0573da72b2031a7b39e54f5
Parents: 4083888
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri Feb 13 15:41:07 2015 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri Feb 13 15:41:07 2015 -0700
----------------------------------------------------------------------
CHANGELOG.asciidoc | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4172c3a2/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 5bdd704..6037dd3 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -25,10 +25,9 @@ image::http://www.tinkerpop.com/docs/current/images/gremlin-hindu.png[width=225]
TinkerPop 3.0.0.M8 (Release Date: NOT OFFICIALLY RELEASED YET)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-* Added `dedup(local)` and `sample(local)`.
* `TraversalStrategy.apply(traversal)` is the new method signature as the `TraversalEngine` can be retrieved from the `Traversal`.
* `TraversalEngine` is now an interface and provided to the traversal by the graph. `Graph` methods added to set the desired traversal engine to use.
-* Added `count(local)`, `sum(local)`, `max(local)`, `min(local)`, and `mean(local)` operating on the local object (e.g. collection, map, etc.)
+* Added `count(local)`, `sum(local)`, `max(local)`, `min(local)`, `mean(local)`, `dedup(local)`, and `sample(local)` for operating on the local object (e.g. collection, map, etc.).
* `TraversalComparator` exists which allows for `order().by(outE().count(),decr)`.
* Added Apache Rat plugin to detect the proper inclusion of license headers in files.
* A `Traversal` now respects thread interruption during iteration, throwing a `TraversalInterruptionException` if it encounters interruption on the current thread.
[3/8] incubator-tinkerpop git commit: added tests for `min(local)`,
`max(local)`, `mean(local)` and `sum(local)`
Posted by ok...@apache.org.
added tests for `min(local)`, `max(local)`, `mean(local)` and `sum(local)`
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/3d4335b1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/3d4335b1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/3d4335b1
Branch: refs/heads/master
Commit: 3d4335b15734f0ecd33a07006a8b88b1987e3598
Parents: 2f679ab
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Fri Feb 13 18:59:47 2015 +0100
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Fri Feb 13 18:59:47 2015 +0100
----------------------------------------------------------------------
.../traversal/step/map/GroovyMaxTest.groovy | 15 +++-
.../traversal/step/map/GroovyMeanTest.groovy | 16 +++-
.../traversal/step/map/GroovyMinTest.groovy | 16 +++-
.../traversal/step/map/GroovySumTest.groovy | 59 +++++++++++++
.../gremlin/process/ProcessComputerSuite.java | 10 ++-
.../gremlin/process/ProcessStandardSuite.java | 2 +
.../graph/traversal/step/map/MaxTest.java | 28 ++++++
.../graph/traversal/step/map/MeanTest.java | 30 ++++++-
.../graph/traversal/step/map/MinTest.java | 30 +++++++
.../graph/traversal/step/map/SumTest.java | 93 ++++++++++++++++++++
.../tinkergraph/structure/TinkerGraphTest.java | 18 +---
11 files changed, 290 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3d4335b1/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMaxTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMaxTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMaxTest.groovy
index 05f8b03..8469834 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMaxTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMaxTest.groovy
@@ -18,12 +18,14 @@
*/
package org.apache.tinkerpop.gremlin.process.graph.traversal.step.map
+import org.apache.tinkerpop.gremlin.process.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.Scope
import org.apache.tinkerpop.gremlin.process.Traversal
import org.apache.tinkerpop.gremlin.process.graph.traversal.__
-import org.apache.tinkerpop.gremlin.process.ComputerTestHelper
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.MaxTest
import org.apache.tinkerpop.gremlin.structure.Vertex
+import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.*
+
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
@@ -41,6 +43,10 @@ public abstract class GroovyMaxTest {
g.V.repeat(__.both).times(5).age.max
}
+ @Override
+ public Traversal<Vertex, Map<String, Integer>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmaxXlocalXX() {
+ g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(max(Scope.local)).cap()
+ }
}
public static class ComputerTest extends MaxTest {
@@ -54,5 +60,10 @@ public abstract class GroovyMaxTest {
public Traversal<Vertex, Integer> get_g_V_repeatXbothX_timesX5X_age_max() {
ComputerTestHelper.compute("g.V.repeat(__.both).times(5).age.max", g)
}
+
+ @Override
+ public Traversal<Vertex, Map<String, Integer>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmaxXlocalXX() {
+ ComputerTestHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(max(Scope.local)).cap()", g)
+ }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3d4335b1/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMeanTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMeanTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMeanTest.groovy
index 9fef567..9bd3d10 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMeanTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMeanTest.groovy
@@ -18,11 +18,14 @@
*/
package org.apache.tinkerpop.gremlin.process.graph.traversal.step.map
-import org.apache.tinkerpop.gremlin.process.Traversal
import org.apache.tinkerpop.gremlin.process.ComputerTestHelper
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.MeanTest
+import org.apache.tinkerpop.gremlin.process.Scope
+import org.apache.tinkerpop.gremlin.process.Traversal
import org.apache.tinkerpop.gremlin.structure.Vertex
+import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.bothE
+import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.mean
+
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
@@ -35,6 +38,10 @@ public abstract class GroovyMeanTest {
g.V.age.mean
}
+ @Override
+ public Traversal<Vertex, Map<String, Integer>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmeanXlocalXX() {
+ g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(mean(Scope.local)).cap()
+ }
}
public static class ComputerTest extends MeanTest {
@@ -43,5 +50,10 @@ public abstract class GroovyMeanTest {
public Traversal<Vertex, Double> get_g_V_age_mean() {
ComputerTestHelper.compute("g.V.age.mean", g)
}
+
+ @Override
+ public Traversal<Vertex, Map<String, Integer>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmeanXlocalXX() {
+ ComputerTestHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(mean(Scope.local)).cap()", g)
+ }
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3d4335b1/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMinTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMinTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMinTest.groovy
index 4066660..6f4c4fe 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMinTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovyMinTest.groovy
@@ -18,12 +18,15 @@
*/
package org.apache.tinkerpop.gremlin.process.graph.traversal.step.map
+import org.apache.tinkerpop.gremlin.process.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.Scope
import org.apache.tinkerpop.gremlin.process.Traversal
import org.apache.tinkerpop.gremlin.process.graph.traversal.__
-import org.apache.tinkerpop.gremlin.process.ComputerTestHelper
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.MinTest
import org.apache.tinkerpop.gremlin.structure.Vertex
+import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.bothE
+import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.min
+
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
@@ -41,6 +44,10 @@ public abstract class GroovyMinTest {
g.V.repeat(__.both).times(5).age.min
}
+ @Override
+ public Traversal<Vertex, Map<String, Integer>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXminXlocalXX() {
+ g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(min(Scope.local)).cap()
+ }
}
public static class ComputerTest extends MinTest {
@@ -54,5 +61,10 @@ public abstract class GroovyMinTest {
public Traversal<Vertex, Integer> get_g_V_repeatXbothX_timesX5X_age_min() {
ComputerTestHelper.compute("g.V.repeat(__.both).times(5).age.min", g)
}
+
+ @Override
+ public Traversal<Vertex, Map<String, Integer>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXminXlocalXX() {
+ ComputerTestHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(min(Scope.local)).cap()", g)
+ }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3d4335b1/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovySumTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovySumTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovySumTest.groovy
new file mode 100644
index 0000000..f039363
--- /dev/null
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/GroovySumTest.groovy
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.graph.traversal.step.map
+
+import org.apache.tinkerpop.gremlin.process.ComputerTestHelper
+import org.apache.tinkerpop.gremlin.process.Scope
+import org.apache.tinkerpop.gremlin.process.Traversal
+import org.apache.tinkerpop.gremlin.structure.Vertex
+
+import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.bothE
+import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.sum
+
+/**
+ * @author Daniel Kuppitz (http://gremlin.guru)
+ */
+public abstract class GroovySumTest {
+
+ public static class StandardTest extends SumTest {
+
+ @Override
+ public Traversal<Vertex, Double> get_g_V_valuesXageX_sum() {
+ g.V().values('age').sum()
+ }
+
+ @Override
+ public Traversal<Vertex, Map<String, Integer>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXsumXlocalXX() {
+ g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(sum(Scope.local)).cap()
+ }
+ }
+
+ public static class ComputerTest extends SumTest {
+
+ @Override
+ public Traversal<Vertex, Double> get_g_V_valuesXageX_sum() {
+ ComputerTestHelper.compute("g.V.age.mean", g)
+ }
+
+ @Override
+ public Traversal<Vertex, Map<String, Integer>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXsumXlocalXX() {
+ ComputerTestHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().values('weight').fold()).by(sum(Scope.local)).cap()", g)
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3d4335b1/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
index f351049..cf03949 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
@@ -26,8 +26,8 @@ import org.apache.tinkerpop.gremlin.process.graph.traversal.step.branch.*;
import org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter.*;
import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.*;
import org.apache.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.*;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.strategy.TraversalVerificationStrategyTest;
import org.apache.tinkerpop.gremlin.process.graph.traversal.strategy.RangeByIsCountStrategyTest;
+import org.apache.tinkerpop.gremlin.process.graph.traversal.strategy.TraversalVerificationStrategyTest;
import org.junit.runners.model.InitializationError;
import org.junit.runners.model.RunnerBuilder;
@@ -47,6 +47,8 @@ import java.util.stream.Stream;
* (note that the "Suite" implements ProcessComputerStandardSuite.GraphProvider as a convenience only. It could be
* implemented in a separate class file):
* <code>
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
* @RunWith(ProcessComputerSuite.class)
* @ProcessComputerSuite.GraphProviderClass(TinkerGraphProcessComputerTest.class) public class TinkerGraphProcessComputerTest implements GraphProvider {
* }
@@ -56,8 +58,6 @@ import java.util.stream.Stream;
* inject into tests in the suite. The {@code ProcessComputerStandardSuite} will utilized Features defined in the
* suite to determine which tests will be executed.
* <br/>
- *
- * @author Stephen Mallette (http://stephen.genoprime.com)
*/
public class ProcessComputerSuite extends AbstractGremlinSuite {
@@ -70,7 +70,7 @@ public class ProcessComputerSuite extends AbstractGremlinSuite {
private static final Class<?>[] allTests = new Class<?>[]{
// basic api semantics testing
- // GraphComputerTest.ComputerTest.class, // todo: not sure this should be here as it forces retest of GraphComputer without an "implementation"
+ // GraphComputerTest.ComputerTest.class, // todo: not sure this should be here as it forces retest of GraphComputer without an "implementation"
// branch
BranchTest.ComputerTest.class,
@@ -104,6 +104,7 @@ public class ProcessComputerSuite extends AbstractGremlinSuite {
MaxTest.ComputerTest.class,
MeanTest.ComputerTest.class,
MinTest.ComputerTest.class,
+ SumTest.ComputerTest.class,
// TODO: MatchTest.ComputerTest.class,
OrderTest.ComputerTest.class,
PathTest.ComputerTest.class,
@@ -179,6 +180,7 @@ public class ProcessComputerSuite extends AbstractGremlinSuite {
MaxTest.class,
MeanTest.class,
MinTest.class,
+ SumTest.class,
// MatchTest.class,
OrderTest.class,
PathTest.class,
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3d4335b1/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
index 23e7266..197fc89 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
@@ -101,6 +101,7 @@ public class ProcessStandardSuite extends AbstractGremlinSuite {
MaxTest.StandardTest.class,
MeanTest.StandardTest.class,
MinTest.StandardTest.class,
+ SumTest.StandardTest.class,
OrderTest.StandardTest.class,
org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.PathTest.StandardTest.class,
PropertiesTest.StandardTest.class,
@@ -176,6 +177,7 @@ public class ProcessStandardSuite extends AbstractGremlinSuite {
MaxTest.class,
MeanTest.class,
MinTest.class,
+ SumTest.class,
OrderTest.class,
org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.PathTest.class,
SelectTest.class,
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3d4335b1/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxTest.java
index d46eeae..f2370c1 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxTest.java
@@ -20,15 +20,18 @@ package org.apache.tinkerpop.gremlin.process.graph.traversal.step.map;
import org.apache.tinkerpop.gremlin.LoadGraphWith;
import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.Scope;
import org.apache.tinkerpop.gremlin.process.Traversal;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.junit.Test;
import java.util.Arrays;
import java.util.List;
+import java.util.Map;
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.*;
+import static org.junit.Assert.*;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -39,6 +42,8 @@ public abstract class MaxTest extends AbstractGremlinProcessTest {
public abstract Traversal<Vertex, Integer> get_g_V_repeatXbothX_timesX5X_age_max();
+ public abstract Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmaxXlocalXX();
+
@Test
@LoadGraphWith(MODERN)
public void g_V_age_max() {
@@ -51,6 +56,19 @@ public abstract class MaxTest extends AbstractGremlinProcessTest {
});
}
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_hasLabelXsoftwareX_group_byXnameX_byXin_valuesXageX_foldX_byXmaxXlocalXX() {
+ final Traversal<Vertex, Map<String, Number>> traversal = get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmaxXlocalXX();
+ printTraversalForm(traversal);
+ assertTrue(traversal.hasNext());
+ final Map<String, Number> map = traversal.next();
+ assertFalse(traversal.hasNext());
+ assertEquals(2, map.size());
+ assertEquals(1.0, map.get("ripple"));
+ assertEquals(0.4, map.get("lop"));
+ }
+
public static class StandardTest extends MaxTest {
@Override
@@ -63,6 +81,10 @@ public abstract class MaxTest extends AbstractGremlinProcessTest {
return g.V().repeat(both()).times(5).values("age").max();
}
+ @Override
+ public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmaxXlocalXX() {
+ return g.V().hasLabel("software").group().by("name").by(bothE().values("weight").fold()).by(max(Scope.local)).cap();
+ }
}
public static class ComputerTest extends MaxTest {
@@ -76,5 +98,11 @@ public abstract class MaxTest extends AbstractGremlinProcessTest {
public Traversal<Vertex, Integer> get_g_V_repeatXbothX_timesX5X_age_max() {
return g.V().repeat(both()).times(5).values("age").<Integer>max().submit(g.compute());
}
+
+ @Override
+ public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmaxXlocalXX() {
+ return g.V().hasLabel("software").group().by("name").by(bothE().values("weight").fold()).
+ by(max(Scope.local)).<Map<String, Number>>cap().submit(g.compute());
+ }
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3d4335b1/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanTest.java
index aec8eff..8fe5267 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanTest.java
@@ -20,16 +20,19 @@ package org.apache.tinkerpop.gremlin.process.graph.traversal.step.map;
import org.apache.tinkerpop.gremlin.LoadGraphWith;
import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.Scope;
import org.apache.tinkerpop.gremlin.process.Traversal;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.junit.Test;
import java.util.Arrays;
import java.util.List;
+import java.util.Map;
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
+import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.bothE;
+import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.mean;
+import static org.junit.Assert.*;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -38,6 +41,7 @@ public abstract class MeanTest extends AbstractGremlinProcessTest {
public abstract Traversal<Vertex, Double> get_g_V_age_mean();
+ public abstract Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmeanXlocalXX();
@Test
@LoadGraphWith(MODERN)
@@ -52,6 +56,19 @@ public abstract class MeanTest extends AbstractGremlinProcessTest {
});
}
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_hasLabelXsoftwareX_group_byXnameX_byXin_valuesXageX_foldX_byXmeanXlocalXX() {
+ final Traversal<Vertex, Map<String, Number>> traversal = get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmeanXlocalXX();
+ printTraversalForm(traversal);
+ assertTrue(traversal.hasNext());
+ final Map<String, Number> map = traversal.next();
+ assertFalse(traversal.hasNext());
+ assertEquals(2, map.size());
+ assertEquals(1.0, map.get("ripple"));
+ assertEquals(1.0 / 3, map.get("lop"));
+ }
+
public static class StandardTest extends MeanTest {
@Override
@@ -59,6 +76,10 @@ public abstract class MeanTest extends AbstractGremlinProcessTest {
return g.V().values("age").mean();
}
+ @Override
+ public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmeanXlocalXX() {
+ return g.V().hasLabel("software").group().by("name").by(bothE().values("weight").fold()).by(mean(Scope.local)).cap();
+ }
}
public static class ComputerTest extends MeanTest {
@@ -68,5 +89,10 @@ public abstract class MeanTest extends AbstractGremlinProcessTest {
return g.V().values("age").mean().submit(g.compute());
}
+ @Override
+ public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXmeanXlocalXX() {
+ return g.V().hasLabel("software").group().by("name").by(bothE().values("weight").fold()).
+ by(mean(Scope.local)).<Map<String, Number>>cap().submit(g.compute());
+ }
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3d4335b1/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinTest.java
index 007351d..982c7bd 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinTest.java
@@ -20,15 +20,20 @@ package org.apache.tinkerpop.gremlin.process.graph.traversal.step.map;
import org.apache.tinkerpop.gremlin.LoadGraphWith;
import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.Scope;
import org.apache.tinkerpop.gremlin.process.Traversal;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.junit.Test;
import java.util.Arrays;
import java.util.List;
+import java.util.Map;
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -39,6 +44,8 @@ public abstract class MinTest extends AbstractGremlinProcessTest {
public abstract Traversal<Vertex, Integer> get_g_V_repeatXbothX_timesX5X_age_min();
+ public abstract Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXminXlocalXX();
+
@Test
@LoadGraphWith(MODERN)
public void g_V_age_min() {
@@ -51,6 +58,19 @@ public abstract class MinTest extends AbstractGremlinProcessTest {
});
}
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_hasLabelXsoftwareX_group_byXnameX_byXin_valuesXageX_foldX_byXminXlocalXX() {
+ final Traversal<Vertex, Map<String, Number>> traversal = get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXminXlocalXX();
+ printTraversalForm(traversal);
+ assertTrue(traversal.hasNext());
+ final Map<String, Number> map = traversal.next();
+ assertFalse(traversal.hasNext());
+ assertEquals(2, map.size());
+ assertEquals(1.0, map.get("ripple"));
+ assertEquals(0.2, map.get("lop"));
+ }
+
public static class StandardTest extends MinTest {
@Override
@@ -63,6 +83,10 @@ public abstract class MinTest extends AbstractGremlinProcessTest {
return g.V().repeat(both()).times(5).values("age").min();
}
+ @Override
+ public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXminXlocalXX() {
+ return g.V().hasLabel("software").group().by("name").by(bothE().values("weight").fold()).by(min(Scope.local)).cap();
+ }
}
public static class ComputerTest extends MinTest {
@@ -76,5 +100,11 @@ public abstract class MinTest extends AbstractGremlinProcessTest {
public Traversal<Vertex, Integer> get_g_V_repeatXbothX_timesX5X_age_min() {
return g.V().repeat(both()).times(5).values("age").<Integer>min().submit(g.compute());
}
+
+ @Override
+ public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXminXlocalXX() {
+ return g.V().hasLabel("software").group().by("name").by(bothE().values("weight").fold()).
+ by(min(Scope.local)).<Map<String, Number>>cap().submit(g.compute());
+ }
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3d4335b1/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SumTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SumTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SumTest.java
new file mode 100644
index 0000000..bc66621
--- /dev/null
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SumTest.java
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.graph.traversal.step.map;
+
+import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.Scope;
+import org.apache.tinkerpop.gremlin.process.Traversal;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.junit.Test;
+
+import java.util.Map;
+
+import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
+import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.bothE;
+import static org.apache.tinkerpop.gremlin.process.graph.traversal.__.sum;
+import static org.junit.Assert.*;
+
+/**
+ * @author Daniel Kuppitz (http://gremlin.guru)
+ */
+public abstract class SumTest extends AbstractGremlinProcessTest {
+
+ public abstract Traversal<Vertex, Double> get_g_V_valuesXageX_sum();
+
+ public abstract Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXsumXlocalXX();
+
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_valuesXageX_sum() {
+ final Traversal<Vertex, Double> traversal = get_g_V_valuesXageX_sum();
+ printTraversalForm(traversal);
+ final Number sum = traversal.next();
+ assertEquals(123.0, sum);
+ assertFalse(traversal.hasNext());
+ }
+
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_hasLabelXsoftwareX_group_byXnameX_byXin_valuesXageX_foldX_byXsumXlocalXX() {
+ final Traversal<Vertex, Map<String, Number>> traversal = get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXsumXlocalXX();
+ printTraversalForm(traversal);
+ assertTrue(traversal.hasNext());
+ final Map<String, Number> map = traversal.next();
+ assertFalse(traversal.hasNext());
+ assertEquals(2, map.size());
+ assertEquals(1.0, map.get("ripple"));
+ assertEquals(1.0, map.get("lop"));
+ }
+
+ public static class StandardTest extends SumTest {
+
+ @Override
+ public Traversal<Vertex, Double> get_g_V_valuesXageX_sum() {
+ return g.V().values("age").sum();
+ }
+
+ @Override
+ public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXsumXlocalXX() {
+ return g.V().hasLabel("software").group().by("name").by(bothE().values("weight").fold()).by(sum(Scope.local)).cap();
+ }
+ }
+
+ public static class ComputerTest extends SumTest {
+
+ @Override
+ public Traversal<Vertex, Double> get_g_V_valuesXageX_sum() {
+ return g.V().values("age").sum().submit(g.compute());
+ }
+
+ @Override
+ public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_valuesXweightX_foldX_byXsumXlocalXX() {
+ return g.V().hasLabel("software").group().by("name").by(bothE().values("weight").fold()).
+ by(sum(Scope.local)).<Map<String, Number>>cap().submit(g.compute());
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3d4335b1/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
index ee60b3b..0684723 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
@@ -20,6 +20,7 @@ package org.apache.tinkerpop.gremlin.tinkergraph.structure;
import org.apache.commons.io.FileUtils;
import org.apache.tinkerpop.gremlin.AbstractGremlinTest;
+import org.apache.tinkerpop.gremlin.process.Scope;
import org.apache.tinkerpop.gremlin.process.T;
import org.apache.tinkerpop.gremlin.process.Traversal;
import org.apache.tinkerpop.gremlin.process.graph.traversal.strategy.RangeByIsCountStrategy;
@@ -188,22 +189,9 @@ public class TinkerGraphTest {
public void testPlayDK() throws Exception {
Graph g = TinkerFactory.createModern();
- Traversal t = g.V().count().is(0l).profile().cap(TraversalMetrics.METRICS_KEY);
+ Traversal t = g.V().hasLabel("software").group().by("name").by(bothE().values("weight").fold()).cap();
System.out.println(t.toString());
- t.iterate();
- System.out.println(t.toString());
- System.out.println("--");
-
- t = g.V().count().is(0l).profile().cap(TraversalMetrics.METRICS_KEY);
- ((DefaultTraversal) t).getStrategies().removeStrategies(RangeByIsCountStrategy.class);
- System.out.println(t.toString());
- t.iterate();
- System.out.println(t.toString());
- System.out.println("--");
-
- t = g.V().count().is(0l).profile().cap(TraversalMetrics.METRICS_KEY);
- System.out.println(t.toString());
- t.iterate();
+ t.forEachRemaining(System.out::println);
System.out.println(t.toString());
}