diff --git a/spring-web-reactive/src/main/java/org/springframework/core/io/buffer/support/DataBufferUtils.java b/spring-web-reactive/src/main/java/org/springframework/core/io/buffer/support/DataBufferUtils.java index 5888ce8f34..745b42d42e 100644 --- a/spring-web-reactive/src/main/java/org/springframework/core/io/buffer/support/DataBufferUtils.java +++ b/spring-web-reactive/src/main/java/org/springframework/core/io/buffer/support/DataBufferUtils.java @@ -59,38 +59,42 @@ public abstract class DataBufferUtils { } /** - * Returns the given data buffer publisher as an input stream, streaming over all - * underlying buffers when available. + * Returns the given data buffer publisher as a blocking input stream, streaming over + * all underlying buffers when available. * @param publisher the publisher to create the input stream for * @return the input stream */ public static InputStream toInputStream(Publisher publisher) { Iterable streams = Flux.from(publisher). map(DataBuffer::asInputStream). - toIterable(); + toIterable(1); Enumeration enumeration = - new IteratorEnumeration(streams); + new IteratorEnumeration(streams.iterator()); return new SequenceInputStream(enumeration); } + /** + * Enumeration wrapping an Iterator. + */ + // TODO: move to CollectionUtils when we merge with Spring Framework? private static class IteratorEnumeration implements Enumeration { - private final Iterator delegate; + private final Iterator iterator; - public IteratorEnumeration(Iterable iterable) { - this.delegate = iterable.iterator(); + public IteratorEnumeration(Iterator iterator) { + this.iterator = iterator; } @Override public boolean hasMoreElements() { - return delegate.hasNext(); + return this.iterator.hasNext(); } @Override public T nextElement() { - return delegate.next(); + return this.iterator.next(); } }