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.
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 b1bd930..67864cd 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 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 4524411..00db330 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.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 @@
*/
@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 5a23418..9121c12 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 @@
}
@Override
- public InputStream getInput() {
- return realPayload.getInput();
+ public InputStream openStream() throws IOException {
+ return realPayload.openStream();
}
@Override