in src/main/java/com/amazonaws/services/neptune/propertygraph/SpecifiedLabels.java [44:82]
public GraphTraversal<? extends Element, ?> apply(GraphTraversal<? extends Element, ?> traversal, FeatureToggles featureToggles, GraphElementType graphElementType) {
boolean simpleEdgeLabels = graphElementType == GraphElementType.edges &&
labels.stream().allMatch(l -> !l.hasFromLabels() && !l.hasToLabels());
if (simpleEdgeLabels || featureToggles.containsFeature(FeatureToggle.ExportByIndividualLabels)) {
List<String> labelList = labels.stream()
.flatMap((Function<Label, Stream<String>>) label -> label.labels().stream())
.collect(Collectors.toList());
String firstLabel = labelList.stream().findFirst().orElseThrow(() -> new IllegalStateException("No labels specified"));
String[] remainingLabels = labelList.stream()
.skip(1)
.collect(Collectors.toList())
.toArray(new String[]{});
return traversal.hasLabel(firstLabel, remainingLabels);
} else {
if (labels.size() > 1) {
List<Traversal<?, ?>> traversals = new ArrayList<>();
for (Label label : labels) {
traversals.add(createFilterForLabel(label, null));
}
traversal = traversal.or(traversals.toArray(new Traversal<?, ?>[]{}));
} else {
Label label = labels.iterator().next();
traversal = createFilterForLabel(label, traversal);
}
return traversal;
}
}