This is an automated email from the ASF dual-hosted git repository.

okram pushed a commit to branch tp4
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git


The following commit(s) were added to refs/heads/tp4 by this push:
     new c99ff4e  We no longer need Selector interface for branches. The branch 
selector is simply a compilation. For constant or simple mappings, a 
SingletonProcessor is used in the Compilation. pom.xml work -- both Beam and 
Pipes only need gremlin/ in scope=test. This is pretty cool -- Gremlin is not 
front and center in TP4.
c99ff4e is described below

commit c99ff4e23b0ad14e50dae2a53c054107a54b675d
Author: Marko A. Rodriguez <[email protected]>
AuthorDate: Mon Mar 18 06:53:04 2019 -0600

    We no longer need Selector interface for branches. The branch selector is 
simply a compilation. For constant or simple mappings, a SingletonProcessor is 
used in the Compilation. pom.xml work -- both Beam and Pipes only need gremlin/ 
in scope=test. This is pretty cool -- Gremlin is not front and center in TP4.
---
 .../tinkerpop/machine/bytecode/Compilation.java    |  6 ++++
 .../tinkerpop/machine/function/BranchFunction.java |  3 +-
 .../machine/function/branch/ChooseBranch.java      |  9 +++---
 .../machine/function/branch/UnionBranch.java       |  8 +++---
 .../machine/function/branch/selector/Selector.java | 32 ----------------------
 .../machine/processor/BooleanProcessor.java        |  2 +-
 .../ConstantProcessor.java}                        | 19 ++++++-------
 .../HasNextProcessor.java}                         | 16 +++++------
 .../machine/processor/LoopsProcessor.java          |  2 +-
 .../machine/processor/SingletonProcessor.java      |  8 +++---
 .../tinkerpop/machine/traverser/COTraverser.java   |  7 +++++
 .../machine/traverser/EmptyTraverser.java          |  7 ++++-
 .../tinkerpop/machine/traverser/Traverser.java     |  2 ++
 java/machine/beam/pom.xml                          | 19 +++++++++----
 .../apache/tinkerpop/machine/beam/BranchFn.java    |  8 +++---
 java/machine/pipes/pom.xml                         |  7 +++++
 .../apache/tinkerpop/machine/pipes/BranchStep.java |  7 ++---
 17 files changed, 79 insertions(+), 83 deletions(-)

diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/Compilation.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/Compilation.java
index 58c59d8..3c8c0a2 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/Compilation.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/Compilation.java
@@ -104,6 +104,12 @@ public final class Compilation<C, S, E> implements 
Serializable {
         return this.processor;
     }
 
+    public Optional<Traverser<C, E>> maybeTraverser(final Traverser<C, S> 
traverser) {
+        this.prepareProcessor();
+        this.processor.addStart(this.prepareTraverser(traverser));
+        return this.processor.hasNext() ? Optional.of(this.processor.next()) : 
Optional.empty();
+    }
+
     @Override
     public String toString() {
         return this.functions.toString();
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/function/BranchFunction.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/function/BranchFunction.java
index 73a7fb2..d54ba8b 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/function/BranchFunction.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/function/BranchFunction.java
@@ -19,7 +19,6 @@
 package org.apache.tinkerpop.machine.function;
 
 import org.apache.tinkerpop.machine.bytecode.Compilation;
-import org.apache.tinkerpop.machine.function.branch.selector.Selector;
 
 import java.util.List;
 import java.util.Map;
@@ -29,7 +28,7 @@ import java.util.Map;
  */
 public interface BranchFunction<C, S, E, M> extends CFunction<C> {
 
-    public Selector<C, S, M> getBranchSelector();
+    public Compilation<C, S, M> getBranchSelector();
 
     public Map<M, List<Compilation<C, S, E>>> getBranches();
 }
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/function/branch/ChooseBranch.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/function/branch/ChooseBranch.java
index f064a81..31dddd5 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/function/branch/ChooseBranch.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/function/branch/ChooseBranch.java
@@ -21,9 +21,8 @@ package org.apache.tinkerpop.machine.function.branch;
 import org.apache.tinkerpop.machine.bytecode.Compilation;
 import org.apache.tinkerpop.machine.coefficient.Coefficient;
 import org.apache.tinkerpop.machine.function.AbstractFunction;
-import org.apache.tinkerpop.machine.function.branch.selector.HasNextSelector;
-import org.apache.tinkerpop.machine.function.branch.selector.Selector;
 import org.apache.tinkerpop.machine.function.BranchFunction;
+import org.apache.tinkerpop.machine.processor.HasNextProcessor;
 import org.apache.tinkerpop.util.StringFactory;
 
 import java.util.Collections;
@@ -37,7 +36,7 @@ import java.util.Set;
  */
 public class ChooseBranch<C, S, E> extends AbstractFunction<C> implements 
BranchFunction<C, S, E, Boolean> {
 
-    private final HasNextSelector<C, S> branchSelector;
+    private final Compilation<C, S, Boolean> branchSelector;
     private final Map<Boolean, List<Compilation<C, S, E>>> branches;
     /////
     private final Compilation<C, S, ?> predicate;
@@ -49,7 +48,7 @@ public class ChooseBranch<C, S, E> extends 
AbstractFunction<C> implements Branch
                         final Compilation<C, S, E> falseBranch) {
         super(coefficient, labels);
         this.predicate = predicate;
-        this.branchSelector = new HasNextSelector<>(predicate);
+        this.branchSelector = new Compilation<>(new 
HasNextProcessor<>(predicate));
         this.branches = new HashMap<>();
         this.branches.put(Boolean.TRUE, Collections.singletonList(trueBranch));
         if (null != falseBranch)
@@ -62,7 +61,7 @@ public class ChooseBranch<C, S, E> extends 
AbstractFunction<C> implements Branch
     }
 
     @Override
-    public Selector<C, S, Boolean> getBranchSelector() {
+    public Compilation<C, S, Boolean> getBranchSelector() {
         return this.branchSelector;
     }
 
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/function/branch/UnionBranch.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/function/branch/UnionBranch.java
index 32d0fbb..61883e8 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/function/branch/UnionBranch.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/function/branch/UnionBranch.java
@@ -21,9 +21,8 @@ package org.apache.tinkerpop.machine.function.branch;
 import org.apache.tinkerpop.machine.bytecode.Compilation;
 import org.apache.tinkerpop.machine.coefficient.Coefficient;
 import org.apache.tinkerpop.machine.function.AbstractFunction;
-import org.apache.tinkerpop.machine.function.branch.selector.Selector;
-import org.apache.tinkerpop.machine.function.branch.selector.TrueSelector;
 import org.apache.tinkerpop.machine.function.BranchFunction;
+import org.apache.tinkerpop.machine.processor.ConstantProcessor;
 import org.apache.tinkerpop.util.StringFactory;
 
 import java.util.HashMap;
@@ -37,6 +36,7 @@ import java.util.Set;
 public final class UnionBranch<C, S, E> extends AbstractFunction<C> implements 
BranchFunction<C, S, E, Boolean> {
 
     private final Map<Boolean, List<Compilation<C, S, E>>> branches;
+    private final Compilation<C, S, Boolean> branchSelector = new 
Compilation<>(new ConstantProcessor<>(Boolean.TRUE));
 
     public UnionBranch(final Coefficient<C> coefficient, final Set<String> 
labels, final List<Compilation<C, S, E>> branches) {
         super(coefficient, labels);
@@ -50,8 +50,8 @@ public final class UnionBranch<C, S, E> extends 
AbstractFunction<C> implements B
     }
 
     @Override
-    public Selector<C, S, Boolean> getBranchSelector() {
-        return TrueSelector.instance();
+    public Compilation<C, S, Boolean> getBranchSelector() {
+        return this.branchSelector;
     }
 
     @Override
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/function/branch/selector/Selector.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/function/branch/selector/Selector.java
deleted file mode 100644
index e37dac1..0000000
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/function/branch/selector/Selector.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.machine.function.branch.selector;
-
-import org.apache.tinkerpop.machine.traverser.Traverser;
-
-import java.io.Serializable;
-import java.util.Optional;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public interface Selector<C, S, E> extends Serializable {
-
-    public Optional<E> from(final Traverser<C, S> traverser);
-}
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/processor/BooleanProcessor.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/processor/BooleanProcessor.java
index d90f4dd..99172a7 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/processor/BooleanProcessor.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/processor/BooleanProcessor.java
@@ -23,7 +23,7 @@ import org.apache.tinkerpop.machine.traverser.Traverser;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class BooleanProcessor<C, S> extends SingletonProcessor<C, S> {
+public final class BooleanProcessor<C, S> extends SingletonProcessor<C, S, S> {
 
     private final boolean allow;
 
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/function/branch/selector/TrueSelector.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/processor/ConstantProcessor.java
similarity index 69%
rename from 
java/core/src/main/java/org/apache/tinkerpop/machine/function/branch/selector/TrueSelector.java
rename to 
java/core/src/main/java/org/apache/tinkerpop/machine/processor/ConstantProcessor.java
index 99cde3a..ec84968 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/function/branch/selector/TrueSelector.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/processor/ConstantProcessor.java
@@ -16,25 +16,24 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tinkerpop.machine.function.branch.selector;
+package org.apache.tinkerpop.machine.processor;
 
 import org.apache.tinkerpop.machine.traverser.Traverser;
 
-import java.util.Optional;
-
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class TrueSelector<C, S> implements Selector<C, S, Boolean> {
+public final class ConstantProcessor<C, S, E> extends SingletonProcessor<C, S, 
E> {
 
-    private static final TrueSelector INSTANCE = new TrueSelector<>();
+    private final E constant;
 
-    @Override
-    public Optional<Boolean> from(final Traverser<C, S> traverser) {
-        return Optional.of(Boolean.TRUE);
+    public ConstantProcessor(final E constant) {
+        this.constant = constant;
     }
 
-    public static <C, S> TrueSelector<C, S> instance() {
-        return INSTANCE;
+    @Override
+    public void addStart(final Traverser<C, S> traverser) {
+        if (null == this.traverser)
+            this.traverser = traverser.split(this.constant);
     }
 }
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/function/branch/selector/HasNextSelector.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/processor/HasNextProcessor.java
similarity index 68%
rename from 
java/core/src/main/java/org/apache/tinkerpop/machine/function/branch/selector/HasNextSelector.java
rename to 
java/core/src/main/java/org/apache/tinkerpop/machine/processor/HasNextProcessor.java
index 5def149..7f0ec33 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/function/branch/selector/HasNextSelector.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/processor/HasNextProcessor.java
@@ -16,26 +16,24 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tinkerpop.machine.function.branch.selector;
+package org.apache.tinkerpop.machine.processor;
 
 import org.apache.tinkerpop.machine.bytecode.Compilation;
 import org.apache.tinkerpop.machine.traverser.Traverser;
 
-import java.util.Optional;
-
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class HasNextSelector<C, S> implements Selector<C, S, Boolean> {
+public final class HasNextProcessor<C, S> extends SingletonProcessor<C, S, 
Boolean> {
 
-    private final Compilation<C, S, ?> compilation;
+    private final Compilation<C, S, ?> predicate;
 
-    public HasNextSelector(final Compilation<C, S, ?> compilation) {
-        this.compilation = compilation;
+    public HasNextProcessor(final Compilation<C, S, ?> predicate) {
+        this.predicate = predicate;
     }
 
     @Override
-    public Optional<Boolean> from(final Traverser<C, S> traverser) {
-        return Optional.of(this.compilation.filterTraverser(traverser));
+    public void addStart(final Traverser<C, S> traverser) {
+        this.traverser = 
traverser.split(this.predicate.filterTraverser(traverser));
     }
 }
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/processor/LoopsProcessor.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/processor/LoopsProcessor.java
index a4ce3c6..eb060b4 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/processor/LoopsProcessor.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/processor/LoopsProcessor.java
@@ -23,7 +23,7 @@ import org.apache.tinkerpop.machine.traverser.Traverser;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class LoopsProcessor<C, S> extends SingletonProcessor<C, S> {
+public final class LoopsProcessor<C, S> extends SingletonProcessor<C, S, S> {
 
     private final int loops;
 
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/processor/SingletonProcessor.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/processor/SingletonProcessor.java
index fe9b5d5..f6acd9a 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/processor/SingletonProcessor.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/processor/SingletonProcessor.java
@@ -29,16 +29,16 @@ import java.util.List;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public abstract class SingletonProcessor<C, S> implements Processor<C, S, S>, 
ProcessorFactory {
+public abstract class SingletonProcessor<C, S, E> implements Processor<C, S, 
E>, ProcessorFactory {
 
-    protected Traverser<C, S> traverser = null;
+    protected Traverser<C, E> traverser = null;
 
     @Override
-    public Traverser<C, S> next() {
+    public Traverser<C, E> next() {
         if (null == this.traverser)
             throw FastNoSuchElementException.instance();
         else {
-            final Traverser<C, S> temp = this.traverser;
+            final Traverser<C, E> temp = this.traverser;
             this.traverser = null;
             return temp;
         }
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/traverser/COTraverser.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/traverser/COTraverser.java
index c3592d3..ba62015 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/traverser/COTraverser.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/traverser/COTraverser.java
@@ -75,6 +75,13 @@ public class COTraverser<C, S> implements Traverser<C, S> {
     }
 
     @Override
+    public <E> Traverser<C, E> split(final E object) {
+        final COTraverser<C, E> clone = (COTraverser<C, E>) this.clone();
+        clone.object = object;
+        return clone;
+    }
+
+    @Override
     public int hashCode() {
         return this.object.hashCode();
     }
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/traverser/EmptyTraverser.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/traverser/EmptyTraverser.java
index 4587db9..43c6cf9 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/traverser/EmptyTraverser.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/traverser/EmptyTraverser.java
@@ -63,7 +63,12 @@ public final class EmptyTraverser<C, S> implements 
Traverser<C, S> {
     }
 
     @Override
-    public <E> Traverser<C, E> split(CFunction<C> function, E object) {
+    public <E> Traverser<C, E> split(final CFunction<C> function, final E 
object) {
+        return INSTANCE;
+    }
+
+    @Override
+    public <E> Traverser<C, E> split(final E object) {
         return INSTANCE;
     }
 
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/traverser/Traverser.java 
b/java/core/src/main/java/org/apache/tinkerpop/machine/traverser/Traverser.java
index 1f4e6ff..fe67d11 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/traverser/Traverser.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/traverser/Traverser.java
@@ -81,5 +81,7 @@ public interface Traverser<C, S> extends Serializable, 
Cloneable {
 
     public <E> Traverser<C, E> split(final CFunction<C> function, final E 
object);
 
+    public <E> Traverser<C, E> split(final E object);
+
     public Traverser<C, S> clone();
 }
diff --git a/java/machine/beam/pom.xml b/java/machine/beam/pom.xml
index 63c3ad2..2eb4b7c 100644
--- a/java/machine/beam/pom.xml
+++ b/java/machine/beam/pom.xml
@@ -26,7 +26,12 @@ limitations under the License.
     <dependencies>
         <dependency>
             <groupId>org.apache.tinkerpop</groupId>
-            <artifactId>gremlin</artifactId>
+            <artifactId>pipes</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.tinkerpop</groupId>
+            <artifactId>core</artifactId>
             <version>${project.version}</version>
         </dependency>
         <dependency>
@@ -78,16 +83,18 @@ limitations under the License.
             <version>2.11.0</version>
             <scope>runtime</scope>
         </dependency>
-        <dependency>
-            <groupId>org.apache.tinkerpop</groupId>
-            <artifactId>pipes</artifactId>
-            <version>${project.version}</version>
-        </dependency>
+        <!-- TEST -->
         <dependency>
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-slf4j18-impl</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.tinkerpop</groupId>
+            <artifactId>gremlin</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
     <build>
         <directory>${basedir}/target</directory>
diff --git 
a/java/machine/beam/src/main/java/org/apache/tinkerpop/machine/beam/BranchFn.java
 
b/java/machine/beam/src/main/java/org/apache/tinkerpop/machine/beam/BranchFn.java
index c0ea6fc..7756b73 100644
--- 
a/java/machine/beam/src/main/java/org/apache/tinkerpop/machine/beam/BranchFn.java
+++ 
b/java/machine/beam/src/main/java/org/apache/tinkerpop/machine/beam/BranchFn.java
@@ -19,8 +19,8 @@
 package org.apache.tinkerpop.machine.beam;
 
 import org.apache.beam.sdk.values.TupleTag;
+import org.apache.tinkerpop.machine.bytecode.Compilation;
 import org.apache.tinkerpop.machine.function.BranchFunction;
-import org.apache.tinkerpop.machine.function.branch.selector.Selector;
 import org.apache.tinkerpop.machine.traverser.Traverser;
 
 import java.util.Map;
@@ -32,7 +32,7 @@ import java.util.Optional;
 public class BranchFn<C, S, E, M> extends AbstractFn<C, S, S> {
 
     private final Map<M, TupleTag<Traverser<C, S>>> branches;
-    private final Selector<C, S, M> branchSelector;
+    private final Compilation<C, S, M> branchSelector;
 
     public BranchFn(final BranchFunction<C, S, E, M> branchFunction, final 
Map<M, TupleTag<Traverser<C, S>>> branches) {
         super(branchFunction);
@@ -42,9 +42,9 @@ public class BranchFn<C, S, E, M> extends AbstractFn<C, S, S> 
{
 
     @ProcessElement
     public void processElement(final @Element Traverser<C, S> traverser, final 
MultiOutputReceiver outputs) {
-        final Optional<M> selector = 
this.branchSelector.from(traverser.clone());
+        final Optional<Traverser<C, M>> selector = 
this.branchSelector.maybeTraverser(traverser);
         if (selector.isPresent()) {
-            final TupleTag<Traverser<C, S>> outputTag = 
this.branches.get(selector.get());
+            final TupleTag<Traverser<C, S>> outputTag = 
this.branches.get(selector.get().object());
             if (null != outputTag)
                 outputs.get(outputTag).output(traverser.clone());
         }
diff --git a/java/machine/pipes/pom.xml b/java/machine/pipes/pom.xml
index 80c0de6..4da3635 100644
--- a/java/machine/pipes/pom.xml
+++ b/java/machine/pipes/pom.xml
@@ -26,8 +26,15 @@ limitations under the License.
     <dependencies>
         <dependency>
             <groupId>org.apache.tinkerpop</groupId>
+            <artifactId>core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <!-- TEST -->
+        <dependency>
+            <groupId>org.apache.tinkerpop</groupId>
             <artifactId>gremlin</artifactId>
             <version>${project.version}</version>
+            <scope>test</scope>
         </dependency>
     </dependencies>
     <build>
diff --git 
a/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/BranchStep.java
 
b/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/BranchStep.java
index 540bb26..52ea854 100644
--- 
a/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/BranchStep.java
+++ 
b/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/BranchStep.java
@@ -20,7 +20,6 @@ package org.apache.tinkerpop.machine.pipes;
 
 import org.apache.tinkerpop.machine.bytecode.Compilation;
 import org.apache.tinkerpop.machine.function.BranchFunction;
-import org.apache.tinkerpop.machine.function.branch.selector.Selector;
 import org.apache.tinkerpop.machine.traverser.Traverser;
 import org.apache.tinkerpop.util.EmptyIterator;
 import org.apache.tinkerpop.util.MultiIterator;
@@ -35,7 +34,7 @@ import java.util.Optional;
  */
 final class BranchStep<C, S, E, M> extends AbstractStep<C, S, E> {
 
-    private final Selector<C, S, M> branchSelector;
+    private final Compilation<C, S, M> branchSelector;
     private final Map<M, List<Compilation<C, S, E>>> branches;
     private Iterator<Traverser<C, E>> nextTraversers = 
EmptyIterator.instance();
 
@@ -60,9 +59,9 @@ final class BranchStep<C, S, E, M> extends AbstractStep<C, S, 
E> {
     private final void stageOutput() {
         while (!this.nextTraversers.hasNext() && this.previousStep.hasNext()) {
             final Traverser<C, S> traverser = this.previousStep.next();
-            final Optional<M> token = this.branchSelector.from(traverser);
+            final Optional<Traverser<C, M>> token = 
this.branchSelector.maybeTraverser(traverser);
             if (token.isPresent()) {
-                final List<Compilation<C, S, E>> matches = 
this.branches.get(token.get());
+                final List<Compilation<C, S, E>> matches = 
this.branches.get(token.get().object());
                 if (1 == matches.size())
                     this.nextTraversers = 
matches.get(0).addTraverser(traverser);
                 else {

Reply via email to