Merge branch 'TINKERPOP-1506'
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/5caf6644 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/5caf6644 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/5caf6644 Branch: refs/heads/master Commit: 5caf664404c704a2de226a2918d5a76bed44f10b Parents: 1541e84 4fb9a8e Author: Marko A. Rodriguez <okramma...@gmail.com> Authored: Wed Nov 2 18:42:32 2016 -0600 Committer: Marko A. Rodriguez <okramma...@gmail.com> Committed: Wed Nov 2 18:42:32 2016 -0600 ---------------------------------------------------------------------- CHANGELOG.asciidoc | 1 + docs/src/reference/the-traversal.asciidoc | 9 +- docs/src/upgrade/release-3.3.x.asciidoc | 10 ++- .../traversal/dsl/graph/GraphTraversal.java | 7 +- .../traversal/step/branch/OptionalStep.java | 92 ++++++++++++++++++++ .../traversal/step/branch/OptionalStepTest.java | 49 +++++++++++ .../step/branch/GroovyOptionalTest.groovy | 4 + .../traversal/step/branch/OptionalTest.java | 30 +++++-- 8 files changed, 187 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5caf6644/CHANGELOG.asciidoc ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5caf6644/docs/src/reference/the-traversal.asciidoc ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5caf6644/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java ---------------------------------------------------------------------- diff --cc gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java index 088a4de,dca3b7f..441d3f0 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java @@@ -1310,15 -1305,9 +1311,15 @@@ public interface GraphTraversal<S, E> e return this.asAdmin().addStep(new ChooseStep<E, E2, Boolean>(this.asAdmin(), (Traversal.Admin<E, ?>) __.filter(new PredicateTraverser<>(choosePredicate)), (Traversal.Admin<E, E2>) trueChoice, (Traversal.Admin<E, E2>) falseChoice)); } + public default <E2> GraphTraversal<S, E2> choose(final Predicate<E> choosePredicate, + final Traversal<?, E2> trueChoice) { + this.asAdmin().getBytecode().addStep(Symbols.choose, choosePredicate, trueChoice); + return this.asAdmin().addStep(new ChooseStep<E, E2, Boolean>(this.asAdmin(), (Traversal.Admin<E, ?>) __.filter(new PredicateTraverser<>(choosePredicate)), (Traversal.Admin<E, E2>) trueChoice, (Traversal.Admin<E, E2>) __.identity())); + } + public default <E2> GraphTraversal<S, E2> optional(final Traversal<?, E2> optionalTraversal) { this.asAdmin().getBytecode().addStep(Symbols.optional, optionalTraversal); - return this.asAdmin().addStep(new ChooseStep<>(this.asAdmin(), (Traversal.Admin<E, ?>) optionalTraversal, (Traversal.Admin<E, E2>) optionalTraversal.asAdmin().clone(), (Traversal.Admin<E, E2>) __.<E2>identity())); + return this.asAdmin().addStep(new OptionalStep<>(this.asAdmin(), (Traversal.Admin<E2, E2>) optionalTraversal)); } public default <E2> GraphTraversal<S, E2> union(final Traversal<?, E2>... unionTraversals) {