From dac208a0d64020ab974d7577a97279ed78715de6 Mon Sep 17 00:00:00 2001 From: zyxxoo <1318247699@qq.com> Date: Wed, 28 Apr 2021 15:14:59 +0800 Subject: [PATCH] Fix forced to Double and optimization error hint for top range (#1432) --- .../traversal/algorithm/NeighborRankTraverser.java | 3 ++- .../algorithm/SingleSourceShortestPathTraverser.java | 10 +++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/traversal/algorithm/NeighborRankTraverser.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/traversal/algorithm/NeighborRankTraverser.java index f9060cb692..68fd791863 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/traversal/algorithm/NeighborRankTraverser.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/traversal/algorithm/NeighborRankTraverser.java @@ -244,7 +244,8 @@ public static class Step { public Step(HugeGraph g, Directions direction, List labels, long degree, long skipDegree, int top, int capacity) { E.checkArgument(top > 0 && top <= MAX_TOP, - "The top of each layer can't exceed %s", MAX_TOP); + "The top of each layer must be in (0, %s]", + MAX_TOP); E.checkArgument(capacity > 0, "The capacity of each layer must be > 0, " + "but got %s", capacity); diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/traversal/algorithm/SingleSourceShortestPathTraverser.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/traversal/algorithm/SingleSourceShortestPathTraverser.java index cbe69c9ca5..e85f995bcd 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/traversal/algorithm/SingleSourceShortestPathTraverser.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/traversal/algorithm/SingleSourceShortestPathTraverser.java @@ -212,11 +212,19 @@ private double edgeWeight(HugeEdge edge) { !edge.property(this.weight).isPresent()) { edgeWeight = 1.0; } else { - edgeWeight = edge.value(this.weight); + edgeWeight = this.toDouble(edge.value(this.weight)); } return edgeWeight; } + private double toDouble(Object obj) { + if (obj instanceof Number) { + return ((Number) obj).doubleValue(); + } + + return (double) obj; + } + private Iterator skipSuperNodeIfNeeded(Iterator edges) { if (this.skipDegree <= 0L) { return edges;