You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by dk...@apache.org on 2015/11/04 13:51:43 UTC
[01/10] incubator-tinkerpop git commit: integrated NumberHelper in
SumGlobalStep and SumLocalStep
Repository: incubator-tinkerpop
Updated Branches:
refs/heads/TINKERPOP3-904 63c8cb875 -> a2b94c4e4
integrated NumberHelper in SumGlobalStep and SumLocalStep
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/d49deafb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/d49deafb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/d49deafb
Branch: refs/heads/TINKERPOP3-904
Commit: d49deafb0d0c157bb59c26d6148993a8cccd64fb
Parents: 70a12e6
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Sat Oct 31 12:07:50 2015 +0100
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Sat Oct 31 12:07:50 2015 +0100
----------------------------------------------------------------------
.../traversal/dsl/graph/GraphTraversal.java | 6 ++--
.../traversal/step/map/SumGlobalStep.java | 25 +++++++++--------
.../traversal/step/map/SumLocalStep.java | 5 ++--
.../step/sideEffect/GroovyGroupTest.groovy | 2 +-
.../process/computer/GraphComputerTest.java | 29 +++++++++++---------
.../process/traversal/step/map/SumTest.java | 2 +-
.../traversal/step/sideEffect/GroupTest.java | 22 +++++++++------
...ComputerVerificationStrategyProcessTest.java | 3 +-
.../groovy/plugin/HadoopGremlinPluginTest.java | 2 +-
.../spark/process/computer/io/InputRDDTest.java | 2 +-
.../structure/TinkerGraphPlayTest.java | 20 ++++----------
11 files changed, 62 insertions(+), 56 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d49deafb/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
index b3f3c2b..f1028a2 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
@@ -612,12 +612,12 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
*
* @return the traversal with an appended {@link SumGlobalStep}.
*/
- public default GraphTraversal<S, Double> sum() {
+ public default <E2 extends Number> GraphTraversal<S, E2> sum() {
return this.sum(Scope.global);
}
- public default GraphTraversal<S, Double> sum(final Scope scope) {
- return this.asAdmin().addStep(scope.equals(Scope.global) ? new SumGlobalStep(this.asAdmin()) : new SumLocalStep<>(this.asAdmin()));
+ public default <E2 extends Number> GraphTraversal<S, E2> sum(final Scope scope) {
+ return this.asAdmin().addStep(scope.equals(Scope.global) ? new SumGlobalStep(this.asAdmin()) : new SumLocalStep(this.asAdmin()));
}
public default <E2 extends Number> GraphTraversal<S, E2> max() {
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d49deafb/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumGlobalStep.java
index 721eda7..8816390 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumGlobalStep.java
@@ -37,10 +37,13 @@ import java.util.Iterator;
import java.util.Set;
import java.util.function.BiFunction;
+import static org.apache.tinkerpop.gremlin.process.traversal.NumberHelper.add;
+import static org.apache.tinkerpop.gremlin.process.traversal.NumberHelper.mul;
+
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-public final class SumGlobalStep extends ReducingBarrierStep<Number, Double> implements MapReducer {
+public final class SumGlobalStep extends ReducingBarrierStep<Number, Number> implements MapReducer {
private static final Set<TraverserRequirement> REQUIREMENTS = EnumSet.of(
TraverserRequirement.BULK,
@@ -49,7 +52,7 @@ public final class SumGlobalStep extends ReducingBarrierStep<Number, Double> imp
public SumGlobalStep(final Traversal.Admin traversal) {
super(traversal);
- this.setSeedSupplier(new ConstantSupplier<>(0.0d));
+ this.setSeedSupplier(new ConstantSupplier<>(0));
this.setBiFunction(SumGlobalBiFunction.instance());
}
@@ -66,20 +69,20 @@ public final class SumGlobalStep extends ReducingBarrierStep<Number, Double> imp
/////
- private static class SumGlobalBiFunction<S extends Number> implements BiFunction<Double, Traverser<S>, Double>, Serializable {
+ private static class SumGlobalBiFunction<S extends Number> implements BiFunction<Number, Traverser<S>, Number>, Serializable {
- private static final SumGlobalBiFunction INSTANCE = new SumGlobalBiFunction();
+ private static final SumGlobalBiFunction INSTANCE = new SumGlobalBiFunction<>();
private SumGlobalBiFunction() {
}
@Override
- public Double apply(final Double mutatingSeed, final Traverser<S> traverser) {
- return mutatingSeed + (traverser.get().doubleValue() * traverser.bulk());
+ public Number apply(final Number mutatingSeed, final Traverser<S> traverser) {
+ return add(mutatingSeed, mul(traverser.get(), traverser.bulk()));
}
- public final static <S extends Number> SumGlobalBiFunction<S> instance() {
+ public static <S extends Number> SumGlobalBiFunction<S> instance() {
return INSTANCE;
}
}
@@ -101,7 +104,7 @@ public final class SumGlobalStep extends ReducingBarrierStep<Number, Double> imp
@Override
public void map(final Vertex vertex, final MapEmitter<NullObject, Number> emitter) {
- vertex.<TraverserSet<Number>>property(TraversalVertexProgram.HALTED_TRAVERSERS).ifPresent(traverserSet -> traverserSet.forEach(traverser -> emitter.emit(traverser.get().doubleValue() * traverser.bulk())));
+ vertex.<TraverserSet<Number>>property(TraversalVertexProgram.HALTED_TRAVERSERS).ifPresent(traverserSet -> traverserSet.forEach(traverser -> emitter.emit(mul(traverser.get(), traverser.bulk()))));
}
@Override
@@ -114,7 +117,7 @@ public final class SumGlobalStep extends ReducingBarrierStep<Number, Double> imp
if (values.hasNext()) {
Number sum = values.next();
while (values.hasNext()) {
- sum = sum.doubleValue() + values.next().doubleValue();
+ sum = add(sum, values.next());
}
emitter.emit(sum);
}
@@ -127,10 +130,10 @@ public final class SumGlobalStep extends ReducingBarrierStep<Number, Double> imp
@Override
public Number generateFinalResult(final Iterator<KeyValue<NullObject, Number>> keyValues) {
- return keyValues.hasNext() ? keyValues.next().getValue() : 0.0d;
+ return keyValues.hasNext() ? keyValues.next().getValue() : 0;
}
- public static final SumGlobalMapReduce instance() {
+ public static SumGlobalMapReduce instance() {
return INSTANCE;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d49deafb/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumLocalStep.java
index 4ca2e5a..c383b25 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumLocalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumLocalStep.java
@@ -18,6 +18,7 @@
*/
package org.apache.tinkerpop.gremlin.process.traversal.step.map;
+import org.apache.tinkerpop.gremlin.process.traversal.NumberHelper;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
@@ -43,10 +44,10 @@ public final class SumLocalStep<E extends Number, S extends Iterable<E>> extends
if (iterator.hasNext()) {
result = iterator.next();
while (iterator.hasNext()) {
- result = result.doubleValue() + iterator.next().doubleValue();
+ result = NumberHelper.add(result, iterator.next());
}
} else {
- result = 0.0d;
+ result = 0;
}
return (E) result;
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d49deafb/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTest.groovy
index 7c41666..5a8a09e 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTest.groovy
@@ -67,7 +67,7 @@ public abstract class GroovyGroupTest {
}
@Override
- public Traversal<Vertex, Map<String, Double>> get_g_V_groupXaX_byXlabelX_byXoutE_weight_sumX_capXaX() {
+ public Traversal<Vertex, Map<String, Number>> get_g_V_groupXaX_byXlabelX_byXoutE_weight_sumX_capXaX() {
TraversalScriptHelper.compute("g.V.group('a').by(label).by(outE().weight.sum).cap('a')", g);
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d49deafb/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java
index 0026296..0f5f3e9 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java
@@ -45,7 +45,10 @@ import java.util.concurrent.Future;
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.GRATEFUL;
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -1223,13 +1226,13 @@ public class GraphComputerTest extends AbstractGremlinProcessTest {
assertEquals(Long.valueOf(0l), result.graph().traversal().E().count().next());
assertEquals(Long.valueOf(0l), result.graph().traversal().V().values().count().next());
assertEquals(Long.valueOf(0l), result.graph().traversal().E().values().count().next());
- assertEquals(Double.valueOf(0.0d), result.graph().traversal().V().values("money").sum().next());
+ assertEquals(0, result.graph().traversal().V().values("money").sum().next());
///
assertEquals(Long.valueOf(6l), graph.traversal().V().count().next());
assertEquals(Long.valueOf(6l), graph.traversal().E().count().next());
assertEquals(Long.valueOf(12l), graph.traversal().V().values().count().next());
assertEquals(Long.valueOf(6l), graph.traversal().E().values().count().next());
- assertEquals(Double.valueOf(0.0d), graph.traversal().V().values("money").sum().next());
+ assertEquals(0, graph.traversal().V().values("money").sum().next());
}
}
@@ -1243,13 +1246,13 @@ public class GraphComputerTest extends AbstractGremlinProcessTest {
assertEquals(Long.valueOf(0l), result.graph().traversal().E().count().next());
assertEquals(Long.valueOf(18l), result.graph().traversal().V().values().count().next());
assertEquals(Long.valueOf(0l), result.graph().traversal().E().values().count().next());
- assertEquals(Double.valueOf(28.0d), result.graph().traversal().V().values("money").sum().next());
+ assertEquals(28l, result.graph().traversal().V().values("money").sum().next());
///
assertEquals(Long.valueOf(6l), graph.traversal().V().count().next());
assertEquals(Long.valueOf(6l), graph.traversal().E().count().next());
assertEquals(Long.valueOf(12l), graph.traversal().V().values().count().next());
assertEquals(Long.valueOf(6l), graph.traversal().E().values().count().next());
- assertEquals(Double.valueOf(0.0d), graph.traversal().V().values("money").sum().next());
+ assertEquals(0, graph.traversal().V().values("money").sum().next());
}
}
@@ -1263,13 +1266,13 @@ public class GraphComputerTest extends AbstractGremlinProcessTest {
assertEquals(Long.valueOf(6l), result.graph().traversal().E().count().next());
assertEquals(Long.valueOf(18l), result.graph().traversal().V().values().count().next());
assertEquals(Long.valueOf(6l), result.graph().traversal().E().values().count().next());
- assertEquals(Double.valueOf(28.0d), result.graph().traversal().V().values("money").sum().next());
+ assertEquals(28l, result.graph().traversal().V().values("money").sum().next());
///
assertEquals(Long.valueOf(6l), graph.traversal().V().count().next());
assertEquals(Long.valueOf(6l), graph.traversal().E().count().next());
assertEquals(Long.valueOf(12l), graph.traversal().V().values().count().next());
assertEquals(Long.valueOf(6l), graph.traversal().E().values().count().next());
- assertEquals(Double.valueOf(0.0d), graph.traversal().V().values("money").sum().next());
+ assertEquals(0, graph.traversal().V().values("money").sum().next());
}
}
@@ -1283,13 +1286,13 @@ public class GraphComputerTest extends AbstractGremlinProcessTest {
assertEquals(Long.valueOf(6l), result.graph().traversal().E().count().next());
assertEquals(Long.valueOf(12l), result.graph().traversal().V().values().count().next());
assertEquals(Long.valueOf(6l), result.graph().traversal().E().values().count().next());
- assertEquals(Double.valueOf(0.0d), result.graph().traversal().V().values("money").sum().next());
+ assertEquals(0, result.graph().traversal().V().values("money").sum().next());
///
assertEquals(Long.valueOf(6l), graph.traversal().V().count().next());
assertEquals(Long.valueOf(6l), graph.traversal().E().count().next());
assertEquals(Long.valueOf(12l), graph.traversal().V().values().count().next());
assertEquals(Long.valueOf(6l), graph.traversal().E().values().count().next());
- assertEquals(Double.valueOf(0.0d), graph.traversal().V().values("money").sum().next());
+ assertEquals(0, graph.traversal().V().values("money").sum().next());
}
}
@@ -1303,13 +1306,13 @@ public class GraphComputerTest extends AbstractGremlinProcessTest {
assertEquals(Long.valueOf(6l), result.graph().traversal().E().count().next());
assertEquals(Long.valueOf(18l), result.graph().traversal().V().values().count().next());
assertEquals(Long.valueOf(6l), result.graph().traversal().E().values().count().next());
- assertEquals(Double.valueOf(28.0d), result.graph().traversal().V().values("money").sum().next());
+ assertEquals(28l, result.graph().traversal().V().values("money").sum().next());
///
assertEquals(Long.valueOf(6l), graph.traversal().V().count().next());
assertEquals(Long.valueOf(6l), graph.traversal().E().count().next());
assertEquals(Long.valueOf(18l), graph.traversal().V().values().count().next());
assertEquals(Long.valueOf(6l), graph.traversal().E().values().count().next());
- assertEquals(Double.valueOf(28.0d), graph.traversal().V().values("money").sum().next());
+ assertEquals(28l, graph.traversal().V().values("money").sum().next());
}
}
@@ -1323,13 +1326,13 @@ public class GraphComputerTest extends AbstractGremlinProcessTest {
assertEquals(Long.valueOf(6l), result.graph().traversal().E().count().next());
assertEquals(Long.valueOf(18l), result.graph().traversal().V().values().count().next());
assertEquals(Long.valueOf(6l), result.graph().traversal().E().values().count().next());
- assertEquals(Double.valueOf(28.0d), result.graph().traversal().V().values("money").sum().next());
+ assertEquals(28l, result.graph().traversal().V().values("money").sum().next());
///
assertEquals(Long.valueOf(6l), graph.traversal().V().count().next());
assertEquals(Long.valueOf(6l), graph.traversal().E().count().next());
assertEquals(Long.valueOf(18l), graph.traversal().V().values().count().next());
assertEquals(Long.valueOf(6l), graph.traversal().E().values().count().next());
- assertEquals(Double.valueOf(28.0d), graph.traversal().V().values("money").sum().next());
+ assertEquals(28l, graph.traversal().V().values("money").sum().next());
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d49deafb/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumTest.java
index 6e2eabb..1183863 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumTest.java
@@ -49,7 +49,7 @@ public abstract class SumTest extends AbstractGremlinProcessTest {
final Traversal<Vertex, Double> traversal = get_g_V_valuesXageX_sum();
printTraversalForm(traversal);
final Number sum = traversal.next();
- assertEquals(123.0, sum);
+ assertEquals(123L, sum);
assertFalse(traversal.hasNext());
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d49deafb/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTest.java
index 9bfdf8e..b2298be 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTest.java
@@ -33,8 +33,14 @@ import java.util.Map;
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.GRATEFUL;
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*;
-import static org.junit.Assert.*;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.both;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.constant;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.count;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.outE;
+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)
@@ -57,7 +63,7 @@ public abstract class GroupTest extends AbstractGremlinProcessTest {
public abstract Traversal<Vertex, Map<Long, Collection<String>>> get_g_V_group_byXoutE_countX_byXnameX();
- public abstract Traversal<Vertex, Map<String, Double>> get_g_V_groupXaX_byXlabelX_byXoutE_weight_sumX_capXaX();
+ public abstract Traversal<Vertex, Map<String, Number>> get_g_V_groupXaX_byXlabelX_byXoutE_weight_sumX_capXaX();
public abstract Traversal<Vertex, Map<String, Long>> get_g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX();
@@ -174,14 +180,14 @@ public abstract class GroupTest extends AbstractGremlinProcessTest {
@Test
@LoadGraphWith(MODERN)
public void g_V_groupXaX_byXlabelX_byXoutE_weight_sumX_capXaX() {
- final Traversal<Vertex, Map<String, Double>> traversal = get_g_V_groupXaX_byXlabelX_byXoutE_weight_sumX_capXaX();
+ final Traversal<Vertex, Map<String, Number>> traversal = get_g_V_groupXaX_byXlabelX_byXoutE_weight_sumX_capXaX();
printTraversalForm(traversal);
assertTrue(traversal.hasNext());
- final Map<String, Double> map = traversal.next();
+ final Map<String, Number> map = traversal.next();
assertFalse(traversal.hasNext());
assertEquals(2, map.size());
- assertEquals(0.0d, map.get("software"), 0.01d);
- assertEquals(3.5d, map.get("person"), 0.01d);
+ assertEquals(0, map.get("software"));
+ assertEquals(3.5d, (double) map.get("person"), 0.01d);
}
@Test
@@ -277,7 +283,7 @@ public abstract class GroupTest extends AbstractGremlinProcessTest {
}
@Override
- public Traversal<Vertex, Map<String, Double>> get_g_V_groupXaX_byXlabelX_byXoutE_weight_sumX_capXaX() {
+ public Traversal<Vertex, Map<String, Number>> get_g_V_groupXaX_byXlabelX_byXoutE_weight_sumX_capXaX() {
return g.V().<String, Double>group("a").by(T.label).by(outE().values("weight").sum()).cap("a");
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d49deafb/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategyProcessTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategyProcessTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategyProcessTest.java
index 1402ee2..f6ded69 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategyProcessTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategyProcessTest.java
@@ -25,6 +25,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
import org.junit.Test;
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
+import static org.apache.tinkerpop.gremlin.process.traversal.NumberHelper.mul;
import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -90,7 +91,7 @@ public abstract class ComputerVerificationStrategyProcessTest extends AbstractGr
}
try {
- final GraphTraversal t = g.V().count().sum().map(x -> x.get() * 19).iterate();
+ final GraphTraversal t = g.V().count().sum().map(x -> mul(x.get(), 19)).iterate();
fail("Mid-traversal barrier steps are not allowed (COMPUTER): " + t);
} catch (IllegalStateException e) {
assertTrue(true);
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d49deafb/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopGremlinPluginTest.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopGremlinPluginTest.java b/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopGremlinPluginTest.java
index 83a206d..0d7da18 100644
--- a/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopGremlinPluginTest.java
+++ b/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopGremlinPluginTest.java
@@ -88,7 +88,7 @@ public class HadoopGremlinPluginTest extends AbstractGremlinTest {
this.remote.configure(Arrays.asList("useSugar", "true"));
this.remote.connect(Arrays.asList("graph", "g"));
Traversal<?, ?> traversal = (Traversal<?, ?>) this.remote.submit(Arrays.asList("g.V.name.map{it.length()}.sum"));
- assertEquals(28.0d, traversal.next());
+ assertEquals(28l, traversal.next());
assertFalse(traversal.hasNext());
assertNotNull(this.console.getBindings().get(RemoteAcceptor.RESULT));
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d49deafb/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/io/InputRDDTest.java
----------------------------------------------------------------------
diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/io/InputRDDTest.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/io/InputRDDTest.java
index 3070fea..46d735f 100644
--- a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/io/InputRDDTest.java
+++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/io/InputRDDTest.java
@@ -48,7 +48,7 @@ public class InputRDDTest {
configuration.setProperty(Constants.GREMLIN_HADOOP_JARS_IN_DISTRIBUTED_CACHE, false);
////////
Graph graph = GraphFactory.open(configuration);
- assertEquals(Double.valueOf(123.0d), graph.traversal(GraphTraversalSource.computer(SparkGraphComputer.class)).V().values("age").sum().next());
+ assertEquals(123l, graph.traversal(GraphTraversalSource.computer(SparkGraphComputer.class)).V().values("age").sum().next());
assertEquals(Long.valueOf(4l), graph.traversal(GraphTraversalSource.computer(SparkGraphComputer.class)).V().count().next());
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d49deafb/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java
index 06994e2..efb4a5b 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java
@@ -192,20 +192,12 @@ public class TinkerGraphPlayTest {
@Test
@Ignore
public void testPlayDK() throws Exception {
- final Graph graph = TinkerFactory.createModern();
- final GraphTraversalSource g = graph.traversal();
- Traversal traversal = g.V().where(out().and().in()).profile().cap(TraversalMetrics.METRICS_KEY);
- //traversal.forEachRemaining(System.out::println);
- System.out.println(traversal.toString());
- traversal.asAdmin().applyStrategies();
- System.out.println(traversal.toString());
- traversal.forEachRemaining(System.out::println);
- traversal = g.V().where(and(out(), in())).profile().cap(TraversalMetrics.METRICS_KEY);
- //traversal.forEachRemaining(System.out::println);
- System.out.println(traversal.toString());
- traversal.asAdmin().applyStrategies();
- System.out.println(traversal.toString());
- //System.out.println(traversal.toString());
+ final Number n = __.inject(1, 2L, 3f).sum().next();
+ System.out.println(n.toString());
+ System.out.println(n.getClass().toString());
+ final Double d = __.inject(1, 2L, 3f).<Double>sum().next();
+ System.out.println(d.toString());
+ System.out.println(d.getClass().toString());
}
@Test
[09/10] incubator-tinkerpop git commit: Merge branch 'master' into
TINKERPOP3-909
Posted by dk...@apache.org.
Merge branch 'master' into TINKERPOP3-909
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/558c04e7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/558c04e7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/558c04e7
Branch: refs/heads/TINKERPOP3-904
Commit: 558c04e7f3d51b12ddd06cd11fe4bbea5298843d
Parents: af4f5dc 06d747f
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Tue Nov 3 17:47:37 2015 +0100
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Tue Nov 3 17:47:37 2015 +0100
----------------------------------------------------------------------
CHANGELOG.asciidoc | 3 +-
docs/src/implementations.asciidoc | 36 +--
docs/src/the-traversal.asciidoc | 11 +-
.../upgrade-release-3.1.x-incubating.asciidoc | 18 +-
.../process/computer/GiraphGraphComputer.java | 11 +-
.../computer/io/GiraphVertexInputFormat.java | 70 ------
.../computer/io/GiraphVertexOutputFormat.java | 65 ------
.../process/computer/io/GiraphVertexReader.java | 67 ------
.../process/computer/io/GiraphVertexWriter.java | 57 -----
.../structure/io/GiraphVertexInputFormat.java | 70 ++++++
.../structure/io/GiraphVertexOutputFormat.java | 65 ++++++
.../giraph/structure/io/GiraphVertexReader.java | 67 ++++++
.../giraph/structure/io/GiraphVertexWriter.java | 57 +++++
.../gremlin/process/computer/GraphComputer.java | 5 +-
.../process/computer/GraphComputerTest.java | 2 +-
.../tinkerpop/gremlin/hadoop/Constants.java | 1 -
.../structure/hdfs/HadoopElementIterator.java | 4 +-
.../hadoop/structure/io/InputOutputHelper.java | 22 ++
.../hadoop/structure/util/HadoopHelper.java | 50 -----
.../process/computer/SparkGraphComputer.java | 75 ++++---
.../process/computer/io/InputFormatRDD.java | 47 ----
.../spark/process/computer/io/InputRDD.java | 41 ----
.../process/computer/io/OutputFormatRDD.java | 49 -----
.../spark/process/computer/io/OutputRDD.java | 31 ---
.../spark/structure/io/InputFormatRDD.java | 47 ++++
.../spark/structure/io/InputOutputHelper.java | 81 +++++++
.../gremlin/spark/structure/io/InputRDD.java | 41 ++++
.../spark/structure/io/OutputFormatRDD.java | 49 +++++
.../gremlin/spark/structure/io/OutputRDD.java | 31 +++
.../spark/structure/io/PersistedInputRDD.java | 60 +++++
.../spark/structure/io/PersistedOutputRDD.java | 41 ++++
.../process/computer/io/ExampleInputRDD.java | 47 ----
.../process/computer/io/ExampleOutputRDD.java | 45 ----
.../process/computer/io/InputOutputRDDTest.java | 59 -----
.../spark/process/computer/io/InputRDDTest.java | 54 -----
.../process/computer/io/OutputRDDTest.java | 62 ------
.../spark/structure/io/ExampleInputRDD.java | 51 +++++
.../spark/structure/io/ExampleOutputRDD.java | 50 +++++
.../spark/structure/io/InputOutputRDDTest.java | 59 +++++
.../spark/structure/io/InputRDDTest.java | 54 +++++
.../spark/structure/io/OutputRDDTest.java | 62 ++++++
.../io/PersistedInputOutputRDDTest.java | 217 +++++++++++++++++++
.../process/computer/TinkerGraphComputer.java | 5 -
43 files changed, 1228 insertions(+), 811 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/558c04e7/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --cc CHANGELOG.asciidoc
index 84cb9f5,e79a0a0..5ad89e5
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@@ -25,10 -25,10 +25,11 @@@ image::https://raw.githubusercontent.co
TinkerPop 3.1.0 (NOT OFFICIALLY RELEASED YET)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+* Integrated `NumberHelper` in `SumStep`, `MinStep`, `MaxStep` and `MeanStep` (local and global step variants).
* Bumped to Neo4j 2.3.0.
+ * Added `PersistedInputRDD` and `PersistedOutputRDD` which enables `SparkGraphComputer` to store the graph RDD in the context between jobs (no HDFS serialization required).
* Renamed the `public static String` configuration variable names of TinkerGraph (deprecated old variables).
- * Added `GraphComputer.config(key,value)` to allow engine-specific configurations.
+ * Added `GraphComputer.configure(key,value)` to allow engine-specific configurations.
* `GraphStep` is no longer in the `sideEffect`-package and is now in `map`-package (breaking change).
* Added support for mid-traversal `V()`-steps (`GraphStep` semantics updated).
* Fixed `Number` handling in `Operator` enums. Prior this change a lot of operations on mixed `Number` types returned a wrong result (wrong data type).
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/558c04e7/docs/src/upgrade-release-3.1.x-incubating.asciidoc
----------------------------------------------------------------------
diff --cc docs/src/upgrade-release-3.1.x-incubating.asciidoc
index 00be151,9e5b50d..ada54f9
--- a/docs/src/upgrade-release-3.1.x-incubating.asciidoc
+++ b/docs/src/upgrade-release-3.1.x-incubating.asciidoc
@@@ -165,3 -172,11 +173,11 @@@ The `VendorOptimizationStrategy` has be
with revised terminology for what were formerly referred to as "vendors".
See link:https://issues.apache.org/jira/browse/TINKERPOP3-876[TINKERPOP3-876] for more information.
+
+ GraphComputer Updates
+ +++++++++++++++++++++
+
+ `GraphComputer.configure(String key, Object value)` is now a method (with default implementation).
+ This allows the user to specify engine-specific parameters to the underlying OLAP system. These parameters are not intended
+ to be cross engine supported. Moreover, if there are not parameters that can be altered (beyond the standard `GraphComputer`
-methods), then the provider's `GraphComputer` implementation should simply return and do nothing.
++methods), then the provider's `GraphComputer` implementation should simply return and do nothing.
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/558c04e7/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/558c04e7/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/InputRDDTest.java
----------------------------------------------------------------------
diff --cc spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/InputRDDTest.java
index 0000000,8d6c06e..e8bd44a
mode 000000,100644..100644
--- a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/InputRDDTest.java
+++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/InputRDDTest.java
@@@ -1,0 -1,54 +1,54 @@@
+ /*
+ * 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.spark.structure.io;
+
+ import org.apache.commons.configuration.BaseConfiguration;
+ import org.apache.commons.configuration.Configuration;
+ import org.apache.tinkerpop.gremlin.hadoop.Constants;
+ import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
+ import org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoOutputFormat;
+ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+ import org.apache.tinkerpop.gremlin.spark.process.computer.SparkGraphComputer;
+ import org.apache.tinkerpop.gremlin.structure.Graph;
+ import org.apache.tinkerpop.gremlin.structure.util.GraphFactory;
+ import org.junit.Test;
+
+ import static org.junit.Assert.assertEquals;
+
+ /**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+ public class InputRDDTest {
+
+ @Test
+ public void shouldReadFromArbitraryRDD() {
+ final Configuration configuration = new BaseConfiguration();
+ configuration.setProperty("spark.master", "local[4]");
+ configuration.setProperty("spark.serializer", "org.apache.spark.serializer.KryoSerializer");
+ configuration.setProperty(Graph.GRAPH, HadoopGraph.class.getName());
+ configuration.setProperty(Constants.GREMLIN_SPARK_GRAPH_INPUT_RDD, ExampleInputRDD.class.getCanonicalName());
+ configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT, GryoOutputFormat.class.getCanonicalName());
+ configuration.setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, "target/test-output");
+ configuration.setProperty(Constants.GREMLIN_HADOOP_JARS_IN_DISTRIBUTED_CACHE, false);
+ ////////
+ Graph graph = GraphFactory.open(configuration);
- assertEquals(Double.valueOf(123.0d), graph.traversal(GraphTraversalSource.computer(SparkGraphComputer.class)).V().values("age").sum().next());
++ assertEquals(123l, graph.traversal(GraphTraversalSource.computer(SparkGraphComputer.class)).V().values("age").sum().next());
+ assertEquals(Long.valueOf(4l), graph.traversal(GraphTraversalSource.computer(SparkGraphComputer.class)).V().count().next());
+ }
+ }
[10/10] incubator-tinkerpop git commit: Merge branch 'master' into
TINKERPOP3-904
Posted by dk...@apache.org.
Merge branch 'master' into TINKERPOP3-904
Resolved Conflicts:
CHANGELOG.asciidoc
tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.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/a2b94c4e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/a2b94c4e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/a2b94c4e
Branch: refs/heads/TINKERPOP3-904
Commit: a2b94c4e4e25a04bdbd8b926fdc9d949ed6e42d2
Parents: 63c8cb8 558c04e
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Wed Nov 4 13:51:18 2015 +0100
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Wed Nov 4 13:51:18 2015 +0100
----------------------------------------------------------------------
CHANGELOG.asciidoc | 1 +
.../upgrade-release-3.1.x-incubating.asciidoc | 3 +-
.../gremlin/process/traversal/NumberHelper.java | 12 +++-
.../traversal/dsl/graph/GraphTraversal.java | 16 ++---
.../traversal/step/map/MaxGlobalStep.java | 14 +++--
.../traversal/step/map/MaxLocalStep.java | 5 +-
.../traversal/step/map/MeanGlobalStep.java | 61 +++++++++++---------
.../traversal/step/map/MeanLocalStep.java | 11 ++--
.../traversal/step/map/MinGlobalStep.java | 14 +++--
.../traversal/step/map/MinLocalStep.java | 5 +-
.../traversal/step/map/SumGlobalStep.java | 25 ++++----
.../traversal/step/map/SumLocalStep.java | 5 +-
.../traversal/step/map/MeanGlobalStepTest.java | 14 +++++
.../traversal/step/map/MeanLocalStepTest.java | 14 +++++
.../step/sideEffect/GroovyGroupTest.groovy | 2 +-
.../process/computer/GraphComputerTest.java | 29 +++++-----
.../process/traversal/step/map/SumTest.java | 2 +-
.../traversal/step/sideEffect/GroupTest.java | 22 ++++---
...ComputerVerificationStrategyProcessTest.java | 3 +-
.../groovy/plugin/HadoopGremlinPluginTest.java | 2 +-
.../spark/structure/io/InputRDDTest.java | 2 +-
21 files changed, 164 insertions(+), 98 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/a2b94c4e/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --cc CHANGELOG.asciidoc
index ef0d032,5ad89e5..8d74212
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@@ -25,7 -25,7 +25,8 @@@ image::https://raw.githubusercontent.co
TinkerPop 3.1.0 (NOT OFFICIALLY RELEASED YET)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+* Optimized `BulkLoaderVertexProgram`. It now uses `EventStrategy` to monitor what the underlying `BulkLoader` implementation does (e.g. whether it creates a new vertex or returns an existing).
+ * Integrated `NumberHelper` in `SumStep`, `MinStep`, `MaxStep` and `MeanStep` (local and global step variants).
* Bumped to Neo4j 2.3.0.
* Added `PersistedInputRDD` and `PersistedOutputRDD` which enables `SparkGraphComputer` to store the graph RDD in the context between jobs (no HDFS serialization required).
* Renamed the `public static String` configuration variable names of TinkerGraph (deprecated old variables).
[05/10] incubator-tinkerpop git commit: Merge branch 'master' into
TINKERPOP3-909
Posted by dk...@apache.org.
Merge branch 'master' into TINKERPOP3-909
Resolved Conflicts:
CHANGELOG.asciidoc
docs/src/upgrade-release-3.1.x-incubating.asciidoc
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/e29a9362
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/e29a9362
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/e29a9362
Branch: refs/heads/TINKERPOP3-904
Commit: e29a9362beb2cb2784a547b7f9e1e5d589c83d47
Parents: ccc3bfc 19b7ae0
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Sun Nov 1 22:15:04 2015 +0100
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Sun Nov 1 22:15:04 2015 +0100
----------------------------------------------------------------------
CHANGELOG.asciidoc | 4 +-
docs/src/developer-meetings.asciidoc | 64 ++++++++++++++++++++
docs/src/developer-release.asciidoc | 13 ++--
docs/src/developer.asciidoc | 4 +-
docs/src/gremlin-applications.asciidoc | 7 +++
.../upgrade-release-3.1.x-incubating.asciidoc | 5 ++
.../traversal/step/map/AddVertexTest.java | 2 +-
neo4j-gremlin/pom.xml | 28 ++++++++-
.../gremlin/neo4j/structure/Neo4jGraph.java | 2 +-
.../gremlin/neo4j/structure/Neo4jHelper.java | 16 ++---
.../gremlin/neo4j/Neo4jStrategySuite.java | 44 --------------
.../gremlin/neo4j/Neo4jStrategyTest.java | 31 ----------
.../traversal/strategy/Neo4jStrategySuite.java | 44 ++++++++++++++
.../traversal/strategy/Neo4jStrategyTest.java | 32 ++++++++++
.../Neo4jGraphStepStrategyTest.java | 13 ++++
.../tinkergraph/structure/TinkerGraph.java | 2 +-
.../tinkergraph/TinkerGraphStrategySuite.java | 44 --------------
.../tinkergraph/TinkerGraphStrategyTest.java | 31 ----------
.../strategy/TinkerGraphStrategySuite.java | 44 ++++++++++++++
.../strategy/TinkerGraphStrategyTest.java | 32 ++++++++++
.../TinkerGraphStepStrategyTest.java | 13 ++++
21 files changed, 305 insertions(+), 170 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e29a9362/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --cc CHANGELOG.asciidoc
index 6f7c50e,06d0db4..84cb9f5
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@@ -25,10 -25,11 +25,12 @@@ image::https://raw.githubusercontent.co
TinkerPop 3.1.0 (NOT OFFICIALLY RELEASED YET)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+* Integrated `NumberHelper` in `SumStep`, `MinStep`, `MaxStep` and `MeanStep` (local and global step variants).
+ * Bumped to Neo4j 2.3.0.
* Renamed the `public static String` configuration variable names of TinkerGraph (deprecated old variables).
* Added `GraphComputer.config(key,value)` to allow engine-specific configurations.
- * Added suppport for mid-traversal `V()`-steps (`GraphStep` semantics updated).
+ * `GraphStep` is no longer in the `sideEffect`-package and is now in `map`-package (breaking change).
+ * Added support for mid-traversal `V()`-steps (`GraphStep` semantics updated).
* Fixed `Number` handling in `Operator` enums. Prior this change a lot of operations on mixed `Number` types returned a wrong result (wrong data type).
* Fixed a bug in Gremlin Server/Driver serializer where empty buffers were getting returned in certain cases.
* Renamed `ConjunctionX` to `ConnectiveX` because "conjunction" is assumed "and" (disjunction "or"), where "connective" is the parent concept.
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e29a9362/docs/src/upgrade-release-3.1.x-incubating.asciidoc
----------------------------------------------------------------------
diff --cc docs/src/upgrade-release-3.1.x-incubating.asciidoc
index 7043d74,b50dd7e..00be151
--- a/docs/src/upgrade-release-3.1.x-incubating.asciidoc
+++ b/docs/src/upgrade-release-3.1.x-incubating.asciidoc
@@@ -35,7 -35,7 +35,8 @@@ Additional upgrade information can be f
Important Changes
~~~~~~~~~~~~~~~~~
+* `sum()`, `min()`, `max()` and `mean()` make now use of `NumberHelper`, leading to a more appropriate result type, instead of just `Double`.
+ * `GraphStep` is no longer in `sideEffect`-package, but now in `map`-package as traversals support mid-traversal `V()`.
* Traversals now support mid-traversal `V()`-steps. Graph system providers should ensure that a mid-traversal `V()` can leverage any suitable index.
* The data type of `Operator` enums will now always be the highest common data type of the two given numbers, rather than the data type of the first number, as it's been before.
* The Gephi Plugin has improved integration with Gephi, where manually inserting `store` steps to visualize a running traversal is no longer required.
[03/10] incubator-tinkerpop git commit: Integrated NumberHelper in
Min-, Max- and MeanStep
Posted by dk...@apache.org.
Integrated NumberHelper in Min-, Max- and MeanStep
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/eba71143
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/eba71143
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/eba71143
Branch: refs/heads/TINKERPOP3-904
Commit: eba7114341b1257106db2111ed8b90b2012c0860
Parents: eda16b5
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Sun Nov 1 12:55:26 2015 +0100
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Sun Nov 1 12:55:26 2015 +0100
----------------------------------------------------------------------
.../gremlin/process/traversal/NumberHelper.java | 12 ++++-
.../traversal/step/map/MaxGlobalStep.java | 14 ++---
.../traversal/step/map/MaxLocalStep.java | 5 +-
.../traversal/step/map/MeanGlobalStep.java | 57 +++++++++++---------
.../traversal/step/map/MinGlobalStep.java | 14 ++---
.../traversal/step/map/MinLocalStep.java | 5 +-
.../structure/TinkerGraphPlayTest.java | 9 ++--
7 files changed, 67 insertions(+), 49 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/eba71143/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/NumberHelper.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/NumberHelper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/NumberHelper.java
index 8dfd113..b094f29 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/NumberHelper.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/NumberHelper.java
@@ -162,8 +162,12 @@ public class NumberHelper {
}
public static Class<? extends Number> getHighestCommonNumberClass(final Number... numbers) {
+ return getHighestCommonNumberClass(false, numbers);
+ }
+
+ public static Class<? extends Number> getHighestCommonNumberClass(final boolean forceFloatingPoint, final Number... numbers) {
int bits = 8;
- boolean fp = false;
+ boolean fp = forceFloatingPoint;
for (final Number number : numbers) {
if (number == null) continue;
final Class<? extends Number> clazz = number.getClass();
@@ -207,7 +211,11 @@ public class NumberHelper {
}
public static Number div(final Number a, final Number b) {
- final Class<? extends Number> clazz = getHighestCommonNumberClass(a, b);
+ return div(a, b, false);
+ }
+
+ public static Number div(final Number a, final Number b, final boolean forceFloatingPoint) {
+ final Class<? extends Number> clazz = getHighestCommonNumberClass(forceFloatingPoint, a, b);
return getHelper(clazz).div.apply(a, b);
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/eba71143/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxGlobalStep.java
index d7dc34d..d876d2d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxGlobalStep.java
@@ -37,6 +37,8 @@ import java.util.Iterator;
import java.util.Set;
import java.util.function.BiFunction;
+import static org.apache.tinkerpop.gremlin.process.traversal.NumberHelper.max;
+
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
@@ -70,10 +72,11 @@ public final class MaxGlobalStep<S extends Number> extends ReducingBarrierStep<S
@Override
public S apply(final S mutatingSeed, final Traverser<S> traverser) {
- return mutatingSeed != null && mutatingSeed.doubleValue() >= traverser.get().doubleValue() ? mutatingSeed : traverser.get();
+ final S value = traverser.get();
+ return mutatingSeed != null ? (S) max(mutatingSeed, traverser.get()) : value;
}
- public final static <S extends Number> MaxGlobalBiFunction<S> instance() {
+ public static <S extends Number> MaxGlobalBiFunction<S> instance() {
return INSTANCE;
}
}
@@ -106,11 +109,10 @@ public final class MaxGlobalStep<S extends Number> extends ReducingBarrierStep<S
@Override
public void reduce(final NullObject key, final Iterator<Number> values, final ReduceEmitter<NullObject, Number> emitter) {
if (values.hasNext()) {
- Number max = -Double.MAX_VALUE;
+ Number max = null;
while (values.hasNext()) {
final Number value = values.next();
- if (value.doubleValue() > max.doubleValue())
- max = value;
+ max = max != null ? max(value, max) : value;
}
emitter.emit(max);
}
@@ -127,7 +129,7 @@ public final class MaxGlobalStep<S extends Number> extends ReducingBarrierStep<S
}
- public static final MaxGlobalMapReduce instance() {
+ public static MaxGlobalMapReduce instance() {
return INSTANCE;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/eba71143/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxLocalStep.java
index 6d2a228..dc4c5ce 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxLocalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MaxLocalStep.java
@@ -26,6 +26,8 @@ import java.util.Collections;
import java.util.Iterator;
import java.util.Set;
+import static org.apache.tinkerpop.gremlin.process.traversal.NumberHelper.max;
+
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
* @author Daniel Kuppitz (http://gremlin.guru)
@@ -43,8 +45,7 @@ public final class MaxLocalStep<E extends Number, S extends Iterable<E>> extends
if (iterator.hasNext()) {
result = iterator.next();
while (iterator.hasNext()) {
- final Number curr = iterator.next();
- if (result.doubleValue() < curr.doubleValue()) result = curr;
+ result = max(iterator.next(), result);
}
} else {
result = Double.NaN;
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/eba71143/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanGlobalStep.java
index 66092a5..f658271 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanGlobalStep.java
@@ -18,17 +18,18 @@
*/
package org.apache.tinkerpop.gremlin.process.traversal.step.map;
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
+import org.apache.tinkerpop.gremlin.process.traversal.NumberHelper;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
import org.apache.tinkerpop.gremlin.process.traversal.step.MapReducer;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.FinalGet;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.FinalGet;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.apache.tinkerpop.gremlin.util.function.MeanNumberSupplier;
@@ -39,6 +40,10 @@ import java.util.Set;
import java.util.function.BiFunction;
import java.util.function.Supplier;
+import static org.apache.tinkerpop.gremlin.process.traversal.NumberHelper.add;
+import static org.apache.tinkerpop.gremlin.process.traversal.NumberHelper.div;
+import static org.apache.tinkerpop.gremlin.process.traversal.NumberHelper.mul;
+
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
* @author Daniel Kuppitz (http://gremlin.guru)
@@ -59,7 +64,7 @@ public final class MeanGlobalStep<S extends Number, E extends Number> extends Re
}
@Override
- public MapReduce<Number, Long, Number, Long, Double> getMapReduce() {
+ public MapReduce<Number, Long, Number, Long, Number> getMapReduce() {
return MeanGlobalMapReduce.instance();
}
@@ -78,14 +83,14 @@ public final class MeanGlobalStep<S extends Number, E extends Number> extends Re
return (S) ((MeanNumber) mutatingSeed).add(traverser.get(), traverser.bulk());
}
- public final static <S extends Number> MeanGlobalBiFunction<S> instance() {
+ public static <S extends Number> MeanGlobalBiFunction<S> instance() {
return INSTANCE;
}
}
///////////
- private static final class MeanGlobalMapReduce extends StaticMapReduce<Number, Long, Number, Long, Double> {
+ private static final class MeanGlobalMapReduce extends StaticMapReduce<Number, Long, Number, Long, Number> {
private static final MeanGlobalMapReduce INSTANCE = new MeanGlobalMapReduce();
@@ -123,81 +128,83 @@ public final class MeanGlobalStep<S extends Number, E extends Number> extends Re
}
@Override
- public Double generateFinalResult(final Iterator<KeyValue<Number, Long>> keyValues) {
+ public Number generateFinalResult(final Iterator<KeyValue<Number, Long>> keyValues) {
if (keyValues.hasNext()) {
KeyValue<Number, Long> pair = keyValues.next();
- double result = pair.getKey().doubleValue() * pair.getValue();
long counter = pair.getValue();
+ Number result = mul(pair.getKey(), counter);
while (keyValues.hasNext()) {
+ long incr = pair.getValue();
pair = keyValues.next();
- result += pair.getKey().doubleValue() * pair.getValue();
- counter += pair.getValue();
+ result = add(result, mul(pair.getKey(), incr));
+ counter += incr;
}
- return result / counter;
+ return div(result, counter, true);
}
return Double.NaN;
}
- public static final MeanGlobalMapReduce instance() {
+ public static MeanGlobalMapReduce instance() {
return INSTANCE;
}
}
///
- public static final class MeanNumber extends Number implements Comparable<Number>, FinalGet<Double> {
+ public static final class MeanNumber extends Number implements Comparable<Number>, FinalGet<Number> {
private long count;
- private double sum;
+ private Number sum;
public MeanNumber() {
- this(0.0d, 0l);
+ this(0, 0);
}
- public MeanNumber(final double number, final long count) {
+ public MeanNumber(final Number number, final long count) {
this.count = count;
- this.sum = number * count;
+ this.sum = mul(number, count);
}
public MeanNumber add(final Number amount, final long count) {
this.count += count;
- this.sum += amount.doubleValue() * count;
+ this.sum = NumberHelper.add(sum, mul(amount, count));
return this;
}
public MeanNumber add(final MeanNumber other) {
this.count += other.count;
- this.sum += other.sum;
+ this.sum = NumberHelper.add(sum, other.sum);
return this;
}
@Override
public int intValue() {
- return (int) (this.sum / this.count);
+ return div(this.sum, this.count).intValue();
}
@Override
public long longValue() {
- return (long) (this.sum / this.count);
+ return div(this.sum, this.count).longValue();
}
@Override
public float floatValue() {
- return (float) (this.sum / this.count);
+ return div(this.sum, this.count, true).floatValue();
}
@Override
public double doubleValue() {
- return this.sum / this.count;
+ return div(this.sum, this.count, true).doubleValue();
}
@Override
public String toString() {
- return Double.toString(this.doubleValue());
+ return div(this.sum, this.count, true).toString();
}
@Override
public int compareTo(final Number number) {
+ // TODO: NumberHelper should provide a compareTo() implementation
return Double.valueOf(this.doubleValue()).compareTo(number.doubleValue());
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/eba71143/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinGlobalStep.java
index 6a3ba10..750e36c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinGlobalStep.java
@@ -37,6 +37,8 @@ import java.util.Iterator;
import java.util.Set;
import java.util.function.BiFunction;
+import static org.apache.tinkerpop.gremlin.process.traversal.NumberHelper.min;
+
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
@@ -70,10 +72,11 @@ public final class MinGlobalStep<S extends Number> extends ReducingBarrierStep<S
@Override
public S apply(final S mutatingSeed, final Traverser<S> traverser) {
- return mutatingSeed != null && mutatingSeed.doubleValue() <= traverser.get().doubleValue() ? mutatingSeed : traverser.get();
+ final S value = traverser.get();
+ return mutatingSeed != null ? (S) min(mutatingSeed, traverser.get()) : value;
}
- public final static <S extends Number> MinGlobalBiFunction<S> instance() {
+ public static <S extends Number> MinGlobalBiFunction<S> instance() {
return INSTANCE;
}
}
@@ -106,11 +109,10 @@ public final class MinGlobalStep<S extends Number> extends ReducingBarrierStep<S
@Override
public void reduce(final NullObject key, final Iterator<Number> values, final ReduceEmitter<NullObject, Number> emitter) {
if (values.hasNext()) {
- Number min = Double.MAX_VALUE;
+ Number min = null;
while (values.hasNext()) {
final Number value = values.next();
- if (value.doubleValue() < min.doubleValue())
- min = value;
+ min = min != null ? min(value, min) : value;
}
emitter.emit(min);
}
@@ -126,7 +128,7 @@ public final class MinGlobalStep<S extends Number> extends ReducingBarrierStep<S
return keyValues.hasNext() ? keyValues.next().getValue() : Double.NaN;
}
- public static final MinGlobalMapReduce instance() {
+ public static MinGlobalMapReduce instance() {
return INSTANCE;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/eba71143/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinLocalStep.java
index 2959285..116a5e1 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinLocalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MinLocalStep.java
@@ -26,6 +26,8 @@ import java.util.Collections;
import java.util.Iterator;
import java.util.Set;
+import static org.apache.tinkerpop.gremlin.process.traversal.NumberHelper.min;
+
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
* @author Daniel Kuppitz (http://gremlin.guru)
@@ -43,8 +45,7 @@ public final class MinLocalStep<E extends Number, S extends Iterable<E>> extends
if (iterator.hasNext()) {
result = iterator.next();
while (iterator.hasNext()) {
- final Number curr = iterator.next();
- if (result.doubleValue() > curr.doubleValue()) result = curr;
+ result = min(iterator.next(), result);
}
} else {
result = Double.NaN;
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/eba71143/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java
index efb4a5b..d5a7d1d 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java
@@ -192,12 +192,9 @@ public class TinkerGraphPlayTest {
@Test
@Ignore
public void testPlayDK() throws Exception {
- final Number n = __.inject(1, 2L, 3f).sum().next();
- System.out.println(n.toString());
- System.out.println(n.getClass().toString());
- final Double d = __.inject(1, 2L, 3f).<Double>sum().next();
- System.out.println(d.toString());
- System.out.println(d.getClass().toString());
+ TinkerGraph graph = TinkerFactory.createModern();
+ GraphTraversalSource g = graph.traversal(GraphTraversalSource.standard());
+ final Number m = g.V().values("age").mean().next();
}
@Test
[07/10] incubator-tinkerpop git commit: integrated NumnerHelper in
MeanLocalStep
Posted by dk...@apache.org.
integrated NumnerHelper in MeanLocalStep
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/baf2ae04
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/baf2ae04
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/baf2ae04
Branch: refs/heads/TINKERPOP3-904
Commit: baf2ae04c32b1497bb72ab69f9264f793c085280
Parents: dfa61c9
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Tue Nov 3 15:51:43 2015 +0100
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Tue Nov 3 15:51:43 2015 +0100
----------------------------------------------------------------------
.../process/traversal/step/map/MeanLocalStep.java | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/baf2ae04/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanLocalStep.java
index e2db6af..fab03bb 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanLocalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanLocalStep.java
@@ -18,6 +18,7 @@
*/
package org.apache.tinkerpop.gremlin.process.traversal.step.map;
+import org.apache.tinkerpop.gremlin.process.traversal.NumberHelper;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
@@ -30,23 +31,23 @@ import java.util.Set;
* @author Marko A. Rodriguez (http://markorodriguez.com)
* @author Daniel Kuppitz (http://gremlin.guru)
*/
-public final class MeanLocalStep<E extends Number, S extends Iterable<E>> extends MapStep<S, Double> {
+public final class MeanLocalStep<E extends Number, S extends Iterable<E>> extends MapStep<S, Number> {
public MeanLocalStep(final Traversal.Admin traversal) {
super(traversal);
}
@Override
- protected Double map(final Traverser.Admin<S> traverser) {
+ protected Number map(final Traverser.Admin<S> traverser) {
final Iterator<E> iterator = traverser.get().iterator();
if (iterator.hasNext()) {
Long counter = 1L;
- Double result = iterator.next().doubleValue();
+ E result = iterator.next();
while (iterator.hasNext()) {
- result += iterator.next().doubleValue();
+ result = (E) NumberHelper.add(result, iterator.next());
counter++;
}
- return result / counter;
+ return NumberHelper.div(result, counter, true);
} else {
return Double.NaN;
}
[06/10] incubator-tinkerpop git commit: minor fix in MeanGlobalStep
Posted by dk...@apache.org.
minor fix in MeanGlobalStep
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/dfa61c9f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/dfa61c9f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/dfa61c9f
Branch: refs/heads/TINKERPOP3-904
Commit: dfa61c9f7416d2b697e3e8d5350e94137e1e7ff0
Parents: e29a936
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Tue Nov 3 15:51:25 2015 +0100
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Tue Nov 3 15:51:25 2015 +0100
----------------------------------------------------------------------
.../gremlin/process/traversal/step/map/MeanGlobalStep.java | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/dfa61c9f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanGlobalStep.java
index f658271..a4e4272 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanGlobalStep.java
@@ -199,7 +199,7 @@ public final class MeanGlobalStep<S extends Number, E extends Number> extends Re
@Override
public String toString() {
- return div(this.sum, this.count, true).toString();
+ return getFinal().toString();
}
@Override
@@ -219,8 +219,8 @@ public final class MeanGlobalStep<S extends Number, E extends Number> extends Re
}
@Override
- public Double getFinal() {
- return this.doubleValue();
+ public Number getFinal() {
+ return div(this.sum, this.count, true);
}
}
}
\ No newline at end of file
[02/10] incubator-tinkerpop git commit: modified method/type
signature of SumGlobalStep after getting some feedback from @okram
Posted by dk...@apache.org.
modified method/type signature of SumGlobalStep after getting some feedback from @okram
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/eda16b50
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/eda16b50
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/eda16b50
Branch: refs/heads/TINKERPOP3-904
Commit: eda16b504fda57f58d8d90a60421bde386528bba
Parents: d49deaf
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Sat Oct 31 18:42:09 2015 +0100
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Sat Oct 31 18:42:09 2015 +0100
----------------------------------------------------------------------
.../gremlin/process/traversal/step/map/SumGlobalStep.java | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/eda16b50/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumGlobalStep.java
index 8816390..14573d1 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumGlobalStep.java
@@ -43,7 +43,7 @@ import static org.apache.tinkerpop.gremlin.process.traversal.NumberHelper.mul;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-public final class SumGlobalStep extends ReducingBarrierStep<Number, Number> implements MapReducer {
+public final class SumGlobalStep<S extends Number> extends ReducingBarrierStep<S, S> implements MapReducer {
private static final Set<TraverserRequirement> REQUIREMENTS = EnumSet.of(
TraverserRequirement.BULK,
@@ -52,7 +52,7 @@ public final class SumGlobalStep extends ReducingBarrierStep<Number, Number> imp
public SumGlobalStep(final Traversal.Admin traversal) {
super(traversal);
- this.setSeedSupplier(new ConstantSupplier<>(0));
+ this.setSeedSupplier(new ConstantSupplier<>((S) Integer.valueOf(0)));
this.setBiFunction(SumGlobalBiFunction.instance());
}
@@ -69,7 +69,7 @@ public final class SumGlobalStep extends ReducingBarrierStep<Number, Number> imp
/////
- private static class SumGlobalBiFunction<S extends Number> implements BiFunction<Number, Traverser<S>, Number>, Serializable {
+ private static class SumGlobalBiFunction<S extends Number> implements BiFunction<S, Traverser<S>, S>, Serializable {
private static final SumGlobalBiFunction INSTANCE = new SumGlobalBiFunction<>();
@@ -78,8 +78,8 @@ public final class SumGlobalStep extends ReducingBarrierStep<Number, Number> imp
}
@Override
- public Number apply(final Number mutatingSeed, final Traverser<S> traverser) {
- return add(mutatingSeed, mul(traverser.get(), traverser.bulk()));
+ public S apply(final S mutatingSeed, final Traverser<S> traverser) {
+ return (S) add(mutatingSeed, mul(traverser.get(), traverser.bulk()));
}
public static <S extends Number> SumGlobalBiFunction<S> instance() {
[08/10] incubator-tinkerpop git commit: cleaned up mean() and added
test cases to verify that we get the correct return types
Posted by dk...@apache.org.
cleaned up mean() and added test cases to verify that we get the correct return types
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/af4f5dc1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/af4f5dc1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/af4f5dc1
Branch: refs/heads/TINKERPOP3-904
Commit: af4f5dc1d945da632998f4c490e5b946edb4d64f
Parents: baf2ae0
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Tue Nov 3 16:11:27 2015 +0100
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Tue Nov 3 16:11:27 2015 +0100
----------------------------------------------------------------------
.../process/traversal/dsl/graph/GraphTraversal.java | 12 ++++++------
.../traversal/step/map/MeanGlobalStepTest.java | 14 ++++++++++++++
.../process/traversal/step/map/MeanLocalStepTest.java | 14 ++++++++++++++
3 files changed, 34 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/af4f5dc1/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
index f1028a2..97d0c53 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
@@ -617,7 +617,7 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
}
public default <E2 extends Number> GraphTraversal<S, E2> sum(final Scope scope) {
- return this.asAdmin().addStep(scope.equals(Scope.global) ? new SumGlobalStep(this.asAdmin()) : new SumLocalStep(this.asAdmin()));
+ return this.asAdmin().addStep(scope.equals(Scope.global) ? new SumGlobalStep<>(this.asAdmin()) : new SumLocalStep(this.asAdmin()));
}
public default <E2 extends Number> GraphTraversal<S, E2> max() {
@@ -625,7 +625,7 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
}
public default <E2 extends Number> GraphTraversal<S, E2> max(final Scope scope) {
- return this.asAdmin().addStep(scope.equals(Scope.global) ? new MaxGlobalStep<E2>(this.asAdmin()) : new MaxLocalStep(this.asAdmin()));
+ return this.asAdmin().addStep(scope.equals(Scope.global) ? new MaxGlobalStep<>(this.asAdmin()) : new MaxLocalStep(this.asAdmin()));
}
public default <E2 extends Number> GraphTraversal<S, E2> min() {
@@ -633,15 +633,15 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
}
public default <E2 extends Number> GraphTraversal<S, E2> min(final Scope scope) {
- return this.asAdmin().addStep(scope.equals(Scope.global) ? new MinGlobalStep<E2>(this.asAdmin()) : new MinLocalStep(this.asAdmin()));
+ return this.asAdmin().addStep(scope.equals(Scope.global) ? new MinGlobalStep<>(this.asAdmin()) : new MinLocalStep(this.asAdmin()));
}
- public default GraphTraversal<S, Double> mean() {
+ public default <E2 extends Number> GraphTraversal<S, E2> mean() {
return this.mean(Scope.global);
}
- public default GraphTraversal<S, Double> mean(final Scope scope) {
- return this.asAdmin().addStep(scope.equals(Scope.global) ? new MeanGlobalStep<>(this.asAdmin()) : new MeanLocalStep<>(this.asAdmin()));
+ public default <E2 extends Number> GraphTraversal<S, E2> mean(final Scope scope) {
+ return this.asAdmin().addStep(scope.equals(Scope.global) ? new MeanGlobalStep<>(this.asAdmin()) : new MeanLocalStep(this.asAdmin()));
}
public default <K, V> GraphTraversal<S, Map<K, V>> group() {
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/af4f5dc1/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanGlobalStepTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanGlobalStepTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanGlobalStepTest.java
index f0a5490..be7dd5c 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanGlobalStepTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanGlobalStepTest.java
@@ -21,10 +21,15 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
import org.apache.tinkerpop.gremlin.process.traversal.step.StepTest;
+import org.junit.Test;
+import java.math.BigDecimal;
+import java.math.BigInteger;
import java.util.Collections;
import java.util.List;
+import static org.junit.Assert.assertEquals;
+
/**
* @author Daniel Kuppitz (http://gremlin.guru)
*/
@@ -34,4 +39,13 @@ public class MeanGlobalStepTest extends StepTest {
protected List<Traversal> getTraversals() {
return Collections.singletonList(__.mean());
}
+
+ @Test
+ public void testReturnTypes() {
+ assertEquals(3d, __.__(2, 4).mean().next());
+ assertEquals(3d, __.__((short) 2, (short) 4).mean().next()); // why? because the internal counter is a Long value
+ assertEquals(BigDecimal.ONE, __.__(BigInteger.ONE, BigInteger.ONE).mean().next());
+ assertEquals(BigDecimal.ONE, __.__((short) 1, BigInteger.ONE).mean().next());
+ assertEquals(BigDecimal.ONE, __.__(BigInteger.ONE, (short) 1).mean().next());
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/af4f5dc1/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanLocalStepTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanLocalStepTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanLocalStepTest.java
index 5f317f6..cf267d3 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanLocalStepTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanLocalStepTest.java
@@ -22,10 +22,15 @@ import org.apache.tinkerpop.gremlin.process.traversal.Scope;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
import org.apache.tinkerpop.gremlin.process.traversal.step.StepTest;
+import org.junit.Test;
+import java.math.BigDecimal;
+import java.math.BigInteger;
import java.util.Collections;
import java.util.List;
+import static org.junit.Assert.assertEquals;
+
/**
* @author Daniel Kuppitz (http://gremlin.guru)
*/
@@ -35,4 +40,13 @@ public class MeanLocalStepTest extends StepTest {
protected List<Traversal> getTraversals() {
return Collections.singletonList(__.mean(Scope.local));
}
+
+ @Test
+ public void testReturnTypes() {
+ assertEquals(3d, __.__(2, 4).fold().mean(Scope.local).next());
+ assertEquals(3d, __.__((short) 2, (short) 4).fold().mean(Scope.local).next()); // why? because the internal counter is a Long value
+ assertEquals(BigDecimal.ONE, __.__(BigInteger.ONE, BigInteger.ONE).fold().mean(Scope.local).next());
+ assertEquals(BigDecimal.ONE, __.__((short) 1, BigInteger.ONE).fold().mean(Scope.local).next());
+ assertEquals(BigDecimal.ONE, __.__(BigInteger.ONE, (short) 1).fold().mean(Scope.local).next());
+ }
}
[04/10] incubator-tinkerpop git commit: updated CHANGELOG and upgrade
docs
Posted by dk...@apache.org.
updated CHANGELOG and upgrade docs
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/ccc3bfc3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/ccc3bfc3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/ccc3bfc3
Branch: refs/heads/TINKERPOP3-904
Commit: ccc3bfc31cdf84f7a25dc1f6da89b9dc42f5490a
Parents: eba7114
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Sun Nov 1 22:13:17 2015 +0100
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Sun Nov 1 22:13:17 2015 +0100
----------------------------------------------------------------------
CHANGELOG.asciidoc | 1 +
docs/src/upgrade-release-3.1.x-incubating.asciidoc | 1 +
2 files changed, 2 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ccc3bfc3/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index d773c02..6f7c50e 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -25,6 +25,7 @@ image::https://raw.githubusercontent.com/apache/incubator-tinkerpop/master/docs/
TinkerPop 3.1.0 (NOT OFFICIALLY RELEASED YET)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+* Integrated `NumberHelper` in `SumStep`, `MinStep`, `MaxStep` and `MeanStep` (local and global step variants).
* Renamed the `public static String` configuration variable names of TinkerGraph (deprecated old variables).
* Added `GraphComputer.config(key,value)` to allow engine-specific configurations.
* Added suppport for mid-traversal `V()`-steps (`GraphStep` semantics updated).
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ccc3bfc3/docs/src/upgrade-release-3.1.x-incubating.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/upgrade-release-3.1.x-incubating.asciidoc b/docs/src/upgrade-release-3.1.x-incubating.asciidoc
index 1e52cb5..7043d74 100644
--- a/docs/src/upgrade-release-3.1.x-incubating.asciidoc
+++ b/docs/src/upgrade-release-3.1.x-incubating.asciidoc
@@ -35,6 +35,7 @@ Additional upgrade information can be found here:
Important Changes
~~~~~~~~~~~~~~~~~
+* `sum()`, `min()`, `max()` and `mean()` make now use of `NumberHelper`, leading to a more appropriate result type, instead of just `Double`.
* Traversals now support mid-traversal `V()`-steps. Graph system providers should ensure that a mid-traversal `V()` can leverage any suitable index.
* The data type of `Operator` enums will now always be the highest common data type of the two given numbers, rather than the data type of the first number, as it's been before.
* The Gephi Plugin has improved integration with Gephi, where manually inserting `store` steps to visualize a running traversal is no longer required.