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 fa04dff  added __.constant() and ConstantMap function. Tested whether 
is(traversal) works. It does.
fa04dff is described below

commit fa04dff29cf8cc0dc458608fa97f5aaf2d350792
Author: Marko A. Rodriguez <okramma...@gmail.com>
AuthorDate: Sat Mar 16 10:55:30 2019 -0600

    added __.constant() and ConstantMap function. Tested whether is(traversal) 
works. It does.
---
 .../java/org/apache/tinkerpop/language/Traversal.java  |  5 +++++
 .../main/java/org/apache/tinkerpop/language/__.java    |  8 ++++++++
 .../tinkerpop/machine/bytecode/BytecodeUtil.java       |  5 ++++-
 .../org/apache/tinkerpop/machine/bytecode/Symbols.java |  3 +++
 .../tinkerpop/machine/coefficient/Coefficient.java     |  2 ++
 .../tinkerpop/machine/coefficient/LongCoefficient.java |  5 +++++
 .../tinkerpop/machine/function/filter/IsFilter.java    | 11 ++++++-----
 .../{filter/IsFilter.java => map/ConstantMap.java}     | 18 +++++++++---------
 .../org/apache/tinkerpop/machine/pipes/PipesTest.java  |  3 ++-
 9 files changed, 44 insertions(+), 16 deletions(-)

diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/language/Traversal.java 
b/java/core/src/main/java/org/apache/tinkerpop/language/Traversal.java
index cc8c811..a8dbe1a 100644
--- a/java/core/src/main/java/org/apache/tinkerpop/language/Traversal.java
+++ b/java/core/src/main/java/org/apache/tinkerpop/language/Traversal.java
@@ -79,6 +79,11 @@ public class Traversal<C, S, E> implements Iterator<E> {
         return (Traversal) this;
     }
 
+    public <R> Traversal<C, S, R> constance(final R constant) {
+        this.bytecode.addInstruction(this.currentCoefficient, 
Symbols.CONSTANT, constant);
+        return (Traversal) this;
+    }
+
     public Traversal<C, S, Long> count() {
         this.bytecode.addInstruction(this.currentCoefficient, Symbols.COUNT);
         return (Traversal) this;
diff --git a/java/core/src/main/java/org/apache/tinkerpop/language/__.java 
b/java/core/src/main/java/org/apache/tinkerpop/language/__.java
index d0febb8..ef6099a 100644
--- a/java/core/src/main/java/org/apache/tinkerpop/language/__.java
+++ b/java/core/src/main/java/org/apache/tinkerpop/language/__.java
@@ -37,6 +37,10 @@ public class __ {
         return __.<C, S>start().c(coefficient);
     }
 
+    public static <C, S> Traversal<C, S, S> constant(final S constant) {
+        return __.<C, S>start().constance(constant);
+    }
+
     public static <C> Traversal<C, Long, Long> incr() {
         return __.<C, Long>start().incr();
     }
@@ -45,6 +49,10 @@ public class __ {
         return __.<C, S>start().is(object);
     }
 
+    public static <C, S> Traversal<C, S, S> is(final Traversal<C, S, S> 
objectTraversal) {
+        return __.<C, S>start().is(objectTraversal);
+    }
+
     public static <C, S extends Number> Traversal<C, S, S> sum() {
         return __.<C, S>start().sum();
     }
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/BytecodeUtil.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/BytecodeUtil.java
index b508e24..1b4d0e7 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/BytecodeUtil.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/BytecodeUtil.java
@@ -31,6 +31,7 @@ import 
org.apache.tinkerpop.machine.function.filter.IdentityFilter;
 import org.apache.tinkerpop.machine.function.filter.IsFilter;
 import org.apache.tinkerpop.machine.function.flatmap.UnfoldFlatMap;
 import org.apache.tinkerpop.machine.function.initial.InjectInitial;
+import org.apache.tinkerpop.machine.function.map.ConstantMap;
 import org.apache.tinkerpop.machine.function.map.IncrMap;
 import org.apache.tinkerpop.machine.function.map.MapMap;
 import org.apache.tinkerpop.machine.function.map.PathMap;
@@ -149,6 +150,8 @@ public final class BytecodeUtil {
                         Compilation.compileOne(instruction.args()[0]),
                         Compilation.compileOne(instruction.args()[1]),
                         Compilation.compileOne(instruction.args()[2]));
+            case Symbols.CONSTANT:
+                return new ConstantMap<>(coefficient, labels, 
instruction.args()[0]);
             case Symbols.COUNT:
                 return new CountReduce<>(coefficient, labels);
             case Symbols.FILTER:
@@ -164,7 +167,7 @@ public final class BytecodeUtil {
             case Symbols.INJECT:
                 return new InjectInitial<>(coefficient, labels, 
instruction.args());
             case Symbols.IS:
-                return new IsFilter<>(coefficient, labels, 
instruction.args()[0]);
+                return new IsFilter<>(coefficient, labels, 
Argument.create(instruction.args()[0]));
             case Symbols.INCR:
                 return new IncrMap<>(coefficient, labels);
             case Symbols.MAP:
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/Symbols.java 
b/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/Symbols.java
index eeba92d..46afecd 100644
--- a/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/Symbols.java
+++ b/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/Symbols.java
@@ -37,6 +37,7 @@ public final class Symbols {
     public static final String BARRIER = "barrier";
     public static final String CHOOSE_IF_THEN = "chooseIfThen";
     public static final String CHOOSE_IF_THEN_ELSE = "chooseIfThenElse";
+    public static final String CONSTANT = "constant";
     public static final String COUNT = "count";
     public static final String FILTER = "filter";
     public static final String GROUP_COUNT = "groupCount";
@@ -61,6 +62,8 @@ public final class Symbols {
                 return Type.BRANCH;
             case CHOOSE_IF_THEN_ELSE:
                 return Type.BRANCH;
+            case CONSTANT:
+                return Type.MAP;
             case COUNT:
                 return Type.REDUCE;
             case FILTER:
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/coefficient/Coefficient.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/coefficient/Coefficient.java
index bd5bf05..6f6c021 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/coefficient/Coefficient.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/coefficient/Coefficient.java
@@ -37,6 +37,8 @@ public interface Coefficient<C> extends Cloneable, 
Serializable {
 
     public boolean isUnity();
 
+    public boolean isZero();
+
     public C value();
 
     public Long count();
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/coefficient/LongCoefficient.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/coefficient/LongCoefficient.java
index 7aeed0b..ba69a57 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/coefficient/LongCoefficient.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/coefficient/LongCoefficient.java
@@ -69,6 +69,11 @@ public class LongCoefficient implements Coefficient<Long> {
     }
 
     @Override
+    public boolean isZero() {
+        return 0L == this.value;
+    }
+
+    @Override
     public Long value() {
         return this.value;
     }
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/function/filter/IsFilter.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/function/filter/IsFilter.java
index 615b296..6b2be92 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/function/filter/IsFilter.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/function/filter/IsFilter.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tinkerpop.machine.function.filter;
 
+import org.apache.tinkerpop.machine.bytecode.Argument;
 import org.apache.tinkerpop.machine.coefficient.Coefficient;
 import org.apache.tinkerpop.machine.function.AbstractFunction;
 import org.apache.tinkerpop.machine.function.FilterFunction;
@@ -31,20 +32,20 @@ import java.util.Set;
  */
 public final class IsFilter<C, S> extends AbstractFunction<C> implements 
FilterFunction<C, S> {
 
-    private S object;
+    private Argument<S> argument;
 
-    public IsFilter(final Coefficient<C> coefficient, final Set<String> 
labels, final S object) {
+    public IsFilter(final Coefficient<C> coefficient, final Set<String> 
labels, final Argument<S> argument) {
         super(coefficient, labels);
-        this.object = object;
+        this.argument = argument;
     }
 
     @Override
     public boolean test(final Traverser<C, S> traverser) {
-        return traverser.object().equals(this.object);
+        return 
traverser.object().equals(this.argument.getArg(traverser.object()));
     }
 
     @Override
     public String toString() {
-        return StringFactory.makeFunctionString(this, this.object);
+        return StringFactory.makeFunctionString(this, this.argument);
     }
 }
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/function/filter/IsFilter.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/function/map/ConstantMap.java
similarity index 69%
copy from 
java/core/src/main/java/org/apache/tinkerpop/machine/function/filter/IsFilter.java
copy to 
java/core/src/main/java/org/apache/tinkerpop/machine/function/map/ConstantMap.java
index 615b296..df93562 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/function/filter/IsFilter.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/function/map/ConstantMap.java
@@ -16,11 +16,11 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tinkerpop.machine.function.filter;
+package org.apache.tinkerpop.machine.function.map;
 
 import org.apache.tinkerpop.machine.coefficient.Coefficient;
 import org.apache.tinkerpop.machine.function.AbstractFunction;
-import org.apache.tinkerpop.machine.function.FilterFunction;
+import org.apache.tinkerpop.machine.function.MapFunction;
 import org.apache.tinkerpop.machine.traverser.Traverser;
 import org.apache.tinkerpop.util.StringFactory;
 
@@ -29,22 +29,22 @@ import java.util.Set;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class IsFilter<C, S> extends AbstractFunction<C> implements 
FilterFunction<C, S> {
+public class ConstantMap<C, S, E> extends AbstractFunction<C> implements 
MapFunction<C, S, E> {
 
-    private S object;
+    private final E constant;
 
-    public IsFilter(final Coefficient<C> coefficient, final Set<String> 
labels, final S object) {
+    public ConstantMap(final Coefficient<C> coefficient, final Set<String> 
labels, final E constant) {
         super(coefficient, labels);
-        this.object = object;
+        this.constant = constant;
     }
 
     @Override
-    public boolean test(final Traverser<C, S> traverser) {
-        return traverser.object().equals(this.object);
+    public E apply(final Traverser<C, S> traverser) {
+        return this.constant;
     }
 
     @Override
     public String toString() {
-        return StringFactory.makeFunctionString(this, this.object);
+        return StringFactory.makeFunctionString(this, this.constant);
     }
 }
diff --git 
a/java/machine/pipes/src/test/java/org/apache/tinkerpop/machine/pipes/PipesTest.java
 
b/java/machine/pipes/src/test/java/org/apache/tinkerpop/machine/pipes/PipesTest.java
index 69eda91..633fdd7 100644
--- 
a/java/machine/pipes/src/test/java/org/apache/tinkerpop/machine/pipes/PipesTest.java
+++ 
b/java/machine/pipes/src/test/java/org/apache/tinkerpop/machine/pipes/PipesTest.java
@@ -29,6 +29,7 @@ import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
 
+import static org.apache.tinkerpop.language.__.constant;
 import static org.apache.tinkerpop.language.__.incr;
 import static org.apache.tinkerpop.language.__.is;
 
@@ -44,7 +45,7 @@ public class PipesTest {
                 .withProcessor(PipesProcessor.class)
                 .withStrategy(IdentityStrategy.class);
 
-        Traversal<Long, ?, ?> traversal = g.inject(Arrays.asList(1L, 
1L)).<Long>unfold().map(incr()).repeat(incr()).until(is(10L)).sum();
+        Traversal<Long, ?, ?> traversal = g.inject(Arrays.asList(1L, 
1L)).<Long>unfold().map(incr()).repeat(incr()).until(__.is(__.<Long,Long>constant(8L).incr().incr())).sum();
         System.out.println(TraversalUtil.getBytecode(traversal));
         System.out.println(traversal);
         System.out.println(traversal.toList());

Reply via email to