You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2016/10/11 19:36:37 UTC
[1/3] tinkerpop git commit: added another test case for getLabels().
Repository: tinkerpop
Updated Branches:
refs/heads/master d591a94ca -> fbf9dd86a
added another test case for getLabels().
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/d66b0e64
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/d66b0e64
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/d66b0e64
Branch: refs/heads/master
Commit: d66b0e643401e11d6a7cac976d1f410da3168416
Parents: 04226c9
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Oct 11 06:44:02 2016 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Oct 11 13:36:09 2016 -0600
----------------------------------------------------------------------
.../process/util/TraversalHelperTest.java | 38 +++++++++++++++-----
1 file changed, 29 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d66b0e64/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/TraversalHelperTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/TraversalHelperTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/TraversalHelperTest.java
index dbba314..5245506 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/TraversalHelperTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/TraversalHelperTest.java
@@ -49,7 +49,9 @@ import org.mockito.Mockito;
import java.util.Set;
import java.util.stream.Collectors;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.in;
import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.outE;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -104,12 +106,12 @@ public class TraversalHelperTest {
}
@Test
- public void shouldIdentityLocalProperties() {
+ public void shouldIdentifyLocalProperties() {
assertTrue(TraversalHelper.isLocalProperties(__.identity().asAdmin()));
assertTrue(TraversalHelper.isLocalProperties(__.id().asAdmin()));
assertTrue(TraversalHelper.isLocalProperties(__.label().asAdmin()));
assertTrue(TraversalHelper.isLocalProperties(__.values("name").asAdmin()));
- assertFalse(TraversalHelper.isLocalProperties(__.outE("knows").asAdmin()));
+ assertFalse(TraversalHelper.isLocalProperties(outE("knows").asAdmin()));
}
@Test
@@ -311,8 +313,8 @@ public class TraversalHelperTest {
assertTrue(TraversalHelper.isLocalStarGraph(__.repeat(__.has("name")).asAdmin()));
assertTrue(TraversalHelper.isLocalStarGraph(__.out().repeat(__.identity()).asAdmin()));
assertTrue(TraversalHelper.isLocalStarGraph(__.out().id().asAdmin()));
- assertTrue(TraversalHelper.isLocalStarGraph(__.label().union(__.out(), __.in()).asAdmin()));
- assertTrue(TraversalHelper.isLocalStarGraph(__.label().union(__.out(), __.in()).id().asAdmin()));
+ assertTrue(TraversalHelper.isLocalStarGraph(__.label().union(__.out(), in()).asAdmin()));
+ assertTrue(TraversalHelper.isLocalStarGraph(__.label().union(__.out(), in()).id().asAdmin()));
assertTrue(TraversalHelper.isLocalStarGraph(__.coalesce(out("likes"), out("knows"), out("created")).groupCount().asAdmin()));
assertTrue(TraversalHelper.isLocalStarGraph(__.local(__.out()).groupCount().asAdmin()));
assertTrue(TraversalHelper.isLocalStarGraph(__.local(__.out()).groupCount().by(T.id).asAdmin()));
@@ -323,11 +325,11 @@ public class TraversalHelperTest {
assertFalse(TraversalHelper.isLocalStarGraph(__.out().valueMap().asAdmin()));
assertFalse(TraversalHelper.isLocalStarGraph(__.repeat(__.out()).asAdmin()));
assertFalse(TraversalHelper.isLocalStarGraph(__.repeat(__.has("name").out()).asAdmin()));
- assertFalse(TraversalHelper.isLocalStarGraph(__.repeat(__.has("name").union(__.out(), __.in())).asAdmin()));
- assertFalse(TraversalHelper.isLocalStarGraph(__.union(__.out(), __.in()).label().asAdmin()));
- assertFalse(TraversalHelper.isLocalStarGraph(__.union(__.out(), __.in().out()).asAdmin()));
- assertFalse(TraversalHelper.isLocalStarGraph(__.union(__.out(), __.out().union(__.in(), __.out())).asAdmin()));
- assertFalse(TraversalHelper.isLocalStarGraph(__.union(__.values(), __.out().union(__.in(), __.out())).out().asAdmin()));
+ assertFalse(TraversalHelper.isLocalStarGraph(__.repeat(__.has("name").union(__.out(), in())).asAdmin()));
+ assertFalse(TraversalHelper.isLocalStarGraph(__.union(__.out(), in()).label().asAdmin()));
+ assertFalse(TraversalHelper.isLocalStarGraph(__.union(__.out(), in().out()).asAdmin()));
+ assertFalse(TraversalHelper.isLocalStarGraph(__.union(__.out(), __.out().union(in(), __.out())).asAdmin()));
+ assertFalse(TraversalHelper.isLocalStarGraph(__.union(__.values(), __.out().union(in(), __.out())).out().asAdmin()));
assertFalse(TraversalHelper.isLocalStarGraph(__.coalesce(out("likes"), out("knows"), out("created")).groupCount().by("name").asAdmin()));
assertFalse(TraversalHelper.isLocalStarGraph(__.local(__.out()).groupCount().by("name").asAdmin()));
}
@@ -375,4 +377,22 @@ public class TraversalHelperTest {
assertTrue(labels.contains("c"));
assertTrue(labels.contains("d"));
}
+
+ @Test
+ public void shouldGetLabels() {
+ Set<String> labels = (Set) TraversalHelper.getLabels(__.out().as("a").values("name").as("b").in().as("c").groupCount().as("d").asAdmin());
+ assertEquals(4, labels.size());
+ assertTrue(labels.contains("a"));
+ assertTrue(labels.contains("b"));
+ assertTrue(labels.contains("c"));
+ assertTrue(labels.contains("d"));
+ labels = (Set) TraversalHelper.getLabels(__.out().as("a").repeat(__.out("name").as("b")).local(in().as("c")).as("d").groupCount().by(outE().as("e")).as("f").asAdmin());
+ assertEquals(6, labels.size());
+ assertTrue(labels.contains("a"));
+ assertTrue(labels.contains("b"));
+ assertTrue(labels.contains("c"));
+ assertTrue(labels.contains("d"));
+ assertTrue(labels.contains("e"));
+ assertTrue(labels.contains("f"));
+ }
}
[3/3] tinkerpop git commit: updated CHANGELOG.
Posted by ok...@apache.org.
updated CHANGELOG.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/fbf9dd86
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/fbf9dd86
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/fbf9dd86
Branch: refs/heads/master
Commit: fbf9dd86abf3cfe4bbce9ff9a79edae542765bd6
Parents: d66b0e6
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Oct 11 13:35:58 2016 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Oct 11 13:36:30 2016 -0600
----------------------------------------------------------------------
CHANGELOG.asciidoc | 1 +
1 file changed, 1 insertion(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fbf9dd86/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 43fa76a..e388816 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -27,6 +27,7 @@ TinkerPop 3.2.3 (Release Date: NOT OFFICIALLY RELEASED YET)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Increased performance of `CredentialGraph` authentication
+* Removed Java 8 stream usage from `TraversalHelper` for performance reasons.
* Added `HasContainerHolder.removeHasContainer()`-method with default `UnsupportedOperationException` implementation.
* `TraversalSource.withComputer()` is simplified to add a `VertexProgramStrategy`. Easier for language variants.
* Fixed a `Set`, `List`, `Map` bug in the various `Translators` where such collections were not being internally translated.
[2/3] tinkerpop git commit: removed stream()-usage and unneeded
method recurssions in TraversalHelper.
Posted by ok...@apache.org.
removed stream()-usage and unneeded method recurssions in TraversalHelper.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/04226c9e
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/04226c9e
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/04226c9e
Branch: refs/heads/master
Commit: 04226c9e367d7e4e51a3738391f42892f98560a9
Parents: d591a94
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Oct 11 06:36:39 2016 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Oct 11 13:36:09 2016 -0600
----------------------------------------------------------------------
.../process/traversal/util/TraversalHelper.java | 104 ++++++++++++-------
.../process/util/TraversalHelperTest.java | 49 +++++++++
2 files changed, 113 insertions(+), 40 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/04226c9e/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
index 87d3479..f4dd829 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
@@ -43,6 +43,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StartStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.HasContainer;
import org.apache.tinkerpop.gremlin.structure.T;
import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
@@ -55,7 +56,6 @@ import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.function.Predicate;
-import java.util.stream.Collectors;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -68,21 +68,20 @@ public final class TraversalHelper {
public static boolean isLocalProperties(final Traversal.Admin<?, ?> traversal) {
for (final Step step : traversal.getSteps()) {
- if (step instanceof RepeatStep &&
- ((RepeatStep<?>) step).getGlobalChildren().stream()
- .flatMap(t -> t.getSteps().stream())
- .filter(s -> s instanceof VertexStep)
- .findAny()
- .isPresent()) // TODO: is this sufficient?
- return false;
- else if (step instanceof VertexStep) {
+ if (step instanceof RepeatStep) {
+ for (final Traversal.Admin<?, ?> global : ((RepeatStep<?>) step).getGlobalChildren()) {
+ if (TraversalHelper.hasStepOfAssignableClass(VertexStep.class, global))
+ return false;
+ }
+ } else if (step instanceof VertexStep) {
return false;
} else if (step instanceof EdgeVertexStep) {
return false;
} else if (step instanceof TraversalParent) {
- if (((TraversalParent) step).getLocalChildren().stream()
- .filter(t -> !isLocalProperties(t.asAdmin()))
- .findAny().isPresent()) return false;
+ for (final Traversal.Admin<?, ?> local : ((TraversalParent) step).getLocalChildren()) {
+ if (!TraversalHelper.isLocalProperties(local))
+ return false;
+ }
}
}
return true;
@@ -106,28 +105,31 @@ public final class TraversalHelper {
} else if (step instanceof EdgeVertexStep) {
state = 'u';
} else if (step instanceof HasContainerHolder && state == 'u') {
- if (((HasContainerHolder) step).getHasContainers().stream()
- .filter(c -> !c.getKey().equals(T.id.getAccessor()))
- .findAny().isPresent()) return 'x';
+ for (final HasContainer hasContainer : ((HasContainerHolder) step).getHasContainers()) {
+ if (!hasContainer.getKey().equals(T.id.getAccessor()))
+ return 'x';
+ }
} else if (step instanceof TraversalParent) {
final char currState = state;
- Set<Character> states = ((TraversalParent) step).getLocalChildren().stream()
- .map(t -> isLocalStarGraph(t.asAdmin(), currState))
- .collect(Collectors.toSet());
- if (states.contains('x'))
- return 'x';
- else if (!(step instanceof ByModulating)) {
+ Set<Character> states = new HashSet<>();
+ for (final Traversal.Admin<?, ?> local : ((TraversalParent) step).getLocalChildren()) {
+ final char s = isLocalStarGraph(local, currState);
+ if ('x' == s) return 'x';
+ states.add(s);
+ }
+ if (!(step instanceof ByModulating)) {
if (states.contains('u'))
state = 'u';
else if (states.contains('e'))
state = 'e';
}
- states = ((TraversalParent) step).getGlobalChildren().stream()
- .map(t -> isLocalStarGraph(t.asAdmin(), currState))
- .collect(Collectors.toSet());
- if (states.contains('x'))
- return 'x';
- else if (states.contains('u'))
+ states.clear();
+ for (final Traversal.Admin<?, ?> local : ((TraversalParent) step).getGlobalChildren()) {
+ final char s = isLocalStarGraph(local, currState);
+ if ('x' == s) return 'x';
+ states.add(s);
+ }
+ if (states.contains('u'))
state = 'u';
else if (states.contains('e'))
state = 'e';
@@ -223,17 +225,21 @@ public final class TraversalHelper {
}
public static <S> List<S> getStepsOfClass(final Class<S> stepClass, final Traversal.Admin<?, ?> traversal) {
- List<S> steps = new ArrayList<>();
- for (Step step : traversal.getSteps()) {
- if (step.getClass().equals(stepClass)) {
+ final List<S> steps = new ArrayList<>();
+ for (final Step step : traversal.getSteps()) {
+ if (step.getClass().equals(stepClass))
steps.add((S) step);
- }
}
return steps;
}
public static <S> List<S> getStepsOfAssignableClass(final Class<S> stepClass, final Traversal.Admin<?, ?> traversal) {
- return (List) traversal.getSteps().stream().filter(step -> stepClass.isAssignableFrom(step.getClass())).collect(Collectors.toList());
+ final List<S> steps = new ArrayList<>();
+ for (final Step step : traversal.getSteps()) {
+ if (stepClass.isAssignableFrom(step.getClass()))
+ steps.add((S) step);
+ }
+ return steps;
}
public static <S> Optional<S> getLastStepOfAssignableClass(final Class<S> stepClass, final Traversal.Admin<?, ?> traversal) {
@@ -242,7 +248,11 @@ public final class TraversalHelper {
}
public static <S> Optional<S> getFirstStepOfAssignableClass(final Class<S> stepClass, final Traversal.Admin<?, ?> traversal) {
- return (Optional<S>) traversal.getSteps().stream().filter(step -> stepClass.isAssignableFrom(step.getClass())).findFirst();
+ for (final Step step : traversal.getSteps()) {
+ if (stepClass.isAssignableFrom(step.getClass()))
+ return Optional.of((S) step);
+ }
+ return Optional.empty();
}
public static <S> List<S> getStepsOfAssignableClassRecursively(final Class<S> stepClass, final Traversal.Admin<?, ?> traversal) {
@@ -447,6 +457,10 @@ public final class TraversalHelper {
}
}
+ /**
+ * @deprecated Since 3.2.3. Only used by {@link org.apache.tinkerpop.gremlin.process.traversal.step.map.GroupStepV3d0}.
+ */
+ @Deprecated
public static <S> void addToCollectionUnrollIterator(final Collection<S> collection, final S s, final long bulk) {
if (s instanceof Iterator) {
((Iterator<S>) s).forEachRemaining(r -> addToCollection(collection, r, bulk));
@@ -521,8 +535,12 @@ public final class TraversalHelper {
for (final Step<?, ?> step : traversal.getSteps()) {
labels.addAll(step.getLabels());
if (step instanceof TraversalParent) {
- ((TraversalParent) step).getLocalChildren().forEach(child -> getLabels(labels, child));
- ((TraversalParent) step).getGlobalChildren().forEach(child -> getLabels(labels, child));
+ for (final Traversal.Admin<?, ?> local : ((TraversalParent) step).getLocalChildren()) {
+ TraversalHelper.getLabels(labels, local);
+ }
+ for (final Traversal.Admin<?, ?> global : ((TraversalParent) step).getGlobalChildren()) {
+ TraversalHelper.getLabels(labels, global);
+ }
}
}
return labels;
@@ -547,9 +565,14 @@ public final class TraversalHelper {
if (((MatchStep.MatchStartStep) startStep).getSelectKey().isPresent())
variables.add(Scoping.Variable.START);
} else if (startStep instanceof MatchStep) {
- ((MatchStep<?, ?>) startStep).getGlobalChildren().forEach(child -> TraversalHelper.getVariableLocations(variables, child));
- } else if (startStep instanceof ConnectiveStep || startStep instanceof NotStep || startStep instanceof WhereTraversalStep)
- ((TraversalParent) startStep).getLocalChildren().forEach(child -> TraversalHelper.getVariableLocations(variables, child));
+ for (final Traversal.Admin<?, ?> global : ((MatchStep<?, ?>) startStep).getGlobalChildren()) {
+ TraversalHelper.getVariableLocations(variables, global);
+ }
+ } else if (startStep instanceof ConnectiveStep || startStep instanceof NotStep || startStep instanceof WhereTraversalStep) {
+ for (final Traversal.Admin<?, ?> local : ((TraversalParent) startStep).getLocalChildren()) {
+ TraversalHelper.getVariableLocations(variables, local);
+ }
+ }
///
final Step<?, ?> endStep = traversal.getEndStep();
if (endStep instanceof WherePredicateStep) {
@@ -569,7 +592,7 @@ public final class TraversalHelper {
public static boolean onGraphComputer(Traversal.Admin<?, ?> traversal) {
while (!(traversal.getParent() instanceof EmptyStep)) {
- if (traversal.getParent().asStep() instanceof TraversalVertexProgramStep)
+ if (traversal.getParent() instanceof TraversalVertexProgramStep)
return true;
traversal = traversal.getParent().asStep().getTraversal();
}
@@ -577,7 +600,8 @@ public final class TraversalHelper {
}
public static void removeAllSteps(final Traversal.Admin<?, ?> traversal) {
- while (!traversal.getSteps().isEmpty()) {
+ final int size = traversal.getSteps().size();
+ for (int i = 0; i < size; i++) {
traversal.removeStep(0);
}
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/04226c9e/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/TraversalHelperTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/TraversalHelperTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/TraversalHelperTest.java
index 8505215..dbba314 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/TraversalHelperTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/TraversalHelperTest.java
@@ -31,9 +31,11 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.filter.HasStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.LambdaFilterStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.TraversalFilterStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.WhereTraversalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.FlatMapStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertiesStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.TraversalFlatMapStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.TraversalMapStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.IdentityStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal;
@@ -44,6 +46,9 @@ import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
import org.junit.Test;
import org.mockito.Mockito;
+import java.util.Set;
+import java.util.stream.Collectors;
+
import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertEquals;
@@ -326,4 +331,48 @@ public class TraversalHelperTest {
assertFalse(TraversalHelper.isLocalStarGraph(__.coalesce(out("likes"), out("knows"), out("created")).groupCount().by("name").asAdmin()));
assertFalse(TraversalHelper.isLocalStarGraph(__.local(__.out()).groupCount().by("name").asAdmin()));
}
+
+ @Test
+ public void shouldGetStepsByClass() {
+ Set<String> labels = (Set) TraversalHelper.getStepsOfClass(VertexStep.class, __.out().as("a").values("name").as("b").in().as("c").groupCount().as("d").asAdmin())
+ .stream()
+ .flatMap(s -> s.getLabels().stream())
+ .collect(Collectors.toSet());
+ assertEquals(2, labels.size());
+ assertTrue(labels.contains("a"));
+ assertTrue(labels.contains("c"));
+ //
+ labels = (Set) TraversalHelper.getStepsOfAssignableClass(VertexStep.class, __.out().as("a").values("name").as("b").in().as("c").groupCount().as("d").asAdmin())
+ .stream()
+ .flatMap(s -> s.getLabels().stream())
+ .collect(Collectors.toSet());
+ assertEquals(2, labels.size());
+ assertTrue(labels.contains("a"));
+ assertTrue(labels.contains("c"));
+ //
+ labels = (Set) TraversalHelper.getStepsOfAssignableClass(FlatMapStep.class, __.out().as("a").values("name").as("b").in().as("c").groupCount().as("d").asAdmin())
+ .stream()
+ .flatMap(s -> s.getLabels().stream())
+ .collect(Collectors.toSet());
+ assertEquals(3, labels.size());
+ assertTrue(labels.contains("a"));
+ assertTrue(labels.contains("b"));
+ assertTrue(labels.contains("c"));
+ //
+ labels = (Set) TraversalHelper.getStepsOfClass(Step.class, __.out().as("a").values("name").as("b").in().as("c").groupCount().as("d").asAdmin())
+ .stream()
+ .flatMap(s -> s.getLabels().stream())
+ .collect(Collectors.toSet());
+ assertEquals(0, labels.size());
+ //
+ labels = (Set) TraversalHelper.getStepsOfAssignableClass(Step.class, __.out().as("a").values("name").as("b").in().as("c").groupCount().as("d").asAdmin())
+ .stream()
+ .flatMap(s -> s.getLabels().stream())
+ .collect(Collectors.toSet());
+ assertEquals(4, labels.size());
+ assertTrue(labels.contains("a"));
+ assertTrue(labels.contains("b"));
+ assertTrue(labels.contains("c"));
+ assertTrue(labels.contains("d"));
+ }
}