in src/main/java/com/amazonaws/services/neptune/propertygraph/EdgesClient.java [82:131]
public void queryForValues(GraphElementHandler<PGResult> handler,
Range range,
LabelsFilter labelsFilter,
GremlinFilters gremlinFilters,
GraphElementSchemas graphElementSchemas) {
GraphTraversal<Edge, Edge> t1 = tokensOnly ?
g.withSideEffect("x", new HashMap<String, Object>()).E() :
g.E();
GraphTraversal<? extends Element, ?> t2 = labelsFilter.apply(t1, featureToggles, GraphElementType.edges);
if(!gremlinFilters.filterEdgesEarly()) {
t2 = range.applyRange(t2);
}
GraphTraversal<? extends Element, ?> t3 = filterByPropertyKeys(t2, labelsFilter, graphElementSchemas);
GraphTraversal<? extends Element, ?> t4 = gremlinFilters.applyToEdges(t3);
if(gremlinFilters.filterEdgesEarly()) {
t4 = range.applyRange(t4);
}
GraphTraversal<? extends Element, Map<String, Object>> t5 = t4.
project("~id", labelsFilter.addAdditionalColumnNames("~label", "properties", "~from", "~to")).
by(T.id).
by(T.label).
by(tokensOnly ?
select("x") :
valueMap(labelsFilter.getPropertiesForLabels(graphElementSchemas))
).
by(outV().id()).
by(inV().id());
GraphTraversal<? extends Element, Map<String, Object>> traversal = labelsFilter.addAdditionalColumns(t5);
logger.info(GremlinQueryDebugger.queryAsString(traversal));
traversal.forEachRemaining(p -> {
try {
if (featureToggles.containsFeature(FeatureToggle.Inject_Fault)){
throw new IllegalStateException("Simulated fault in EdgesClient");
}
handler.handle(new PGEdgeResult(p), false);
} catch (IOException e) {
throw new RuntimeException(e);
}
});
}