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 9b765b0 added PathTest and converted lots of list and set creations to List.of and Set.of 9b765b0 is described below commit 9b765b034182432048d310d5b59d0f72d52d7f63 Author: Marko A. Rodriguez <okramma...@gmail.com> AuthorDate: Sun Mar 24 16:01:42 2019 -0600 added PathTest and converted lots of list and set creations to List.of and Set.of --- .../tinkerpop/machine/function/map/PathMap.java | 2 +- .../machine/traverser/path/BasicPath.java | 17 ++- .../tinkerpop/machine/traverser/path/PathTest.java | 128 +++++++++++++++++++++ .../machine/processor/beam/BeamProcessor.java | 4 +- .../tinkerpop/machine/processor/beam/BeamTest.java | 6 +- .../machine/processor/pipes/PipesProcessor.java | 4 +- .../machine/processor/pipes/PipesTest.java | 10 +- .../structure/blueprints/BlueprintsStructure.java | 5 +- 8 files changed, 155 insertions(+), 21 deletions(-) diff --git a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/function/map/PathMap.java b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/function/map/PathMap.java index 6628a8a..3f09029 100644 --- a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/function/map/PathMap.java +++ b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/function/map/PathMap.java @@ -61,7 +61,7 @@ public final class PathMap<C, S> extends AbstractFunction<C> implements MapFunct final Path newPath = new BasicPath(); if (this.hasPathLabels) { for (final String label : this.pathLabels) { - newPath.add(Collections.singleton(label), this.byCompilations.process(oldPath.get(Path.Pop.last, label))); + newPath.add(Set.of(label), this.byCompilations.process(oldPath.get(Path.Pop.last, label))); } } else { for (int i = 0; i < oldPath.size(); i++) { diff --git a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/traverser/path/BasicPath.java b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/traverser/path/BasicPath.java index cbf8a7a..a3583f9 100644 --- a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/traverser/path/BasicPath.java +++ b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/traverser/path/BasicPath.java @@ -34,11 +34,6 @@ public final class BasicPath implements Path { public BasicPath() { } - public BasicPath(final BasicPath path) { - this.objects.addAll(path.objects); - this.labels.addAll(path.labels); - } - @Override public void add(final Set<String> labels, final Object object) { this.labels.add(labels); @@ -84,6 +79,18 @@ public final class BasicPath implements Path { } @Override + public int hashCode() { + return this.labels.hashCode() ^ this.objects.hashCode(); + } + + @Override + public boolean equals(final Object object) { + return object instanceof BasicPath && + this.labels.equals(((BasicPath) object).labels) && + this.objects.equals(((BasicPath) object).objects); + } + + @Override public String toString() { return this.objects.toString(); } diff --git a/java/machine/machine-core/src/test/java/org/apache/tinkerpop/machine/traverser/path/PathTest.java b/java/machine/machine-core/src/test/java/org/apache/tinkerpop/machine/traverser/path/PathTest.java new file mode 100644 index 0000000..7424fd4 --- /dev/null +++ b/java/machine/machine-core/src/test/java/org/apache/tinkerpop/machine/traverser/path/PathTest.java @@ -0,0 +1,128 @@ +/* + * 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.traverser.path; + +import org.junit.jupiter.api.Test; + +import java.util.List; +import java.util.Set; +import java.util.function.Supplier; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; + +/** + * @author Marko A. Rodriguez (http://markorodriguez.com) + */ +class PathTest { + + private static List<Supplier<Path>> PATH_SUPPLIERS = List.of(BasicPath::new); + + @Test + void testPathMethods() { + PATH_SUPPLIERS.forEach(pathSupplier -> { + final Path a = pathSupplier.get(); + final Path b = pathSupplier.get(); + assertEquals(a, b); + assertEquals(a.hashCode(), b.hashCode()); + assertEquals(0, a.size()); + assertEquals(0, b.size()); + /// + a.add(Set.of("step1"), 1); + assertNotEquals(a, b); + assertEquals(1, a.size()); + assertEquals(0, b.size()); + /// + b.add(Set.of("step1"), 1); + assertEquals(a, b); + assertEquals(1, a.size()); + assertEquals(1, b.size()); + /// + a.add(Set.of("step2", "step3"), 2); + b.add(Set.of("step2"), 22); + assertNotEquals(a, b); + assertEquals(2, a.size()); + assertEquals(2, b.size()); + /// + a.add(Set.of("step3"), 3); + b.add(Set.of("step3"), 33); + assertNotEquals(a, b); + assertEquals(3, a.size()); + assertEquals(3, b.size()); + /// + assertEquals(1, a.get(Path.Pop.first, "step1")); + assertEquals(1, b.get(Path.Pop.first, "step1")); + assertEquals(1, a.get(Path.Pop.last, "step1")); + assertEquals(1, b.get(Path.Pop.last, "step1")); + assertEquals(List.of(1), a.get(Path.Pop.all, "step1")); + assertEquals(List.of(1), b.get(Path.Pop.all, "step1")); + /// + assertEquals(2, a.get(Path.Pop.first, "step2")); + assertEquals(22, b.get(Path.Pop.first, "step2")); + assertEquals(2, a.get(Path.Pop.last, "step2")); + assertEquals(22, b.get(Path.Pop.last, "step2")); + assertEquals(List.of(2), a.get(Path.Pop.all, "step2")); + assertEquals(List.of(22), b.get(Path.Pop.all, "step2")); + /// + assertEquals(2, a.get(Path.Pop.first, "step3")); + assertEquals(33, b.get(Path.Pop.first, "step3")); + assertEquals(3, a.get(Path.Pop.last, "step3")); + assertEquals(33, b.get(Path.Pop.last, "step3")); + assertEquals(List.of(2, 3), a.get(Path.Pop.all, "step3")); + assertEquals(List.of(33), b.get(Path.Pop.all, "step3")); + /// + final Set<String> labels = Set.of("step4"); + a.add(labels, 4); + b.add(labels, 4); + assertNotEquals(a, b); + assertEquals(4, a.size()); + assertEquals(4, b.size()); + }); + } + + @Test + void testObjectMethods() { + PATH_SUPPLIERS.forEach(pathSupplier -> { + final Path a = pathSupplier.get(); + final Path b = a.clone(); + assertEquals(a, b); + assertEquals(a.hashCode(), b.hashCode()); + a.add(Set.of("step1"), 1); + b.add(Set.of("step1"), 1); + assertEquals(a, b); + assertEquals(a.hashCode(), b.hashCode()); + assertEquals(1, a.size()); + assertEquals(1, b.size()); + b.add(Set.of("step2"), 2); + assertNotEquals(a, b); + assertNotEquals(a.hashCode(), b.hashCode()); + assertEquals(1, a.size()); + assertEquals(2, b.size()); + final Path c = b.clone(); + assertEquals(b, c); + assertNotEquals(a, c); + c.add(Set.of("step3"), 3); + assertNotEquals(b, c); + assertNotEquals(a, c); + assertEquals(1, a.size()); + assertEquals(2, b.size()); + assertEquals(3, c.size()); + }); + } +} diff --git a/java/machine/processor/beam/src/main/java/org/apache/tinkerpop/machine/processor/beam/BeamProcessor.java b/java/machine/processor/beam/src/main/java/org/apache/tinkerpop/machine/processor/beam/BeamProcessor.java index 305b866..87d3481 100644 --- a/java/machine/processor/beam/src/main/java/org/apache/tinkerpop/machine/processor/beam/BeamProcessor.java +++ b/java/machine/processor/beam/src/main/java/org/apache/tinkerpop/machine/processor/beam/BeamProcessor.java @@ -37,7 +37,7 @@ import java.util.Set; */ public class BeamProcessor implements ProcessorFactory { - private static final List<BytecodeCompiler> COMPILERS = Arrays.asList(CoreCompiler.instance(), CommonCompiler.instance()); + private static final List<BytecodeCompiler> COMPILERS = List.of(CoreCompiler.instance(), CommonCompiler.instance()); @Override public <C, S, E> Processor<C, S, E> mint(final Compilation<C, S, E> compilation) { @@ -46,7 +46,7 @@ public class BeamProcessor implements ProcessorFactory { @Override public Set<Strategy<?>> getStrategies() { - return Collections.singleton(new BeamStrategy()); + return Set.of(new BeamStrategy()); } @Override diff --git a/java/machine/processor/beam/src/test/java/org/apache/tinkerpop/machine/processor/beam/BeamTest.java b/java/machine/processor/beam/src/test/java/org/apache/tinkerpop/machine/processor/beam/BeamTest.java index 4de0f21..6838142 100644 --- a/java/machine/processor/beam/src/test/java/org/apache/tinkerpop/machine/processor/beam/BeamTest.java +++ b/java/machine/processor/beam/src/test/java/org/apache/tinkerpop/machine/processor/beam/BeamTest.java @@ -29,7 +29,7 @@ import org.apache.tinkerpop.machine.strategy.optimization.IdentityStrategy; import org.apache.tinkerpop.machine.structure.blueprints.BlueprintsStructure; import org.junit.jupiter.api.Test; -import java.util.Arrays; +import java.util.List; import static org.apache.tinkerpop.language.gremlin.core.__.constant; import static org.apache.tinkerpop.language.gremlin.core.__.incr; @@ -68,12 +68,12 @@ public class BeamTest { .withProcessor(BeamProcessor.class) .withStrategy(IdentityStrategy.class); - Traversal<Long, ?, ?> traversal = g.inject(Arrays.asList(1L, 1L)).<Long>unfold().map(incr()).c(4L).repeat(incr()).until(__.is(__.constant(8L).incr().incr())).sum(); + Traversal<Long, ?, ?> traversal = g.inject(List.of(1L, 1L)).<Long>unfold().map(incr()).c(4L).repeat(incr()).until(__.is(__.constant(8L).incr().incr())).sum(); System.out.println(TraversalUtil.getBytecode(traversal)); System.out.println(traversal); System.out.println(traversal.toList()); System.out.println("\n----------\n"); - traversal = g.inject(Arrays.asList(1L, 2L)).<Long>unfold().map(incr()).is(P.lt(constant(3L))); + traversal = g.inject(List.of(1L, 2L)).<Long>unfold().map(incr()).is(P.lt(constant(3L))); System.out.println(TraversalUtil.getBytecode(traversal)); System.out.println(traversal); System.out.println(traversal.toList()); diff --git a/java/machine/processor/pipes/src/main/java/org/apache/tinkerpop/machine/processor/pipes/PipesProcessor.java b/java/machine/processor/pipes/src/main/java/org/apache/tinkerpop/machine/processor/pipes/PipesProcessor.java index 7ceb8e0..fa4890c 100644 --- a/java/machine/processor/pipes/src/main/java/org/apache/tinkerpop/machine/processor/pipes/PipesProcessor.java +++ b/java/machine/processor/pipes/src/main/java/org/apache/tinkerpop/machine/processor/pipes/PipesProcessor.java @@ -37,7 +37,7 @@ import java.util.Set; */ public final class PipesProcessor implements ProcessorFactory { - private static final List<BytecodeCompiler> COMPILERS = Arrays.asList(CoreCompiler.instance(), CommonCompiler.instance()); + private static final List<BytecodeCompiler> COMPILERS = List.of(CoreCompiler.instance(), CommonCompiler.instance()); public PipesProcessor() { } @@ -49,7 +49,7 @@ public final class PipesProcessor implements ProcessorFactory { @Override public Set<Strategy<?>> getStrategies() { - return Collections.singleton(new PipesStrategy()); + return Set.of(new PipesStrategy()); } @Override diff --git a/java/machine/processor/pipes/src/test/java/org/apache/tinkerpop/machine/processor/pipes/PipesTest.java b/java/machine/processor/pipes/src/test/java/org/apache/tinkerpop/machine/processor/pipes/PipesTest.java index e39b7ee..60f5720 100644 --- a/java/machine/processor/pipes/src/test/java/org/apache/tinkerpop/machine/processor/pipes/PipesTest.java +++ b/java/machine/processor/pipes/src/test/java/org/apache/tinkerpop/machine/processor/pipes/PipesTest.java @@ -63,12 +63,12 @@ public class PipesTest { .withProcessor(PipesProcessor.class) .withStrategy(IdentityStrategy.class); - Traversal<Long, ?, ?> traversal = g.inject(Arrays.asList(1L, 1L)).<Long>unfold().map(incr()).c(4L).repeat(incr()).until(__.is(__.constant(8L).incr().incr())).sum(); + Traversal<Long, ?, ?> traversal = g.inject(List.of(1L, 1L)).<Long>unfold().map(incr()).c(4L).repeat(incr()).until(__.is(__.constant(8L).incr().incr())).sum(); System.out.println(TraversalUtil.getBytecode(traversal)); System.out.println(traversal); System.out.println(traversal.toList()); System.out.println("\n----------\n"); - traversal = g.inject(Arrays.asList(1L, 2L)).unfold().is(P.lt(__.constant(2L))).groupCount().by(__.incr()); + traversal = g.inject(List.of(1L, 2L)).unfold().is(P.lt(__.constant(2L))).groupCount().by(__.incr()); System.out.println(TraversalUtil.getBytecode(traversal)); System.out.println(traversal); System.out.println(traversal.toList()); @@ -103,7 +103,7 @@ public class PipesTest { System.out.println(traversal); System.out.println(traversal.toList()); System.out.println("\n----------\n"); - traversal = g.inject(Arrays.asList(7L, 8L, 9L)).<Long>unfold().choose(__.is(7L), __.incr(), __.<Long>incr().incr()); + traversal = g.inject(List.of(7L, 8L, 9L)).<Long>unfold().choose(__.is(7L), __.incr(), __.<Long>incr().incr()); System.out.println(TraversalUtil.getBytecode(traversal)); System.out.println(traversal); System.out.println(traversal.toList()); @@ -129,13 +129,13 @@ public class PipesTest { .withProcessor(PipesProcessor.class) .withStrategy(IdentityStrategy.class); - List<Map<String, Object>> listA = Arrays.asList( + List<Map<String, Object>> listA = List.of( Map.of("name", "marko", "age", 29), Map.of("name", "josh", "age", 32), Map.of("name", "peter", "age", 35), Map.of("name", "vadas", "age", 27)); - List<Map<String, Object>> listB = Arrays.asList( + List<Map<String, Object>> listB = List.of( Map.of("name", "marko", "city", "santa fe"), Map.of("name", "marko", "city", "santa cruz"), Map.of("name", "josh", "city", "san jose"), diff --git a/java/machine/structure/blueprints/src/main/java/org/apache/tinkerpop/machine/structure/blueprints/BlueprintsStructure.java b/java/machine/structure/blueprints/src/main/java/org/apache/tinkerpop/machine/structure/blueprints/BlueprintsStructure.java index 2e4f2c9..144439c 100644 --- a/java/machine/structure/blueprints/src/main/java/org/apache/tinkerpop/machine/structure/blueprints/BlueprintsStructure.java +++ b/java/machine/structure/blueprints/src/main/java/org/apache/tinkerpop/machine/structure/blueprints/BlueprintsStructure.java @@ -25,7 +25,6 @@ import org.apache.tinkerpop.machine.structure.StructureFactory; import org.apache.tinkerpop.machine.structure.blueprints.bytecode.compiler.BlueprintsCompiler; import org.apache.tinkerpop.machine.structure.blueprints.strategy.provider.BlueprintsVerticesStrategy; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Set; @@ -35,7 +34,7 @@ import java.util.Set; */ public class BlueprintsStructure implements StructureFactory { - private static final List<BytecodeCompiler> COMPILERS = Collections.singletonList(BlueprintsCompiler.instance()); + private static final List<BytecodeCompiler> COMPILERS = List.of(BlueprintsCompiler.instance()); @Override public Structure mint(final Map<String, Object> configuration) { @@ -44,7 +43,7 @@ public class BlueprintsStructure implements StructureFactory { @Override public Set<Strategy<?>> getStrategies() { - return Collections.singleton(new BlueprintsVerticesStrategy()); + return Set.of(new BlueprintsVerticesStrategy()); } @Override