public void queryForValues()

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);
            }
        });
    }