Repository: jclouds Updated Branches: refs/heads/master bde70457d -> d6454b822
Disentangle Iterable and Iterator Found via error-prone. Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/d6454b82 Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/d6454b82 Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/d6454b82 Branch: refs/heads/master Commit: d6454b822fa872389034577c27cb5cee4c37e965 Parents: bde7045 Author: Andrew Gaul <[email protected]> Authored: Mon Jun 20 10:14:48 2016 -0700 Committer: Andrew Gaul <[email protected]> Committed: Mon Jun 20 10:21:01 2016 -0700 ---------------------------------------------------------------------- .../jclouds/io/internal/BasePayloadSlicer.java | 47 ++++++++++++++------ 1 file changed, 33 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/d6454b82/core/src/main/java/org/jclouds/io/internal/BasePayloadSlicer.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/jclouds/io/internal/BasePayloadSlicer.java b/core/src/main/java/org/jclouds/io/internal/BasePayloadSlicer.java index 6718582..8de6b02 100644 --- a/core/src/main/java/org/jclouds/io/internal/BasePayloadSlicer.java +++ b/core/src/main/java/org/jclouds/io/internal/BasePayloadSlicer.java @@ -45,8 +45,22 @@ import com.google.common.io.Files; @Singleton public class BasePayloadSlicer implements PayloadSlicer { - private static class InputStreamPayloadIterator implements Iterable<Payload>, Iterator<Payload> { + private static final class InputStreamPayloadIterable implements Iterable<Payload> { + private final InputStream input; + private final ContentMetadata metaData; + + InputStreamPayloadIterable(InputStream input, ContentMetadata metaData) { + this.input = checkNotNull(input, "input"); + this.metaData = checkNotNull(metaData, "metaData"); + } + + @Override + public Iterator<Payload> iterator() { + return new InputStreamPayloadIterator(input, metaData); + } + } + private static final class InputStreamPayloadIterator implements Iterator<Payload> { private final InputStream input; private final ContentMetadata metaData; private Payload nextPayload; @@ -83,11 +97,6 @@ public class BasePayloadSlicer implements PayloadSlicer { throw new UnsupportedOperationException("Payload iterator does not support removal"); } - @Override - public Iterator<Payload> iterator() { - return this; - } - private Payload getNextPayload() { byte[] content = new byte[readLen]; int offset = 0; @@ -125,7 +134,22 @@ public class BasePayloadSlicer implements PayloadSlicer { } - private static class ByteSourcePayloadIterator implements Iterable<Payload>, Iterator<Payload> { + private static final class ByteSourcePayloadIterable implements Iterable<Payload> { + private final ByteSource input; + private final ContentMetadata metaData; + + ByteSourcePayloadIterable(ByteSource input, ContentMetadata metaData) { + this.input = checkNotNull(input, "input"); + this.metaData = checkNotNull(metaData, "metaData"); + } + + @Override + public Iterator<Payload> iterator() { + return new ByteSourcePayloadIterator(input, metaData); + } + } + + private static final class ByteSourcePayloadIterator implements Iterator<Payload> { private final ByteSource input; private final ContentMetadata metaData; private Payload nextPayload; @@ -161,11 +185,6 @@ public class BasePayloadSlicer implements PayloadSlicer { throw new UnsupportedOperationException("Payload iterator does not support removal"); } - @Override - public Iterator<Payload> iterator() { - return this; - } - private Payload getNextPayload() { ByteSource byteSource; long byteSourceSize; @@ -297,10 +316,10 @@ public class BasePayloadSlicer implements PayloadSlicer { } protected Iterable<Payload> doSlice(InputStream rawContent, ContentMetadata meta) { - return new InputStreamPayloadIterator(rawContent, meta); + return new InputStreamPayloadIterable(rawContent, meta); } protected Iterable<Payload> doSlice(ByteSource rawContent, ContentMetadata meta) { - return new ByteSourcePayloadIterator(rawContent, meta); + return new ByteSourcePayloadIterable(rawContent, meta); } }
