From df28f378b7d67c32f0eb9bded9f5cbe385178bac Mon Sep 17 00:00:00 2001 From: shadowsock5 Date: Sun, 24 Dec 2023 13:56:49 +0800 Subject: [PATCH] fixed cast Long to Integer --- pom.xml | 2 ++ src/main/java/tabby/algo/BasePathFinding.java | 12 ++++++------ src/main/java/tabby/algo/beta/PathFinding.java | 6 +++--- .../tabby/algo/release/JavaGadgetPathFinding.java | 6 +++--- src/main/java/tabby/algo/release/PathFinding.java | 2 +- src/main/java/tabby/evaluator/MonoPathEvaluator.java | 10 +++++----- src/main/java/tabby/evaluator/TabbyEvaluator.java | 10 +++++----- src/main/java/tabby/path/BasePathFinder.java | 4 ++-- .../tabby/path/BidirectionalTraversalPathFinder.java | 6 +++--- .../path/MonoDirectionalTraversalPathFinder.java | 2 +- .../path/TabbyBidirectionalTraversalPathFinder.java | 6 +++--- .../java/tabby/path/TabbyTraversalPathFinder.java | 2 +- 12 files changed, 35 insertions(+), 33 deletions(-) diff --git a/pom.xml b/pom.xml index f8a11d5..8642ade 100644 --- a/pom.xml +++ b/pom.xml @@ -12,6 +12,8 @@ 5.9.0 5.7.0 + UTF-8 + UTF-8 diff --git a/src/main/java/tabby/algo/BasePathFinding.java b/src/main/java/tabby/algo/BasePathFinding.java index f249933..8a78fe4 100644 --- a/src/main/java/tabby/algo/BasePathFinding.java +++ b/src/main/java/tabby/algo/BasePathFinding.java @@ -20,13 +20,13 @@ public class BasePathFinding { public static Stream findPathWithState(Node sourceNode, String direct, Node sinkNode, String state, - long maxNodeLength, boolean isDepthFirst, boolean checkAuth, boolean isCheckType, + Number maxNodeLength, boolean isDepthFirst, boolean checkAuth, boolean isCheckType, GraphDatabaseService db, Transaction tx){ PathExpander expander; TraversalPathFinder algo; Iterable allPaths; - int maxDepth = (int) maxNodeLength; + Number maxDepth = maxNodeLength; if(">".equals(direct)){ expander = new TabbyPathExpander(false, false, isCheckType); @@ -35,19 +35,19 @@ public static Stream findPathWithState(Node sourceNode, String direc algo = new TabbyTraversalPathFinder( new BasicEvaluationContext(tx, db), expander, initialState, sinkState, - maxDepth, isDepthFirst, checkAuth, false); + maxNodeLength, isDepthFirst, checkAuth, false); allPaths = algo.findAllPaths(sourceNode, sinkNode); }else if("<".equals(direct)){ expander = new TabbyPathExpander(false, true, isCheckType); TabbyState initialState = TabbyState.initialState(sinkNode, state); if(initialState == null){ - maxNodeLength = 0; + maxDepth = 0; } algo = new TabbyTraversalPathFinder( new BasicEvaluationContext(tx, db), expander, initialState, null, - (int) maxNodeLength, isDepthFirst, false, true); + maxDepth, isDepthFirst, false, true); allPaths = algo.findAllPaths(sinkNode, sourceNode); }else{ @@ -57,7 +57,7 @@ public static Stream findPathWithState(Node sourceNode, String direc TabbyState sinkState = TabbyState.initialState(sinkNode, state); algo = new TabbyBidirectionalTraversalPathFinder(new BasicEvaluationContext(tx, db), - expander, sourceState, sinkState, (int) maxNodeLength, isDepthFirst); + expander, sourceState, sinkState, maxNodeLength, isDepthFirst); allPaths = algo.findAllPaths(sourceNode, sinkNode); } diff --git a/src/main/java/tabby/algo/beta/PathFinding.java b/src/main/java/tabby/algo/beta/PathFinding.java index d6e5b54..66789f0 100644 --- a/src/main/java/tabby/algo/beta/PathFinding.java +++ b/src/main/java/tabby/algo/beta/PathFinding.java @@ -30,7 +30,7 @@ public class PathFinding extends BasePathFinding { public Stream findPath(@Name("source") Node sourceNode, @Name("direct") String direct, @Name("sink") Node sinkNode, - @Name("maxNodeLength") long maxNodeLength, + @Name("maxNodeLength") Number maxNodeLength, @Name("isDepthFirst") boolean isDepthFirst){ return findPathWithState(sourceNode, direct, sinkNode, null, maxNodeLength, isDepthFirst, false, true, db, tx); } @@ -52,7 +52,7 @@ public Stream findPathWithState(@Name("source") Node sourceNode, @Name("direct") String direct, @Name("sink") Node sinkNode, @Name("state") String state, - @Name("maxNodeLength") long maxNodeLength, + @Name("maxNodeLength") Number maxNodeLength, @Name("isDepthFirst") boolean isDepthFirst){ return findPathWithState(sourceNode, direct, sinkNode, state, maxNodeLength, isDepthFirst, false, true, db, tx); } @@ -62,7 +62,7 @@ public Stream findPathWithState(@Name("source") Node sourceNode, " - using findPath to get source-sink path with maxNodeLength") public Stream findPathWithAuth(@Name("source") Node sourceNode, @Name("sink") Node sinkNode, - @Name("maxNodeLength") long maxNodeLength, + @Name("maxNodeLength") Number maxNodeLength, @Name("isDepthFirst") boolean isDepthFirst){ return findPathWithState(sourceNode, ">", sinkNode, null, maxNodeLength, isDepthFirst, true, true, db, tx); diff --git a/src/main/java/tabby/algo/release/JavaGadgetPathFinding.java b/src/main/java/tabby/algo/release/JavaGadgetPathFinding.java index 935b9b6..bb09502 100644 --- a/src/main/java/tabby/algo/release/JavaGadgetPathFinding.java +++ b/src/main/java/tabby/algo/release/JavaGadgetPathFinding.java @@ -37,7 +37,7 @@ public Stream findJavaGadget( @Name("source") Node sourceNode, @Name("direct") String direct, @Name("sink") Node sinkNode, - @Name("maxNodeLength") long maxNodeLength, + @Name("maxNodeLength") Number maxNodeLength, @Name("isDepthFirst") boolean isDepthFirst) { return findJavaGadgetWithState(sourceNode, direct, sinkNode, null, maxNodeLength, isDepthFirst); @@ -51,7 +51,7 @@ public Stream findJavaGadgetWithState( @Name("direct") String direct, @Name("sink") Node sinkNode, @Name("sinkState") String state, - @Name("maxNodeLength") long maxNodeLength, + @Name("maxNodeLength") Number maxNodeLength, @Name("isDepthFirst") boolean isDepthFirst) { boolean isBackward = "<".equals(direct); String processor = isBackward ? "JavaGadgetBackward":"JavaGadget"; @@ -69,7 +69,7 @@ public Stream findJavaGadgetWithState( MonoDirectionalTraversalPathFinder algo = new MonoDirectionalTraversalPathFinder( new BasicEvaluationContext(tx, db), - expander, (int) maxNodeLength, initialState, isDepthFirst + expander, maxNodeLength, initialState, isDepthFirst ); Iterable allPaths; diff --git a/src/main/java/tabby/algo/release/PathFinding.java b/src/main/java/tabby/algo/release/PathFinding.java index 890325c..941e715 100644 --- a/src/main/java/tabby/algo/release/PathFinding.java +++ b/src/main/java/tabby/algo/release/PathFinding.java @@ -30,7 +30,7 @@ public class PathFinding extends BasePathFinding { public Stream findPath(@Name("source") Node sourceNode, @Name("direct") String direct, @Name("sink") Node sinkNode, - @Name("maxNodeLength") long maxNodeLength, + @Name("maxNodeLength") Number maxNodeLength, @Name("isDepthFirst") boolean isDepthFirst){ return findPathWithState(sourceNode, direct, sinkNode, null, maxNodeLength, isDepthFirst, false, false, db, tx); } diff --git a/src/main/java/tabby/evaluator/MonoPathEvaluator.java b/src/main/java/tabby/evaluator/MonoPathEvaluator.java index 61909ac..4101b35 100644 --- a/src/main/java/tabby/evaluator/MonoPathEvaluator.java +++ b/src/main/java/tabby/evaluator/MonoPathEvaluator.java @@ -15,10 +15,10 @@ public class MonoPathEvaluator extends PathEvaluator.Adapter { private Node endNode; - private int maxDepth; + private Number maxDepth; private boolean checkAuth; - public MonoPathEvaluator(Node endNode, int maxDepth, boolean checkAuth) { + public MonoPathEvaluator(Node endNode, Number maxDepth, boolean checkAuth) { this.endNode = endNode; this.maxDepth = maxDepth; this.checkAuth = checkAuth; @@ -28,10 +28,10 @@ public MonoPathEvaluator(Node endNode, int maxDepth, boolean checkAuth) { public Evaluation evaluate(Path path, BranchState state) { boolean includes = true; boolean continues = true; - int length = path.length(); + long length = path.length(); Node node = path.endNode(); - if(length >= maxDepth){ + if((Long)length >= (Long)maxDepth){ continues = false; // 超出长度 不继续进行 if(endNode != null && !endNode.equals(node)){ includes = false; // 最后的节点不是endNode,不保存当前结果 @@ -48,7 +48,7 @@ public Evaluation evaluate(Path path, BranchState state) { return Evaluation.of(includes, continues); } - public static MonoPathEvaluator of(Node endNode, int maxDepth){ + public static MonoPathEvaluator of(Node endNode, Number maxDepth){ return new MonoPathEvaluator(endNode, maxDepth, false); } diff --git a/src/main/java/tabby/evaluator/TabbyEvaluator.java b/src/main/java/tabby/evaluator/TabbyEvaluator.java index e844b0a..fcb6622 100644 --- a/src/main/java/tabby/evaluator/TabbyEvaluator.java +++ b/src/main/java/tabby/evaluator/TabbyEvaluator.java @@ -16,12 +16,12 @@ public class TabbyEvaluator extends PathEvaluator.Adapter{ private Node endNode; - private int maxDepth; + private Number maxDepth; private boolean checkAuth; private boolean isBackward; private Pollution endPol = null; - public TabbyEvaluator(Node endNode, TabbyState endState, int maxDepth, boolean checkAuth, boolean isBackward) { + public TabbyEvaluator(Node endNode, TabbyState endState, Number maxDepth, boolean checkAuth, boolean isBackward) { this.endNode = endNode; this.maxDepth = maxDepth; this.checkAuth = checkAuth; @@ -31,17 +31,17 @@ public TabbyEvaluator(Node endNode, TabbyState endState, int maxDepth, boolean c } } - public static TabbyEvaluator of(Node endNode, TabbyState endState, int maxDepth, boolean checkAuth, boolean isBackward){ + public static TabbyEvaluator of(Node endNode, TabbyState endState, Number maxDepth, boolean checkAuth, boolean isBackward){ return new TabbyEvaluator(endNode, endState, maxDepth, checkAuth, isBackward); } @Override public Evaluation evaluate(Path path, BranchState branchState) { boolean includes = true; boolean continues = true; - int length = path.length(); + Long length = (long) path.length(); Node node = path.endNode(); - if(length >= maxDepth){ + if(length >= (Long)maxDepth){ continues = false; // 超出长度 不继续进行 if(endNode != null && !endNode.equals(node)){ includes = false; // 最后的节点不是endNode,不保存当前结果 diff --git a/src/main/java/tabby/path/BasePathFinder.java b/src/main/java/tabby/path/BasePathFinder.java index b508bbe..2964877 100644 --- a/src/main/java/tabby/path/BasePathFinder.java +++ b/src/main/java/tabby/path/BasePathFinder.java @@ -13,10 +13,10 @@ public abstract class BasePathFinder extends TraversalPathFinder { public final PathExpander expander; public final EvaluationContext context; - public final int maxDepth; + public final Number maxDepth; public final boolean depthFirst; - public BasePathFinder(EvaluationContext context, PathExpander expander, int maxDepth, boolean depthFirst) { + public BasePathFinder(EvaluationContext context, PathExpander expander, Number maxDepth, boolean depthFirst) { this.expander = expander; this.context = context; this.maxDepth = maxDepth; diff --git a/src/main/java/tabby/path/BidirectionalTraversalPathFinder.java b/src/main/java/tabby/path/BidirectionalTraversalPathFinder.java index 87e943f..bc478a7 100644 --- a/src/main/java/tabby/path/BidirectionalTraversalPathFinder.java +++ b/src/main/java/tabby/path/BidirectionalTraversalPathFinder.java @@ -22,7 +22,7 @@ public class BidirectionalTraversalPathFinder extends BasePathFinder{ public BidirectionalTraversalPathFinder(EvaluationContext context, PathExpander expander, - int maxDepth, + Number maxDepth, State sourceState, State sinkState, boolean depthFirst) { @@ -43,8 +43,8 @@ protected Traverser instantiateTraverser(Node start, Node end) { } return transaction.bidirectionalTraversalDescription() - .startSide( base.expand( expander, sourceState ).evaluator( toDepth( maxDepth / 2 ) ) ) - .endSide( base.expand( expander.reverse(), sinkState ).evaluator( toDepth( maxDepth - maxDepth / 2 ) ) ) + .startSide( base.expand( expander, sourceState ).evaluator( toDepth( (Integer)maxDepth / 2 ) ) ) + .endSide( base.expand( expander.reverse(), sinkState ).evaluator( toDepth( (Integer)maxDepth - (Integer)maxDepth / 2 ) ) ) .traverse( start, end ); } } diff --git a/src/main/java/tabby/path/MonoDirectionalTraversalPathFinder.java b/src/main/java/tabby/path/MonoDirectionalTraversalPathFinder.java index 9bf2aaf..7e4ccfe 100644 --- a/src/main/java/tabby/path/MonoDirectionalTraversalPathFinder.java +++ b/src/main/java/tabby/path/MonoDirectionalTraversalPathFinder.java @@ -24,7 +24,7 @@ public class MonoDirectionalTraversalPathFinder extends BasePathFinder{ public MonoDirectionalTraversalPathFinder(EvaluationContext context, PathExpander expander, - int maxDepth, + Number maxDepth, State state, boolean depthFirst ) { diff --git a/src/main/java/tabby/path/TabbyBidirectionalTraversalPathFinder.java b/src/main/java/tabby/path/TabbyBidirectionalTraversalPathFinder.java index b4b3832..bc47582 100644 --- a/src/main/java/tabby/path/TabbyBidirectionalTraversalPathFinder.java +++ b/src/main/java/tabby/path/TabbyBidirectionalTraversalPathFinder.java @@ -25,7 +25,7 @@ public class TabbyBidirectionalTraversalPathFinder extends BasePathFinder expander, TabbyState sourceState, - TabbyState sinkState, int maxDepth, + TabbyState sinkState, Number maxDepth, boolean depthFirst) { super(context, expander, maxDepth, depthFirst); this.sourceState = new InitialBranchState.State<>(sourceState, TabbyState.of()); @@ -38,8 +38,8 @@ protected Traverser instantiateTraverser(Node start, Node end) { TraversalDescription base = getBaseDescription(transaction); return transaction.bidirectionalTraversalDescription() - .startSide( base.expand( expander, sourceState ).evaluator( toDepth( maxDepth / 2 ) ) ) - .endSide( base.expand( expander.reverse(), sinkState ).evaluator( toDepth( maxDepth - maxDepth / 2 ) ) ) + .startSide( base.expand( expander, sourceState ).evaluator( toDepth( (Integer)maxDepth / 2 ) ) ) + .endSide( base.expand( expander.reverse(), sinkState ).evaluator( toDepth( (Integer)maxDepth - (Integer)maxDepth / 2 ) ) ) .collisionEvaluator(Evaluators.all()) .collisionPolicy(CollisionDetector::new) .traverse( start, end ); diff --git a/src/main/java/tabby/path/TabbyTraversalPathFinder.java b/src/main/java/tabby/path/TabbyTraversalPathFinder.java index 94613b0..922646a 100644 --- a/src/main/java/tabby/path/TabbyTraversalPathFinder.java +++ b/src/main/java/tabby/path/TabbyTraversalPathFinder.java @@ -24,7 +24,7 @@ public class TabbyTraversalPathFinder extends BasePathFinder { public TabbyTraversalPathFinder(EvaluationContext context, PathExpander expander, TabbyState initialState, - TabbyState endState, int maxDepth, + TabbyState endState, Number maxDepth, boolean depthFirst, boolean checkAuth, boolean isBackward) { super(context, expander, maxDepth, depthFirst); this.state = new InitialBranchState.State<>(initialState, TabbyState.of());