From e58c0f0e9ce01d1853cd06e3f7b1c5cb2376a554 Mon Sep 17 00:00:00 2001 From: Gem Lamont <106068376+gem-neo4j@users.noreply.github.com> Date: Mon, 22 Aug 2022 12:03:01 +0200 Subject: [PATCH] Undeprecate Traversal API () MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Gemma Lamont<gemma.lamont@neotechnology.com> Co-authored-by: Nadja M眉ller <nadja.muller@neotechnology.com> --- community/graphdb-api/PublicApi.txt | 184 ++++++++++++++++++ .../neo4j/graphdb/PathExpanderBuilder.java | 2 + .../java/org/neo4j/graphdb/PathExpanders.java | 2 + .../java/org/neo4j/graphdb/Transaction.java | 4 - .../BidirectionalTraversalDescription.java | 2 + .../traversal/BranchCollisionDetector.java | 2 + .../traversal/BranchCollisionPolicies.java | 14 +- .../traversal/BranchCollisionPolicy.java | 7 +- .../traversal/BranchOrderingPolicies.java | 24 ++- .../traversal/BranchOrderingPolicy.java | 2 + .../graphdb/traversal/BranchSelector.java | 3 + .../neo4j/graphdb/traversal/Evaluation.java | 3 + .../neo4j/graphdb/traversal/Evaluator.java | 2 + .../neo4j/graphdb/traversal/Evaluators.java | 2 + .../graphdb/traversal/InitialBranchState.java | 2 + .../graphdb/traversal/PathEvaluator.java | 2 + .../org/neo4j/graphdb/traversal/Paths.java | 2 + .../neo4j/graphdb/traversal/SideSelector.java | 2 + .../traversal/SideSelectorPolicies.java | 17 +- .../graphdb/traversal/SideSelectorPolicy.java | 3 + .../graphdb/traversal/TraversalBranch.java | 2 + .../graphdb/traversal/TraversalContext.java | 3 + .../traversal/TraversalDescription.java | 2 + .../neo4j/graphdb/traversal/Traverser.java | 2 + .../neo4j/graphdb/traversal/Uniqueness.java | 3 + .../graphdb/traversal/UniquenessFactory.java | 3 + .../graphdb/traversal/UniquenessFilter.java | 3 + 27 files changed, 287 insertions(+), 12 deletions(-) diff --git a/community/graphdb-api/PublicApi.txt b/community/graphdb-api/PublicApi.txt index 77dd6f9f8fc..6066e8d69a1 100644 --- a/community/graphdb-api/PublicApi.txt +++ b/community/graphdb-api/PublicApi.txt @@ -149,6 +149,29 @@ org.neo4j.graphdb.Path::toString() java.lang.String public abstract org.neo4j.graphdb.PathExpander<STATE extends java.lang.Object> public abstract interface org.neo4j.graphdb.PathExpander<STATE>::expand(org.neo4j.graphdb.Path, org.neo4j.graphdb.traversal.BranchState<STATE>) java.lang.Iterable<org.neo4j.graphdb.Relationship> public abstract org.neo4j.graphdb.PathExpander<STATE>::reverse() org.neo4j.graphdb.PathExpander<STATE> public abstract +org.neo4j.graphdb.PathExpanderBuilder public class extends java.lang.Object +org.neo4j.graphdb.PathExpanderBuilder::<STATE extends java.lang.Object>build() org.neo4j.graphdb.PathExpander<STATE> public +org.neo4j.graphdb.PathExpanderBuilder::add(org.neo4j.graphdb.RelationshipType) org.neo4j.graphdb.PathExpanderBuilder public +org.neo4j.graphdb.PathExpanderBuilder::add(org.neo4j.graphdb.RelationshipType, org.neo4j.graphdb.Direction) org.neo4j.graphdb.PathExpanderBuilder public +org.neo4j.graphdb.PathExpanderBuilder::addNodeFilter(java.util.function.Predicate<? super org.neo4j.graphdb.Node>) org.neo4j.graphdb.PathExpanderBuilder public +org.neo4j.graphdb.PathExpanderBuilder::addRelationshipFilter(java.util.function.Predicate<? super org.neo4j.graphdb.Relationship>) org.neo4j.graphdb.PathExpanderBuilder public +org.neo4j.graphdb.PathExpanderBuilder::allTypes(org.neo4j.graphdb.Direction) org.neo4j.graphdb.PathExpanderBuilder public static +org.neo4j.graphdb.PathExpanderBuilder::allTypesAndDirections() org.neo4j.graphdb.PathExpanderBuilder public static +org.neo4j.graphdb.PathExpanderBuilder::empty() org.neo4j.graphdb.PathExpanderBuilder public static +org.neo4j.graphdb.PathExpanderBuilder::emptyOrderedByType() org.neo4j.graphdb.PathExpanderBuilder public static +org.neo4j.graphdb.PathExpanderBuilder::remove(org.neo4j.graphdb.RelationshipType) org.neo4j.graphdb.PathExpanderBuilder public +org.neo4j.graphdb.PathExpanders public abstract class extends java.lang.Object +org.neo4j.graphdb.PathExpanders::<STATE extends java.lang.Object>allTypesAndDirections() org.neo4j.graphdb.PathExpander<STATE> public static +org.neo4j.graphdb.PathExpanders::<STATE extends java.lang.Object>forConstantDirectionWithTypes(org.neo4j.graphdb.RelationshipType...) org.neo4j.graphdb.PathExpander<STATE> public static +org.neo4j.graphdb.PathExpanders::<STATE extends java.lang.Object>forDirection(org.neo4j.graphdb.Direction) org.neo4j.graphdb.PathExpander<STATE> public static +org.neo4j.graphdb.PathExpanders::<STATE extends java.lang.Object>forType(org.neo4j.graphdb.RelationshipType) org.neo4j.graphdb.PathExpander<STATE> public static +org.neo4j.graphdb.PathExpanders::<STATE extends java.lang.Object>forTypeAndDirection(org.neo4j.graphdb.RelationshipType, org.neo4j.graphdb.Direction) org.neo4j.graphdb.PathExpander<STATE> public static +org.neo4j.graphdb.PathExpanders::<STATE extends java.lang.Object>forTypesAndDirections(org.neo4j.graphdb.RelationshipType, org.neo4j.graphdb.Direction, org.neo4j.graphdb.RelationshipType, org.neo4j.graphdb.Direction, java.lang.Object...) org.neo4j.graphdb.PathExpander<STATE> public static +org.neo4j.graphdb.PathExpanders::<STATE extends java.lang.Object>printingWrapper(org.neo4j.graphdb.PathExpander<STATE>) org.neo4j.graphdb.PathExpander<STATE> public static +org.neo4j.graphdb.PathExpanders::<STATE extends java.lang.Object>printingWrapper(org.neo4j.graphdb.PathExpander<STATE>, java.util.function.BiFunction<org.neo4j.graphdb.Path,org.neo4j.graphdb.traversal.BranchState,java.lang.Boolean>) org.neo4j.graphdb.PathExpander<STATE> public static +org.neo4j.graphdb.PathExpanders::<STATE extends java.lang.Object>printingWrapper(org.neo4j.graphdb.PathExpander<STATE>, java.util.function.BiFunction<org.neo4j.graphdb.Path,org.neo4j.graphdb.traversal.BranchState,java.lang.Boolean>, org.neo4j.graphdb.traversal.Paths.PathDescriptor) org.neo4j.graphdb.PathExpander<STATE> public static +org.neo4j.graphdb.PathExpanders::<STATE extends java.lang.Object>printingWrapper(org.neo4j.graphdb.PathExpander<STATE>, java.util.function.BiFunction<org.neo4j.graphdb.Path,org.neo4j.graphdb.traversal.BranchState,java.lang.Boolean>, org.neo4j.graphdb.traversal.Paths.PathDescriptor, java.io.PrintStream) org.neo4j.graphdb.PathExpander<STATE> public static +org.neo4j.graphdb.PathExpanders::<STATE extends java.lang.Object>printingWrapper(org.neo4j.graphdb.PathExpander<STATE>, org.neo4j.graphdb.traversal.Paths.PathDescriptor) org.neo4j.graphdb.PathExpander<STATE> public static org.neo4j.graphdb.QueryExecutionException public class extends java.lang.RuntimeException org.neo4j.graphdb.QueryExecutionException::QueryExecutionException(java.lang.String, java.lang.Throwable, java.lang.String) void public org.neo4j.graphdb.QueryExecutionException::getStatusCode() java.lang.String public @@ -439,3 +462,164 @@ org.neo4j.graphdb.spatial.Geometry::getGeometryType() java.lang.String public ab org.neo4j.graphdb.spatial.Point public abstract interface implements org.neo4j.graphdb.spatial.Geometry org.neo4j.graphdb.spatial.Point::getCoordinate() org.neo4j.graphdb.spatial.Coordinate public default org.neo4j.graphdb.spatial.Point::getGeometryType() java.lang.String public default +org.neo4j.graphdb.traversal.BidirectionalTraversalDescription public abstract interface +org.neo4j.graphdb.traversal.BidirectionalTraversalDescription::collisionEvaluator(org.neo4j.graphdb.traversal.Evaluator) org.neo4j.graphdb.traversal.BidirectionalTraversalDescription public abstract +org.neo4j.graphdb.traversal.BidirectionalTraversalDescription::collisionEvaluator(org.neo4j.graphdb.traversal.PathEvaluator) org.neo4j.graphdb.traversal.BidirectionalTraversalDescription public abstract +org.neo4j.graphdb.traversal.BidirectionalTraversalDescription::collisionPolicy(org.neo4j.graphdb.traversal.BranchCollisionPolicy) org.neo4j.graphdb.traversal.BidirectionalTraversalDescription public abstract +org.neo4j.graphdb.traversal.BidirectionalTraversalDescription::endSide(org.neo4j.graphdb.traversal.TraversalDescription) org.neo4j.graphdb.traversal.BidirectionalTraversalDescription public abstract +org.neo4j.graphdb.traversal.BidirectionalTraversalDescription::mirroredSides(org.neo4j.graphdb.traversal.TraversalDescription) org.neo4j.graphdb.traversal.BidirectionalTraversalDescription public abstract +org.neo4j.graphdb.traversal.BidirectionalTraversalDescription::sideSelector(org.neo4j.graphdb.traversal.SideSelectorPolicy, int) org.neo4j.graphdb.traversal.BidirectionalTraversalDescription public abstract +org.neo4j.graphdb.traversal.BidirectionalTraversalDescription::startSide(org.neo4j.graphdb.traversal.TraversalDescription) org.neo4j.graphdb.traversal.BidirectionalTraversalDescription public abstract +org.neo4j.graphdb.traversal.BidirectionalTraversalDescription::traverse(java.lang.Iterable<org.neo4j.graphdb.Node>, java.lang.Iterable<org.neo4j.graphdb.Node>) org.neo4j.graphdb.traversal.Traverser public abstract +org.neo4j.graphdb.traversal.BidirectionalTraversalDescription::traverse(org.neo4j.graphdb.Node, org.neo4j.graphdb.Node) org.neo4j.graphdb.traversal.Traverser public abstract +org.neo4j.graphdb.traversal.BranchCollisionDetector public abstract interface +org.neo4j.graphdb.traversal.BranchCollisionDetector::evaluate(org.neo4j.graphdb.traversal.TraversalBranch, org.neo4j.graphdb.Direction) java.lang.Iterable<org.neo4j.graphdb.Path> public abstract +org.neo4j.graphdb.traversal.BranchCollisionPolicies public enum extends java.lang.Enum<org.neo4j.graphdb.traversal.BranchCollisionPolicies> implements org.neo4j.graphdb.traversal.BranchCollisionPolicy +org.neo4j.graphdb.traversal.BranchCollisionPolicies::SHORTEST_PATH org.neo4j.graphdb.traversal.BranchCollisionPolicies public static final +org.neo4j.graphdb.traversal.BranchCollisionPolicies::STANDARD org.neo4j.graphdb.traversal.BranchCollisionPolicies public static final +org.neo4j.graphdb.traversal.BranchCollisionPolicies::valueOf(java.lang.String) org.neo4j.graphdb.traversal.BranchCollisionPolicies public static +org.neo4j.graphdb.traversal.BranchCollisionPolicies::values() org.neo4j.graphdb.traversal.BranchCollisionPolicies[] public static +org.neo4j.graphdb.traversal.BranchCollisionPolicy public abstract interface +org.neo4j.graphdb.traversal.BranchCollisionPolicy::create(org.neo4j.graphdb.traversal.Evaluator, java.util.function.Predicate<org.neo4j.graphdb.Path>) org.neo4j.graphdb.traversal.BranchCollisionDetector public abstract +org.neo4j.graphdb.traversal.BranchOrderingPolicies public enum extends java.lang.Enum<org.neo4j.graphdb.traversal.BranchOrderingPolicies> implements org.neo4j.graphdb.traversal.BranchOrderingPolicy +org.neo4j.graphdb.traversal.BranchOrderingPolicies::POSTORDER_BREADTH_FIRST org.neo4j.graphdb.traversal.BranchOrderingPolicies public static final +org.neo4j.graphdb.traversal.BranchOrderingPolicies::POSTORDER_DEPTH_FIRST org.neo4j.graphdb.traversal.BranchOrderingPolicies public static final +org.neo4j.graphdb.traversal.BranchOrderingPolicies::PREORDER_BREADTH_FIRST org.neo4j.graphdb.traversal.BranchOrderingPolicies public static final +org.neo4j.graphdb.traversal.BranchOrderingPolicies::PREORDER_DEPTH_FIRST org.neo4j.graphdb.traversal.BranchOrderingPolicies public static final +org.neo4j.graphdb.traversal.BranchOrderingPolicies::valueOf(java.lang.String) org.neo4j.graphdb.traversal.BranchOrderingPolicies public static +org.neo4j.graphdb.traversal.BranchOrderingPolicies::values() org.neo4j.graphdb.traversal.BranchOrderingPolicies[] public static +org.neo4j.graphdb.traversal.BranchOrderingPolicy public abstract interface +org.neo4j.graphdb.traversal.BranchOrderingPolicy::create(org.neo4j.graphdb.traversal.TraversalBranch, org.neo4j.graphdb.PathExpander) org.neo4j.graphdb.traversal.BranchSelector public abstract +org.neo4j.graphdb.traversal.BranchSelector public abstract interface +org.neo4j.graphdb.traversal.BranchSelector::next(org.neo4j.graphdb.traversal.TraversalContext) org.neo4j.graphdb.traversal.TraversalBranch public abstract +org.neo4j.graphdb.traversal.Evaluation public final enum extends java.lang.Enum<org.neo4j.graphdb.traversal.Evaluation> +org.neo4j.graphdb.traversal.Evaluation::EXCLUDE_AND_CONTINUE org.neo4j.graphdb.traversal.Evaluation public static final +org.neo4j.graphdb.traversal.Evaluation::EXCLUDE_AND_PRUNE org.neo4j.graphdb.traversal.Evaluation public static final +org.neo4j.graphdb.traversal.Evaluation::INCLUDE_AND_CONTINUE org.neo4j.graphdb.traversal.Evaluation public static final +org.neo4j.graphdb.traversal.Evaluation::INCLUDE_AND_PRUNE org.neo4j.graphdb.traversal.Evaluation public static final +org.neo4j.graphdb.traversal.Evaluation::continues() boolean public +org.neo4j.graphdb.traversal.Evaluation::includes() boolean public +org.neo4j.graphdb.traversal.Evaluation::of(boolean, boolean) org.neo4j.graphdb.traversal.Evaluation public static +org.neo4j.graphdb.traversal.Evaluation::ofContinues(boolean) org.neo4j.graphdb.traversal.Evaluation public static +org.neo4j.graphdb.traversal.Evaluation::ofIncludes(boolean) org.neo4j.graphdb.traversal.Evaluation public static +org.neo4j.graphdb.traversal.Evaluation::valueOf(java.lang.String) org.neo4j.graphdb.traversal.Evaluation public static +org.neo4j.graphdb.traversal.Evaluation::values() org.neo4j.graphdb.traversal.Evaluation[] public static +org.neo4j.graphdb.traversal.Evaluator public abstract interface +org.neo4j.graphdb.traversal.Evaluator.AsPathEvaluator<STATE extends java.lang.Object> public static class extends java.lang.Object implements org.neo4j.graphdb.traversal.PathEvaluator<STATE> +org.neo4j.graphdb.traversal.Evaluator.AsPathEvaluator<STATE>::AsPathEvaluator(org.neo4j.graphdb.traversal.Evaluator) void public +org.neo4j.graphdb.traversal.Evaluator.AsPathEvaluator<STATE>::evaluate(org.neo4j.graphdb.Path) org.neo4j.graphdb.traversal.Evaluation public +org.neo4j.graphdb.traversal.Evaluator.AsPathEvaluator<STATE>::evaluate(org.neo4j.graphdb.Path, org.neo4j.graphdb.traversal.BranchState<STATE>) org.neo4j.graphdb.traversal.Evaluation public +org.neo4j.graphdb.traversal.Evaluator::evaluate(org.neo4j.graphdb.Path) org.neo4j.graphdb.traversal.Evaluation public abstract +org.neo4j.graphdb.traversal.Evaluators public abstract class extends java.lang.Object +org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>all() org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static +org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>atDepth(int) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static +org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>endNodeIs(org.neo4j.graphdb.traversal.Evaluation, org.neo4j.graphdb.traversal.Evaluation, org.neo4j.graphdb.Node...) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static +org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>endNodeIsAtDepth(int, org.neo4j.graphdb.Node...) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static +org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>fromDepth(int) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static +org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>includeIfAcceptedByAny(org.neo4j.graphdb.traversal.Evaluator...) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static +org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>includeIfAcceptedByAny(org.neo4j.graphdb.traversal.PathEvaluator...) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static +org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>includeIfContainsAll(org.neo4j.graphdb.Node...) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static +org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>includeWhereEndNodeIs(org.neo4j.graphdb.Node...) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static +org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>includeWhereLastRelationshipTypeIs(org.neo4j.graphdb.RelationshipType, org.neo4j.graphdb.RelationshipType...) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static +org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>includingDepths(int, int) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static +org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>lastRelationshipTypeIs(org.neo4j.graphdb.traversal.Evaluation, org.neo4j.graphdb.traversal.Evaluation, org.neo4j.graphdb.RelationshipType, org.neo4j.graphdb.RelationshipType...) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static +org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>pruneWhereEndNodeIs(org.neo4j.graphdb.Node...) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static +org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>pruneWhereLastRelationshipTypeIs(org.neo4j.graphdb.RelationshipType, org.neo4j.graphdb.RelationshipType...) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static +org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>toDepth(int) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static +org.neo4j.graphdb.traversal.Evaluators::Evaluators() void public +org.neo4j.graphdb.traversal.Evaluators::excludeStartPosition() org.neo4j.graphdb.traversal.PathEvaluator public static +org.neo4j.graphdb.traversal.InitialBranchState.State<STATE extends java.lang.Object> public static class extends java.lang.Object implements org.neo4j.graphdb.traversal.InitialBranchState<STATE> +org.neo4j.graphdb.traversal.InitialBranchState.State<STATE>::State(#STATE, #STATE) void public +org.neo4j.graphdb.traversal.InitialBranchState.State<STATE>::initialState(org.neo4j.graphdb.Path) #STATE public +org.neo4j.graphdb.traversal.InitialBranchState.State<STATE>::reverse() org.neo4j.graphdb.traversal.InitialBranchState<STATE> public +org.neo4j.graphdb.traversal.InitialBranchState<STATE extends java.lang.Object> public abstract interface +org.neo4j.graphdb.traversal.InitialBranchState<STATE>::DOUBLE_ZERO org.neo4j.graphdb.traversal.InitialBranchState<java.lang.Double> public static final +org.neo4j.graphdb.traversal.InitialBranchState<STATE>::NO_STATE org.neo4j.graphdb.traversal.InitialBranchState<java.lang.Object> public static final +org.neo4j.graphdb.traversal.InitialBranchState<STATE>::initialState(org.neo4j.graphdb.Path) #STATE public abstract +org.neo4j.graphdb.traversal.InitialBranchState<STATE>::reverse() org.neo4j.graphdb.traversal.InitialBranchState<STATE> public default +org.neo4j.graphdb.traversal.PathEvaluator.Adapter<STATE extends java.lang.Object> public abstract static class extends java.lang.Object implements org.neo4j.graphdb.traversal.PathEvaluator<STATE> +org.neo4j.graphdb.traversal.PathEvaluator.Adapter<STATE>::Adapter() void public +org.neo4j.graphdb.traversal.PathEvaluator.Adapter<STATE>::evaluate(org.neo4j.graphdb.Path) org.neo4j.graphdb.traversal.Evaluation public +org.neo4j.graphdb.traversal.PathEvaluator<STATE extends java.lang.Object> public abstract interface implements org.neo4j.graphdb.traversal.Evaluator +org.neo4j.graphdb.traversal.PathEvaluator<STATE>::evaluate(org.neo4j.graphdb.Path, org.neo4j.graphdb.traversal.BranchState<STATE>) org.neo4j.graphdb.traversal.Evaluation public abstract +org.neo4j.graphdb.traversal.Paths public class extends java.lang.Object +org.neo4j.graphdb.traversal.Paths.DefaultPathDescriptor<T extends org.neo4j.graphdb.Path> public static class extends java.lang.Object implements org.neo4j.graphdb.traversal.Paths.PathDescriptor<T> +org.neo4j.graphdb.traversal.Paths.DefaultPathDescriptor<T>::DefaultPathDescriptor() void public +org.neo4j.graphdb.traversal.Paths.DefaultPathDescriptor<T>::nodeRepresentation(org.neo4j.graphdb.Path, org.neo4j.graphdb.Node) java.lang.String public +org.neo4j.graphdb.traversal.Paths.DefaultPathDescriptor<T>::relationshipRepresentation(org.neo4j.graphdb.Path, org.neo4j.graphdb.Node, org.neo4j.graphdb.Relationship) java.lang.String public +org.neo4j.graphdb.traversal.Paths.PathDescriptor<T extends org.neo4j.graphdb.Path> public abstract static interface +org.neo4j.graphdb.traversal.Paths.PathDescriptor<T>::nodeRepresentation(#T, org.neo4j.graphdb.Node) java.lang.String public abstract +org.neo4j.graphdb.traversal.Paths.PathDescriptor<T>::relationshipRepresentation(#T, org.neo4j.graphdb.Node, org.neo4j.graphdb.Relationship) java.lang.String public abstract +org.neo4j.graphdb.traversal.Paths::<T extends org.neo4j.graphdb.Path>descriptorForIdAndProperties(boolean, boolean, java.lang.String...) org.neo4j.graphdb.traversal.Paths.PathDescriptor<T> public static +org.neo4j.graphdb.traversal.Paths::<T extends org.neo4j.graphdb.Path>pathToString(#T, org.neo4j.graphdb.traversal.Paths.PathDescriptor<T>) java.lang.String public static +org.neo4j.graphdb.traversal.Paths::defaultPathToString(org.neo4j.graphdb.Path) java.lang.String public static +org.neo4j.graphdb.traversal.Paths::defaultPathToStringWithNotInTransactionFallback(org.neo4j.graphdb.Path) java.lang.String public static +org.neo4j.graphdb.traversal.Paths::simplePathToString(org.neo4j.graphdb.Path) java.lang.String public static +org.neo4j.graphdb.traversal.Paths::simplePathToString(org.neo4j.graphdb.Path, java.lang.String) java.lang.String public static +org.neo4j.graphdb.traversal.Paths::singleNodePath(org.neo4j.graphdb.Node) org.neo4j.graphdb.Path public static +org.neo4j.graphdb.traversal.SideSelector public abstract interface implements org.neo4j.graphdb.traversal.BranchSelector +org.neo4j.graphdb.traversal.SideSelector::currentSide() org.neo4j.graphdb.Direction public abstract +org.neo4j.graphdb.traversal.SideSelectorPolicies public enum extends java.lang.Enum<org.neo4j.graphdb.traversal.SideSelectorPolicies> implements org.neo4j.graphdb.traversal.SideSelectorPolicy +org.neo4j.graphdb.traversal.SideSelectorPolicies::ALTERNATING org.neo4j.graphdb.traversal.SideSelectorPolicies public static final +org.neo4j.graphdb.traversal.SideSelectorPolicies::LEVEL org.neo4j.graphdb.traversal.SideSelectorPolicies public static final +org.neo4j.graphdb.traversal.SideSelectorPolicies::LEVEL_STOP_DESCENT_ON_RESULT org.neo4j.graphdb.traversal.SideSelectorPolicies public static final +org.neo4j.graphdb.traversal.SideSelectorPolicies::valueOf(java.lang.String) org.neo4j.graphdb.traversal.SideSelectorPolicies public static +org.neo4j.graphdb.traversal.SideSelectorPolicies::values() org.neo4j.graphdb.traversal.SideSelectorPolicies[] public static +org.neo4j.graphdb.traversal.SideSelectorPolicy public abstract interface +org.neo4j.graphdb.traversal.SideSelectorPolicy::create(org.neo4j.graphdb.traversal.BranchSelector, org.neo4j.graphdb.traversal.BranchSelector, int) org.neo4j.graphdb.traversal.SideSelector public abstract +org.neo4j.graphdb.traversal.TraversalBranch public abstract interface implements org.neo4j.graphdb.Path +org.neo4j.graphdb.traversal.TraversalBranch::continues() boolean public abstract +org.neo4j.graphdb.traversal.TraversalBranch::evaluation(org.neo4j.graphdb.traversal.Evaluation) void public abstract +org.neo4j.graphdb.traversal.TraversalBranch::expanded() int public abstract +org.neo4j.graphdb.traversal.TraversalBranch::includes() boolean public abstract +org.neo4j.graphdb.traversal.TraversalBranch::initialize(org.neo4j.graphdb.PathExpander, org.neo4j.graphdb.traversal.TraversalContext) void public abstract +org.neo4j.graphdb.traversal.TraversalBranch::next(org.neo4j.graphdb.PathExpander, org.neo4j.graphdb.traversal.TraversalContext) org.neo4j.graphdb.traversal.TraversalBranch public abstract +org.neo4j.graphdb.traversal.TraversalBranch::parent() org.neo4j.graphdb.traversal.TraversalBranch public abstract +org.neo4j.graphdb.traversal.TraversalBranch::prune() void public abstract +org.neo4j.graphdb.traversal.TraversalBranch::state() java.lang.Object public abstract +org.neo4j.graphdb.traversal.TraversalContext public abstract interface implements org.neo4j.graphdb.traversal.TraversalMetadata +org.neo4j.graphdb.traversal.TraversalContext::<STATE extends java.lang.Object>evaluate(org.neo4j.graphdb.traversal.TraversalBranch, org.neo4j.graphdb.traversal.BranchState<STATE>) org.neo4j.graphdb.traversal.Evaluation public abstract +org.neo4j.graphdb.traversal.TraversalContext::isUnique(org.neo4j.graphdb.traversal.TraversalBranch) boolean public abstract +org.neo4j.graphdb.traversal.TraversalContext::isUniqueFirst(org.neo4j.graphdb.traversal.TraversalBranch) boolean public abstract +org.neo4j.graphdb.traversal.TraversalContext::relationshipTraversed() void public abstract +org.neo4j.graphdb.traversal.TraversalContext::unnecessaryRelationshipTraversed() void public abstract +org.neo4j.graphdb.traversal.TraversalDescription public abstract interface +org.neo4j.graphdb.traversal.TraversalDescription::<STATE extends java.lang.Object>expand(org.neo4j.graphdb.PathExpander<STATE>, org.neo4j.graphdb.traversal.InitialBranchState<STATE>) org.neo4j.graphdb.traversal.TraversalDescription public abstract +org.neo4j.graphdb.traversal.TraversalDescription::breadthFirst() org.neo4j.graphdb.traversal.TraversalDescription public abstract +org.neo4j.graphdb.traversal.TraversalDescription::depthFirst() org.neo4j.graphdb.traversal.TraversalDescription public abstract +org.neo4j.graphdb.traversal.TraversalDescription::evaluator(org.neo4j.graphdb.traversal.Evaluator) org.neo4j.graphdb.traversal.TraversalDescription public abstract +org.neo4j.graphdb.traversal.TraversalDescription::evaluator(org.neo4j.graphdb.traversal.PathEvaluator) org.neo4j.graphdb.traversal.TraversalDescription public abstract +org.neo4j.graphdb.traversal.TraversalDescription::expand(org.neo4j.graphdb.PathExpander<?>) org.neo4j.graphdb.traversal.TraversalDescription public abstract +org.neo4j.graphdb.traversal.TraversalDescription::order(org.neo4j.graphdb.traversal.BranchOrderingPolicy) org.neo4j.graphdb.traversal.TraversalDescription public abstract +org.neo4j.graphdb.traversal.TraversalDescription::relationships(org.neo4j.graphdb.RelationshipType) org.neo4j.graphdb.traversal.TraversalDescription public abstract +org.neo4j.graphdb.traversal.TraversalDescription::relationships(org.neo4j.graphdb.RelationshipType, org.neo4j.graphdb.Direction) org.neo4j.graphdb.traversal.TraversalDescription public abstract +org.neo4j.graphdb.traversal.TraversalDescription::reverse() org.neo4j.graphdb.traversal.TraversalDescription public abstract +org.neo4j.graphdb.traversal.TraversalDescription::sort(java.util.Comparator<? super org.neo4j.graphdb.Path>) org.neo4j.graphdb.traversal.TraversalDescription public abstract +org.neo4j.graphdb.traversal.TraversalDescription::traverse(java.lang.Iterable<org.neo4j.graphdb.Node>) org.neo4j.graphdb.traversal.Traverser public abstract +org.neo4j.graphdb.traversal.TraversalDescription::traverse(org.neo4j.graphdb.Node) org.neo4j.graphdb.traversal.Traverser public abstract +org.neo4j.graphdb.traversal.TraversalDescription::traverse(org.neo4j.graphdb.Node...) org.neo4j.graphdb.traversal.Traverser public abstract +org.neo4j.graphdb.traversal.TraversalDescription::uniqueness(org.neo4j.graphdb.traversal.UniquenessFactory) org.neo4j.graphdb.traversal.TraversalDescription public abstract +org.neo4j.graphdb.traversal.TraversalDescription::uniqueness(org.neo4j.graphdb.traversal.UniquenessFactory, java.lang.Object) org.neo4j.graphdb.traversal.TraversalDescription public abstract +org.neo4j.graphdb.traversal.Traverser public abstract interface implements java.lang.Iterable<org.neo4j.graphdb.Path> +org.neo4j.graphdb.traversal.Traverser::iterator() java.util.Iterator<org.neo4j.graphdb.Path> public abstract +org.neo4j.graphdb.traversal.Traverser::metadata() org.neo4j.graphdb.traversal.TraversalMetadata public abstract +org.neo4j.graphdb.traversal.Traverser::nodes() java.lang.Iterable<org.neo4j.graphdb.Node> public abstract +org.neo4j.graphdb.traversal.Traverser::relationships() java.lang.Iterable<org.neo4j.graphdb.Relationship> public abstract +org.neo4j.graphdb.traversal.Uniqueness public enum extends java.lang.Enum<org.neo4j.graphdb.traversal.Uniqueness> implements org.neo4j.graphdb.traversal.UniquenessFactory +org.neo4j.graphdb.traversal.Uniqueness::NODE_GLOBAL org.neo4j.graphdb.traversal.Uniqueness public static final +org.neo4j.graphdb.traversal.Uniqueness::NODE_LEVEL org.neo4j.graphdb.traversal.Uniqueness public static final +org.neo4j.graphdb.traversal.Uniqueness::NODE_PATH org.neo4j.graphdb.traversal.Uniqueness public static final +org.neo4j.graphdb.traversal.Uniqueness::NODE_RECENT org.neo4j.graphdb.traversal.Uniqueness public static final +org.neo4j.graphdb.traversal.Uniqueness::NONE org.neo4j.graphdb.traversal.Uniqueness public static final +org.neo4j.graphdb.traversal.Uniqueness::RELATIONSHIP_GLOBAL org.neo4j.graphdb.traversal.Uniqueness public static final +org.neo4j.graphdb.traversal.Uniqueness::RELATIONSHIP_LEVEL org.neo4j.graphdb.traversal.Uniqueness public static final +org.neo4j.graphdb.traversal.Uniqueness::RELATIONSHIP_PATH org.neo4j.graphdb.traversal.Uniqueness public static final +org.neo4j.graphdb.traversal.Uniqueness::RELATIONSHIP_RECENT org.neo4j.graphdb.traversal.Uniqueness public static final +org.neo4j.graphdb.traversal.Uniqueness::valueOf(java.lang.String) org.neo4j.graphdb.traversal.Uniqueness public static +org.neo4j.graphdb.traversal.Uniqueness::values() org.neo4j.graphdb.traversal.Uniqueness[] public static +org.neo4j.graphdb.traversal.UniquenessFactory public abstract interface +org.neo4j.graphdb.traversal.UniquenessFactory::create(java.lang.Object) org.neo4j.graphdb.traversal.UniquenessFilter public abstract +org.neo4j.graphdb.traversal.UniquenessFactory::eagerStartBranches() boolean public abstract +org.neo4j.graphdb.traversal.UniquenessFilter public abstract interface +org.neo4j.graphdb.traversal.UniquenessFilter::check(org.neo4j.graphdb.traversal.TraversalBranch) boolean public abstract +org.neo4j.graphdb.traversal.UniquenessFilter::checkFirst(org.neo4j.graphdb.traversal.TraversalBranch) boolean public abstract diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/PathExpanderBuilder.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/PathExpanderBuilder.java index c9ba391c0ed..14b5b2732ca 100644 --- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/PathExpanderBuilder.java +++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/PathExpanderBuilder.java @@ -21,6 +21,7 @@ package org.neo4j.graphdb; import java.util.function.Predicate; +import org.neo4j.annotations.api.PublicApi; import org.neo4j.graphdb.impl.OrderedByTypeExpander; import org.neo4j.graphdb.impl.StandardExpander; @@ -31,6 +32,7 @@ import static org.neo4j.graphdb.Direction.BOTH; * <p> * See {@link PathExpanders} for a catalog of common expanders. */ +@PublicApi public class PathExpanderBuilder { /** diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/PathExpanders.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/PathExpanders.java index c1bde8f2a1c..90d3c4e2b90 100644 --- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/PathExpanders.java +++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/PathExpanders.java @@ -22,6 +22,7 @@ package org.neo4j.graphdb; import java.io.PrintStream; import java.util.function.BiFunction; +import org.neo4j.annotations.api.PublicApi; import org.neo4j.graphdb.impl.StandardExpander; import org.neo4j.graphdb.traversal.BranchState; import org.neo4j.graphdb.traversal.Paths; @@ -31,6 +32,7 @@ import org.neo4j.graphdb.traversal.Paths; * <p> * Use {@link PathExpanderBuilder} to build specialized {@link PathExpander}s. */ +@PublicApi public abstract class PathExpanders { /** diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/Transaction.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/Transaction.java index 27d17ca85c3..08a860153ae 100644 --- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/Transaction.java +++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/Transaction.java @@ -121,18 +121,14 @@ public interface Transaction extends AutoCloseable * Factory method for bidirectional traversal descriptions. * * @return a new {@link BidirectionalTraversalDescription} - * @deprecated Not part of public API, can be removed at any moment */ - @Deprecated BidirectionalTraversalDescription bidirectionalTraversalDescription(); /** * Factory method for unidirectional traversal descriptions. * - * @deprecated Not part of public API, can be removed at any moment * @return a new {@link TraversalDescription} */ - @Deprecated TraversalDescription traversalDescription(); /** diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BidirectionalTraversalDescription.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BidirectionalTraversalDescription.java index 7397d4fcbf1..9ee285db844 100644 --- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BidirectionalTraversalDescription.java +++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BidirectionalTraversalDescription.java @@ -19,6 +19,7 @@ */ package org.neo4j.graphdb.traversal; +import org.neo4j.annotations.api.PublicApi; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.Path; @@ -37,6 +38,7 @@ import org.neo4j.graphdb.Path; * * @see TraversalDescription */ +@PublicApi public interface BidirectionalTraversalDescription { /** diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchCollisionDetector.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchCollisionDetector.java index 3d10cbc7d69..04d90003652 100644 --- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchCollisionDetector.java +++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchCollisionDetector.java @@ -19,6 +19,7 @@ */ package org.neo4j.graphdb.traversal; +import org.neo4j.annotations.api.PublicApi; import org.neo4j.graphdb.Direction; import org.neo4j.graphdb.Path; @@ -27,6 +28,7 @@ import org.neo4j.graphdb.Path; * they will probably meet somewhere in the middle and the full paths are formed. * This is where that detection and path generation takes place. */ +@PublicApi public interface BranchCollisionDetector { /** diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchCollisionPolicies.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchCollisionPolicies.java index 259c68aa09f..6e79ac00125 100644 --- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchCollisionPolicies.java +++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchCollisionPolicies.java @@ -21,17 +21,21 @@ package org.neo4j.graphdb.traversal; import java.util.function.Predicate; +import org.neo4j.annotations.api.PublicApi; import org.neo4j.graphdb.Path; import org.neo4j.graphdb.impl.traversal.ShortestPathsBranchCollisionDetector; import org.neo4j.graphdb.impl.traversal.StandardBranchCollisionDetector; /** - * A catalogue of convenient branch collision policies - * - * Copied from kernel package so that we can hide kernel from the public API. + * A catalogue of convenient branch collision policies, see {@link BranchCollisionPolicy} */ +@PublicApi public enum BranchCollisionPolicies implements BranchCollisionPolicy { + /** + * This branch collision policy includes all combined paths where the traversers collide, which means that the end node of the startSide and endSide + * traverser paths is identical and filters the resulting paths by applying the evaluator and path predicate. + */ STANDARD { @Override @@ -40,6 +44,10 @@ public enum BranchCollisionPolicies implements BranchCollisionPolicy return new StandardBranchCollisionDetector( evaluator, pathPredicate ); } }, + /** + * This branch collision policy includes only the shortest paths where the traversers collide, which means that the end node of the + * startSide and endSide traverser paths is identical and filters the resulting paths by applying the evaluator and path predicate. + */ SHORTEST_PATH { @Override diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchCollisionPolicy.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchCollisionPolicy.java index 77ae14d630b..9f36d35bc9a 100644 --- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchCollisionPolicy.java +++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchCollisionPolicy.java @@ -20,12 +20,17 @@ package org.neo4j.graphdb.traversal; import java.util.function.Predicate; +import org.neo4j.annotations.api.PublicApi; import org.neo4j.graphdb.Path; /** - * Copied from kernel package so that we can hide kernel from the public API. + * A `BranchCollisionPolicy` defines when a collision is detected and accepted in a bidirectional traversal, see {@link BidirectionalTraversalDescription}. + * + * Given an evaluator and a path predicate, a `BranchCollisionPolicy` will create a `BranchCollisionDetector`, which will detect collisions between two + * traversers and use the `Evaluator` and `Path` predicate to decide whether the resulting path will be included in the result. */ +@PublicApi public interface BranchCollisionPolicy { BranchCollisionDetector create( Evaluator evaluator, Predicate<Path> pathPredicate ); diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchOrderingPolicies.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchOrderingPolicies.java index 461a171dead..ccaeb70f0f3 100644 --- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchOrderingPolicies.java +++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchOrderingPolicies.java @@ -19,15 +19,20 @@ */ package org.neo4j.graphdb.traversal; +import org.neo4j.annotations.api.PublicApi; import org.neo4j.graphdb.PathExpander; /** * A catalog of convenient branch ordering policies. - * - * Copied from kernel package so that we can hide kernel from the public API. */ +@PublicApi public enum BranchOrderingPolicies implements BranchOrderingPolicy { + /** + * This `BranchOrderingPolicy` traverses depth first, visiting the current node, then recursively traversing + * depth first the current nodes left subtree, before the right subtree. The pre-order traversal is topologically sorted + * as parent nodes are processed before any of its child nodes are done. + */ PREORDER_DEPTH_FIRST { @Override @@ -36,6 +41,11 @@ public enum BranchOrderingPolicies implements BranchOrderingPolicy return new PreorderDepthFirstSelector( startSource, expander ); } }, + + /** + * This `BranchOrderingPolicy` traverses depth first, recursively traversing down the current nodes left subtree, + * then the right subtree before visiting the current node. + */ POSTORDER_DEPTH_FIRST { @Override @@ -44,6 +54,11 @@ public enum BranchOrderingPolicies implements BranchOrderingPolicy return new PostorderDepthFirstSelector( startSource, expander ); } }, + + /** + * This `BranchOrderingPolicy` traverses breadth first, visiting first the current node, then each of its children, + * before continuing to their children and so forth. Providing a level order search. + */ PREORDER_BREADTH_FIRST { @Override @@ -52,6 +67,11 @@ public enum BranchOrderingPolicies implements BranchOrderingPolicy return new PreorderBreadthFirstSelector( startSource, expander ); } }, + + /** + * This `BranchOrderingPolicy` traverses breadth first, visiting all the leaf nodes of the current node before + * visiting their parents. Effectively searching nodes in a reversed level order search to {@link PREORDER_BREADTH_FIRST} + */ POSTORDER_BREADTH_FIRST { @Override diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchOrderingPolicy.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchOrderingPolicy.java index c317e7ce8fe..91ffa0c130a 100644 --- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchOrderingPolicy.java +++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchOrderingPolicy.java @@ -19,12 +19,14 @@ */ package org.neo4j.graphdb.traversal; +import org.neo4j.annotations.api.PublicApi; import org.neo4j.graphdb.PathExpander; /** * Creator of {@link BranchSelector} instances with a starting point to base * the first decision on. */ +@PublicApi public interface BranchOrderingPolicy { /** diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchSelector.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchSelector.java index 85cc39bd18e..454a3b34c99 100644 --- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchSelector.java +++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchSelector.java @@ -19,12 +19,15 @@ */ package org.neo4j.graphdb.traversal; +import org.neo4j.annotations.api.PublicApi; + /** * Decides "where to go next" in a traversal. It keeps state itself, f.ex. its * own current position. Examples of implementations are "depth first" and * "breadth first". This is an interface to implement if you'd like to implement * f.ex. a "best first" selector based on your own criteria. */ +@PublicApi public interface BranchSelector { /** diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Evaluation.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Evaluation.java index 4d483fd290c..99bc1f001ff 100644 --- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Evaluation.java +++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Evaluation.java @@ -19,6 +19,8 @@ */ package org.neo4j.graphdb.traversal; +import org.neo4j.annotations.api.PublicApi; + /** * Outcome of {@link Evaluator#evaluate(org.neo4j.graphdb.Path)}. An evaluation * can tell the traversal whether or not to continue down that @@ -27,6 +29,7 @@ package org.neo4j.graphdb.traversal; * * @see Evaluator */ +@PublicApi public enum Evaluation { INCLUDE_AND_CONTINUE( true, true ), diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Evaluator.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Evaluator.java index 66ce064cb14..a9f6984e3a6 100644 --- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Evaluator.java +++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Evaluator.java @@ -19,6 +19,7 @@ */ package org.neo4j.graphdb.traversal; +import org.neo4j.annotations.api.PublicApi; import org.neo4j.graphdb.Path; /** @@ -32,6 +33,7 @@ import org.neo4j.graphdb.Path; * @see Evaluators * @see TraversalDescription#evaluator(Evaluator) */ +@PublicApi public interface Evaluator { /** diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Evaluators.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Evaluators.java index 7b498ae6e8d..b49ebb8b61d 100644 --- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Evaluators.java +++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Evaluators.java @@ -22,6 +22,7 @@ package org.neo4j.graphdb.traversal; import java.util.HashSet; import java.util.Set; +import org.neo4j.annotations.api.PublicApi; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.Path; import org.neo4j.graphdb.Relationship; @@ -36,6 +37,7 @@ import static org.neo4j.graphdb.traversal.Evaluation.INCLUDE_AND_CONTINUE; * @see Evaluator * @see TraversalDescription */ +@PublicApi public abstract class Evaluators { @SuppressWarnings( "rawtypes" ) diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/InitialBranchState.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/InitialBranchState.java index 21316794f54..ded2082961a 100644 --- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/InitialBranchState.java +++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/InitialBranchState.java @@ -19,6 +19,7 @@ */ package org.neo4j.graphdb.traversal; +import org.neo4j.annotations.api.PublicApi; import org.neo4j.graphdb.Path; import org.neo4j.graphdb.PathExpander; @@ -27,6 +28,7 @@ import org.neo4j.graphdb.PathExpander; * * @param <STATE> type of initial state to produce. */ +@PublicApi public interface InitialBranchState<STATE> { InitialBranchState<Object> NO_STATE = path -> null; diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/PathEvaluator.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/PathEvaluator.java index a2b40e84e72..5c177dc96b1 100644 --- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/PathEvaluator.java +++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/PathEvaluator.java @@ -19,6 +19,7 @@ */ package org.neo4j.graphdb.traversal; +import org.neo4j.annotations.api.PublicApi; import org.neo4j.graphdb.Path; /** @@ -33,6 +34,7 @@ import org.neo4j.graphdb.Path; * @see Evaluators * @see TraversalDescription#evaluator(PathEvaluator) */ +@PublicApi public interface PathEvaluator<STATE> extends Evaluator { /** diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Paths.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Paths.java index 6ebc2eace30..b2c0bc64d52 100644 --- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Paths.java +++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Paths.java @@ -23,6 +23,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.Iterator; +import org.neo4j.annotations.api.PublicApi; import org.neo4j.graphdb.DatabaseShutdownException; import org.neo4j.graphdb.Direction; import org.neo4j.graphdb.Entity; @@ -34,6 +35,7 @@ import org.neo4j.graphdb.Relationship; /** * Utilities for {@link org.neo4j.graphdb.Path} objects. */ +@PublicApi public class Paths { diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/SideSelector.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/SideSelector.java index c7f3b5b974f..c8af10c1b60 100644 --- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/SideSelector.java +++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/SideSelector.java @@ -19,6 +19,7 @@ */ package org.neo4j.graphdb.traversal; +import org.neo4j.annotations.api.PublicApi; import org.neo4j.graphdb.Direction; /** @@ -26,6 +27,7 @@ import org.neo4j.graphdb.Direction; * the next step for. For example an alternating side selector will return alternating * start side and end side as long as each side hasn't reached it's end. */ +@PublicApi public interface SideSelector extends BranchSelector { /** diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/SideSelectorPolicies.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/SideSelectorPolicies.java index 0ad5b50332e..62a0d8d285f 100644 --- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/SideSelectorPolicies.java +++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/SideSelectorPolicies.java @@ -19,13 +19,19 @@ */ package org.neo4j.graphdb.traversal; +import org.neo4j.annotations.api.PublicApi; + /** * A catalogue of convenient side selector policies for use in bidirectional traversals. - * - * Copied from kernel package so that we can hide kernel from the public API. */ +@PublicApi public enum SideSelectorPolicies implements SideSelectorPolicy { + /** + * This `SideSelectorPolicy` stops traversal if the combined depth is larger than the given maximum depth. It + * will select branches for expansion that are on the same depth as the current branch before moving on to the + * next depth. + */ LEVEL { @Override @@ -34,6 +40,10 @@ public enum SideSelectorPolicies implements SideSelectorPolicy return new LevelSelectorOrderer( start, end, false, maxDepth ); } }, + /** + * This `SideSelectorPolicy` stops as soon as a result is found. It will select branches for expansion that are on + * the same depth as the current branch before moving on to the next depth. + */ LEVEL_STOP_DESCENT_ON_RESULT { @Override @@ -42,6 +52,9 @@ public enum SideSelectorPolicies implements SideSelectorPolicy return new LevelSelectorOrderer( start, end, true, maxDepth ); } }, + /** + * This `SideSelectorPolicy` alternates which branch continues the traversal. + */ ALTERNATING { @Override diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/SideSelectorPolicy.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/SideSelectorPolicy.java index 17ace0cd47b..596ad3dfc02 100644 --- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/SideSelectorPolicy.java +++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/SideSelectorPolicy.java @@ -19,9 +19,12 @@ */ package org.neo4j.graphdb.traversal; +import org.neo4j.annotations.api.PublicApi; + /** * A factory for {@link SideSelector}s. Used during bidirectional traversals. */ +@PublicApi public interface SideSelectorPolicy { /** diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/TraversalBranch.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/TraversalBranch.java index 6cf6ba6e2b1..a47418f94fe 100644 --- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/TraversalBranch.java +++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/TraversalBranch.java @@ -19,6 +19,7 @@ */ package org.neo4j.graphdb.traversal; +import org.neo4j.annotations.api.PublicApi; import org.neo4j.graphdb.Path; import org.neo4j.graphdb.PathExpander; @@ -27,6 +28,7 @@ import org.neo4j.graphdb.PathExpander; * traversal context, for example parent and an iterator of relationships to go * next. It's a base to write a {@link BranchSelector} on top of. */ +@PublicApi public interface TraversalBranch extends Path { /** diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/TraversalContext.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/TraversalContext.java index fcdf6414c6a..227366ef4b7 100644 --- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/TraversalContext.java +++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/TraversalContext.java @@ -19,10 +19,13 @@ */ package org.neo4j.graphdb.traversal; +import org.neo4j.annotations.api.PublicApi; + /** * Provides a context for {@link TraversalBranch}es which they need to * move further and report their progress. */ +@PublicApi public interface TraversalContext extends TraversalMetadata { /** diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/TraversalDescription.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/TraversalDescription.java index fc8b49249ad..cfa036cd657 100644 --- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/TraversalDescription.java +++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/TraversalDescription.java @@ -21,6 +21,7 @@ package org.neo4j.graphdb.traversal; import java.util.Comparator; +import org.neo4j.annotations.api.PublicApi; import org.neo4j.graphdb.Direction; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.Path; @@ -50,6 +51,7 @@ import org.neo4j.graphdb.RelationshipType; * {@link Traverser} that is returned is then used to step through the graph, * and return the positions that matches the rules. */ +@PublicApi public interface TraversalDescription { /** diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Traverser.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Traverser.java index 1a90be33447..604d7fccb1f 100644 --- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Traverser.java +++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Traverser.java @@ -21,6 +21,7 @@ package org.neo4j.graphdb.traversal; import java.util.Iterator; +import org.neo4j.annotations.api.PublicApi; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.Path; import org.neo4j.graphdb.Relationship; @@ -33,6 +34,7 @@ import org.neo4j.graphdb.ResourceIterator; * derived from, i.e {@link Node} or {@link Relationship}. Each step * can also be represented in one of those representations directly. */ +@PublicApi public interface Traverser extends Iterable<Path> { /** diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Uniqueness.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Uniqueness.java index 6cc59b14636..616bbd96d09 100644 --- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Uniqueness.java +++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Uniqueness.java @@ -19,9 +19,12 @@ */ package org.neo4j.graphdb.traversal; +import org.neo4j.annotations.api.PublicApi; + /** * A catalog of convenient uniqueness factories. */ +@PublicApi public enum Uniqueness implements UniquenessFactory { /** diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/UniquenessFactory.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/UniquenessFactory.java index 347ee299d3b..ff6c2d2468c 100644 --- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/UniquenessFactory.java +++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/UniquenessFactory.java @@ -19,11 +19,14 @@ */ package org.neo4j.graphdb.traversal; +import org.neo4j.annotations.api.PublicApi; + /** * Factory for {@link UniquenessFilter} filters, it can supply the * created {@link UniquenessFilter} with an optional parameter which is * up to the filter itself to validate and make sense of. */ +@PublicApi public interface UniquenessFactory { /** diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/UniquenessFilter.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/UniquenessFilter.java index c5a3cd8d880..c4961a421e9 100644 --- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/UniquenessFilter.java +++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/UniquenessFilter.java @@ -19,10 +19,13 @@ */ package org.neo4j.graphdb.traversal; +import org.neo4j.annotations.api.PublicApi; + /** * Interface for filters preventing the traversal from visiting already seen parts of the graph. Implementations can * allow for different heuristics to use to determine what may be re-visited. */ +@PublicApi public interface UniquenessFilter { /** -- GitLab