From 9d2e4759a3be6af4856ad48aefe2a63bef65886f Mon Sep 17 00:00:00 2001 From: Andrew Gaul Date: Mon, 16 Dec 2013 20:28:24 -0800 Subject: [PATCH] JCLOUDS-410. Correctly override getInput Payload.getInput must always call openStream to handle overridden methods correctly. Previously this caused errors in jclouds-chef in BaseCipherPayload. --- .../java/org/jclouds/io/payloads/BaseCipherPayload.java | 4 ++-- .../java/org/jclouds/io/payloads/DelegatingPayload.java | 8 +++++++- .../java/org/jclouds/io/payloads/MultipartFormTest.java | 4 ++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/org/jclouds/io/payloads/BaseCipherPayload.java b/core/src/main/java/org/jclouds/io/payloads/BaseCipherPayload.java index b1bd930c01..67864cd9ce 100644 --- a/core/src/main/java/org/jclouds/io/payloads/BaseCipherPayload.java +++ b/core/src/main/java/org/jclouds/io/payloads/BaseCipherPayload.java @@ -44,8 +44,8 @@ public abstract class BaseCipherPayload extends DelegatingPayload { public abstract Cipher initializeCipher(Key key); @Override - public CipherInputStream openStream() { - return new CipherInputStream(super.getInput(), initializeCipher(key)); + public CipherInputStream openStream() throws IOException { + return new CipherInputStream(super.openStream(), initializeCipher(key)); } @Override diff --git a/core/src/main/java/org/jclouds/io/payloads/DelegatingPayload.java b/core/src/main/java/org/jclouds/io/payloads/DelegatingPayload.java index 452441110b..00db330cf1 100644 --- a/core/src/main/java/org/jclouds/io/payloads/DelegatingPayload.java +++ b/core/src/main/java/org/jclouds/io/payloads/DelegatingPayload.java @@ -22,6 +22,8 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import com.google.common.base.Throwables; + import org.jclouds.io.MutableContentMetadata; import org.jclouds.io.Payload; @@ -50,7 +52,11 @@ public class DelegatingPayload implements Payload { */ @Override public InputStream getInput() { - return delegate.getInput(); + try { + return openStream(); + } catch (IOException ioe) { + throw Throwables.propagate(ioe); + } } /** diff --git a/core/src/test/java/org/jclouds/io/payloads/MultipartFormTest.java b/core/src/test/java/org/jclouds/io/payloads/MultipartFormTest.java index 5a23418548..9121c1284e 100644 --- a/core/src/test/java/org/jclouds/io/payloads/MultipartFormTest.java +++ b/core/src/test/java/org/jclouds/io/payloads/MultipartFormTest.java @@ -74,8 +74,8 @@ public class MultipartFormTest { } @Override - public InputStream getInput() { - return realPayload.getInput(); + public InputStream openStream() throws IOException { + return realPayload.openStream(); } @Override