[GitHub] tinkerpop pull request #838: TINKERPOP-1822: Add Depth First Search repeat s...
Github user krlohnes commented on a diff in the pull request: https://github.com/apache/tinkerpop/pull/838#discussion_r181511880 --- Diff: gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java --- @@ -273,11 +314,37 @@ public RepeatEndStep(final Traversal.Admin traversal) { super(traversal); } +final LinkedList> stashedStarts = new LinkedList<>(); + +private Traverser.Admin nextStart(RepeatStep repeatStep) { +if (repeatStep.searchAlgo.equals(SearchAlgo.BFS)) { +return this.starts.next(); +} else { +if (this.starts.hasNext()) { +return this.starts.next(); +} else { +return this.stashedStarts.pop(); +} +} +} + +@Override +public boolean hasNext() { +return super.hasNext() || this.stashedStarts.peek() != null; --- End diff -- Good catch. Fixed that. ---
[GitHub] tinkerpop pull request #838: TINKERPOP-1822: Add Depth First Search repeat s...
Github user robertdale commented on a diff in the pull request: https://github.com/apache/tinkerpop/pull/838#discussion_r181408164 --- Diff: gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java --- @@ -273,11 +314,37 @@ public RepeatEndStep(final Traversal.Admin traversal) { super(traversal); } +final LinkedList> stashedStarts = new LinkedList<>(); + +private Traverser.Admin nextStart(RepeatStep repeatStep) { +if (repeatStep.searchAlgo.equals(SearchAlgo.BFS)) { +return this.starts.next(); +} else { +if (this.starts.hasNext()) { +return this.starts.next(); +} else { +return this.stashedStarts.pop(); +} +} +} + +@Override +public boolean hasNext() { +return super.hasNext() || this.stashedStarts.peek() != null; --- End diff -- `this.stashedStarts.peek() != null` would be equivalent to `!this.stashedStarts.isEmpty()`, no? ---
[GitHub] tinkerpop pull request #838: TINKERPOP-1822: Add Depth First Search repeat s...
Github user krlohnes commented on a diff in the pull request: https://github.com/apache/tinkerpop/pull/838#discussion_r181402263 --- Diff: gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java --- @@ -273,11 +314,37 @@ public RepeatEndStep(final Traversal.Admin traversal) { super(traversal); } +final LinkedList> stashedStarts = new LinkedList<>(); + +private Traverser.Admin nextStart(RepeatStep repeatStep) { +if (repeatStep.searchAlgo.equals(SearchAlgo.BFS)) { +return this.starts.next(); +} else { +if (this.starts.hasNext()) { +return this.starts.next(); +} else { +return this.stashedStarts.pop(); +} +} +} + +@Override +public boolean hasNext() { +return super.hasNext() || this.stashedStarts.peek() != null; --- End diff -- Fixed ---
[GitHub] tinkerpop pull request #838: TINKERPOP-1822: Add Depth First Search repeat s...
Github user krlohnes commented on a diff in the pull request: https://github.com/apache/tinkerpop/pull/838#discussion_r181402232 --- Diff: gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java --- @@ -496,6 +497,19 @@ return this.asAdmin().addStep(scope.equals(Scope.global) ? new OrderGlobalStep<>(this.asAdmin()) : new OrderLocalStep<>(this.asAdmin())); } +/** + * Order the repeat step by depth first or breadth first + * + * @param algo either DFS or BFS + * + * @see http://tinkerpop.apache.org/docs/${project.version}/reference/#order-step"; target="_blank">Reference Documentation - Order Step + * @since 3.0.0-incubating --- End diff -- Fixed ---
[GitHub] tinkerpop pull request #838: TINKERPOP-1822: Add Depth First Search repeat s...
Github user mpollmeier commented on a diff in the pull request: https://github.com/apache/tinkerpop/pull/838#discussion_r181282042 --- Diff: gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java --- @@ -496,6 +497,19 @@ return this.asAdmin().addStep(scope.equals(Scope.global) ? new OrderGlobalStep<>(this.asAdmin()) : new OrderLocalStep<>(this.asAdmin())); } +/** + * Order the repeat step by depth first or breadth first + * + * @param algo either DFS or BFS + * + * @see http://tinkerpop.apache.org/docs/${project.version}/reference/#order-step"; target="_blank">Reference Documentation - Order Step + * @since 3.0.0-incubating --- End diff -- `@since 3.3.3` ---
[GitHub] tinkerpop pull request #838: TINKERPOP-1822: Add Depth First Search repeat s...
Github user mpollmeier commented on a diff in the pull request: https://github.com/apache/tinkerpop/pull/838#discussion_r181282267 --- Diff: gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java --- @@ -273,11 +314,37 @@ public RepeatEndStep(final Traversal.Admin traversal) { super(traversal); } +final LinkedList> stashedStarts = new LinkedList<>(); + +private Traverser.Admin nextStart(RepeatStep repeatStep) { +if (repeatStep.searchAlgo.equals(SearchAlgo.BFS)) { +return this.starts.next(); +} else { +if (this.starts.hasNext()) { +return this.starts.next(); +} else { +return this.stashedStarts.pop(); +} +} +} + +@Override +public boolean hasNext() { +return super.hasNext() || this.stashedStarts.peek() != null; --- End diff -- `this.stashedStarts.isEmpty()` ---
[GitHub] tinkerpop pull request #838: TINKERPOP-1822: Add Depth First Search repeat s...
GitHub user krlohnes opened a pull request: https://github.com/apache/tinkerpop/pull/838 TINKERPOP-1822: Add Depth First Search repeat step option You can merge this pull request into a Git repository by running: $ git pull https://github.com/krlohnes/tinkerpop add_optional_depth_first Alternatively you can review and apply these changes as the patch at: https://github.com/apache/tinkerpop/pull/838.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #838 commit 1f4c12cf9b3e8f11f79649ac80d5817cda938845 Author: Keith Lohnes Date: 2018-04-11T21:12:28Z Add Depth First Search repeat step option ---