Sorry for the duplicate commit; I am still trying to wrap my head around the workflow. I had to cherry-pick from my local branch into master then push to remote master to succeed. Thanks Adrian for the suggestion!
On Fri, May 10, 2013 at 10:43:31PM +0000, [email protected] wrote: > Updated Branches: > refs/heads/slice-supplier [created] 6b48babcf > > > JCLOUDS-27: Allow repeatable Payload with InputSupplier input > > This allows HTTP retries to work. Also remove duplicated calls to > ByteStreams.slice. > > > Project: http://git-wip-us.apache.org/repos/asf/incubator-jclouds/repo > Commit: > http://git-wip-us.apache.org/repos/asf/incubator-jclouds/commit/6b48babc > Tree: http://git-wip-us.apache.org/repos/asf/incubator-jclouds/tree/6b48babc > Diff: http://git-wip-us.apache.org/repos/asf/incubator-jclouds/diff/6b48babc > > Branch: refs/heads/slice-supplier > Commit: 6b48babcf07b0a6930015956272eaf5f8a9b6772 > Parents: ffc05ee > Author: Andrew Gaul <[email protected]> > Authored: Fri May 10 15:39:48 2013 -0700 > Committer: Andrew Gaul <[email protected]> > Committed: Fri May 10 15:39:48 2013 -0700 > > ---------------------------------------------------------------------- > .../org/jclouds/io/internal/BasePayloadSlicer.java | 13 ++++++++++--- > 1 files changed, 10 insertions(+), 3 deletions(-) > ---------------------------------------------------------------------- > > > http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/6b48babc/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 5af5066..a7f814c 100644 > --- a/core/src/main/java/org/jclouds/io/internal/BasePayloadSlicer.java > +++ b/core/src/main/java/org/jclouds/io/internal/BasePayloadSlicer.java > @@ -36,6 +36,7 @@ import org.jclouds.io.payloads.InputStreamSupplierPayload; > import com.google.common.base.Throwables; > import com.google.common.io.ByteStreams; > import com.google.common.io.Files; > +import com.google.common.io.InputSupplier; > > /** > * > @@ -58,14 +59,16 @@ public class BasePayloadSlicer implements PayloadSlicer { > returnVal = doSlice((String) input.getRawContent(), offset, length); > } else if (input.getRawContent() instanceof byte[]) { > returnVal = doSlice((byte[]) input.getRawContent(), offset, length); > + } else if (input.getRawContent() instanceof InputStream) { > + returnVal = doSlice((InputStream) input.getRawContent(), offset, > length); > } else { > - returnVal = doSlice(input.getInput(), offset, length); > + returnVal = doSlice(input, offset, length); > } > return copyMetadataAndSetLength(input, returnVal, length); > } > > protected Payload doSlice(Payload content, long offset, long length) { > - return new InputStreamSupplierPayload(ByteStreams.slice(content, > offset, length)); > + return doSlice((InputSupplier<? extends InputStream>) content, offset, > length); > } > > protected Payload doSlice(String content, long offset, long length) { > @@ -73,7 +76,7 @@ public class BasePayloadSlicer implements PayloadSlicer { > } > > protected Payload doSlice(File content, long offset, long length) { > - return new > InputStreamSupplierPayload(ByteStreams.slice(Files.newInputStreamSupplier(content), > offset, length)); > + return doSlice(Files.newInputStreamSupplier(content), offset, length); > } > > protected Payload doSlice(InputStream content, long offset, long length) { > @@ -85,6 +88,10 @@ public class BasePayloadSlicer implements PayloadSlicer { > return new InputStreamPayload(ByteStreams.limit(content, length)); > } > > + protected Payload doSlice(InputSupplier<? extends InputStream> content, > long offset, long length) { > + return new InputStreamSupplierPayload(ByteStreams.slice(content, > offset, length)); > + } > + > protected Payload doSlice(byte[] content, long offset, long length) { > Payload returnVal; > checkArgument(offset <= Integer.MAX_VALUE, "offset is too big for an > array"); -- Andrew Gaul http://gaul.org/
