/** * Create a stream from the given iterator. * <p> * <b>Note:</b> returned stream needs to be closed via {@link Stream#close()} if the given iterator implements * {@link Resource}. * * @param iterator the iterator to convert to stream * @param <T> the type of elements in the given iterator * @return stream over the iterator elements * @throws NullPointerException when the given stream is {@code null} */ public static <T> Stream<T> stream( Iterator<T> iterator ) { return stream( iterator, 0 ); }
private static <T> Stream<T> toStream( PrimitiveLongResourceIterator iterator, LongFunction<T> mapper ) { Iterator<T> it = new Iterator<T>() { @Override public boolean hasNext() { return iterator.hasNext(); } @Override public T next() { return mapper.apply( iterator.next() ); } }; return Iterators.stream( it, Spliterator.ORDERED ); }
/** * @return these index hits in a {@link Stream} */ @Deprecated @Override default Stream<T> stream() { // Implementation note: we need this for two reasons: // one, to disambiguate #stream between ResourceIterator and ResourceIterable, // two, because implementations of this return themselves on #iterator, so we can't // use #iterator().stream(), that then causes stack overflows. return Iterators.stream( this ); }
private Stream<WeightedRelationshipResult> toWeightedRelationshipResultStream( RelationshipExplicitIndexCursor cursor ) { Iterator<WeightedRelationshipResult> it = new PrefetchingResourceIterator<WeightedRelationshipResult>() { @Override public void close() { cursor.close(); } @Override protected WeightedRelationshipResult fetchNextOrNull() { if ( cursor.next() ) { return new WeightedRelationshipResult( graphDatabaseAPI.getRelationshipById( cursor.relationshipReference() ), cursor.score() ); } else { close(); return null; } } }; return Iterators.stream( it, Spliterator.ORDERED ); }
private static <T> Stream<T> toStream( NodeExplicitIndexCursor cursor, LongFunction<T> mapper ) { PrefetchingResourceIterator<T> it = new PrefetchingResourceIterator<T>() { @Override protected T fetchNextOrNull() { if ( cursor.next() ) { return mapper.apply( cursor.nodeReference() ); } else { close(); return null; } } @Override public void close() { cursor.close(); } }; return Iterators.stream( it, Spliterator.ORDERED ); }
private static <T> Stream<T> toStream( RelationshipExplicitIndexCursor cursor, LongFunction<T> mapper ) { PrefetchingResourceIterator<T> it = new PrefetchingResourceIterator<T>() { @Override protected T fetchNextOrNull() { if ( cursor.next() ) { return mapper.apply( cursor.relationshipReference() ); } else { close(); return null; } } @Override public void close() { cursor.close(); } }; return Iterators.stream( it, Spliterator.ORDERED ); }
private Stream<WeightedNodeResult> toWeightedNodeResultStream( NodeExplicitIndexCursor cursor ) { Iterator<WeightedNodeResult> it = new PrefetchingResourceIterator<WeightedNodeResult>() { @Override public void close() { cursor.close(); } @Override protected WeightedNodeResult fetchNextOrNull() { if ( cursor.next() ) { return new WeightedNodeResult( graphDatabaseAPI.getNodeById( cursor.nodeReference() ), cursor.score() ); } else { close(); return null; } } }; return Iterators.stream( it, Spliterator.ORDERED ); }
/** * @return instances of all classes with loadable configuration options */ static List<LoadableConfig> allConfigClasses() { return Iterators.stream( ServiceLoader.load( LoadableConfig.class ).iterator() ).collect( Collectors.toList() ); } }
/** * Create a stream from the given iterable with given characteristics. * <p> * <b>Note:</b> returned stream needs to be closed via {@link Stream#close()} if the given iterable implements * {@link Resource}. * * @param iterable the iterable to convert to stream * @param characteristics the logical OR of characteristics for the underlying {@link Spliterator} * @param <T> the type of elements in the given iterable * @return stream over the iterable elements * @throws NullPointerException when the given iterable is {@code null} */ public static <T> Stream<T> stream( Iterable<T> iterable, int characteristics ) { Objects.requireNonNull( iterable ); return Iterators.stream( iterable.iterator(), characteristics ); }
@Override public boolean isDirty() { return Iterators.stream( iterator() ).anyMatch( NativeIndexAccessor::isDirty ); }
@Override public boolean isDirty() { return Iterators.stream( iterator() ).anyMatch( NativeIndexAccessor::isDirty ); }
@Override public Iterator<NamedToken> propertyKeyGetAllTokens() { ktx.assertOpen(); AccessMode mode = ktx.securityContext().mode(); return Iterators.stream( tokenHolders.propertyKeyTokens().getAllTokens().iterator() ) .filter( propKey -> mode.allowsPropertyReads( propKey.id() ) ) .iterator(); }
@Test void iteratorsStream() { List<Object> list = asList( 1, 2, "3", '4', null, "abc", "56789" ); Iterator<Object> iterator = list.iterator(); assertEquals( list, Iterators.stream( iterator ).collect( toList() ) ); }
@Test void iteratorsStreamClosesResourceIterator() { List<Object> list = asList( "a", "b", "c", "def" ); Resource resource = mock( Resource.class ); ResourceIterator<Object> iterator = Iterators.resourceIterator( list.iterator(), resource ); try ( Stream<Object> stream = Iterators.stream( iterator ) ) { assertEquals( list, stream.collect( toList() ) ); } verify( resource ).close(); }
@Test void iteratorsStreamForNull() { assertThrows( NullPointerException.class, () -> Iterators.stream( null ) ); }
@Test void iteratorsStreamCharacteristics() { Iterator<Integer> iterator = asList( 1, 2, 3 ).iterator(); int characteristics = Spliterator.DISTINCT | Spliterator.ORDERED | Spliterator.SORTED; Stream<Integer> stream = Iterators.stream( iterator, characteristics ); assertEquals( characteristics, stream.spliterator().characteristics() ); }
private void verifyContent() { GraphDatabaseAPI newDb = db.getGraphDatabaseAPI(); try ( Transaction tx = newDb.beginTx() ) { assertEquals( 1L, Iterators.stream( newDb.schema().getIndexes( label ).iterator() ).count() ); assertNotNull( newDb.findNode( label, propKey, numberValue ) ); assertNotNull( newDb.findNode( label, propKey, stringValue ) ); assertNotNull( newDb.findNode( label, propKey, spatialValue ) ); assertNotNull( newDb.findNode( label, propKey, temporalValue ) ); tx.success(); } }
@Override public boolean isDirty() { return Iterators.stream( iterator() ).anyMatch( NativeIndexAccessor::isDirty ); }
@Override public boolean isDirty() { return Iterators.stream( iterator() ).anyMatch( NativeIndexAccessor::isDirty ); }
@Override public Iterator<NamedToken> propertyKeyGetAllTokens() { ktx.assertOpen(); AccessMode mode = ktx.securityContext().mode(); return Iterators.stream( tokenHolders.propertyKeyTokens().getAllTokens().iterator() ) .filter( propKey -> mode.allowsPropertyReads( propKey.id() ) ) .iterator(); }