You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ad...@apache.org on 2014/10/25 19:29:48 UTC

[1/6] git commit: Revert "JCLOUDS-652: Require JDK 7"

Repository: jclouds
Updated Branches:
  refs/heads/master 0339cd2fd -> 2a1dff243


Revert "JCLOUDS-652: Require JDK 7"

This reverts commit 5e8bd02c93c7ebacb573342e77ef7ca4b02c4ffb.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/0a801d2a
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/0a801d2a
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/0a801d2a

Branch: refs/heads/master
Commit: 0a801d2ad2257a6d52550730d9c61c7553039007
Parents: 0339cd2
Author: Adrian Cole <ad...@gmail.com>
Authored: Fri Oct 24 16:31:23 2014 -0700
Committer: Adrian Cole <ad...@gmail.com>
Committed: Sat Oct 25 10:28:34 2014 -0700

----------------------------------------------------------------------
 .../java/org/jclouds/blobstore/config/LocalBlobStore.java    | 2 +-
 .../http/internal/JavaUrlHttpCommandExecutorService.java     | 2 +-
 project/pom.xml                                              | 8 ++++----
 3 files changed, 6 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a801d2a/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
----------------------------------------------------------------------
diff --git a/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java b/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
index 8af40e9..0fbf498 100644
--- a/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
+++ b/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
@@ -549,7 +549,7 @@ public final class LocalBlobStore implements BlobStore {
       try {
          Blob blob = getBlob(containerName, key);
          return blob != null ? (BlobMetadata) BlobStoreUtils.copy(blob.getMetadata()) : null;
-      } catch (Exception e) {
+      } catch (RuntimeException e) {
          if (size(Iterables.filter(getCausalChain(e), KeyNotFoundException.class)) >= 1)
             return null;
          throw e;

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a801d2a/core/src/main/java/org/jclouds/http/internal/JavaUrlHttpCommandExecutorService.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/http/internal/JavaUrlHttpCommandExecutorService.java b/core/src/main/java/org/jclouds/http/internal/JavaUrlHttpCommandExecutorService.java
index 47a8575..d29927f 100644
--- a/core/src/main/java/org/jclouds/http/internal/JavaUrlHttpCommandExecutorService.java
+++ b/core/src/main/java/org/jclouds/http/internal/JavaUrlHttpCommandExecutorService.java
@@ -278,7 +278,7 @@ public class JavaUrlHttpCommandExecutorService extends BaseHttpCommandExecutorSe
          // HttpUrlConnection strips Content-Length: 0 without setDoOutput(true)
          String method = connection.getRequestMethod();
          if ("POST".equals(method) || "PUT".equals(method)) {
-            connection.setFixedLengthStreamingMode(0L);
+            connection.setFixedLengthStreamingMode(0);
             connection.setDoOutput(true);
          }
       }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a801d2a/project/pom.xml
----------------------------------------------------------------------
diff --git a/project/pom.xml b/project/pom.xml
index 0bea1a0..e56b442 100644
--- a/project/pom.xml
+++ b/project/pom.xml
@@ -201,8 +201,8 @@
 
   <properties>
     <clojure.version>1.3.0</clojure.version>
-    <maven.compile.source>1.7</maven.compile.source>
-    <maven.compile.target>1.7</maven.compile.target>
+    <maven.compile.source>1.6</maven.compile.source>
+    <maven.compile.target>1.6</maven.compile.target>
     <maven.compile.deprecation>true</maven.compile.deprecation>
     <maven.site.url.base>gitsite:git@github.com/jclouds/jclouds-maven-site.git</maven.site.url.base>
     <http.proxyHost />
@@ -1088,7 +1088,7 @@
             <groupId>org.gaul</groupId>
             <artifactId>modernizer-maven-plugin</artifactId>
             <configuration>
-              <javaVersion>1.7</javaVersion>
+              <javaVersion>${maven.compile.source}</javaVersion>
               <!-- in jclouds-project use the local file. ${project.basedir}
                 required here as 1.1.0 of the modernizer plugin can't find the
                 exclusions file otherwise -->
@@ -1137,7 +1137,7 @@
               </dependency>
             </dependencies>
             <configuration>
-              <javaVersion>1.7</javaVersion>
+              <javaVersion>${maven.compile.source}</javaVersion>
               <exclusionsFile>resources/modernizer_exclusions.txt</exclusionsFile>
             </configuration>
           </plugin>


[4/6] git commit: JCLOUDS-264 Conditionally allow default http driver to support sending >2GB payloads without chunked encoding.

Posted by ad...@apache.org.
JCLOUDS-264 Conditionally allow default http driver to support sending >2GB payloads without chunked encoding.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/f3f8f0e0
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/f3f8f0e0
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/f3f8f0e0

Branch: refs/heads/master
Commit: f3f8f0e01085d2f3a5033ccb918a65f630c880ef
Parents: 99d54c6
Author: Adrian Cole <ad...@gmail.com>
Authored: Fri Oct 24 19:41:03 2014 -0700
Committer: Adrian Cole <ad...@gmail.com>
Committed: Sat Oct 25 10:29:09 2014 -0700

----------------------------------------------------------------------
 .../JavaUrlHttpCommandExecutorService.java      | 40 +++++++++--------
 .../main/java/org/jclouds/rest/HttpClient.java  |  3 +-
 ...tpCommandExecutorServiceIntegrationTest.java | 45 ++++++++++++++++++--
 3 files changed, 67 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/f3f8f0e0/core/src/main/java/org/jclouds/http/internal/JavaUrlHttpCommandExecutorService.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/http/internal/JavaUrlHttpCommandExecutorService.java b/core/src/main/java/org/jclouds/http/internal/JavaUrlHttpCommandExecutorService.java
index b326bc7..6afd80d 100644
--- a/core/src/main/java/org/jclouds/http/internal/JavaUrlHttpCommandExecutorService.java
+++ b/core/src/main/java/org/jclouds/http/internal/JavaUrlHttpCommandExecutorService.java
@@ -16,7 +16,6 @@
  */
 package org.jclouds.http.internal;
 
-import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.propagate;
 import static com.google.common.io.ByteStreams.toByteArray;
@@ -65,14 +64,11 @@ import com.google.common.io.Closeables;
 import com.google.common.io.CountingOutputStream;
 import com.google.inject.Inject;
 
-/**
- * Basic implementation of a {@link HttpCommandExecutorService}.
- */
 @Singleton
 public class JavaUrlHttpCommandExecutorService extends BaseHttpCommandExecutorService<HttpURLConnection> {
 
-   public static final String DEFAULT_USER_AGENT = String.format("jclouds/%s java/%s", JcloudsVersion.get(), System
-            .getProperty("java.version"));
+   public static final String DEFAULT_USER_AGENT = String.format("jclouds/%s java/%s", JcloudsVersion.get(),
+         System.getProperty("java.version"));
 
    protected final Supplier<SSLContext> untrustedSSLContextProvider;
    protected final Function<URI, Proxy> proxyForURI;
@@ -82,13 +78,13 @@ public class JavaUrlHttpCommandExecutorService extends BaseHttpCommandExecutorSe
 
    @Inject
    public JavaUrlHttpCommandExecutorService(HttpUtils utils, ContentMetadataCodec contentMetadataCodec,
-            DelegatingRetryHandler retryHandler, IOExceptionRetryHandler ioRetryHandler,
-            DelegatingErrorHandler errorHandler, HttpWire wire, @Named("untrusted") HostnameVerifier verifier,
-            @Named("untrusted") Supplier<SSLContext> untrustedSSLContextProvider, Function<URI, Proxy> proxyForURI) 
-                  throws SecurityException, NoSuchFieldException {
+         DelegatingRetryHandler retryHandler, IOExceptionRetryHandler ioRetryHandler,
+         DelegatingErrorHandler errorHandler, HttpWire wire, @Named("untrusted") HostnameVerifier verifier,
+         @Named("untrusted") Supplier<SSLContext> untrustedSSLContextProvider, Function<URI, Proxy> proxyForURI) {
       super(utils, contentMetadataCodec, retryHandler, ioRetryHandler, errorHandler, wire);
-      if (utils.getMaxConnections() > 0)
+      if (utils.getMaxConnections() > 0) {
          System.setProperty("http.maxConnections", String.valueOf(checkNotNull(utils, "utils").getMaxConnections()));
+      }
       this.untrustedSSLContextProvider = checkNotNull(untrustedSSLContextProvider, "untrustedSSLContextProvider");
       this.verifier = checkNotNull(verifier, "verifier");
       this.proxyForURI = checkNotNull(proxyForURI, "proxyForURI");
@@ -179,14 +175,13 @@ public class JavaUrlHttpCommandExecutorService extends BaseHttpCommandExecutorSe
             writePayloadToConnection(payload, "streaming", connection);
          } else {
             Long length = checkNotNull(md.getContentLength(), "payload.getContentLength");
-            // TODO: remove check after moving to JDK 7.
-            checkArgument(length <= Integer.MAX_VALUE,
-                  "Cannot transfer 2 GB or larger chunks due to JDK 1.6 limitations." +
-                  " Use chunked encoding or multi-part upload, if possible." +
-                  " For more information: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6755625");
             if (length > 0) {
                connection.setRequestProperty(CONTENT_LENGTH, length.toString());
-               connection.setFixedLengthStreamingMode(length.intValue());
+               if (length <= Integer.MAX_VALUE) {
+                  connection.setFixedLengthStreamingMode(length.intValue());
+               } else {
+                  setFixedLengthStreamingMode(connection, length);
+               }
                writePayloadToConnection(payload, length, connection);
             } else {
                writeNothing(connection);
@@ -198,6 +193,17 @@ public class JavaUrlHttpCommandExecutorService extends BaseHttpCommandExecutorSe
       return connection;
    }
 
+   /** Uses {@link HttpURLConnection#setFixedLengthStreamingMode(long)} if possible or throws if not. */
+   private static void setFixedLengthStreamingMode(HttpURLConnection connection, long length) {
+      try { // Not caching method as invocation is literally sending > 2GB, which means reflection isn't a limiter!
+         HttpURLConnection.class.getMethod("setFixedLengthStreamingMode", long.class).invoke(connection, length);
+      } catch (Exception e) {
+         throw new IllegalArgumentException("Cannot transfer 2 GB or larger chunks due to JDK 1.6 limitations." +
+               " Use chunked encoding or multi-part upload, if possible, or use a different http driver." +
+               " For more information: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6755625");
+      }
+   }
+
    /**
     * Creates and initializes the connection.
     */

http://git-wip-us.apache.org/repos/asf/jclouds/blob/f3f8f0e0/core/src/main/java/org/jclouds/rest/HttpClient.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/rest/HttpClient.java b/core/src/main/java/org/jclouds/rest/HttpClient.java
index 126af29..f982a66 100644
--- a/core/src/main/java/org/jclouds/rest/HttpClient.java
+++ b/core/src/main/java/org/jclouds/rest/HttpClient.java
@@ -16,6 +16,7 @@
  */
 package org.jclouds.rest;
 
+import java.io.Closeable;
 import java.io.InputStream;
 import java.net.URI;
 
@@ -38,7 +39,7 @@ import org.jclouds.rest.annotations.ResponseParser;
 /**
  * Simple client
  */
-public interface HttpClient {
+public interface HttpClient extends Closeable {
    /**
     * @return eTag
     */

http://git-wip-us.apache.org/repos/asf/jclouds/blob/f3f8f0e0/core/src/test/java/org/jclouds/http/JavaUrlHttpCommandExecutorServiceIntegrationTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/jclouds/http/JavaUrlHttpCommandExecutorServiceIntegrationTest.java b/core/src/test/java/org/jclouds/http/JavaUrlHttpCommandExecutorServiceIntegrationTest.java
index d1d4c60..265048a 100644
--- a/core/src/test/java/org/jclouds/http/JavaUrlHttpCommandExecutorServiceIntegrationTest.java
+++ b/core/src/test/java/org/jclouds/http/JavaUrlHttpCommandExecutorServiceIntegrationTest.java
@@ -16,20 +16,29 @@
  */
 package org.jclouds.http;
 
+import static com.google.common.io.Closeables.close;
+import static com.google.common.net.HttpHeaders.CONTENT_LENGTH;
 import static org.jclouds.Constants.PROPERTY_MAX_CONNECTIONS_PER_CONTEXT;
 import static org.jclouds.Constants.PROPERTY_MAX_CONNECTIONS_PER_HOST;
 import static org.jclouds.Constants.PROPERTY_USER_THREADS;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.fail;
 
 import java.util.Properties;
 
 import org.jclouds.http.config.JavaUrlHttpCommandExecutorServiceModule;
+import org.jclouds.io.Payload;
+import org.jclouds.io.payloads.StringPayload;
+import org.jclouds.rest.HttpClient;
+import org.jclouds.utils.TestUtils;
 import org.testng.annotations.Test;
 
 import com.google.inject.Module;
+import com.squareup.okhttp.mockwebserver.Dispatcher;
+import com.squareup.okhttp.mockwebserver.MockResponse;
+import com.squareup.okhttp.mockwebserver.MockWebServer;
+import com.squareup.okhttp.mockwebserver.RecordedRequest;
 
-/**
- * Tests the functionality of the {@link JavaUrlHttpCommandExecutorService}
- */
 @Test(groups = "integration")
 public class JavaUrlHttpCommandExecutorServiceIntegrationTest extends BaseHttpCommandExecutorServiceIntegrationTest {
 
@@ -43,4 +52,34 @@ public class JavaUrlHttpCommandExecutorServiceIntegrationTest extends BaseHttpCo
       props.setProperty(PROPERTY_USER_THREADS, 5 + "");
    }
 
+   @Test public void longContentLengthSupported() throws Exception {
+      long reallyLongContent = TestUtils.isJava6() ? Integer.MAX_VALUE : Long.MAX_VALUE;
+
+      // Setup a mock server that doesn't attempt to read the request payload.
+      MockWebServer server = new MockWebServer();
+      server.setDispatcher(new Dispatcher() {
+         @Override public MockResponse dispatch(RecordedRequest recordedRequest) {
+            return new MockResponse();
+         }
+      });
+      server.play();
+
+      HttpClient client =  api(HttpClient.class, server.getUrl("/").toString());
+
+      // Make a fake payload that has no data, but says there's a lot!
+      Payload fakePayload = new StringPayload("");
+      fakePayload.getContentMetadata().setContentLength(reallyLongContent);
+
+      try {
+         try {
+            client.post(server.getUrl("/").toURI(), fakePayload);
+            fail("Should have errored since we didn't sent that much data!");
+         } catch (HttpResponseException expected) {
+         }
+         assertEquals(server.takeRequest().getHeader(CONTENT_LENGTH), String.valueOf(reallyLongContent));
+      } finally {
+         close(client, true);
+         server.shutdown();
+      }
+   }
 }


[2/6] git commit: Revert "Remove Java 6 litter"

Posted by ad...@apache.org.
Revert "Remove Java 6 litter"

This reverts commit a10bf3e9c5495b4c8c69e0059b5901266df471dd.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/0785d808
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/0785d808
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/0785d808

Branch: refs/heads/master
Commit: 0785d8082709103d634665d312780e5a7d5b6abe
Parents: 0a801d2
Author: Adrian Cole <ad...@gmail.com>
Authored: Fri Oct 24 19:37:52 2014 -0700
Committer: Adrian Cole <ad...@gmail.com>
Committed: Sat Oct 25 10:28:46 2014 -0700

----------------------------------------------------------------------
 .../jclouds/http/functions/ParseSaxTest.java    | 25 +++++++-------------
 .../test/java/org/jclouds/utils/TestUtils.java  |  6 +++--
 2 files changed, 13 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/0785d808/core/src/test/java/org/jclouds/http/functions/ParseSaxTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/jclouds/http/functions/ParseSaxTest.java b/core/src/test/java/org/jclouds/http/functions/ParseSaxTest.java
index d794814..b16002b 100644
--- a/core/src/test/java/org/jclouds/http/functions/ParseSaxTest.java
+++ b/core/src/test/java/org/jclouds/http/functions/ParseSaxTest.java
@@ -22,12 +22,9 @@ import static org.easymock.EasyMock.replay;
 import static org.easymock.EasyMock.verify;
 import static org.testng.Assert.assertEquals;
 
-import java.io.IOException;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeoutException;
-
 import org.jclouds.http.HttpRequest;
 import org.jclouds.http.HttpResponse;
+import org.jclouds.utils.TestUtils;
 import org.testng.annotations.Test;
 import org.xml.sax.Locator;
 import org.xml.sax.SAXParseException;
@@ -50,8 +47,7 @@ public class ParseSaxTest extends BaseHandlerTest {
    }
    
    @Test
-   public void testAddDetailsAndPropagateOkWhenRequestWithNoDataAndRuntimeExceptionThrowsOriginalException()
-         throws ExecutionException, InterruptedException, TimeoutException, IOException {
+   public void testAddDetailsAndPropagateOkWhenRequestWithNoDataAndRuntimeExceptionThrowsOriginalException() {
 
       ParseSax<String> parser = createParser();
       Exception input = new RuntimeException("foo");
@@ -64,8 +60,7 @@ public class ParseSaxTest extends BaseHandlerTest {
    }
 
    @Test
-   public void testAddDetailsAndPropagateOkWhenRequestWithNoDataAndExceptionPropagates() throws ExecutionException,
-         InterruptedException, TimeoutException, IOException {
+   public void testAddDetailsAndPropagateOkWhenRequestWithNoDataAndExceptionPropagates() {
 
       ParseSax<String> parser = createParser();
       Exception input = new Exception("foo");
@@ -79,8 +74,7 @@ public class ParseSaxTest extends BaseHandlerTest {
    }
 
    @Test
-   public void testAddDetailsAndPropagateOkWhenRequestIsNotNullAndResponseIsNull() throws ExecutionException,
-         InterruptedException, TimeoutException, IOException {
+   public void testAddDetailsAndPropagateOkWhenRequestIsNotNullAndResponseIsNull() {
 
       ParseSax<String> parser = createParser();
       HttpRequest request = HttpRequest.builder().method("GET").endpoint("http://foohost").build(); 
@@ -96,8 +90,7 @@ public class ParseSaxTest extends BaseHandlerTest {
    }
    
    @Test
-   public void testAddDetailsAndPropagateOkWithValidRequestResponse() throws ExecutionException, InterruptedException,
-         TimeoutException, IOException {
+   public void testAddDetailsAndPropagateOkWithValidRequestResponse() {
 
       ParseSax<String> parser = createParser();
       HttpRequest request = HttpRequest.builder().method("GET").endpoint("http://foohost").build();
@@ -114,8 +107,7 @@ public class ParseSaxTest extends BaseHandlerTest {
    }
 
    @Test
-   public void testAddDetailsAndPropagateOkWithValidRequestResponseWithSAXParseException() throws ExecutionException,
-         InterruptedException, TimeoutException, IOException {
+   public void testAddDetailsAndPropagateOkWithValidRequestResponseWithSAXParseException() {
 
       ParseSax<String> parser = createParser();
       HttpRequest request = HttpRequest.builder().method("GET").endpoint("http://foohost").build();
@@ -133,8 +125,9 @@ public class ParseSaxTest extends BaseHandlerTest {
          parser.setContext(request);
          parser.addDetailsAndPropagate(response, input);
       } catch (RuntimeException e) {
-         assertEquals(e.getMessage(),
-               "request: GET http://foohost HTTP/1.1; response: HTTP/1.1 304 Not Modified; error at 1:1 in document systemId; cause: org.xml.sax.SAXParseExceptionpublicId: publicId; systemId: systemId; lineNumber: 1; columnNumber: 1; foo");
+         assertEquals(e.getMessage(), TestUtils.isJava6()
+               ? "request: GET http://foohost HTTP/1.1; response: HTTP/1.1 304 Not Modified; error at 1:1 in document systemId; cause: org.xml.sax.SAXParseException: foo"
+               : "request: GET http://foohost HTTP/1.1; response: HTTP/1.1 304 Not Modified; error at 1:1 in document systemId; cause: org.xml.sax.SAXParseExceptionpublicId: publicId; systemId: systemId; lineNumber: 1; columnNumber: 1; foo");
          assertEquals(e.getCause(), input);
       }
    }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0785d808/core/src/test/java/org/jclouds/utils/TestUtils.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/jclouds/utils/TestUtils.java b/core/src/test/java/org/jclouds/utils/TestUtils.java
index e276103..c2fde4f 100644
--- a/core/src/test/java/org/jclouds/utils/TestUtils.java
+++ b/core/src/test/java/org/jclouds/utils/TestUtils.java
@@ -26,14 +26,16 @@ import com.google.common.io.ByteSource;
  * Utility class for test
  */
 public class TestUtils {
-    public static final Object[][] NO_INVOCATIONS = new Object[0][0];
-    public static final Object[][] SINGLE_NO_ARG_INVOCATION = { new Object[0] };
 
     public static boolean isMacOSX() {
         String osName = System.getProperty("os.name");
         return osName.contains("OS X");
     }
 
+    public static boolean isJava6() {
+        return System.getProperty("java.version", "").contains("1.6.");
+    }
+
     public static ByteSource randomByteSource() {
         return randomByteSource(0);
     }


[3/6] git commit: Revert "JCLOUDS-264: Allow payloads greater than 2 GB"

Posted by ad...@apache.org.
Revert "JCLOUDS-264: Allow payloads greater than 2 GB"

This reverts commit 7e4cacf9ea12d697d6c48b83a28c12d47ab8cfae.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/99d54c66
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/99d54c66
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/99d54c66

Branch: refs/heads/master
Commit: 99d54c6631ab6facb17f2f3fe270bd331820366d
Parents: 0785d80
Author: Adrian Cole <ad...@gmail.com>
Authored: Fri Oct 24 16:31:31 2014 -0700
Committer: Adrian Cole <ad...@gmail.com>
Committed: Sat Oct 25 10:28:56 2014 -0700

----------------------------------------------------------------------
 .../internal/JavaUrlHttpCommandExecutorService.java     | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/99d54c66/core/src/main/java/org/jclouds/http/internal/JavaUrlHttpCommandExecutorService.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/http/internal/JavaUrlHttpCommandExecutorService.java b/core/src/main/java/org/jclouds/http/internal/JavaUrlHttpCommandExecutorService.java
index d29927f..b326bc7 100644
--- a/core/src/main/java/org/jclouds/http/internal/JavaUrlHttpCommandExecutorService.java
+++ b/core/src/main/java/org/jclouds/http/internal/JavaUrlHttpCommandExecutorService.java
@@ -16,6 +16,7 @@
  */
 package org.jclouds.http.internal;
 
+import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.propagate;
 import static com.google.common.io.ByteStreams.toByteArray;
@@ -177,10 +178,15 @@ public class JavaUrlHttpCommandExecutorService extends BaseHttpCommandExecutorSe
             connection.setChunkedStreamingMode(8196);
             writePayloadToConnection(payload, "streaming", connection);
          } else {
-            long length = checkNotNull(md.getContentLength(), "payload.getContentLength");
+            Long length = checkNotNull(md.getContentLength(), "payload.getContentLength");
+            // TODO: remove check after moving to JDK 7.
+            checkArgument(length <= Integer.MAX_VALUE,
+                  "Cannot transfer 2 GB or larger chunks due to JDK 1.6 limitations." +
+                  " Use chunked encoding or multi-part upload, if possible." +
+                  " For more information: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6755625");
             if (length > 0) {
-               connection.setRequestProperty(CONTENT_LENGTH, String.valueOf(length));
-               connection.setFixedLengthStreamingMode(length);
+               connection.setRequestProperty(CONTENT_LENGTH, length.toString());
+               connection.setFixedLengthStreamingMode(length.intValue());
                writePayloadToConnection(payload, length, connection);
             } else {
                writeNothing(connection);


[6/6] git commit: JCLOUDS-652 Pin filesystem api to Java 7+.

Posted by ad...@apache.org.
JCLOUDS-652 Pin filesystem api to Java 7+.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/2a1dff24
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/2a1dff24
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/2a1dff24

Branch: refs/heads/master
Commit: 2a1dff243da63d0467b6ac25c9ef2e2a9a65227a
Parents: 2933a78
Author: Adrian Cole <ad...@gmail.com>
Authored: Fri Oct 24 19:58:11 2014 -0700
Committer: Adrian Cole <ad...@gmail.com>
Committed: Sat Oct 25 10:29:33 2014 -0700

----------------------------------------------------------------------
 allblobstore/pom.xml    | 20 +++++++++++++++-----
 apis/filesystem/pom.xml |  3 +++
 apis/pom.xml            | 12 +++++++++++-
 3 files changed, 29 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/2a1dff24/allblobstore/pom.xml
----------------------------------------------------------------------
diff --git a/allblobstore/pom.xml b/allblobstore/pom.xml
index 47a45c3..c828fd6 100644
--- a/allblobstore/pom.xml
+++ b/allblobstore/pom.xml
@@ -74,14 +74,24 @@
       <version>${project.version}</version>
     </dependency>
     <dependency>
-      <groupId>org.apache.jclouds.api</groupId>
-      <artifactId>filesystem</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
       <groupId>org.apache.jclouds.provider</groupId>
       <artifactId>hpcloud-objectstorage</artifactId>
       <version>${project.version}</version>
     </dependency>
   </dependencies>
+  <profiles>
+    <profile>
+      <id>jre1.7</id>
+      <activation>
+        <jdk>1.7</jdk>
+      </activation>
+      <dependencies>
+        <dependency>
+          <groupId>org.apache.jclouds.api</groupId>
+          <artifactId>filesystem</artifactId>
+         <version>${project.version}</version>
+       </dependency>
+      </dependencies>
+    </profile>
+  </profiles>
 </project>

http://git-wip-us.apache.org/repos/asf/jclouds/blob/2a1dff24/apis/filesystem/pom.xml
----------------------------------------------------------------------
diff --git a/apis/filesystem/pom.xml b/apis/filesystem/pom.xml
index dd220eb..09ab873 100644
--- a/apis/filesystem/pom.xml
+++ b/apis/filesystem/pom.xml
@@ -32,6 +32,9 @@
   <packaging>bundle</packaging>
 
   <properties>
+    <!-- This api has been written in a manner which requires Java language level 7. -->
+    <maven.compile.source>1.7</maven.compile.source>
+    <maven.compile.target>1.7</maven.compile.target>
     <jclouds.osgi.export>org.jclouds.filesystem*;version="${project.version}"</jclouds.osgi.export>
     <jclouds.osgi.import>org.jclouds*;version="${project.version}",*</jclouds.osgi.import>
   </properties>

http://git-wip-us.apache.org/repos/asf/jclouds/blob/2a1dff24/apis/pom.xml
----------------------------------------------------------------------
diff --git a/apis/pom.xml b/apis/pom.xml
index b8efcda..8179293 100644
--- a/apis/pom.xml
+++ b/apis/pom.xml
@@ -32,7 +32,6 @@
   <modules>
     <module>cloudwatch</module>
     <module>cloudstack</module>
-    <module>filesystem</module>
     <module>byon</module>
     <module>s3</module>
     <module>ec2</module>
@@ -56,4 +55,15 @@
     <module>route53</module>
     <module>chef</module>
   </modules>
+  <profiles>
+    <profile>
+      <id>jre1.7</id>
+      <activation>
+        <jdk>1.7</jdk>
+      </activation>
+      <modules>
+        <module>filesystem</module>
+      </modules>
+    </profile>
+  </profiles>
 </project>


[5/6] git commit: Revert "Prefer ByteSource payload"

Posted by ad...@apache.org.
Revert "Prefer ByteSource payload"

This reverts commit 0e3d1475ab50e1232d5eac16eee1d3a207e36f42.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/2933a78a
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/2933a78a
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/2933a78a

Branch: refs/heads/master
Commit: 2933a78a6b53b21fc806dcd96041e3ea706a4456
Parents: f3f8f0e
Author: Adrian Cole <ad...@gmail.com>
Authored: Fri Oct 24 19:46:29 2014 -0700
Committer: Adrian Cole <ad...@gmail.com>
Committed: Sat Oct 25 10:29:22 2014 -0700

----------------------------------------------------------------------
 .../internal/BaseContainerLiveTest.java           | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/2933a78a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerLiveTest.java
----------------------------------------------------------------------
diff --git a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerLiveTest.java b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerLiveTest.java
index 5564d42..b2f7d68 100644
--- a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerLiveTest.java
+++ b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerLiveTest.java
@@ -25,7 +25,6 @@ import static org.testng.Assert.assertTrue;
 
 import java.io.IOException;
 import java.net.MalformedURLException;
-import java.nio.charset.StandardCharsets;
 import java.util.Collections;
 import java.util.List;
 import java.util.logging.Logger;
@@ -36,18 +35,16 @@ import org.jclouds.blobstore.domain.BlobMetadata;
 import org.jclouds.blobstore.domain.StorageMetadata;
 import org.jclouds.domain.Location;
 import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.io.ByteStreams2;
 import org.jclouds.predicates.SocketOpen;
 import org.jclouds.util.Strings2;
-import org.jclouds.utils.TestUtils;
 import org.testng.SkipException;
 import org.testng.annotations.Test;
 
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
+import com.google.common.base.Strings;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
-import com.google.common.io.ByteSource;
 
 public class BaseContainerLiveTest extends BaseBlobStoreIntegrationTest {
 
@@ -103,7 +100,7 @@ public class BaseContainerLiveTest extends BaseBlobStoreIntegrationTest {
    public void testPublicAccessInNonDefaultLocation() throws InterruptedException, MalformedURLException, IOException {
       Location nonDefault = findNonDefaultLocationOrSkip(view.getBlobStore(), defaultLocation);
 
-      ByteSource payload = ByteSource.wrap("my data".getBytes(StandardCharsets.UTF_8));
+      String payload = "my data";
       runCreateContainerInLocation(payload, nonDefault);
    }
 
@@ -111,11 +108,11 @@ public class BaseContainerLiveTest extends BaseBlobStoreIntegrationTest {
    public void testPublicAccessInNonDefaultLocationWithBigBlob() throws InterruptedException, MalformedURLException,
             IOException {
       Location nonDefault = findNonDefaultLocationOrSkip(view.getBlobStore(), defaultLocation);
-      ByteSource payload = TestUtils.randomByteSource().slice(0, 1024 * 1024);
+      String payload = Strings.repeat("a", 1024 * 1024); // 1MB
       runCreateContainerInLocation(payload, nonDefault);
    }
 
-   private void runCreateContainerInLocation(ByteSource payload, Location nonDefault) throws InterruptedException,
+   private void runCreateContainerInLocation(String payload, Location nonDefault) throws InterruptedException,
             IOException {
       String blobName = "hello";
       BlobStore blobStore = view.getBlobStore();
@@ -127,15 +124,12 @@ public class BaseContainerLiveTest extends BaseBlobStoreIntegrationTest {
          assertConsistencyAwareContainerExists(containerName);
          assertConsistencyAwareContainerInLocation(containerName, nonDefault);
 
-         blobStore.putBlob(containerName, blobStore.blobBuilder(blobName)
-            .payload(payload)
-            .contentLength(payload.size())
-            .build());
+         blobStore.putBlob(containerName, blobStore.blobBuilder(blobName).payload(payload).build());
 
          assertConsistencyAwareContainerSize(containerName, 1);
 
          BlobMetadata metadata = view.getBlobStore().blobMetadata(containerName, blobName);
-         assertEquals(ByteStreams2.toByteArrayAndClose(view.utils().http().get(metadata.getPublicUri())), payload.read());
+         assertEquals(Strings2.toStringAndClose(view.utils().http().get(metadata.getPublicUri())), payload);
 
          assertConsistencyAwareBlobInLocation(containerName, blobName, nonDefault);