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 2016/01/13 23:41:54 UTC
incubator-tinkerpop git commit: Integrated `NumberHelper` in
`SackFunctions`.
Repository: incubator-tinkerpop
Updated Branches:
refs/heads/TINKERPOP-824 [created] a2cdeef9e
Integrated `NumberHelper` in `SackFunctions`.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/a2cdeef9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/a2cdeef9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/a2cdeef9
Branch: refs/heads/TINKERPOP-824
Commit: a2cdeef9e8be6a3f85b0cc59568c1d2ba472957d
Parents: 869c0d1
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Wed Jan 13 23:41:04 2016 +0100
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Wed Jan 13 23:41:04 2016 +0100
----------------------------------------------------------------------
CHANGELOG.asciidoc | 1 +
.../process/traversal/SackFunctions.java | 10 +++++---
.../step/sideEffect/GroovySackTest.groovy | 11 ++++++---
.../traversal/step/sideEffect/SackTest.java | 26 ++++++++++++++++++--
4 files changed, 40 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/a2cdeef9/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 581f46e..ce72316 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -26,6 +26,7 @@ image::https://raw.githubusercontent.com/apache/incubator-tinkerpop/master/docs/
TinkerPop 3.1.1 (NOT OFFICIALLY RELEASED YET)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+* Integrated `NumberHelper` in `SackFunctions`.
* The Spark persistence `StorageLevel` can now be set for both job graphs and `PersistedOutputRDD` data.
* Added to the list of "invalid binding keys" allowed by Gremlin Server to cover the private fields of `T` which get exposed in the `ScriptEngine` on static imports.
* Added `BulkDumperVertex` that allows to dump a whole graph in any of the supported IO formats (GraphSON, Gryo, Script).
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/a2cdeef9/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/SackFunctions.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/SackFunctions.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/SackFunctions.java
index 78195cf..2cac1e3 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/SackFunctions.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/SackFunctions.java
@@ -23,6 +23,10 @@ import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSe
import java.util.function.Consumer;
+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)
*/
@@ -36,12 +40,12 @@ public final class SackFunctions {
normSack {
@Override
public void accept(final TraverserSet<Object> traverserSet) {
- double total = 0.0d;
+ Number total = 0.0;
for (final Traverser.Admin<Object> traverser : traverserSet) {
- total = total + (((Number) traverser.sack()).doubleValue() * ((Number) traverser.bulk()).doubleValue());
+ total = add(total, mul(traverser.sack(), traverser.bulk()));
}
for (final Traverser.Admin<Object> traverser : traverserSet) {
- traverser.sack((((Number) traverser.sack()).doubleValue() * ((Number) traverser.bulk()).doubleValue()) / total);
+ traverser.sack(div(mul(traverser.sack(), traverser.bulk()), total));
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/a2cdeef9/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy
index 2eab85d..a9fd808 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy
@@ -46,7 +46,7 @@ public abstract class GroovySackTest {
@Override
public Traversal<Vertex, Double> get_g_withSackX0X_V_outE_sackXsum_weightX_inV_sack_sum() {
- TraversalScriptHelper.compute("g.withSack(0.0f).V().outE.sack(sum, 'weight').inV.sack.sum()", g);
+ TraversalScriptHelper.compute("g.withSack(0.0f).V().outE.sack(sum, 'weight').inV.sack.sum()", g)
}
@Override
@@ -56,7 +56,7 @@ public abstract class GroovySackTest {
@Override
public Traversal<Vertex, Map> get_g_withSackXmap__map_cloneX_V_out_out_sackXmap_a_nameX_sack() {
- TraversalScriptHelper.compute("g.withSack{[:]}{ it.clone() }.V.out().out().sack { m, v -> m['a'] = v.name; m }.sack()", g);
+ TraversalScriptHelper.compute("g.withSack{[:]}{ it.clone() }.V.out().out().sack { m, v -> m['a'] = v.name; m }.sack()", g)
}
@Override
@@ -67,7 +67,12 @@ public abstract class GroovySackTest {
@Override
public Traversal<Vertex, Integer> get_g_withBulkXfalseX_withSackX1_sumX_V_out_barrier_sack() {
- TraversalScriptHelper.compute("g.withBulk(false).withSack(1, sum).V.out.barrier.sack", g);
+ TraversalScriptHelper.compute("g.withBulk(false).withSack(1, sum).V.out.barrier.sack", g)
+ }
+
+ @Override
+ Traversal<Vertex, BigDecimal> get_g_withSackXBigInteger_TEN_powX1000X_assignX_V_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack() {
+ TraversalScriptHelper.compute("g.withSack(BigInteger.TEN.pow(1000), assign).V.local(out('knows').barrier(normSack)).in('knows').barrier.sack", g)
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/a2cdeef9/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SackTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SackTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SackTest.java
index c88ea19..299bee2 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SackTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SackTest.java
@@ -24,17 +24,19 @@ import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
import org.apache.tinkerpop.gremlin.process.traversal.Operator;
import org.apache.tinkerpop.gremlin.process.traversal.SackFunctions;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
import org.apache.tinkerpop.gremlin.structure.T;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.math.BigDecimal;
+import java.math.BigInteger;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
+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;
@@ -64,6 +66,8 @@ public abstract class SackTest extends AbstractGremlinProcessTest {
public abstract Traversal<Vertex, Integer> get_g_withBulkXfalseX_withSackX1_sumX_V_out_barrier_sack();
+ public abstract Traversal<Vertex, BigDecimal> get_g_withSackXBigInteger_TEN_powX1000X_assignX_V_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack();
+
@Test
@LoadGraphWith(MODERN)
public void g_withSackXhellowX_V_outE_sackXassignX_byXlabelX_inV_sack() {
@@ -139,6 +143,19 @@ public abstract class SackTest extends AbstractGremlinProcessTest {
checkResults(Arrays.asList(1, 1, 1, 3), traversal); // josh, vadas, ripple, lop
}
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_withSackXBigInteger_TEN_powX1000X_assignX_V_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack() {
+ final Traversal<Vertex, BigDecimal> traversal = get_g_withSackXBigInteger_TEN_powX1000X_assignX_V_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack();
+ printTraversalForm(traversal);
+ final BigDecimal half = BigDecimal.ONE.divide(BigDecimal.ONE.add(BigDecimal.ONE));
+ assertTrue(traversal.hasNext());
+ assertEquals(half, traversal.next());
+ assertTrue(traversal.hasNext());
+ assertEquals(half, traversal.next());
+ assertFalse(traversal.hasNext());
+ }
+
public static class Traversals extends SackTest {
@Override
@@ -176,12 +193,17 @@ public abstract class SackTest extends AbstractGremlinProcessTest {
@Override
public Traversal<Vertex, Double> get_g_withSackX1_sumX_VX1X_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack(final Object v1Id) {
- return g.withSack(1.0d, Operator.sum).V(v1Id).local(__.out("knows").barrier(SackFunctions.Barrier.normSack)).in("knows").barrier().sack();
+ return g.withSack(1.0d, Operator.sum).V(v1Id).local(out("knows").barrier(SackFunctions.Barrier.normSack)).in("knows").barrier().sack();
}
@Override
public Traversal<Vertex, Integer> get_g_withBulkXfalseX_withSackX1_sumX_V_out_barrier_sack() {
return g.withBulk(false).withSack(1, Operator.sum).V().out().barrier().sack();
}
+
+ @Override
+ public Traversal<Vertex, BigDecimal> get_g_withSackXBigInteger_TEN_powX1000X_assignX_V_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack() {
+ return g.withSack(BigInteger.TEN.pow(1000), Operator.assign).V().local(out("knows").barrier(SackFunctions.Barrier.normSack)).in("knows").barrier().sack();
+ }
}
}
\ No newline at end of file