public static final <S> Iterator<S> concat(final Iterator<S>... iterators) { final MultiIterator<S> iterator = new MultiIterator<>(); for (final Iterator<S> itty : iterators) { iterator.addIterator(itty); } return iterator; }
final Direction direction = TinkerMessenger.getDirection(incidentTraversal); final Edge[] edge = new Edge[1]; // simulates storage side-effects available in Gremlin, but not Java8 streams multiIterator.addIterator(StreamSupport.stream(Spliterators.spliteratorUnknownSize(VertexProgramHelper.reverse(incidentTraversal.asAdmin()), Spliterator.IMMUTABLE | Spliterator.SIZED), false) .map((Edge e) -> { edge[0] = e; multiIterator.addIterator(Stream.of(this.vertex) .map(this.messageBoard.receiveMessages.get(messageScope)::get) .filter(q -> null != q)
public static final <S> Iterator<S> concat(final Iterator<S>... iterators) { final MultiIterator<S> iterator = new MultiIterator<>(); for (final Iterator<S> itty : iterators) { iterator.addIterator(itty); } return iterator; }
@Override public Iterator<M> receiveMessages() { MultiIterator<M> multiIterator = new MultiIterator<>(); for (MessageScope messageScope : messageBoard.getPreviousMessageScopes()) { if (messageScope instanceof MessageScope.Local) { @SuppressWarnings("unchecked") MessageScope.Local<M> localMessageScope = (MessageScope.Local<M>) messageScope; Traversal.Admin<Vertex, Edge> incidentTraversal = DuctileMessenger .setVertexStart(localMessageScope.getIncidentTraversal().get().asAdmin(), vertex); Direction direction = DuctileMessenger.getDirection(incidentTraversal); Edge[] edge = new Edge[1]; multiIterator.addIterator(// StreamSupport // .stream(Spliterators.spliteratorUnknownSize( VertexProgramHelper.reverse(incidentTraversal.asAdmin()), Spliterator.IMMUTABLE | Spliterator.SIZED), false)// .map(e -> messageBoard.getReceiveMessage((edge[0] = e).vertices(direction).next()))// .filter(q -> null != q)// .flatMap(Queue::stream)// .map(message -> localMessageScope.getEdgeFunction().apply(message, edge[0])) .iterator()); } else { multiIterator.addIterator(Stream.of(vertex).map(messageBoard.getReceiveMessages()::get) .filter(q -> null != q).flatMap(Queue::stream).iterator()); } } return multiIterator; }
final Direction direction = TinkerMessenger.getDirection(incidentTraversal); final Edge[] edge = new Edge[1]; // simulates storage side-effects available in Gremlin, but not Java8 streams multiIterator.addIterator(StreamSupport.stream(Spliterators.spliteratorUnknownSize(VertexProgramHelper.reverse(incidentTraversal.asAdmin()), Spliterator.IMMUTABLE | Spliterator.SIZED), false) .map((Edge e) -> { edge[0] = e; multiIterator.addIterator(Stream.of(this.vertex) .map(this.messageBoard.receiveMessages.get(messageScope)::get) .filter(q -> null != q)
final Direction direction = TinkerMessenger.getDirection(incidentTraversal); final Edge[] edge = new Edge[1]; // simulates storage side-effects available in Gremlin, but not Java8 streams multiIterator.addIterator(StreamSupport.stream(Spliterators.spliteratorUnknownSize(VertexProgramHelper.reverse(incidentTraversal.asAdmin()), Spliterator.IMMUTABLE | Spliterator.SIZED), false) .map((Edge e) -> { edge[0] = e; multiIterator.addIterator(Stream.of(this.vertex) .map(this.messageBoard.receiveMessages.get(messageScope)::get) .filter(q -> null != q)