@SuppressWarnings("deprecation") private void initialize() { assert !initialized; initialized = true; assert getReturnType().forProperties() || (orders.isEmpty() && hasContainers.isEmpty()); if (!starts.hasNext()) throw FastNoSuchElementException.instance(); List<Traverser.Admin<Element>> elements = new ArrayList<>(); starts.forEachRemaining(v -> elements.add(v)); starts.add(elements.iterator()); assert elements.size() > 0; useMultiQuery = useMultiQuery && elements.stream().noneMatch(e -> !(e.get() instanceof Vertex)); if (useMultiQuery) { TitanMultiVertexQuery mquery = TitanTraversalUtil.getTx(traversal).multiQuery(); elements.forEach(e -> mquery.addVertex((Vertex) e.get())); makeQuery(mquery); multiQueryResults = mquery.properties(); } }
@SuppressWarnings("deprecation") private void initialize() { assert !initialized; initialized = true; assert getReturnType().forProperties() || (orders.isEmpty() && hasContainers.isEmpty()); if (!starts.hasNext()) throw FastNoSuchElementException.instance(); final List<Traverser.Admin<Element>> elements = new ArrayList<>(); starts.forEachRemaining(elements::add); starts.add(elements.iterator()); assert elements.size() > 0; useMultiQuery = useMultiQuery && elements.stream().allMatch(e -> e.get() instanceof Vertex); if (useMultiQuery) { final JanusGraphMultiVertexQuery multiQuery = JanusGraphTraversalUtil.getTx(traversal).multiQuery(); elements.forEach(e -> multiQuery.addVertex((Vertex) e.get())); makeQuery(multiQuery); multiQueryResults = multiQuery.properties(); } }
@SuppressWarnings("deprecation") private void initialize() { assert !initialized; initialized = true; if (useMultiQuery) { if (!starts.hasNext()) throw FastNoSuchElementException.instance(); TitanMultiVertexQuery mquery = TitanTraversalUtil.getTx(traversal).multiQuery(); List<Traverser.Admin<Vertex>> vertices = new ArrayList<>(); starts.forEachRemaining(v -> { vertices.add(v); mquery.addVertex(v.get()); }); starts.add(vertices.iterator()); assert vertices.size() > 0; makeQuery(mquery); multiQueryResults = (Vertex.class.isAssignableFrom(getReturnClass())) ? mquery.vertices() : mquery.edges(); } }
@SuppressWarnings("deprecation") private void initialize() { assert !initialized; initialized = true; if (useMultiQuery) { if (!starts.hasNext()) { throw FastNoSuchElementException.instance(); } final JanusGraphMultiVertexQuery multiQuery = JanusGraphTraversalUtil.getTx(traversal).multiQuery(); final List<Traverser.Admin<Vertex>> vertices = new ArrayList<>(); starts.forEachRemaining(v -> { vertices.add(v); multiQuery.addVertex(v.get()); }); starts.add(vertices.iterator()); assert vertices.size() > 0; makeQuery(multiQuery); multiQueryResults = (Vertex.class.isAssignableFrom(getReturnClass())) ? multiQuery.vertices() : multiQuery.edges(); } }
@Override public void processAllStarts() { if (this.starts.hasNext()) { if (Integer.MAX_VALUE == this.maxBarrierSize) { this.starts.forEachRemaining(this.traverserSet::add); } else { while (this.starts.hasNext() && this.traverserSet.size() < this.maxBarrierSize) { this.traverserSet.add(this.starts.next()); } } } }
@Override public Traverser.Admin<S> processNextStart() { if (this.bypass) { // If we are bypassing this step, let everything through. return this.starts.next(); } else { // Pull everything available before we start delivering from the tail buffer. if (this.starts.hasNext()) { this.starts.forEachRemaining(this::addTail); } // Pull the oldest traverser from the tail buffer. final Traverser.Admin<S> oldest = this.tail.pop(); // Trim any excess from the oldest traverser. final long excess = this.tailBulk - this.limit; if (excess > 0) { oldest.setBulk(oldest.bulk() - excess); // Account for the loss of excess in the tail buffer this.tailBulk -= excess; } // Account for the loss of bulk in the tail buffer as we emit the oldest traverser. this.tailBulk -= oldest.bulk(); return oldest; } }
@SuppressWarnings("deprecation") private void initialize() { assert !initialized; initialized = true; assert getReturnType().forProperties() || (orders.isEmpty() && hasContainers.isEmpty()); if (!starts.hasNext()) throw FastNoSuchElementException.instance(); List<Traverser.Admin<Element>> elements = new ArrayList<>(); starts.forEachRemaining(v -> elements.add(v)); starts.add(elements.iterator()); assert elements.size() > 0; useMultiQuery = useMultiQuery && elements.stream().noneMatch(e -> !(e.get() instanceof Vertex)); if (useMultiQuery) { TitanMultiVertexQuery mquery = TitanTraversalUtil.getTx(traversal).multiQuery(); elements.forEach(e -> mquery.addVertex((Vertex) e.get())); makeQuery(mquery); multiQueryResults = mquery.properties(); } }
@SuppressWarnings("deprecation") private void initialize() { assert !initialized; initialized = true; if (useMultiQuery) { if (!starts.hasNext()) throw FastNoSuchElementException.instance(); TitanMultiVertexQuery mquery = TitanTraversalUtil.getTx(traversal).multiQuery(); List<Traverser.Admin<Vertex>> vertices = new ArrayList<>(); starts.forEachRemaining(v -> { vertices.add(v); mquery.addVertex(v.get()); }); starts.add(vertices.iterator()); assert vertices.size() > 0; makeQuery(mquery); multiQueryResults = (Vertex.class.isAssignableFrom(getReturnClass())) ? mquery.vertices() : mquery.edges(); } }
@Override public void processAllStarts() { if (this.starts.hasNext()) { if (Integer.MAX_VALUE == this.maxBarrierSize) { this.starts.forEachRemaining(this.traverserSet::add); } else { while (this.starts.hasNext() && this.traverserSet.size() < this.maxBarrierSize) { this.traverserSet.add(this.starts.next()); } } } }
@Override public Traverser.Admin<S> processNextStart() { if (this.bypass) { // If we are bypassing this step, let everything through. return this.starts.next(); } else { // Pull everything available before we start delivering from the tail buffer. if (this.starts.hasNext()) { this.starts.forEachRemaining(this::addTail); } // Pull the oldest traverser from the tail buffer. final Traverser.Admin<S> oldest = this.tail.pop(); // Trim any excess from the oldest traverser. final long excess = this.tailBulk - this.limit; if (excess > 0) { oldest.setBulk(oldest.bulk() - excess); // Account for the loss of excess in the tail buffer this.tailBulk -= excess; } // Account for the loss of bulk in the tail buffer as we emit the oldest traverser. this.tailBulk -= oldest.bulk(); return oldest; } }
@Override protected Traverser.Admin<S> processNextStart() throws NoSuchElementException { if (this.starts.hasNext()) { this.starts.forEachRemaining(start -> { start.setSideEffects(new DefaultTraversalSideEffects() {{ register("_whereStep", () -> start, (sAdmin, sAdmin2) -> sAdmin);