diff --git a/extensions/apachehc/pom.xml b/extensions/apachehc/pom.xml index 302c8a5f3e..5f8d32687a 100644 --- a/extensions/apachehc/pom.xml +++ b/extensions/apachehc/pom.xml @@ -42,7 +42,7 @@ org.apache.httpcomponents httpclient - 4.0.1 + 4.0.3 org.mortbay.jetty diff --git a/extensions/apachehc/src/main/java/org/jclouds/http/apachehc/ApacheHCUtils.java b/extensions/apachehc/src/main/java/org/jclouds/http/apachehc/ApacheHCUtils.java index b868032cec..c035e580e6 100644 --- a/extensions/apachehc/src/main/java/org/jclouds/http/apachehc/ApacheHCUtils.java +++ b/extensions/apachehc/src/main/java/org/jclouds/http/apachehc/ApacheHCUtils.java @@ -143,6 +143,12 @@ public class ApacheHCUtils { Entity.setContentType(payload.getContentType()); apacheRequest.setEntity(Entity); } + if (payload.getContentDisposition() != null) + apacheRequest.addHeader("Content-Disposition", payload.getContentDisposition()); + if (payload.getContentEncoding() != null) + apacheRequest.addHeader("Content-Encoding", payload.getContentEncoding()); + if (payload.getContentLanguage() != null) + apacheRequest.addHeader("Content-Language", payload.getContentLanguage()); assert (apacheRequest.getEntity() != null); } diff --git a/extensions/apachehc/src/test/java/org/jclouds/http/apachehc/ApacheHCHttpCommandExecutorServiceTest.java b/extensions/apachehc/src/test/java/org/jclouds/http/apachehc/ApacheHCHttpCommandExecutorServiceTest.java index 9d33a06955..099cc3dae8 100644 --- a/extensions/apachehc/src/test/java/org/jclouds/http/apachehc/ApacheHCHttpCommandExecutorServiceTest.java +++ b/extensions/apachehc/src/test/java/org/jclouds/http/apachehc/ApacheHCHttpCommandExecutorServiceTest.java @@ -24,7 +24,10 @@ import static org.jclouds.Constants.*; import static org.jclouds.Constants.PROPERTY_MAX_CONNECTIONS_PER_HOST; import static org.jclouds.Constants.PROPERTY_USER_THREADS; +import java.io.IOException; import java.util.Properties; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeoutException; import org.jclouds.http.BaseHttpCommandExecutorServiceIntegrationTest; import org.jclouds.http.apachehc.config.ApacheHCHttpCommandExecutorServiceModule; @@ -56,4 +59,23 @@ public class ApacheHCHttpCommandExecutorServiceTest extends BaseHttpCommandExecu props.setProperty(PROPERTY_USER_THREADS, 0 + ""); } + @Override + public void testPostContentDisposition() throws ExecutionException, InterruptedException, TimeoutException, + IOException { + // TODO: currently times out, see issue + // http://code.google.com/p/jclouds/issues/detail?id=353 + } + + @Override + public void testPostContentEncoding() throws ExecutionException, InterruptedException, TimeoutException, IOException { + // TODO: currently times out, see issue + // http://code.google.com/p/jclouds/issues/detail?id=353 + } + + @Override + public void testPostContentLanguage() throws ExecutionException, InterruptedException, TimeoutException, IOException { + // TODO: currently times out, see issue + // http://code.google.com/p/jclouds/issues/detail?id=353 + } + } \ No newline at end of file diff --git a/extensions/gae/src/main/java/org/jclouds/gae/ConvertToGaeRequest.java b/extensions/gae/src/main/java/org/jclouds/gae/ConvertToGaeRequest.java index cdf12273a5..16dfbbc58d 100644 --- a/extensions/gae/src/main/java/org/jclouds/gae/ConvertToGaeRequest.java +++ b/extensions/gae/src/main/java/org/jclouds/gae/ConvertToGaeRequest.java @@ -93,6 +93,12 @@ public class ConvertToGaeRequest implements Function { request.getPayload().setContentMD5(oldPayload.getContentMD5()); if (oldPayload.getContentType() != null) request.getPayload().setContentType(oldPayload.getContentType()); + if (oldPayload.getContentDisposition() != null) + request.getPayload().setContentDisposition(oldPayload.getContentDisposition()); + if (oldPayload.getContentEncoding() != null) + request.getPayload().setContentEncoding(oldPayload.getContentEncoding()); + if (oldPayload.getContentLanguage() != null) + request.getPayload().setContentLanguage(oldPayload.getContentLanguage()); } gaeRequest.setPayload(array); } catch (IOException e) { @@ -105,6 +111,12 @@ public class ConvertToGaeRequest implements Function { .getContentMD5()))); if (request.getPayload().getContentType() != null) gaeRequest.setHeader(new HTTPHeader(HttpHeaders.CONTENT_TYPE, request.getPayload().getContentType())); + if (request.getPayload().getContentDisposition() != null) + gaeRequest.setHeader(new HTTPHeader("Content-Disposition", request.getPayload().getContentDisposition())); + if (request.getPayload().getContentEncoding() != null) + gaeRequest.setHeader(new HTTPHeader("Content-Encoding", request.getPayload().getContentEncoding())); + if (request.getPayload().getContentLanguage() != null) + gaeRequest.setHeader(new HTTPHeader("Content-Language", request.getPayload().getContentLanguage())); Long length = checkNotNull(request.getPayload().getContentLength(), "payload.getContentLength"); gaeRequest.setHeader(new HTTPHeader(HttpHeaders.CONTENT_LENGTH, length.toString())); } else { diff --git a/extensions/gae/src/test/java/org/jclouds/gae/AsyncGaeHttpCommandExecutorServiceIntegrationTest.java b/extensions/gae/src/test/java/org/jclouds/gae/AsyncGaeHttpCommandExecutorServiceIntegrationTest.java index f7f46ba97a..e4c9e2c8e2 100644 --- a/extensions/gae/src/test/java/org/jclouds/gae/AsyncGaeHttpCommandExecutorServiceIntegrationTest.java +++ b/extensions/gae/src/test/java/org/jclouds/gae/AsyncGaeHttpCommandExecutorServiceIntegrationTest.java @@ -357,6 +357,25 @@ public class AsyncGaeHttpCommandExecutorServiceIntegrationTest extends BaseHttpC // disabled since test data is too big } + @Override + public void testPostContentDisposition() throws ExecutionException, InterruptedException, TimeoutException, + IOException { + setupApiProxy(); + super.testPostContentDisposition(); + } + + @Override + public void testPostContentEncoding() throws ExecutionException, InterruptedException, TimeoutException, IOException { + setupApiProxy(); + super.testPostContentEncoding(); + } + + @Override + public void testPostContentLanguage() throws ExecutionException, InterruptedException, TimeoutException, IOException { + setupApiProxy(); + super.testPostContentLanguage(); + } + // http://code.google.com/p/googleappengine/issues/detail?id=3599 @Override @Test(enabled = true, expectedExceptions = IllegalArgumentException.class)