@Override public Map<Object, Traverser.Admin<S>> nextBarrier() throws NoSuchElementException { final Map<Object, Traverser.Admin<S>> map = null != this.barrier ? this.barrier : new HashMap<>(); while (this.starts.hasNext()) { final Traverser.Admin<S> traverser = this.starts.next(); final Object object; if (null != this.dedupLabels) { object = new ArrayList<>(this.dedupLabels.size()); for (final String label : this.dedupLabels) { ((List) object).add(TraversalUtil.applyNullable((S) this.getScopeValue(Pop.last, label, traverser), this.dedupTraversal)); } } else { object = TraversalUtil.applyNullable(traverser, this.dedupTraversal); } if (!map.containsKey(object)) { traverser.setBulk(1L); // traverser.detach(); traverser.set(DetachedFactory.detach(traverser.get(), true)); // TODO: detect required detachment accordingly map.put(object, traverser); } } this.barrier = null; this.barrierIterator = null; if (map.isEmpty()) throw FastNoSuchElementException.instance(); else return map; }
@Override protected Traverser.Admin<S> processNextStart() { if (this.first) { if (null != this.start) { if (this.start instanceof Iterator) this.starts.add(this.getTraversal().getTraverserGenerator().generateIterator((Iterator<S>) this.start, this, 1l)); else this.starts.add(this.getTraversal().getTraverserGenerator().generate((S) this.start, this, 1l)); } this.first = false; } /// final Traverser.Admin<S> start = this.starts.next(); if (start.get() instanceof Attachable && this.getTraversal().getGraph().isPresent() && (!(start.get() instanceof VertexProperty) || null != ((VertexProperty) start.get()).element())) start.set(((Attachable<S>) start.get()).attach(Attachable.Method.get(this.getTraversal().getGraph().get()))); return start; }
final Traverser.Admin<Object> traverser = traversers.next(); traversers.remove(); traverser.set(DetachedFactory.detach(traverser.get(), true)); // why? traverser.setSideEffects(traversal.get().getSideEffects()); if (traverser.isHalted())
final Traverser.Admin<Object> traverser = traversers.next(); traversers.remove(); traverser.set(DetachedFactory.detach(traverser.get(), true)); // why? traverser.setSideEffects(traversal.get().getSideEffects()); if (traverser.isHalted())
@Override public Map<Object, Traverser.Admin<S>> nextBarrier() throws NoSuchElementException { final Map<Object, Traverser.Admin<S>> map = null != this.barrier ? this.barrier : new HashMap<>(); while (this.starts.hasNext()) { final Traverser.Admin<S> traverser = this.starts.next(); final Object object; if (null != this.dedupLabels) { object = new ArrayList<>(this.dedupLabels.size()); for (final String label : this.dedupLabels) { ((List) object).add(TraversalUtil.applyNullable((S) this.getScopeValue(Pop.last, label, traverser), this.dedupTraversal)); } } else { object = TraversalUtil.applyNullable(traverser, this.dedupTraversal); } if (!map.containsKey(object)) { traverser.setBulk(1L); // traverser.detach(); traverser.set(DetachedFactory.detach(traverser.get(), true)); // TODO: detect required detachment accordingly map.put(object, traverser); } } this.barrier = null; this.barrierIterator = null; if (map.isEmpty()) throw FastNoSuchElementException.instance(); else return map; }
@Override protected Traverser.Admin<S> processNextStart() { if (this.first) { if (null != this.start) { if (this.start instanceof Iterator) this.starts.add(this.getTraversal().getTraverserGenerator().generateIterator((Iterator<S>) this.start, this, 1l)); else this.starts.add(this.getTraversal().getTraverserGenerator().generate((S) this.start, this, 1l)); } this.first = false; } /// final Traverser.Admin<S> start = this.starts.next(); if (start.get() instanceof Attachable && this.getTraversal().getGraph().isPresent() && (!(start.get() instanceof VertexProperty) || null != ((VertexProperty) start.get()).element())) start.set(((Attachable<S>) start.get()).attach(Attachable.Method.get(this.getTraversal().getGraph().get()))); return start; }
@Override public void set(final T t) { this.baseTraverser.set(t); }
@Override public Traverser.Admin<E> next() { final Traverser.Admin<E> traverser = super.next(); if (traverser.get() instanceof Attachable && !(traverser.get() instanceof Property)) traverser.set((E) ((Attachable<Element>) traverser.get()).attach(Attachable.Method.get(graph))); return traverser; } }
public Iterator<Traverser.Admin<S>> attach(final Iterator<Traverser.Admin<S>> iterator, final Graph graph) { return IteratorUtils.map(iterator, traverser -> { traverser.setSideEffects(this.getTraversal().getSideEffects()); // necessary to ensure no NPE if (this.attachElements && (traverser.get() instanceof Attachable) && !(traverser.get() instanceof Property)) traverser.set((S) ((Attachable<Element>) traverser.get()).attach(Attachable.Method.get(graph))); return traverser; }); }
@Override public void set(final T t) { this.baseTraverser.set(t); }
public Iterator<Traverser.Admin<S>> attach(final Iterator<Traverser.Admin<S>> iterator, final Graph graph) { return IteratorUtils.map(iterator, traverser -> { traverser.setSideEffects(this.getTraversal().getSideEffects()); // necessary to ensure no NPE if (this.attachElements && (traverser.get() instanceof Attachable) && !(traverser.get() instanceof Property)) traverser.set((S) ((Attachable<Element>) traverser.get()).attach(Attachable.Method.get(graph))); return traverser; }); }
@Override public Traverser.Admin<E> next() { final Traverser.Admin<E> traverser = super.next(); if (traverser.get() instanceof Attachable && !(traverser.get() instanceof Property)) traverser.set((E) ((Attachable<Element>) traverser.get()).attach(Attachable.Method.get(graph))); return traverser; } }
private static void attachReferenceElements(TraverserSet<Object> toProcessTraversers, Graph graph) { toProcessTraversers.forEach(traverser -> { Object value = traverser.get(); if (value instanceof ReferenceVertex) { Vertex vertex = ((ReferenceVertex) value).attach(Attachable.Method.get(graph)); traverser.set(vertex); } else if (value instanceof ReferenceEdge) { Edge edge = ((ReferenceEdge) value).attach(Attachable.Method.get(graph)); traverser.set(edge); } }); }