You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by an...@apache.org on 2014/10/06 22:24:16 UTC

[1/7] JCLOUDS-153 remove IO Executor and usage of it.

Repository: jclouds
Updated Branches:
  refs/heads/reactivate-checkstyle 78b51b2d6 -> dc0443f4e (forced update)


http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/drivers/gae/src/test/java/org/jclouds/gae/AsyncGaeHttpCommandExecutorServiceIntegrationTest.java
----------------------------------------------------------------------
diff --git a/drivers/gae/src/test/java/org/jclouds/gae/AsyncGaeHttpCommandExecutorServiceIntegrationTest.java b/drivers/gae/src/test/java/org/jclouds/gae/AsyncGaeHttpCommandExecutorServiceIntegrationTest.java
deleted file mode 100644
index c3b63c0..0000000
--- a/drivers/gae/src/test/java/org/jclouds/gae/AsyncGaeHttpCommandExecutorServiceIntegrationTest.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.gae;
-
-import java.io.IOException;
-import java.util.Properties;
-
-import org.jclouds.concurrent.SingleThreaded;
-import org.jclouds.concurrent.config.ConfiguresExecutorService;
-import org.jclouds.gae.config.GoogleAppEngineConfigurationModule;
-import org.jclouds.http.BaseHttpCommandExecutorServiceIntegrationTest;
-import org.jclouds.http.HttpCommandExecutorService;
-import org.jclouds.http.config.ConfiguresHttpCommandExecutorService;
-import org.testng.SkipException;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import com.google.appengine.tools.development.testing.LocalServiceTestHelper;
-import com.google.appengine.tools.development.testing.LocalURLFetchServiceTestConfig;
-import com.google.inject.Injector;
-import com.google.inject.Module;
-
-/**
- * 
- * Integration test for the URLFetchService
- */
-@Test
-public class AsyncGaeHttpCommandExecutorServiceIntegrationTest extends BaseHttpCommandExecutorServiceIntegrationTest {
-   
-   @BeforeMethod
-   public void setupApiProxy() {
-      LocalServiceTestHelper helper = new LocalServiceTestHelper(new LocalURLFetchServiceTestConfig());
-      helper.setUp();
-   }
-
-   @Override
-   public void testPostAsInputStream() {
-      throw new SkipException("streams aren't supported");
-   }
-   
-   @Override
-   public void testPostAsInputStreamDoesNotRetryOnFailure() throws Exception {
-      throw new SkipException("streams aren't supported");
-   }
-   
-   @Override
-   public void testGetBigFile()  {
-      throw new SkipException("test data is too big for GAE");
-   }
-
-   @Override
-   public void testUploadBigFile() throws IOException {
-      throw new SkipException("test data is too big for GAE");
-   }
-
-   protected Module createConnectionModule() {
-      setupApiProxy();
-      return new AsyncGoogleAppEngineConfigurationModule();
-   }
-
-   @ConfiguresHttpCommandExecutorService
-   @ConfiguresExecutorService
-   @SingleThreaded
-   public class AsyncGoogleAppEngineConfigurationModule extends GoogleAppEngineConfigurationModule {
-
-      public AsyncGoogleAppEngineConfigurationModule() {
-         super();
-      }
-
-      protected HttpCommandExecutorService providerHttpCommandExecutorService(Injector injector) {
-         return injector.getInstance(AsyncGaeHttpCommandExecutorService.class);
-      }
-
-   }
-
-   @Override
-   protected void addOverrideProperties(Properties props) {
-      
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/drivers/gae/src/test/java/org/jclouds/gae/GaeHttpCommandExecutorServiceIntegrationTest.java
----------------------------------------------------------------------
diff --git a/drivers/gae/src/test/java/org/jclouds/gae/GaeHttpCommandExecutorServiceIntegrationTest.java b/drivers/gae/src/test/java/org/jclouds/gae/GaeHttpCommandExecutorServiceIntegrationTest.java
new file mode 100644
index 0000000..d7e30bf
--- /dev/null
+++ b/drivers/gae/src/test/java/org/jclouds/gae/GaeHttpCommandExecutorServiceIntegrationTest.java
@@ -0,0 +1,95 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.gae;
+
+import java.io.IOException;
+import java.util.Properties;
+
+import org.jclouds.concurrent.SingleThreaded;
+import org.jclouds.concurrent.config.ConfiguresExecutorService;
+import org.jclouds.gae.config.GoogleAppEngineConfigurationModule;
+import org.jclouds.http.BaseHttpCommandExecutorServiceIntegrationTest;
+import org.jclouds.http.HttpCommandExecutorService;
+import org.jclouds.http.config.ConfiguresHttpCommandExecutorService;
+import org.testng.SkipException;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import com.google.appengine.tools.development.testing.LocalServiceTestHelper;
+import com.google.appengine.tools.development.testing.LocalURLFetchServiceTestConfig;
+import com.google.inject.Injector;
+import com.google.inject.Module;
+
+/**
+ * 
+ * Integration test for the URLFetchService
+ */
+@Test
+public class GaeHttpCommandExecutorServiceIntegrationTest extends BaseHttpCommandExecutorServiceIntegrationTest {
+   
+   @BeforeMethod
+   public void setupApiProxy() {
+      LocalServiceTestHelper helper = new LocalServiceTestHelper(new LocalURLFetchServiceTestConfig());
+      helper.setUp();
+   }
+
+   @Override
+   public void testPostAsInputStream() {
+      throw new SkipException("streams aren't supported");
+   }
+   
+   @Override
+   public void testPostAsInputStreamDoesNotRetryOnFailure() throws Exception {
+      throw new SkipException("streams aren't supported");
+   }
+   
+   @Override
+   public void testGetBigFile()  {
+      throw new SkipException("test data is too big for GAE");
+   }
+
+   @Override
+   public void testUploadBigFile() throws IOException {
+      throw new SkipException("test data is too big for GAE");
+   }
+
+   protected Module createConnectionModule() {
+      setupApiProxy();
+      return new AsyncGoogleAppEngineConfigurationModule();
+   }
+
+   @ConfiguresHttpCommandExecutorService
+   @ConfiguresExecutorService
+   @SingleThreaded
+   public class AsyncGoogleAppEngineConfigurationModule extends GoogleAppEngineConfigurationModule {
+
+      public AsyncGoogleAppEngineConfigurationModule() {
+         super();
+      }
+
+      protected HttpCommandExecutorService providerHttpCommandExecutorService(Injector injector) {
+         return injector.getInstance(GaeHttpCommandExecutorService.class);
+      }
+
+   }
+
+   @Override
+   protected void addOverrideProperties(Properties props) {
+      
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/drivers/okhttp/src/main/java/org/jclouds/http/okhttp/OkHttpCommandExecutorService.java
----------------------------------------------------------------------
diff --git a/drivers/okhttp/src/main/java/org/jclouds/http/okhttp/OkHttpCommandExecutorService.java b/drivers/okhttp/src/main/java/org/jclouds/http/okhttp/OkHttpCommandExecutorService.java
index dadd623..edecc29 100644
--- a/drivers/okhttp/src/main/java/org/jclouds/http/okhttp/OkHttpCommandExecutorService.java
+++ b/drivers/okhttp/src/main/java/org/jclouds/http/okhttp/OkHttpCommandExecutorService.java
@@ -27,7 +27,6 @@ import javax.inject.Singleton;
 import javax.net.ssl.HostnameVerifier;
 import javax.net.ssl.SSLContext;
 
-import org.jclouds.Constants;
 import org.jclouds.http.HttpRequest;
 import org.jclouds.http.HttpUtils;
 import org.jclouds.http.IOExceptionRetryHandler;
@@ -40,7 +39,6 @@ import org.jclouds.io.ContentMetadataCodec;
 import com.google.common.base.Function;
 import com.google.common.base.Supplier;
 import com.google.common.net.HttpHeaders;
-import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.inject.Inject;
 import com.squareup.okhttp.OkHttpClient;
 
@@ -53,12 +51,11 @@ public class OkHttpCommandExecutorService extends JavaUrlHttpCommandExecutorServ
 
    @Inject
    public OkHttpCommandExecutorService(HttpUtils utils, ContentMetadataCodec contentMetadataCodec,
-         @Named(Constants.PROPERTY_IO_WORKER_THREADS) ListeningExecutorService ioExecutor,
          DelegatingRetryHandler retryHandler, IOExceptionRetryHandler ioRetryHandler,
          DelegatingErrorHandler errorHandler, HttpWire wire, @Named("untrusted") HostnameVerifier verifier,
          @Named("untrusted") Supplier<SSLContext> untrustedSSLContextProvider, Function<URI, Proxy> proxyForURI)
          throws SecurityException, NoSuchFieldException {
-      super(utils, contentMetadataCodec, ioExecutor, retryHandler, ioRetryHandler, errorHandler, wire, verifier,
+      super(utils, contentMetadataCodec, retryHandler, ioRetryHandler, errorHandler, wire, verifier,
             untrustedSSLContextProvider, proxyForURI);
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/drivers/okhttp/src/test/java/org/jclouds/http/okhttp/OkHttpCommandExecutorServiceTest.java
----------------------------------------------------------------------
diff --git a/drivers/okhttp/src/test/java/org/jclouds/http/okhttp/OkHttpCommandExecutorServiceTest.java b/drivers/okhttp/src/test/java/org/jclouds/http/okhttp/OkHttpCommandExecutorServiceTest.java
index deb2106..f201416 100644
--- a/drivers/okhttp/src/test/java/org/jclouds/http/okhttp/OkHttpCommandExecutorServiceTest.java
+++ b/drivers/okhttp/src/test/java/org/jclouds/http/okhttp/OkHttpCommandExecutorServiceTest.java
@@ -17,7 +17,6 @@
 package org.jclouds.http.okhttp;
 
 import static com.google.common.io.Closeables.close;
-import static org.jclouds.Constants.PROPERTY_IO_WORKER_THREADS;
 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;
@@ -57,8 +56,6 @@ public class OkHttpCommandExecutorServiceTest extends BaseHttpCommandExecutorSer
    protected void addOverrideProperties(final Properties props) {
       props.setProperty(PROPERTY_MAX_CONNECTIONS_PER_CONTEXT, 50 + "");
       props.setProperty(PROPERTY_MAX_CONNECTIONS_PER_HOST, 0 + "");
-      // IO workers not used in this executor
-      props.setProperty(PROPERTY_IO_WORKER_THREADS, 0 + "");
       props.setProperty(PROPERTY_USER_THREADS, 5 + "");
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/providers/aws-s3/src/main/java/org/jclouds/aws/s3/blobstore/strategy/internal/ParallelMultipartUploadStrategy.java
----------------------------------------------------------------------
diff --git a/providers/aws-s3/src/main/java/org/jclouds/aws/s3/blobstore/strategy/internal/ParallelMultipartUploadStrategy.java b/providers/aws-s3/src/main/java/org/jclouds/aws/s3/blobstore/strategy/internal/ParallelMultipartUploadStrategy.java
index bb25f2f..9694274 100644
--- a/providers/aws-s3/src/main/java/org/jclouds/aws/s3/blobstore/strategy/internal/ParallelMultipartUploadStrategy.java
+++ b/providers/aws-s3/src/main/java/org/jclouds/aws/s3/blobstore/strategy/internal/ParallelMultipartUploadStrategy.java
@@ -67,7 +67,7 @@ public class ParallelMultipartUploadStrategy implements AsyncMultipartUploadStra
    @VisibleForTesting
    static final int DEFAULT_MAX_PERCENT_RETRIES = 10;
 
-   private final ListeningExecutorService ioExecutor;
+   private final ListeningExecutorService executor;
 
    @Inject(optional = true)
    @Named("jclouds.mpu.parallel.degree")
@@ -96,10 +96,10 @@ public class ParallelMultipartUploadStrategy implements AsyncMultipartUploadStra
 
    @Inject
    public ParallelMultipartUploadStrategy(AWSS3BlobStore blobstore, PayloadSlicer slicer,
-         @Named(Constants.PROPERTY_IO_WORKER_THREADS) ListeningExecutorService ioExecutor) {
+         @Named(Constants.PROPERTY_USER_THREADS) ListeningExecutorService executor) {
       this.blobstore = checkNotNull(blobstore, "blobstore");
       this.slicer = checkNotNull(slicer, "slicer");
-      this.ioExecutor = checkNotNull(ioExecutor, "ioExecutor");
+      this.executor = checkNotNull(executor, "executor");
    }
 
    protected void prepareUploadPart(final String container, final String key,
@@ -118,7 +118,7 @@ public class ParallelMultipartUploadStrategy implements AsyncMultipartUploadStra
       final Payload chunkedPart = slicer.slice(payload, offset, size);
       logger.debug(String.format("async uploading part %s of %s to container %s with uploadId %s", part, key, container, uploadId));
       final long start = System.currentTimeMillis();
-      final ListenableFuture<String> futureETag = ioExecutor.submit(new Callable<String>() {
+      final ListenableFuture<String> futureETag = executor.submit(new Callable<String>() {
          @Override public String call() throws Exception {
             return client.uploadPart(container, key, part, uploadId, chunkedPart);
          }
@@ -148,13 +148,13 @@ public class ParallelMultipartUploadStrategy implements AsyncMultipartUploadStra
                latch.countDown();
             }
          }
-      }, ioExecutor);
+      }, executor);
       futureParts.put(part, futureETag);
    }
 
    @Override
    public ListenableFuture<String> execute(final String container, final Blob blob, final PutOptions options) {
-      return ioExecutor.submit(new Callable<String>() {
+      return executor.submit(new Callable<String>() {
                @Override
                public String call() throws Exception {
                   String key = blob.getMetadata().getName();
@@ -242,7 +242,7 @@ public class ParallelMultipartUploadStrategy implements AsyncMultipartUploadStra
                      // recursively call this execute method again; instead mark as not multipart
                      // because it can all fit in one go.
                      final PutOptions nonMultipartOptions = PutOptions.Builder.multipart(false);
-                     ListenableFuture<String> futureETag = ioExecutor.submit(new Callable<String>() {
+                     ListenableFuture<String> futureETag = executor.submit(new Callable<String>() {
                         @Override public String call() throws Exception {
                            return blobstore.putBlob(container, blob, nonMultipartOptions);
                         }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/providers/aws-s3/src/test/java/org/jclouds/aws/s3/blobstore/strategy/internal/SequentialMultipartUploadStrategyMockTest.java
----------------------------------------------------------------------
diff --git a/providers/aws-s3/src/test/java/org/jclouds/aws/s3/blobstore/strategy/internal/SequentialMultipartUploadStrategyMockTest.java b/providers/aws-s3/src/test/java/org/jclouds/aws/s3/blobstore/strategy/internal/SequentialMultipartUploadStrategyMockTest.java
index d96c311..71ae0ea 100644
--- a/providers/aws-s3/src/test/java/org/jclouds/aws/s3/blobstore/strategy/internal/SequentialMultipartUploadStrategyMockTest.java
+++ b/providers/aws-s3/src/test/java/org/jclouds/aws/s3/blobstore/strategy/internal/SequentialMultipartUploadStrategyMockTest.java
@@ -127,8 +127,8 @@ public class SequentialMultipartUploadStrategyMockTest {
       }
    }
 
-   private static final Set<Module> modules = ImmutableSet.<Module> of(new ExecutorServiceModule(newDirectExecutorService(),
-         newDirectExecutorService()));
+   private static final Set<Module> modules = ImmutableSet.<Module>of(
+         new ExecutorServiceModule(newDirectExecutorService()));
 
    static SequentialMultipartUploadStrategy mockSequentialMultipartUploadStrategy(String uri, int partSize) {
       Properties overrides = new Properties();

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/providers/dynect/src/main/java/org/jclouds/dynect/v3/config/DynECTHttpApiModule.java
----------------------------------------------------------------------
diff --git a/providers/dynect/src/main/java/org/jclouds/dynect/v3/config/DynECTHttpApiModule.java b/providers/dynect/src/main/java/org/jclouds/dynect/v3/config/DynECTHttpApiModule.java
index 1d96c7b..48bb9f8 100644
--- a/providers/dynect/src/main/java/org/jclouds/dynect/v3/config/DynECTHttpApiModule.java
+++ b/providers/dynect/src/main/java/org/jclouds/dynect/v3/config/DynECTHttpApiModule.java
@@ -30,7 +30,6 @@ import javax.inject.Singleton;
 import javax.net.ssl.HostnameVerifier;
 import javax.net.ssl.SSLContext;
 
-import org.jclouds.Constants;
 import org.jclouds.concurrent.SingleThreaded;
 import org.jclouds.dynect.v3.DynECTApi;
 import org.jclouds.dynect.v3.features.SessionApi;
@@ -57,7 +56,6 @@ import org.jclouds.rest.config.HttpApiModule;
 import com.google.common.base.Charsets;
 import com.google.common.base.Function;
 import com.google.common.base.Supplier;
-import com.google.common.util.concurrent.ListeningExecutorService;
 
 /**
  * Configures the DynECT connection.
@@ -102,12 +100,11 @@ public class DynECTHttpApiModule extends HttpApiModule<DynECTApi> {
 
       @Inject
       private SillyRabbit200sAreForSuccess(HttpUtils utils, ContentMetadataCodec contentMetadataCodec,
-            @Named(Constants.PROPERTY_IO_WORKER_THREADS) ListeningExecutorService ioExecutor,
             DelegatingRetryHandler retryHandler, IOExceptionRetryHandler ioRetryHandler,
             DelegatingErrorHandler errorHandler, HttpWire wire, @Named("untrusted") HostnameVerifier verifier,
             @Named("untrusted") Supplier<SSLContext> untrustedSSLContextProvider, Function<URI, Proxy> proxyForURI)
             throws SecurityException, NoSuchFieldException {
-         super(utils, contentMetadataCodec, ioExecutor, retryHandler, ioRetryHandler, errorHandler, wire, verifier,
+         super(utils, contentMetadataCodec, retryHandler, ioRetryHandler, errorHandler, wire, verifier,
                untrustedSSLContextProvider, proxyForURI);
       }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/providers/dynect/src/test/java/org/jclouds/dynect/v3/DynectApiMockTest.java
----------------------------------------------------------------------
diff --git a/providers/dynect/src/test/java/org/jclouds/dynect/v3/DynectApiMockTest.java b/providers/dynect/src/test/java/org/jclouds/dynect/v3/DynectApiMockTest.java
index 97c7611..c5bd5b3 100644
--- a/providers/dynect/src/test/java/org/jclouds/dynect/v3/DynectApiMockTest.java
+++ b/providers/dynect/src/test/java/org/jclouds/dynect/v3/DynectApiMockTest.java
@@ -39,7 +39,7 @@ import com.squareup.okhttp.mockwebserver.MockWebServer;
 public class DynectApiMockTest {
    
    private static final Set<Module> modules = ImmutableSet.<Module> of(
-         new ExecutorServiceModule(newDirectExecutorService(), newDirectExecutorService()));
+         new ExecutorServiceModule(newDirectExecutorService()));
 
    static DynECTApi mockDynectApi(String uri) {
       Properties overrides = new Properties();

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/internal/BaseHPCloudObjectStorageMockTest.java
----------------------------------------------------------------------
diff --git a/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/internal/BaseHPCloudObjectStorageMockTest.java b/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/internal/BaseHPCloudObjectStorageMockTest.java
index fa6105f..4074229 100644
--- a/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/internal/BaseHPCloudObjectStorageMockTest.java
+++ b/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/internal/BaseHPCloudObjectStorageMockTest.java
@@ -46,7 +46,7 @@ public class BaseHPCloudObjectStorageMockTest {
             .credentials("jclouds:joe", "letmein") //
             .endpoint(uri) //
             .overrides(overrides) //
-            .modules(ImmutableSet.<Module> of(new ExecutorServiceModule(newDirectExecutorService(), newDirectExecutorService()))) //
+            .modules(ImmutableSet.<Module> of(new ExecutorServiceModule(newDirectExecutorService()))) //
             .buildApi(HPCloudObjectStorageApi.class);
    }
 


[4/7] git commit: Overriding modernizer-plugin config in jclouds-resources

Posted by an...@apache.org.
Overriding modernizer-plugin config in jclouds-resources

This fixes a self-dependency


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

Branch: refs/heads/reactivate-checkstyle
Commit: 27d316971c740db7d4a080e47406ba025516d1db
Parents: b9525a0
Author: Andrew Phillips <an...@apache.org>
Authored: Sun Oct 5 16:28:57 2014 -0500
Committer: Andrew Phillips <an...@apache.org>
Committed: Mon Oct 6 16:23:17 2014 -0400

----------------------------------------------------------------------
 resources/pom.xml | 12 ++++++++++++
 1 file changed, 12 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/27d31697/resources/pom.xml
----------------------------------------------------------------------
diff --git a/resources/pom.xml b/resources/pom.xml
index 6404210..6282650 100644
--- a/resources/pom.xml
+++ b/resources/pom.xml
@@ -41,5 +41,17 @@
         </includes>
       </resource>
     </resources>
+    <plugins>
+      <plugin>
+        <groupId>org.gaul</groupId>
+        <artifactId>modernizer-maven-plugin</artifactId>
+        <configuration>
+          <javaVersion>1.7</javaVersion>
+          <!-- ${project.basedir} required here as 1.1.0 of the modernizer plugin
+            can't find the exclusions file otherwise -->
+          <exclusionsFile>${project.basedir}/modernizer_exclusions.txt</exclusionsFile>
+        </configuration>
+      </plugin>
+    </plugins>
   </build>
 </project>


[6/7] git commit: Overriding checkstyle-plugin config in jclouds-resources

Posted by an...@apache.org.
Overriding checkstyle-plugin config in jclouds-resources

Otherwise, fails with a self-dependency


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

Branch: refs/heads/reactivate-checkstyle
Commit: af7055aa31a165bc494b2030a0234bb524d52677
Parents: aecb89e
Author: Andrew Phillips <an...@apache.org>
Authored: Sun Oct 5 15:02:22 2014 -0500
Committer: Andrew Phillips <an...@apache.org>
Committed: Mon Oct 6 16:23:18 2014 -0400

----------------------------------------------------------------------
 project/pom.xml   |  2 --
 resources/pom.xml | 12 ++++++++++++
 2 files changed, 12 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/af7055aa/project/pom.xml
----------------------------------------------------------------------
diff --git a/project/pom.xml b/project/pom.xml
index 52cbfed..c5e6693 100644
--- a/project/pom.xml
+++ b/project/pom.xml
@@ -1112,8 +1112,6 @@
               <includeTestSourceDirectory>true</includeTestSourceDirectory>
               <failOnViolation>true</failOnViolation>
               <failsOnError>true</failsOnError>
-              <!-- fails on itself as it uses the author tag in a module definition -->
-              <resourceExcludes>checkstyle.xml</resourceExcludes>
               <violationSeverity>warning</violationSeverity>
             </configuration>
           </plugin>

http://git-wip-us.apache.org/repos/asf/jclouds/blob/af7055aa/resources/pom.xml
----------------------------------------------------------------------
diff --git a/resources/pom.xml b/resources/pom.xml
index 6282650..a133e0c 100644
--- a/resources/pom.xml
+++ b/resources/pom.xml
@@ -43,6 +43,18 @@
     </resources>
     <plugins>
       <plugin>
+        <artifactId>maven-checkstyle-plugin</artifactId>
+        <configuration>
+          <configLocation>checkstyle.xml</configLocation>
+          <includeTestSourceDirectory>true</includeTestSourceDirectory>
+          <failOnViolation>true</failOnViolation>
+          <failsOnError>true</failsOnError>
+          <!-- fails on itself as it uses the author tag in a module definition -->
+          <resourceExcludes>checkstyle.xml</resourceExcludes>
+          <violationSeverity>warning</violationSeverity>
+        </configuration>
+      </plugin>
+      <plugin>
         <groupId>org.gaul</groupId>
         <artifactId>modernizer-maven-plugin</artifactId>
         <configuration>


[5/7] git commit: Moving checkstyle-plugin config to profiles

Posted by an...@apache.org.
Moving checkstyle-plugin config to profiles


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

Branch: refs/heads/reactivate-checkstyle
Commit: aecb89eb13ab5eef6b13fedf9b92b14dcf80e58d
Parents: 27d3169
Author: Andrew Phillips <an...@apache.org>
Authored: Sun Oct 5 14:41:23 2014 -0500
Committer: Andrew Phillips <an...@apache.org>
Committed: Mon Oct 6 16:23:18 2014 -0400

----------------------------------------------------------------------
 project/pom.xml | 11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/aecb89eb/project/pom.xml
----------------------------------------------------------------------
diff --git a/project/pom.xml b/project/pom.xml
index 0372aaa..52cbfed 100644
--- a/project/pom.xml
+++ b/project/pom.xml
@@ -708,14 +708,7 @@
       <plugin>
         <artifactId>maven-checkstyle-plugin</artifactId>
         <version>2.13</version>
-        <configuration>
-          <!-- configLocation configured via profiles -->
-          <violationSeverity>warning</violationSeverity>
-          <includeTestSourceDirectory>true</includeTestSourceDirectory>
-          <failOnViolation>true</failOnViolation>
-          <failsOnError>true</failsOnError>
-          <violationSeverity>warning</violationSeverity>
-        </configuration>
+        <!-- configuration and dependencies set via profiles -->
       </plugin>
       <plugin>
         <groupId>org.gaul</groupId>
@@ -1074,6 +1067,7 @@
             <artifactId>maven-checkstyle-plugin</artifactId>
             <configuration>
               <configLocation>../resources/checkstyle.xml</configLocation>
+              <includeTestSourceDirectory>true</includeTestSourceDirectory>
               <failOnViolation>true</failOnViolation>
               <failsOnError>true</failsOnError>
               <violationSeverity>warning</violationSeverity>
@@ -1115,6 +1109,7 @@
             <configuration>
               <!-- jclouds-resources has the checkstyle config in the classpath -->
               <configLocation>resources/checkstyle.xml</configLocation>
+              <includeTestSourceDirectory>true</includeTestSourceDirectory>
               <failOnViolation>true</failOnViolation>
               <failsOnError>true</failsOnError>
               <!-- fails on itself as it uses the author tag in a module definition -->


[3/7] git commit: JCLOUDS-40 unasync Fallback

Posted by an...@apache.org.
JCLOUDS-40 unasync Fallback


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

Branch: refs/heads/reactivate-checkstyle
Commit: b9525a087730642dd116cfa1d394f4afaef28fe5
Parents: 0a236f5
Author: Adrian Cole <ad...@gmail.com>
Authored: Sun Oct 5 22:55:07 2014 -0700
Committer: Adrian Cole <ad...@apache.org>
Committed: Mon Oct 6 13:14:59 2014 -0700

----------------------------------------------------------------------
 .../fallbacks/EndpointIfAlreadyExists.java      |  7 ---
 .../fallbacks/TrueOn404FalseOnPathNotEmpty.java |  8 ---
 .../fallbacks/EndpointIfAlreadyExistsTest.java  | 11 ++--
 .../functions/CloudStackFallbacks.java          |  8 ---
 .../main/java/org/jclouds/ec2/EC2Fallbacks.java |  7 ---
 .../keystone/v2_0/KeystoneFallbacks.java        |  9 +--
 .../main/java/org/jclouds/s3/S3Fallbacks.java   |  8 ---
 ...ByYouOrOperationAbortedWhenBucketExists.java |  8 ---
 .../java/org/jclouds/s3/S3ClientMockTest.java   |  1 -
 ...uOrOperationAbortedWhenBucketExistsTest.java | 17 +++---
 .../jclouds/openstack/swift/SwiftFallbacks.java |  8 ---
 .../jclouds/blobstore/BlobStoreFallbacks.java   | 33 -----------
 core/src/main/java/org/jclouds/Fallback.java    |  4 +-
 core/src/main/java/org/jclouds/Fallbacks.java   | 58 --------------------
 .../fallbacks/HeaderToRetryAfterException.java  | 14 ++---
 .../fallbacks/MapHttp4xxCodesToExceptions.java  | 11 +---
 .../fallbacks/PropagateIfRetryAfter.java        | 12 ++--
 .../HeaderToRetryAfterExceptionTest.java        | 47 +++++++---------
 .../MapHttp4xxCodesToExceptionsTest.java        | 14 ++---
 .../org/jclouds/http/IntegrationTestClient.java |  7 ---
 .../internal/RestAnnotationProcessorTest.java   |  1 -
 .../jclouds/azureblob/AzureBlobFallbacks.java   |  8 ---
 .../org/jclouds/dynect/v3/DynECTFallbacks.java  |  8 ---
 23 files changed, 56 insertions(+), 253 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/b9525a08/apis/atmos/src/main/java/org/jclouds/atmos/fallbacks/EndpointIfAlreadyExists.java
----------------------------------------------------------------------
diff --git a/apis/atmos/src/main/java/org/jclouds/atmos/fallbacks/EndpointIfAlreadyExists.java b/apis/atmos/src/main/java/org/jclouds/atmos/fallbacks/EndpointIfAlreadyExists.java
index 4cae37c..041a6ed 100644
--- a/apis/atmos/src/main/java/org/jclouds/atmos/fallbacks/EndpointIfAlreadyExists.java
+++ b/apis/atmos/src/main/java/org/jclouds/atmos/fallbacks/EndpointIfAlreadyExists.java
@@ -18,7 +18,6 @@ package org.jclouds.atmos.fallbacks;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.propagate;
-import static com.google.common.util.concurrent.Futures.immediateFuture;
 
 import java.net.URI;
 
@@ -29,18 +28,12 @@ import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.rest.InvocationContext;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.util.concurrent.ListenableFuture;
 
 public class EndpointIfAlreadyExists implements Fallback<URI>, InvocationContext<EndpointIfAlreadyExists> {
 
    private URI endpoint;
 
    @Override
-   public ListenableFuture<URI> create(Throwable t) throws Exception {
-      return immediateFuture(createOrPropagate(t));
-   }
-
-   @Override
    public URI createOrPropagate(Throwable t) throws Exception {
       if (checkNotNull(t, "throwable") instanceof KeyAlreadyExistsException) {
          return endpoint;

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b9525a08/apis/atmos/src/main/java/org/jclouds/atmos/fallbacks/TrueOn404FalseOnPathNotEmpty.java
----------------------------------------------------------------------
diff --git a/apis/atmos/src/main/java/org/jclouds/atmos/fallbacks/TrueOn404FalseOnPathNotEmpty.java b/apis/atmos/src/main/java/org/jclouds/atmos/fallbacks/TrueOn404FalseOnPathNotEmpty.java
index 18dda1e..d30be6d 100644
--- a/apis/atmos/src/main/java/org/jclouds/atmos/fallbacks/TrueOn404FalseOnPathNotEmpty.java
+++ b/apis/atmos/src/main/java/org/jclouds/atmos/fallbacks/TrueOn404FalseOnPathNotEmpty.java
@@ -17,7 +17,6 @@
 package org.jclouds.atmos.fallbacks;
 
 import static com.google.common.base.Throwables.propagate;
-import static com.google.common.util.concurrent.Futures.immediateFuture;
 import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
 
 import org.jclouds.Fallback;
@@ -25,15 +24,8 @@ import org.jclouds.atmos.AtmosResponseException;
 import org.jclouds.atmos.reference.AtmosErrorCode;
 import org.jclouds.http.HttpUtils;
 
-import com.google.common.util.concurrent.ListenableFuture;
-
 public final class TrueOn404FalseOnPathNotEmpty implements Fallback<Boolean> {
    @Override
-   public ListenableFuture<Boolean> create(Throwable t) throws Exception {
-      return immediateFuture(createOrPropagate(t));
-   }
-
-   @Override
    public Boolean createOrPropagate(Throwable t) throws Exception {
       if (HttpUtils.contains404(t)) {
          return true;

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b9525a08/apis/atmos/src/test/java/org/jclouds/atmos/fallbacks/EndpointIfAlreadyExistsTest.java
----------------------------------------------------------------------
diff --git a/apis/atmos/src/test/java/org/jclouds/atmos/fallbacks/EndpointIfAlreadyExistsTest.java b/apis/atmos/src/test/java/org/jclouds/atmos/fallbacks/EndpointIfAlreadyExistsTest.java
index d6c4216..6a41351 100644
--- a/apis/atmos/src/test/java/org/jclouds/atmos/fallbacks/EndpointIfAlreadyExistsTest.java
+++ b/apis/atmos/src/test/java/org/jclouds/atmos/fallbacks/EndpointIfAlreadyExistsTest.java
@@ -16,7 +16,6 @@
  */
 package org.jclouds.atmos.fallbacks;
 
-import static com.google.common.util.concurrent.Futures.getUnchecked;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNull;
 
@@ -30,23 +29,23 @@ public class EndpointIfAlreadyExistsTest {
 
    @Test
    public void testFoundIsNullWhenEndpointNotSet() throws Exception {
-      assertNull(getUnchecked(new EndpointIfAlreadyExists().create(new KeyAlreadyExistsException())));
+      assertNull(new EndpointIfAlreadyExists().createOrPropagate(new KeyAlreadyExistsException()));
    }
 
    @Test
    public void testFoundIsEndpointWhenSet() throws Exception {
       assertEquals(
-            getUnchecked(new EndpointIfAlreadyExists().setEndpoint(URI.create("foo")).create(
-                  new KeyAlreadyExistsException())), URI.create("foo"));
+            new EndpointIfAlreadyExists().setEndpoint(URI.create("foo")).createOrPropagate(
+                  new KeyAlreadyExistsException()), URI.create("foo"));
    }
 
    @Test(expectedExceptions = RuntimeException.class)
    public void testNotFoundPropagates() throws Exception {
-      new EndpointIfAlreadyExists().create(new RuntimeException());
+      new EndpointIfAlreadyExists().createOrPropagate(new RuntimeException());
    }
 
    @Test(expectedExceptions = NullPointerException.class)
    public void testNullIsBad() throws Exception {
-      new EndpointIfAlreadyExists().create(null);
+      new EndpointIfAlreadyExists().createOrPropagate(null);
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b9525a08/apis/cloudstack/src/main/java/org/jclouds/cloudstack/functions/CloudStackFallbacks.java
----------------------------------------------------------------------
diff --git a/apis/cloudstack/src/main/java/org/jclouds/cloudstack/functions/CloudStackFallbacks.java b/apis/cloudstack/src/main/java/org/jclouds/cloudstack/functions/CloudStackFallbacks.java
index 50185ed..c2b5ec8 100644
--- a/apis/cloudstack/src/main/java/org/jclouds/cloudstack/functions/CloudStackFallbacks.java
+++ b/apis/cloudstack/src/main/java/org/jclouds/cloudstack/functions/CloudStackFallbacks.java
@@ -17,14 +17,11 @@
 package org.jclouds.cloudstack.functions;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.util.concurrent.Futures.immediateFuture;
 import static org.jclouds.Fallbacks.valOnNotFoundOr404;
 import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
 
 import org.jclouds.Fallback;
 
-import com.google.common.util.concurrent.ListenableFuture;
-
 public final class CloudStackFallbacks {
    private CloudStackFallbacks() {
    }
@@ -35,11 +32,6 @@ public final class CloudStackFallbacks {
     */
    public static final class VoidOnNotFoundOr404OrUnableToFindAccountOwner implements Fallback<Void> {
       @Override
-      public ListenableFuture<Void> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
-      @Override
       public Void createOrPropagate(Throwable t) throws Exception {
          IllegalStateException e = getFirstThrowableOfType(checkNotNull(t, "throwable"), IllegalStateException.class);
          if (e != null && e.getMessage().indexOf("Unable to find account owner for") != -1) {

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b9525a08/apis/ec2/src/main/java/org/jclouds/ec2/EC2Fallbacks.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/EC2Fallbacks.java b/apis/ec2/src/main/java/org/jclouds/ec2/EC2Fallbacks.java
index 7cb4675..c16f5af 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/EC2Fallbacks.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/EC2Fallbacks.java
@@ -18,14 +18,12 @@ package org.jclouds.ec2;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.propagate;
-import static com.google.common.util.concurrent.Futures.immediateFuture;
 
 import org.jclouds.Fallback;
 import org.jclouds.aws.AWSResponseException;
 
 import com.google.common.base.Predicates;
 import com.google.common.collect.ImmutableSet;
-import com.google.common.util.concurrent.ListenableFuture;
 
 public final class EC2Fallbacks {
    private EC2Fallbacks() {
@@ -33,11 +31,6 @@ public final class EC2Fallbacks {
 
    public static final class VoidOnVolumeAvailable implements Fallback<Void> {
       @Override
-      public ListenableFuture<Void> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
-      @Override
       public Void createOrPropagate(Throwable t) throws Exception {
          if (checkNotNull(t, "throwable") instanceof AWSResponseException) {
             AWSResponseException e = AWSResponseException.class.cast(t);

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b9525a08/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/KeystoneFallbacks.java
----------------------------------------------------------------------
diff --git a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/KeystoneFallbacks.java b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/KeystoneFallbacks.java
index 409022f..f5cf9ea 100644
--- a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/KeystoneFallbacks.java
+++ b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/KeystoneFallbacks.java
@@ -16,15 +16,13 @@
  */
 package org.jclouds.openstack.keystone.v2_0;
 
-import static com.google.common.util.concurrent.Futures.immediateFuture;
 import static org.jclouds.Fallbacks.valOnNotFoundOr404;
 
 import org.jclouds.Fallback;
-import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
 import org.jclouds.openstack.v2_0.domain.Link;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
 
 import com.google.common.collect.ImmutableSet;
-import com.google.common.util.concurrent.ListenableFuture;
 
 public final class KeystoneFallbacks {
    private KeystoneFallbacks() {
@@ -36,11 +34,6 @@ public final class KeystoneFallbacks {
       };
 
       @Override
-      public ListenableFuture<PaginatedCollection<Object>> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
-      @Override
       public PaginatedCollection<Object> createOrPropagate(Throwable t) throws Exception {
          return valOnNotFoundOr404(EMPTY, t);
       }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b9525a08/apis/s3/src/main/java/org/jclouds/s3/S3Fallbacks.java
----------------------------------------------------------------------
diff --git a/apis/s3/src/main/java/org/jclouds/s3/S3Fallbacks.java b/apis/s3/src/main/java/org/jclouds/s3/S3Fallbacks.java
index 73edb0e..6795c91 100644
--- a/apis/s3/src/main/java/org/jclouds/s3/S3Fallbacks.java
+++ b/apis/s3/src/main/java/org/jclouds/s3/S3Fallbacks.java
@@ -19,26 +19,18 @@ package org.jclouds.s3;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Predicates.equalTo;
 import static com.google.common.base.Throwables.propagate;
-import static com.google.common.util.concurrent.Futures.immediateFuture;
 import static org.jclouds.http.HttpUtils.returnValueOnCodeOrNull;
 import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
 
 import org.jclouds.Fallback;
 import org.jclouds.blobstore.ContainerNotFoundException;
 
-import com.google.common.util.concurrent.ListenableFuture;
-
 public final class S3Fallbacks {
    private S3Fallbacks() {
    }
 
    public static final class TrueOn404OrNotFoundFalseOnIllegalState implements Fallback<Boolean> {
       @Override
-      public ListenableFuture<Boolean> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
-      @Override
       public Boolean createOrPropagate(Throwable t) throws Exception {
          if (getFirstThrowableOfType(checkNotNull(t, "throwable"), IllegalStateException.class) != null)
             return false;

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b9525a08/apis/s3/src/main/java/org/jclouds/s3/fallbacks/FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExists.java
----------------------------------------------------------------------
diff --git a/apis/s3/src/main/java/org/jclouds/s3/fallbacks/FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExists.java b/apis/s3/src/main/java/org/jclouds/s3/fallbacks/FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExists.java
index 998fe33..4b58ffa 100644
--- a/apis/s3/src/main/java/org/jclouds/s3/fallbacks/FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExists.java
+++ b/apis/s3/src/main/java/org/jclouds/s3/fallbacks/FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExists.java
@@ -18,7 +18,6 @@ package org.jclouds.s3.fallbacks;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.propagate;
-import static com.google.common.util.concurrent.Futures.immediateFuture;
 import static org.jclouds.s3.util.S3Utils.getBucketName;
 import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
 
@@ -31,8 +30,6 @@ import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.rest.InvocationContext;
 import org.jclouds.s3.S3Client;
 
-import com.google.common.util.concurrent.ListenableFuture;
-
 public class FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExists implements Fallback<Boolean>,
       InvocationContext<FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExists> {
 
@@ -45,11 +42,6 @@ public class FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExists im
    }
 
    @Override
-   public ListenableFuture<Boolean> create(Throwable t) throws Exception {
-      return immediateFuture(createOrPropagate(t));
-   }
-
-   @Override
    public Boolean createOrPropagate(Throwable t) throws Exception {
       AWSResponseException exception = getFirstThrowableOfType(checkNotNull(t, "throwable"), AWSResponseException.class);
       if (exception != null && exception.getError() != null && exception.getError().getCode() != null) {

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b9525a08/apis/s3/src/test/java/org/jclouds/s3/S3ClientMockTest.java
----------------------------------------------------------------------
diff --git a/apis/s3/src/test/java/org/jclouds/s3/S3ClientMockTest.java b/apis/s3/src/test/java/org/jclouds/s3/S3ClientMockTest.java
index 097d49d..5cb2db5 100644
--- a/apis/s3/src/test/java/org/jclouds/s3/S3ClientMockTest.java
+++ b/apis/s3/src/test/java/org/jclouds/s3/S3ClientMockTest.java
@@ -21,7 +21,6 @@ import static com.google.common.net.HttpHeaders.ETAG;
 import static com.google.common.net.HttpHeaders.EXPECT;
 import static com.google.common.util.concurrent.MoreExecutors.newDirectExecutorService;
 import static org.jclouds.Constants.PROPERTY_MAX_RETRIES;
-import static org.jclouds.Constants.PROPERTY_SO_TIMEOUT;
 import static org.testng.Assert.assertEquals;
 
 import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b9525a08/apis/s3/src/test/java/org/jclouds/s3/fallbacks/FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExistsTest.java
----------------------------------------------------------------------
diff --git a/apis/s3/src/test/java/org/jclouds/s3/fallbacks/FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExistsTest.java b/apis/s3/src/test/java/org/jclouds/s3/fallbacks/FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExistsTest.java
index 7c31a39..9e3989e 100644
--- a/apis/s3/src/test/java/org/jclouds/s3/fallbacks/FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExistsTest.java
+++ b/apis/s3/src/test/java/org/jclouds/s3/fallbacks/FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExistsTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 package org.jclouds.s3.fallbacks;
-import static com.google.common.util.concurrent.Futures.getUnchecked;
+
 import static org.easymock.EasyMock.createMock;
 import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.replay;
@@ -55,8 +55,8 @@ public class FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExistsTes
       replay(client);
 
       Exception e = getErrorWithCode("BucketAlreadyOwnedByYou");
-      assertFalse(getUnchecked(new FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExists(client).setContext(
-            putBucket).create(e)));
+      assertFalse(new FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExists(client).setContext(
+            putBucket).createOrPropagate(e));
       verify(client);
    }
 
@@ -66,8 +66,8 @@ public class FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExistsTes
       expect(client.bucketExists("bucket")).andReturn(true);
       replay(client);
       Exception e = getErrorWithCode("OperationAborted");
-      assertFalse(getUnchecked(new FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExists(client).setContext(
-            putBucket).create(e)));
+      assertFalse(new FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExists(client).setContext(
+            putBucket).createOrPropagate(e));
       verify(client);
    }
 
@@ -77,7 +77,8 @@ public class FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExistsTes
       expect(client.bucketExists("bucket")).andReturn(false);
       replay(client);
       Exception e = getErrorWithCode("OperationAborted");
-      new FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExists(client).setContext(putBucket).create(e);
+      new FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExists(client).setContext(putBucket)
+            .createOrPropagate(e);
    }
 
    @Test(expectedExceptions = IllegalStateException.class)
@@ -86,7 +87,7 @@ public class FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExistsTes
       replay(client);
 
       Exception e = new IllegalStateException();
-      new FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExists(client).create(e);
+      new FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExists(client).createOrPropagate(e);
    }
 
    @Test(expectedExceptions = AWSResponseException.class)
@@ -94,7 +95,7 @@ public class FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExistsTes
       S3Client client = createMock(S3Client.class);
       replay(client);
       Exception e = getErrorWithCode("blah");
-      new FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExists(client).create(e);
+      new FalseIfBucketAlreadyOwnedByYouOrOperationAbortedWhenBucketExists(client).createOrPropagate(e);
    }
 
    private Exception getErrorWithCode(String code) {

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b9525a08/apis/swift/src/main/java/org/jclouds/openstack/swift/SwiftFallbacks.java
----------------------------------------------------------------------
diff --git a/apis/swift/src/main/java/org/jclouds/openstack/swift/SwiftFallbacks.java b/apis/swift/src/main/java/org/jclouds/openstack/swift/SwiftFallbacks.java
index daec13a..44ca048 100644
--- a/apis/swift/src/main/java/org/jclouds/openstack/swift/SwiftFallbacks.java
+++ b/apis/swift/src/main/java/org/jclouds/openstack/swift/SwiftFallbacks.java
@@ -19,25 +19,17 @@ package org.jclouds.openstack.swift;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Predicates.equalTo;
 import static com.google.common.base.Throwables.propagate;
-import static com.google.common.util.concurrent.Futures.immediateFuture;
 import static org.jclouds.http.HttpUtils.contains404;
 import static org.jclouds.http.HttpUtils.returnValueOnCodeOrNull;
 
 import org.jclouds.Fallback;
 
-import com.google.common.util.concurrent.ListenableFuture;
-
 public final class SwiftFallbacks {
    private SwiftFallbacks() {
    }
 
    public static final class TrueOn404FalseOn409 implements Fallback<Boolean> {
       @Override
-      public ListenableFuture<Boolean> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
-      @Override
       public Boolean createOrPropagate(Throwable t) throws Exception {
          if (contains404(checkNotNull(t, "throwable")))
             return true;

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b9525a08/blobstore/src/main/java/org/jclouds/blobstore/BlobStoreFallbacks.java
----------------------------------------------------------------------
diff --git a/blobstore/src/main/java/org/jclouds/blobstore/BlobStoreFallbacks.java b/blobstore/src/main/java/org/jclouds/blobstore/BlobStoreFallbacks.java
index 5434545..42a11ae 100644
--- a/blobstore/src/main/java/org/jclouds/blobstore/BlobStoreFallbacks.java
+++ b/blobstore/src/main/java/org/jclouds/blobstore/BlobStoreFallbacks.java
@@ -18,48 +18,31 @@ package org.jclouds.blobstore;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.propagate;
-import static com.google.common.util.concurrent.Futures.immediateFuture;
 import static org.jclouds.http.HttpUtils.contains404;
 
 import org.jclouds.Fallback;
 
-import com.google.common.util.concurrent.ListenableFuture;
-
 public final class BlobStoreFallbacks {
    private BlobStoreFallbacks() {
    }
    
    public static final class ThrowContainerNotFoundOn404 implements Fallback<Object> {
-      public ListenableFuture<Object> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
       public Object createOrPropagate(Throwable t) throws Exception {
          if (contains404(checkNotNull(t, "throwable")))
             throw new ContainerNotFoundException(t);
          throw propagate(t);
       }
-
    }
 
    public static final class ThrowKeyNotFoundOn404 implements Fallback<Object> {
-      public ListenableFuture<Object> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
       public Object createOrPropagate(Throwable t) throws Exception {
          if (contains404(checkNotNull(t, "throwable")))
             throw new KeyNotFoundException(t);
          throw propagate(t);
       }
-
    }
 
    public static final class FalseOnContainerNotFound implements Fallback<Boolean> {
-      public ListenableFuture<Boolean> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
       public Boolean createOrPropagate(Throwable t) throws Exception {
          if (checkNotNull(t, "throwable") instanceof ContainerNotFoundException) {
             return false;
@@ -69,10 +52,6 @@ public final class BlobStoreFallbacks {
    }
 
    public static final class FalseOnKeyNotFound implements Fallback<Boolean> {
-      public ListenableFuture<Boolean> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
       public Boolean createOrPropagate(Throwable t) throws Exception {
          if (checkNotNull(t, "throwable") instanceof KeyNotFoundException) {
             return false;
@@ -82,10 +61,6 @@ public final class BlobStoreFallbacks {
    }
 
    public static final class NullOnContainerNotFound implements Fallback<Object> {
-      public ListenableFuture<Object> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
       public Object createOrPropagate(Throwable t) throws Exception {
          if (checkNotNull(t, "throwable") instanceof ContainerNotFoundException) {
             return null;
@@ -95,10 +70,6 @@ public final class BlobStoreFallbacks {
    }
 
    public static final class NullOnKeyNotFound implements Fallback<Object> {
-      public ListenableFuture<Object> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
       public Object createOrPropagate(Throwable t) throws Exception {
          if (checkNotNull(t, "throwable") instanceof KeyNotFoundException) {
             return null;
@@ -108,10 +79,6 @@ public final class BlobStoreFallbacks {
    }
 
    public static final class NullOnKeyAlreadyExists implements Fallback<Object> {
-      public ListenableFuture<Object> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
       public Object createOrPropagate(Throwable t) throws Exception {
          if (checkNotNull(t, "throwable") instanceof KeyAlreadyExistsException) {
             return null;

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b9525a08/core/src/main/java/org/jclouds/Fallback.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/Fallback.java b/core/src/main/java/org/jclouds/Fallback.java
index bb7bd07..e24a245 100644
--- a/core/src/main/java/org/jclouds/Fallback.java
+++ b/core/src/main/java/org/jclouds/Fallback.java
@@ -17,7 +17,6 @@
 package org.jclouds;
 
 import com.google.common.annotations.Beta;
-import com.google.common.util.concurrent.FutureFallback;
 
 /**
  * Provides a backup value to replace an earlier exception.
@@ -25,11 +24,10 @@ import com.google.common.util.concurrent.FutureFallback;
  * @param <V>
  *           the result type of the backup value
  * 
- * @see FutureFallback
  * @since 1.6
  */
 @Beta
-public interface Fallback<V> extends FutureFallback<V> {
+public interface Fallback<V> {
    /**
     * The exception is provided so that the {@code Fallback} implementation can
     * conditionally determine whether to propagate the exception or to attempt

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b9525a08/core/src/main/java/org/jclouds/Fallbacks.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/Fallbacks.java b/core/src/main/java/org/jclouds/Fallbacks.java
index c49994b..823e5ea 100644
--- a/core/src/main/java/org/jclouds/Fallbacks.java
+++ b/core/src/main/java/org/jclouds/Fallbacks.java
@@ -21,7 +21,6 @@ import static com.google.common.base.Predicates.equalTo;
 import static com.google.common.base.Predicates.in;
 import static com.google.common.base.Throwables.propagate;
 import static com.google.common.primitives.Ints.asList;
-import static com.google.common.util.concurrent.Futures.immediateFuture;
 import static org.jclouds.http.HttpUtils.contains404;
 import static org.jclouds.http.HttpUtils.returnValueOnCodeOrNull;
 import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
@@ -38,57 +37,36 @@ import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableMultimap;
 import com.google.common.collect.ImmutableSet;
-import com.google.common.util.concurrent.ListenableFuture;
 
 public final class Fallbacks {
    private Fallbacks() {
    }
 
    public static final class NullOnNotFoundOr404 implements Fallback<Object> {
-      public ListenableFuture<Object> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
       public Object createOrPropagate(Throwable t) throws Exception {
          return valOnNotFoundOr404(null, checkNotNull(t, "throwable"));
       }
    }
 
    public static final class VoidOnNotFoundOr404 implements Fallback<Void> {
-      public ListenableFuture<Void> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
       public Void createOrPropagate(Throwable t) throws Exception {
          return valOnNotFoundOr404(null, checkNotNull(t, "throwable"));
       }
    }
 
    public static final class TrueOnNotFoundOr404 implements Fallback<Boolean> {
-      public ListenableFuture<Boolean> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
       public Boolean createOrPropagate(Throwable t) throws Exception {
          return valOnNotFoundOr404(true, checkNotNull(t, "throwable"));
       }
    }
 
    public static final class FalseOnNotFoundOr404 implements Fallback<Boolean> {
-      public ListenableFuture<Boolean> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
       public Boolean createOrPropagate(Throwable t) throws Exception {
          return valOnNotFoundOr404(false, checkNotNull(t, "throwable"));
       }
    }
 
    public static final class FalseOnNotFoundOr422 implements Fallback<Boolean> {
-      public ListenableFuture<Boolean> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
       public Boolean createOrPropagate(Throwable t) throws Exception {
          if (containsResourceNotFoundException(checkNotNull(t, "throwable"))
                || returnValueOnCodeOrNull(t, true, equalTo(422)) != null)
@@ -100,10 +78,6 @@ public final class Fallbacks {
    /**
     */
    public static final class AbsentOn403Or404Or500 implements Fallback<Optional<Object>> {
-      public ListenableFuture<Optional<Object>> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
       public Optional<Object> createOrPropagate(Throwable t) throws Exception {
          Boolean returnVal = returnValueOnCodeOrNull(checkNotNull(t, "throwable"), true, in(asList(403, 404, 500)));
          if (returnVal != null)
@@ -113,30 +87,18 @@ public final class Fallbacks {
    }
 
    public static final class EmptyFluentIterableOnNotFoundOr404 implements Fallback<FluentIterable<Object>> {
-      public ListenableFuture<FluentIterable<Object>> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
       public FluentIterable<Object> createOrPropagate(Throwable t) throws Exception {
          return valOnNotFoundOr404(FluentIterable.from(ImmutableSet.of()), checkNotNull(t, "throwable"));
       }
    }
 
    public static final class EmptyIterableWithMarkerOnNotFoundOr404 implements Fallback<IterableWithMarker<Object>> {
-      public ListenableFuture<IterableWithMarker<Object>> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
       public IterableWithMarker<Object> createOrPropagate(Throwable t) throws Exception {
          return valOnNotFoundOr404(IterableWithMarkers.from(ImmutableSet.of()), checkNotNull(t, "throwable"));
       }
    }
 
    public static final class EmptyPagedIterableOnNotFoundOr404 implements Fallback<PagedIterable<Object>> {
-      public ListenableFuture<PagedIterable<Object>> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
       public PagedIterable<Object> createOrPropagate(Throwable t) throws Exception {
          return valOnNotFoundOr404(PagedIterables.of(IterableWithMarkers.from(ImmutableSet.of())),
                checkNotNull(t, "throwable"));
@@ -144,44 +106,24 @@ public final class Fallbacks {
    }
 
    public static final class EmptyListOnNotFoundOr404 implements Fallback<ImmutableList<Object>> { // NO_UCD
-                                                                                                   // (unused
-                                                                                                   // code)
-      public ListenableFuture<ImmutableList<Object>> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
       public ImmutableList<Object> createOrPropagate(Throwable t) throws Exception {
          return valOnNotFoundOr404(ImmutableList.of(), checkNotNull(t, "throwable"));
       }
    }
 
    public static final class EmptySetOnNotFoundOr404 implements Fallback<ImmutableSet<Object>> {
-      public ListenableFuture<ImmutableSet<Object>> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
       public ImmutableSet<Object> createOrPropagate(Throwable t) throws Exception {
          return valOnNotFoundOr404(ImmutableSet.of(), checkNotNull(t, "throwable"));
       }
    }
 
    public static final class EmptyMapOnNotFoundOr404 implements Fallback<ImmutableMap<Object, Object>> {
-      public ListenableFuture<ImmutableMap<Object, Object>> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
       public ImmutableMap<Object, Object> createOrPropagate(Throwable t) throws Exception {
          return valOnNotFoundOr404(ImmutableMap.of(), checkNotNull(t, "throwable"));
       }
    }
 
    public static final class EmptyMultimapOnNotFoundOr404 implements Fallback<ImmutableMultimap<Object, Object>> { // NO_UCD
-                                                                                                                   // (unused
-                                                                                                                   // code)
-      public ListenableFuture<ImmutableMultimap<Object, Object>> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
       public ImmutableMultimap<Object, Object> createOrPropagate(Throwable t) throws Exception {
          return valOnNotFoundOr404(ImmutableMultimap.of(), checkNotNull(t, "throwable"));
       }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b9525a08/core/src/main/java/org/jclouds/fallbacks/HeaderToRetryAfterException.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/fallbacks/HeaderToRetryAfterException.java b/core/src/main/java/org/jclouds/fallbacks/HeaderToRetryAfterException.java
index f21b3c2..1d330a5 100644
--- a/core/src/main/java/org/jclouds/fallbacks/HeaderToRetryAfterException.java
+++ b/core/src/main/java/org/jclouds/fallbacks/HeaderToRetryAfterException.java
@@ -18,7 +18,6 @@ package org.jclouds.fallbacks;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.propagate;
-import static com.google.common.util.concurrent.Futures.immediateFuture;
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static java.util.concurrent.TimeUnit.NANOSECONDS;
 
@@ -34,7 +33,6 @@ import com.google.common.annotations.Beta;
 import com.google.common.base.Optional;
 import com.google.common.base.Ticker;
 import com.google.common.net.HttpHeaders;
-import com.google.common.util.concurrent.ListenableFuture;
 
 /**
  * propagates as {@link RetryAfterException} if a Throwable is an
@@ -54,7 +52,7 @@ public final class HeaderToRetryAfterException implements PropagateIfRetryAfter
     * 
     * @param ticker
     *           how to read current time
-    * @param dateParser
+    * @param dateCodec
     *           how to parse the {@link HttpHeaders#RETRY_AFTER} header, if it
     *           is a Date.
     * @return
@@ -76,13 +74,13 @@ public final class HeaderToRetryAfterException implements PropagateIfRetryAfter
       this.dateCodec = checkNotNull(dateCodec, "dateCodec");
    }
 
-   @Override
-   public ListenableFuture<Object> create(Throwable t) {
+   @Override public Object createOrPropagate(Throwable t) throws Exception {
       if (!(t instanceof HttpResponseException))
          throw propagate(t);
       HttpResponse response = HttpResponseException.class.cast(t).getResponse();
-      if (response == null)
-         return immediateFuture(null);
+      if (response == null) {
+         return null;
+      }
 
       // https://tools.ietf.org/html/rfc2616#section-14.37
       String retryAfter = response.getFirstHeaderOrNull(HttpHeaders.RETRY_AFTER);
@@ -92,7 +90,7 @@ public final class HeaderToRetryAfterException implements PropagateIfRetryAfter
             throw retryException.get();
       }
 
-      return immediateFuture(null);
+      return null;
    }
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b9525a08/core/src/main/java/org/jclouds/fallbacks/MapHttp4xxCodesToExceptions.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/fallbacks/MapHttp4xxCodesToExceptions.java b/core/src/main/java/org/jclouds/fallbacks/MapHttp4xxCodesToExceptions.java
index 9078e32..a810c9f 100644
--- a/core/src/main/java/org/jclouds/fallbacks/MapHttp4xxCodesToExceptions.java
+++ b/core/src/main/java/org/jclouds/fallbacks/MapHttp4xxCodesToExceptions.java
@@ -18,7 +18,6 @@ package org.jclouds.fallbacks;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.propagate;
-import static com.google.common.util.concurrent.Futures.immediateFuture;
 
 import javax.inject.Inject;
 import javax.inject.Singleton;
@@ -28,8 +27,6 @@ import org.jclouds.http.HttpResponseException;
 import org.jclouds.rest.AuthorizationException;
 import org.jclouds.rest.ResourceNotFoundException;
 
-import com.google.common.util.concurrent.ListenableFuture;
-
 @Singleton
 public final class MapHttp4xxCodesToExceptions implements Fallback<Object> {
 
@@ -39,15 +36,9 @@ public final class MapHttp4xxCodesToExceptions implements Fallback<Object> {
    MapHttp4xxCodesToExceptions(PropagateIfRetryAfter propagateIfRetryAfter) { // NO_UCD
       this.propagateIfRetryAfter = checkNotNull(propagateIfRetryAfter, "propagateIfRetryAfter");
    }
-
-   @Override
-   public ListenableFuture<Object> create(Throwable t) throws Exception { // NO_UCD
-      return immediateFuture(createOrPropagate(t));
-   }
-
    @Override
    public Object createOrPropagate(Throwable t) throws Exception {
-      propagateIfRetryAfter.create(t); // if we pass here, we aren't a retry-after exception
+      propagateIfRetryAfter.createOrPropagate(t); // if we pass here, we aren't a retry-after exception
       if (t instanceof HttpResponseException) {
          HttpResponseException responseException = HttpResponseException.class.cast(t);
          if (responseException.getResponse() != null)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b9525a08/core/src/main/java/org/jclouds/fallbacks/PropagateIfRetryAfter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/fallbacks/PropagateIfRetryAfter.java b/core/src/main/java/org/jclouds/fallbacks/PropagateIfRetryAfter.java
index c76d6c0..aac6e76 100644
--- a/core/src/main/java/org/jclouds/fallbacks/PropagateIfRetryAfter.java
+++ b/core/src/main/java/org/jclouds/fallbacks/PropagateIfRetryAfter.java
@@ -16,8 +16,8 @@
  */
 package org.jclouds.fallbacks;
 
-import com.google.common.util.concurrent.FutureFallback;
-import com.google.common.util.concurrent.ListenableFuture;
+import org.jclouds.Fallback;
+
 import com.google.inject.ImplementedBy;
 
 /**
@@ -25,12 +25,10 @@ import com.google.inject.ImplementedBy;
  * offset.
  */
 @ImplementedBy(HeaderToRetryAfterException.class)
-public interface PropagateIfRetryAfter extends FutureFallback<Object> {
+public interface PropagateIfRetryAfter extends Fallback<Object> {
    /**
-    * if input is not of type {@link org.jclouds.http.HttpResponseException}, this method propagates. Otherwise, immediate future of
+    * if input is not of type {@link org.jclouds.http.HttpResponseException}, this method propagates. Otherwise,
     * {@code null}, if didn't coerce to {@link org.jclouds.rest.RetryAfterException}
     */
-   @Override
-   ListenableFuture<Object> create(Throwable t);
-
+   @Override Object createOrPropagate(Throwable t) throws Exception;
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b9525a08/core/src/test/java/org/jclouds/fallbacks/HeaderToRetryAfterExceptionTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/jclouds/fallbacks/HeaderToRetryAfterExceptionTest.java b/core/src/test/java/org/jclouds/fallbacks/HeaderToRetryAfterExceptionTest.java
index d00a4aa..f81eeaa 100644
--- a/core/src/test/java/org/jclouds/fallbacks/HeaderToRetryAfterExceptionTest.java
+++ b/core/src/test/java/org/jclouds/fallbacks/HeaderToRetryAfterExceptionTest.java
@@ -34,47 +34,42 @@ import com.google.common.net.HttpHeaders;
 public class HeaderToRetryAfterExceptionTest {
 
    @Test(expectedExceptions = RuntimeException.class)
-   public void testArbitraryExceptionDoesntConvert() {
-      fn.create(new RuntimeException());
+   public void testArbitraryExceptionDoesntConvert() throws Exception {
+      fn.createOrPropagate(new RuntimeException());
    }
    
-   public void testHttpResponseExceptionWithoutResponseDoesntPropagate() {
-      fn.create(new HttpResponseException("message", command, null));
+   public void testHttpResponseExceptionWithoutResponseDoesntPropagate() throws Exception {
+      fn.createOrPropagate(new HttpResponseException("message", command, null));
    }
 
-   public void testHttpResponseExceptionWithoutRetryAfterHeaderDoesntPropagate() {
-      fn.create(new HttpResponseException(command, HttpResponse.builder().statusCode(500).build()));
+   public void testHttpResponseExceptionWithoutRetryAfterHeaderDoesntPropagate() throws Exception {
+      fn.createOrPropagate(new HttpResponseException(command, HttpResponse.builder().statusCode(500).build()));
    }
 
-   public void testHttpResponseExceptionWithMalformedRetryAfterHeaderDoesntConvert() {
-      fn.create(new HttpResponseException(command, 
-            HttpResponse.builder()
-                        .statusCode(503)
-                        .addHeader(HttpHeaders.RETRY_AFTER, "Fri, 31 Dec 1999 23:59:59 ZBW").build()));
+   public void testHttpResponseExceptionWithMalformedRetryAfterHeaderDoesntConvert() throws Exception {
+      fn.createOrPropagate(new HttpResponseException(command,
+            HttpResponse.builder().statusCode(503).addHeader(HttpHeaders.RETRY_AFTER, "Fri, 31 Dec 1999 23:59:59 ZBW")
+                  .build()));
    }
    
    @Test(expectedExceptions = RetryAfterException.class, expectedExceptionsMessageRegExp = "retry now")
-   public void testHttpResponseExceptionWithRetryAfterDate() {
-      fn.create(new HttpResponseException(command, 
-            HttpResponse.builder()
-                        .statusCode(503)
-                        .addHeader(HttpHeaders.RETRY_AFTER, "Fri, 31 Dec 1999 23:59:59 GMT").build()));
+   public void testHttpResponseExceptionWithRetryAfterDate() throws Exception {
+      fn.createOrPropagate(new HttpResponseException(command,
+            HttpResponse.builder().statusCode(503).addHeader(HttpHeaders.RETRY_AFTER, "Fri, 31 Dec 1999 23:59:59 GMT")
+                  .build()));
    }
    
    @Test(expectedExceptions = RetryAfterException.class, expectedExceptionsMessageRegExp = "retry in 700 seconds")
-   public void testHttpResponseExceptionWithRetryAfterOffset() {
-      fn.create(new HttpResponseException(command, 
-            HttpResponse.builder()
-                        .statusCode(503)
-                        .addHeader(HttpHeaders.RETRY_AFTER, "700").build()));
+   public void testHttpResponseExceptionWithRetryAfterOffset() throws Exception {
+      fn.createOrPropagate(new HttpResponseException(command,
+            HttpResponse.builder().statusCode(503).addHeader(HttpHeaders.RETRY_AFTER, "700").build()));
    }
    
    @Test(expectedExceptions = RetryAfterException.class, expectedExceptionsMessageRegExp = "retry in 86400 seconds")
-   public void testHttpResponseExceptionWithRetryAfterPastIsZero() {
-      fn.create(new HttpResponseException(command, 
-            HttpResponse.builder()
-                        .statusCode(503)
-                        .addHeader(HttpHeaders.RETRY_AFTER, "Sun, 2 Jan 2000 00:00:00 GMT").build()));
+   public void testHttpResponseExceptionWithRetryAfterPastIsZero() throws Exception {
+      fn.createOrPropagate(new HttpResponseException(command,
+            HttpResponse.builder().statusCode(503).addHeader(HttpHeaders.RETRY_AFTER, "Sun, 2 Jan 2000 00:00:00 GMT")
+                  .build()));
    }
 
    public static HttpCommand command = new HttpCommand(HttpRequest.builder().method("GET").endpoint("http://stub").build());

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b9525a08/core/src/test/java/org/jclouds/fallbacks/MapHttp4xxCodesToExceptionsTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/jclouds/fallbacks/MapHttp4xxCodesToExceptionsTest.java b/core/src/test/java/org/jclouds/fallbacks/MapHttp4xxCodesToExceptionsTest.java
index 7cbd5f4..4bbcf57 100644
--- a/core/src/test/java/org/jclouds/fallbacks/MapHttp4xxCodesToExceptionsTest.java
+++ b/core/src/test/java/org/jclouds/fallbacks/MapHttp4xxCodesToExceptionsTest.java
@@ -31,27 +31,27 @@ public class MapHttp4xxCodesToExceptionsTest {
 
    @Test(expectedExceptions = AuthorizationException.class)
    public void test401ToAuthorizationException() throws Exception {
-      fn.create(new HttpResponseException(command, HttpResponse.builder().statusCode(401).build()));
+      fn.createOrPropagate(new HttpResponseException(command, HttpResponse.builder().statusCode(401).build()));
    }
 
    @Test(expectedExceptions = AuthorizationException.class)
    public void test403ToAuthorizationException() throws Exception {
-      fn.create(new HttpResponseException(command, HttpResponse.builder().statusCode(403).build()));
+      fn.createOrPropagate(new HttpResponseException(command, HttpResponse.builder().statusCode(403).build()));
    }
    
    @Test(expectedExceptions = ResourceNotFoundException.class)
    public void test404ToResourceNotFoundException() throws Exception {
-      fn.create(new HttpResponseException(command, HttpResponse.builder().statusCode(404).build()));
+      fn.createOrPropagate(new HttpResponseException(command, HttpResponse.builder().statusCode(404).build()));
    }
 
    @Test(expectedExceptions = IllegalStateException.class)
    public void test409ToIllegalStateException() throws Exception {
-      fn.create(new HttpResponseException(command, HttpResponse.builder().statusCode(409).build()));
+      fn.createOrPropagate(new HttpResponseException(command, HttpResponse.builder().statusCode(409).build()));
    }
    
    @Test(expectedExceptions = RetryAfterException.class, expectedExceptionsMessageRegExp = "retry now")
    public void testHttpResponseExceptionWithRetryAfterDate() throws Exception {
-      fn.create(new HttpResponseException(command, 
+      fn.createOrPropagate(new HttpResponseException(command,
             HttpResponse.builder()
                         .statusCode(503)
                         .addHeader(HttpHeaders.RETRY_AFTER, "Fri, 31 Dec 1999 23:59:59 GMT").build()));
@@ -59,7 +59,7 @@ public class MapHttp4xxCodesToExceptionsTest {
    
    @Test(expectedExceptions = RetryAfterException.class, expectedExceptionsMessageRegExp = "retry in 700 seconds")
    public void testHttpResponseExceptionWithRetryAfterOffset() throws Exception {
-      fn.create(new HttpResponseException(command, 
+      fn.createOrPropagate(new HttpResponseException(command,
             HttpResponse.builder()
                         .statusCode(503)
                         .addHeader(HttpHeaders.RETRY_AFTER, "700").build()));
@@ -67,7 +67,7 @@ public class MapHttp4xxCodesToExceptionsTest {
    
    @Test(expectedExceptions = RetryAfterException.class, expectedExceptionsMessageRegExp = "retry in 86400 seconds")
    public void testHttpResponseExceptionWithRetryAfterPastIsZero() throws Exception {
-      fn.create(new HttpResponseException(command, 
+      fn.createOrPropagate(new HttpResponseException(command,
             HttpResponse.builder()
                         .statusCode(503)
                         .addHeader(HttpHeaders.RETRY_AFTER, "Sun, 2 Jan 2000 00:00:00 GMT").build()));

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b9525a08/core/src/test/java/org/jclouds/http/IntegrationTestClient.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/jclouds/http/IntegrationTestClient.java b/core/src/test/java/org/jclouds/http/IntegrationTestClient.java
index 27ec54b..afdfa59 100644
--- a/core/src/test/java/org/jclouds/http/IntegrationTestClient.java
+++ b/core/src/test/java/org/jclouds/http/IntegrationTestClient.java
@@ -16,8 +16,6 @@
  */
 package org.jclouds.http;
 
-import static com.google.common.util.concurrent.Futures.immediateFuture;
-
 import java.io.Closeable;
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
@@ -51,7 +49,6 @@ import org.jclouds.util.Strings2;
 
 import com.google.common.base.Function;
 import com.google.common.collect.Multimap;
-import com.google.common.util.concurrent.ListenableFuture;
 import com.google.inject.Provides;
 
 /**
@@ -89,10 +86,6 @@ public interface IntegrationTestClient extends Closeable {
    String downloadException(@PathParam("id") String id, HttpRequestOptions options);
 
    static class FooOnException implements org.jclouds.Fallback<String> {
-      public ListenableFuture<String> create(Throwable t) throws Exception {
-         return immediateFuture("foo");
-      }
-
       public String createOrPropagate(Throwable t) throws Exception {
          return "foo";
       }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b9525a08/core/src/test/java/org/jclouds/rest/internal/RestAnnotationProcessorTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/jclouds/rest/internal/RestAnnotationProcessorTest.java b/core/src/test/java/org/jclouds/rest/internal/RestAnnotationProcessorTest.java
index 16ace50..4e5782c 100644
--- a/core/src/test/java/org/jclouds/rest/internal/RestAnnotationProcessorTest.java
+++ b/core/src/test/java/org/jclouds/rest/internal/RestAnnotationProcessorTest.java
@@ -146,7 +146,6 @@ import com.google.common.io.ByteSource;
 import com.google.common.io.Files;
 import com.google.common.net.HttpHeaders;
 import com.google.common.reflect.Invokable;
-import com.google.common.util.concurrent.ListenableFuture;
 import com.google.inject.AbstractModule;
 import com.google.inject.ConfigurationException;
 import com.google.inject.Injector;

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b9525a08/providers/azureblob/src/main/java/org/jclouds/azureblob/AzureBlobFallbacks.java
----------------------------------------------------------------------
diff --git a/providers/azureblob/src/main/java/org/jclouds/azureblob/AzureBlobFallbacks.java b/providers/azureblob/src/main/java/org/jclouds/azureblob/AzureBlobFallbacks.java
index c12bf71..71a5dca 100644
--- a/providers/azureblob/src/main/java/org/jclouds/azureblob/AzureBlobFallbacks.java
+++ b/providers/azureblob/src/main/java/org/jclouds/azureblob/AzureBlobFallbacks.java
@@ -18,24 +18,16 @@ package org.jclouds.azureblob;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.propagate;
-import static com.google.common.util.concurrent.Futures.immediateFuture;
 
 import org.jclouds.Fallback;
 import org.jclouds.azure.storage.AzureStorageResponseException;
 
-import com.google.common.util.concurrent.ListenableFuture;
-
 public final class AzureBlobFallbacks {
    private AzureBlobFallbacks() {
    }
 
    public static final class FalseIfContainerAlreadyExists implements Fallback<Boolean> {
       @Override
-      public ListenableFuture<Boolean> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
-      @Override
       public Boolean createOrPropagate(Throwable t) throws Exception {
          if (checkNotNull(t, "throwable") instanceof AzureStorageResponseException) {
             AzureStorageResponseException responseException = AzureStorageResponseException.class.cast(t);

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b9525a08/providers/dynect/src/main/java/org/jclouds/dynect/v3/DynECTFallbacks.java
----------------------------------------------------------------------
diff --git a/providers/dynect/src/main/java/org/jclouds/dynect/v3/DynECTFallbacks.java b/providers/dynect/src/main/java/org/jclouds/dynect/v3/DynECTFallbacks.java
index 0f87e7b..6cc3b3d 100644
--- a/providers/dynect/src/main/java/org/jclouds/dynect/v3/DynECTFallbacks.java
+++ b/providers/dynect/src/main/java/org/jclouds/dynect/v3/DynECTFallbacks.java
@@ -18,24 +18,16 @@ package org.jclouds.dynect.v3;
 
 import static com.google.common.base.Predicates.equalTo;
 import static com.google.common.base.Throwables.propagate;
-import static com.google.common.util.concurrent.Futures.immediateFuture;
 import static org.jclouds.http.HttpUtils.returnValueOnCodeOrNull;
 
 import org.jclouds.Fallback;
 
-import com.google.common.util.concurrent.ListenableFuture;
-
 public final class DynECTFallbacks {
    private DynECTFallbacks() {
    }
 
    public static class FalseOn400 implements Fallback<Boolean> {
       @Override
-      public ListenableFuture<Boolean> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
-      @Override
       public Boolean createOrPropagate(Throwable t) throws Exception {
          if (returnValueOnCodeOrNull(t, false, equalTo(400)) != null)
             return false;


[2/7] git commit: JCLOUDS-153 remove IO Executor and usage of it.

Posted by an...@apache.org.
JCLOUDS-153 remove IO Executor and usage of it.


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

Branch: refs/heads/reactivate-checkstyle
Commit: 0a236f59ad4aa0207b0603b287b76de1d7c0c19f
Parents: ffc0df1
Author: Adrian Cole <ad...@gmail.com>
Authored: Sun Oct 5 22:53:38 2014 -0700
Committer: Adrian Cole <ad...@gmail.com>
Committed: Mon Oct 6 07:56:31 2014 -0700

----------------------------------------------------------------------
 .../v2_0/internal/BaseOpenStackMockTest.java    |   2 +-
 .../java/org/jclouds/s3/S3ClientMockTest.java   |   2 +-
 .../sqs/features/PermissionApiLiveTest.java     |   2 +-
 .../ParallelMultipartUploadStrategy.java        |  14 +-
 ...quentialMultipartUploadStrategyMockTest.java |   4 +-
 .../stub/config/StubComputeServiceAdapter.java  |  15 +-
 .../extensions/StubSecurityGroupExtension.java  |   9 -
 ...ScriptUsingSshAndBlockUntilCompleteTest.java |   4 +-
 core/src/main/java/org/jclouds/Constants.java   |   3 +
 .../main/java/org/jclouds/ContextBuilder.java   |   2 +-
 .../jclouds/apis/internal/BaseApiMetadata.java  |   2 -
 .../config/ExecutorServiceModule.java           |  45 +++--
 .../http/HttpCommandExecutorService.java        |  15 +-
 .../BaseHttpCommandExecutorService.java         |  38 ----
 .../JavaUrlHttpCommandExecutorService.java      |   6 +-
 .../lifecycle/config/LifeCycleModule.java       |   6 -
 .../config/ExecutorServiceModuleTest.java       |  33 ++--
 .../events/config/EventBusModuleTest.java       |   1 -
 ...tpCommandExecutorServiceIntegrationTest.java |   3 -
 ...ackingJavaUrlHttpCommandExecutorService.java |  16 +-
 .../lifecycle/config/LifeCycleModuleTest.java   |   7 -
 .../rest/annotationparsing/ClosableApiTest.java |   2 +-
 .../rest/internal/BaseRestApiExpectTest.java    |  10 +-
 .../jclouds/rest/internal/BaseRestApiTest.java  |   2 -
 .../internal/RestAnnotationProcessorTest.java   |  54 ------
 .../ApacheHCHttpCommandExecutorService.java     |  13 +-
 ...CHttpCommandExecutorServiceTestDisabled.java |   2 -
 .../config/EnterpriseConfigurationModule.java   |  10 ++
 .../gae/AsyncGaeHttpCommandExecutorService.java | 175 -------------------
 .../gae/GaeHttpCommandExecutorService.java      |   6 +-
 ...AsyncGoogleAppEngineConfigurationModule.java |  57 ------
 .../CurrentRequestExecutorServiceModule.java    |   7 -
 .../GoogleAppEngineConfigurationModule.java     |   2 +-
 ...AsyncGoogleAppEngineConfigurationModule.java |  64 -------
 ...tpCommandExecutorServiceIntegrationTest.java |  95 ----------
 ...tpCommandExecutorServiceIntegrationTest.java |  95 ++++++++++
 .../okhttp/OkHttpCommandExecutorService.java    |   5 +-
 .../OkHttpCommandExecutorServiceTest.java       |   3 -
 .../ParallelMultipartUploadStrategy.java        |  14 +-
 ...quentialMultipartUploadStrategyMockTest.java |   4 +-
 .../dynect/v3/config/DynECTHttpApiModule.java   |   5 +-
 .../jclouds/dynect/v3/DynectApiMockTest.java    |   2 +-
 .../BaseHPCloudObjectStorageMockTest.java       |   2 +-
 43 files changed, 189 insertions(+), 669 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/apis/openstack-keystone/src/test/java/org/jclouds/openstack/v2_0/internal/BaseOpenStackMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/v2_0/internal/BaseOpenStackMockTest.java b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/v2_0/internal/BaseOpenStackMockTest.java
index d6fb2f9..af27d40 100644
--- a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/v2_0/internal/BaseOpenStackMockTest.java
+++ b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/v2_0/internal/BaseOpenStackMockTest.java
@@ -58,7 +58,7 @@ public class BaseOpenStackMockTest<A extends Closeable> {
    public static final String accessRackspace = "{\"access\":{\"token\":{\"id\":\"b84f4a37-5126-4603-9521-ccd0665fbde1\",\"expires\":\"2013-04-13T16:49:57.000-05:00\",\"tenant\":{\"id\":\"123123\",\"name\":\"123123\"}},\"serviceCatalog\":[{\"endpoints\":[{\"tenantId\":\"123123\",\"publicURL\":\"URL/v1.0/123123\"}],\"name\":\"cloudMonitoring\",\"type\":\"rax:monitor\"},{\"endpoints\":[{\"region\":\"DFW\",\"tenantId\":\"MossoCloudFS_5bcf396e-39dd-45ff-93a1-712b9aba90a9\",\"publicURL\":\"URL/v1/MossoCloudFS_5bcf396e-39dd-45ff-93a1-712b9aba90a9\"},{\"region\":\"ORD\",\"tenantId\":\"MossoCloudFS_5bcf396e-39dd-45ff-93a1-712b9aba90a9\",\"publicURL\":\"URL/v1/MossoCloudFS_5bcf396e-39dd-45ff-93a1-712b9aba90a9\"}],\"name\":\"cloudFilesCDN\",\"type\":\"rax:object-cdn\"},{\"endpoints\":[{\"region\":\"ORD\",\"tenantId\":\"123123\",\"publicURL\":\"URL/v1.0/123123\"},{\"region\":\"DFW\",\"tenantId\":\"123123\",\"publicURL\":\"URL/v1.0/123123\"}],\"name\":\"cloudLoadBalancers\",\"type\":\"rax:load-
 balancer\"},{\"endpoints\":[{\"region\":\"DFW\",\"tenantId\":\"123123\",\"publicURL\":\"URL/v1.0/123123\"},{\"region\":\"ORD\",\"tenantId\":\"123123\",\"publicURL\":\"URL/v1.0/123123\"}],\"name\":\"cloudDatabases\",\"type\":\"rax:database\"},{\"endpoints\":[{\"region\":\"DFW\",\"tenantId\":\"MossoCloudFS_5bcf396e-39dd-45ff-93a1-712b9aba90a9\",\"publicURL\":\"URL/v1/MossoCloudFS_5bcf396e-39dd-45ff-93a1-712b9aba90a9\",\"internalURL\":\"URL/v1/MossoCloudFS_5bcf396e-39dd-45ff-93a1-712b9aba90a9\"},{\"region\":\"ORD\",\"tenantId\":\"MossoCloudFS_5bcf396e-39dd-45ff-93a1-712b9aba90a9\",\"publicURL\":\"URL/v1/MossoCloudFS_5bcf396e-39dd-45ff-93a1-712b9aba90a9\",\"internalURL\":\"URL/v1/MossoCloudFS_5bcf396e-39dd-45ff-93a1-712b9aba90a9\"}],\"name\":\"cloudFiles\",\"type\":\"object-store\"},{\"endpoints\":[{\"tenantId\":\"123123\",\"publicURL\":\"URL/v1.0/123123\",\"versionInfo\":\"URL/v1.0\",\"versionList\":\"URL/\",\"versionId\":\"1.0\"}],\"name\":\"cloudServers\",\"type\":\"compute\"},{\"end
 points\":[{\"region\":\"DFW\",\"tenantId\":\"123123\",\"publicURL\":\"URL/v2/123123\",\"versionInfo\":\"URL/v2\",\"versionList\":\"URL/\",\"versionId\":\"2\"},{\"region\":\"ORD\",\"tenantId\":\"123123\",\"publicURL\":\"URL/v2/123123\",\"versionInfo\":\"URL/v2\",\"versionList\":\"URL/\",\"versionId\":\"2\"}],\"name\":\"cloudServersOpenStack\",\"type\":\"compute\"},{\"endpoints\":[{\"tenantId\":\"123123\",\"publicURL\":\"URL/v1.0/123123\"}],\"name\":\"cloudDNS\",\"type\":\"rax:dns\"},{\"endpoints\":[{\"tenantId\":\"123123\",\"publicURL\":\"URL/v1.0/123123\"}],\"name\":\"cloudBackup\",\"type\":\"rax:backup\"},{\"endpoints\":[{\"region\":\"DFW\",\"tenantId\":\"123123\",\"publicURL\":\"URL/v1/123123\"},{\"region\":\"ORD\",\"tenantId\":\"123123\",\"publicURL\":\"URL/v1/123123\"}],\"name\":\"cloudBlockStorage\",\"type\":\"volume\"},{\"endpoints\":[{\"region\":\"DFW\",\"tenantId\":\"123123\",\"publicURL\":\"URL/v1/123123\",\"internalURL\":\"URL/v1/123123\"},{\"region\":\"ORD\",\"tenantId\":
 \"123123\",\"publicURL\":\"URL/v1/123123\",\"internalURL\":\"URL/v1/123123\"}],\"name\":\"marconi\",\"type\":\"queuing\"},{\"endpoints\":[{\"region\":\"DFW\",\"tenantId\":\"123123\",\"publicURL\":\"URL/v1/123123\",\"internalURL\":\"URL/v1/123123\"},{\"region\":\"ORD\",\"tenantId\":\"123123\",\"publicURL\":\"URL/v1/123123\",\"internalURL\":\"URL/v1/123123\"}],\"name\":\"autoscale\",\"type\":\"rax:autoscale\"}],\"user\":{\"id\":\"1234\",\"roles\":[{\"id\":\"3\",\"description\":\"User Admin Role.\",\"name\":\"identity:user-admin\"}],\"name\":\"jclouds-joe\",\"RAX-AUTH:defaultRegion\":\"DFW\"}}}";
 
    private final Set<Module> modules = ImmutableSet.<Module> of(
-         new ExecutorServiceModule(newDirectExecutorService(), newDirectExecutorService()));
+         new ExecutorServiceModule(newDirectExecutorService()));
 
    /**
     * Pattern for replacing the URL token with the correct local address.

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/apis/s3/src/test/java/org/jclouds/s3/S3ClientMockTest.java
----------------------------------------------------------------------
diff --git a/apis/s3/src/test/java/org/jclouds/s3/S3ClientMockTest.java b/apis/s3/src/test/java/org/jclouds/s3/S3ClientMockTest.java
index c9f67dc..097d49d 100644
--- a/apis/s3/src/test/java/org/jclouds/s3/S3ClientMockTest.java
+++ b/apis/s3/src/test/java/org/jclouds/s3/S3ClientMockTest.java
@@ -46,7 +46,7 @@ import com.squareup.okhttp.mockwebserver.RecordedRequest;
 public class S3ClientMockTest {
 
    private static final Set<Module> modules = ImmutableSet.<Module> of(new OkHttpCommandExecutorServiceModule(),
-         new ExecutorServiceModule(newDirectExecutorService(), newDirectExecutorService()));
+         new ExecutorServiceModule(newDirectExecutorService()));
 
    static S3Client getS3Client(URL server) {
       Properties overrides = new Properties();

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/apis/sqs/src/test/java/org/jclouds/sqs/features/PermissionApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/sqs/src/test/java/org/jclouds/sqs/features/PermissionApiLiveTest.java b/apis/sqs/src/test/java/org/jclouds/sqs/features/PermissionApiLiveTest.java
index 2c96ab2..b8a7f31 100644
--- a/apis/sqs/src/test/java/org/jclouds/sqs/features/PermissionApiLiveTest.java
+++ b/apis/sqs/src/test/java/org/jclouds/sqs/features/PermissionApiLiveTest.java
@@ -91,7 +91,7 @@ public class PermissionApiLiveTest extends BaseSQSApiLiveTest {
 
    private AnonymousAttributesApi getAnonymousAttributesApi(URI queue) {
       return ContextBuilder.newBuilder(forApiOnEndpoint(AnonymousAttributesApi.class, queue.toASCIIString()))
-            .modules(ImmutableSet.<Module> of(new ExecutorServiceModule(newDirectExecutorService(), newDirectExecutorService())))
+            .modules(ImmutableSet.<Module> of(new ExecutorServiceModule(newDirectExecutorService())))
             .buildApi(AnonymousAttributesApi.class);
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/apis/swift/src/main/java/org/jclouds/openstack/swift/blobstore/strategy/internal/ParallelMultipartUploadStrategy.java
----------------------------------------------------------------------
diff --git a/apis/swift/src/main/java/org/jclouds/openstack/swift/blobstore/strategy/internal/ParallelMultipartUploadStrategy.java b/apis/swift/src/main/java/org/jclouds/openstack/swift/blobstore/strategy/internal/ParallelMultipartUploadStrategy.java
index 6257799..446b451 100644
--- a/apis/swift/src/main/java/org/jclouds/openstack/swift/blobstore/strategy/internal/ParallelMultipartUploadStrategy.java
+++ b/apis/swift/src/main/java/org/jclouds/openstack/swift/blobstore/strategy/internal/ParallelMultipartUploadStrategy.java
@@ -89,17 +89,17 @@ public class ParallelMultipartUploadStrategy implements AsyncMultipartUploadStra
     @Named(Constants.PROPERTY_REQUEST_TIMEOUT)
     protected Long maxTime;
 
-    private final ListeningExecutorService ioExecutor;
+    private final ListeningExecutorService executor;
 
     protected final SwiftBlobStore blobstore;
     protected final PayloadSlicer slicer;
 
     @Inject
     public ParallelMultipartUploadStrategy(SwiftBlobStore blobstore, PayloadSlicer slicer,
-                                           @Named(Constants.PROPERTY_IO_WORKER_THREADS) ListeningExecutorService ioExecutor) {
+                                           @Named(Constants.PROPERTY_USER_THREADS) ListeningExecutorService executor) {
         this.blobstore = checkNotNull(blobstore, "blobstore");
         this.slicer = checkNotNull(slicer, "slicer");
-        this.ioExecutor = checkNotNull(ioExecutor, "ioExecutor");
+        this.executor = checkNotNull(executor, "executor");
     }
 
 
@@ -125,7 +125,7 @@ public class ParallelMultipartUploadStrategy implements AsyncMultipartUploadStra
 
         final Blob blobPart = blobstore.blobBuilder(blobPartName).payload(chunkedPart).
                 contentDisposition(blobPartName).build();
-        final ListenableFuture<String> futureETag = ioExecutor.submit(new Callable<String>() {
+        final ListenableFuture<String> futureETag = executor.submit(new Callable<String>() {
            @Override public String call() throws Exception {
               return client.putObject(container, blob2Object.apply(blobPart));
            }
@@ -155,13 +155,13 @@ public class ParallelMultipartUploadStrategy implements AsyncMultipartUploadStra
                     latch.countDown();
                 }
             }
-        }, ioExecutor);
+        }, executor);
         futureParts.put(part, futureETag);
     }
 
     @Override
     public ListenableFuture<String> execute(final String container, final Blob blob, final PutOptions options, final BlobToObject blob2Object) {
-        return ioExecutor.submit(new Callable<String>() {
+        return executor.submit(new Callable<String>() {
                     @Override
                     public String call() throws Exception {
                         String key = blob.getMetadata().getName();
@@ -248,7 +248,7 @@ public class ParallelMultipartUploadStrategy implements AsyncMultipartUploadStra
                                 throw rtex;
                             }
                         } else {
-                            ListenableFuture<String> futureETag = ioExecutor.submit(new Callable<String>() {
+                            ListenableFuture<String> futureETag = executor.submit(new Callable<String>() {
                                @Override public String call() throws Exception {
                                   return blobstore.putBlob(container, blob, options);
                                }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/apis/swift/src/test/java/org/jclouds/openstack/swift/blobstore/strategy/internal/SequentialMultipartUploadStrategyMockTest.java
----------------------------------------------------------------------
diff --git a/apis/swift/src/test/java/org/jclouds/openstack/swift/blobstore/strategy/internal/SequentialMultipartUploadStrategyMockTest.java b/apis/swift/src/test/java/org/jclouds/openstack/swift/blobstore/strategy/internal/SequentialMultipartUploadStrategyMockTest.java
index cba3a29..352cf8d 100644
--- a/apis/swift/src/test/java/org/jclouds/openstack/swift/blobstore/strategy/internal/SequentialMultipartUploadStrategyMockTest.java
+++ b/apis/swift/src/test/java/org/jclouds/openstack/swift/blobstore/strategy/internal/SequentialMultipartUploadStrategyMockTest.java
@@ -97,8 +97,8 @@ public class SequentialMultipartUploadStrategyMockTest {
       }
    }
 
-   private static final Set<Module> modules = ImmutableSet.<Module> of(new ExecutorServiceModule(newDirectExecutorService(),
-         newDirectExecutorService()));
+   private static final Set<Module> modules = ImmutableSet.<Module> of(
+         new ExecutorServiceModule(newDirectExecutorService()));
 
    static SequentialMultipartUploadStrategy mockSequentialMultipartUploadStrategy(String uri, int partSize) {
       Properties overrides = new Properties();

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/compute/src/main/java/org/jclouds/compute/stub/config/StubComputeServiceAdapter.java
----------------------------------------------------------------------
diff --git a/compute/src/main/java/org/jclouds/compute/stub/config/StubComputeServiceAdapter.java b/compute/src/main/java/org/jclouds/compute/stub/config/StubComputeServiceAdapter.java
index 0823fd5..03ba0ea 100644
--- a/compute/src/main/java/org/jclouds/compute/stub/config/StubComputeServiceAdapter.java
+++ b/compute/src/main/java/org/jclouds/compute/stub/config/StubComputeServiceAdapter.java
@@ -66,9 +66,8 @@ public class StubComputeServiceAdapter implements JCloudsNativeComputeServiceAda
    private final Supplier<Location> location;
    private final ConcurrentMap<String, NodeMetadata> nodes;
    private final Multimap<String, SecurityGroup> groupsForNodes;
-   private final ListeningExecutorService ioExecutor;
+   private final ListeningExecutorService executor;
    private final Provider<Integer> idProvider;
-   private final Provider<Integer> groupIdProvider;
    private final String publicIpPrefix;
    private final String privateIpPrefix;
    private final String passwordPrefix;
@@ -78,14 +77,13 @@ public class StubComputeServiceAdapter implements JCloudsNativeComputeServiceAda
 
    @Inject
    public StubComputeServiceAdapter(ConcurrentMap<String, NodeMetadata> nodes,
-            @Named(Constants.PROPERTY_IO_WORKER_THREADS) ListeningExecutorService ioExecutor, Supplier<Location> location,
+            @Named(Constants.PROPERTY_USER_THREADS) ListeningExecutorService executor, Supplier<Location> location,
             @Named("NODE_ID") Provider<Integer> idProvider, @Named("PUBLIC_IP_PREFIX") String publicIpPrefix,
             @Named("PRIVATE_IP_PREFIX") String privateIpPrefix, @Named("PASSWORD_PREFIX") String passwordPrefix,
             JustProvider locationSupplier, Map<OsFamily, Map<String, String>> osToVersionMap,
-            Multimap<String, SecurityGroup> groupsForNodes, @Named("GROUP_ID") Provider<Integer> groupIdProvider,
-            Optional<SecurityGroupExtension> securityGroupExtension) {
+            Multimap<String, SecurityGroup> groupsForNodes, Optional<SecurityGroupExtension> securityGroupExtension) {
       this.nodes = nodes;
-      this.ioExecutor = ioExecutor;
+      this.executor = executor;
       this.location = location;
       this.idProvider = idProvider;
       this.publicIpPrefix = publicIpPrefix;
@@ -94,7 +92,6 @@ public class StubComputeServiceAdapter implements JCloudsNativeComputeServiceAda
       this.locationSupplier = locationSupplier;
       this.osToVersionMap = osToVersionMap;
       this.groupsForNodes = groupsForNodes;
-      this.groupIdProvider = groupIdProvider;
       this.securityGroupExtension = securityGroupExtension;
    }
 
@@ -106,7 +103,7 @@ public class StubComputeServiceAdapter implements JCloudsNativeComputeServiceAda
       if (millis == 0l)
          setStateOnNode(status, node);
       else
-         ioExecutor.execute(new Runnable() {
+         executor.execute(new Runnable() {
 
             @Override
             public void run() {
@@ -220,7 +217,7 @@ public class StubComputeServiceAdapter implements JCloudsNativeComputeServiceAda
       setStateOnNodeAfterDelay(Status.TERMINATED, node, 50);
       groupsForNodes.removeAll(id);
 
-      ioExecutor.execute(new Runnable() {
+      executor.execute(new Runnable() {
 
          @Override
          public void run() {

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/compute/src/main/java/org/jclouds/compute/stub/extensions/StubSecurityGroupExtension.java
----------------------------------------------------------------------
diff --git a/compute/src/main/java/org/jclouds/compute/stub/extensions/StubSecurityGroupExtension.java b/compute/src/main/java/org/jclouds/compute/stub/extensions/StubSecurityGroupExtension.java
index 9f65647..4a57d73 100644
--- a/compute/src/main/java/org/jclouds/compute/stub/extensions/StubSecurityGroupExtension.java
+++ b/compute/src/main/java/org/jclouds/compute/stub/extensions/StubSecurityGroupExtension.java
@@ -28,12 +28,10 @@ import javax.inject.Inject;
 import javax.inject.Named;
 import javax.inject.Provider;
 
-import org.jclouds.Constants;
 import org.jclouds.compute.domain.SecurityGroup;
 import org.jclouds.compute.domain.SecurityGroupBuilder;
 import org.jclouds.compute.extensions.SecurityGroupExtension;
 import org.jclouds.domain.Location;
-import org.jclouds.location.suppliers.all.JustProvider;
 import org.jclouds.net.domain.IpPermission;
 import org.jclouds.net.domain.IpProtocol;
 
@@ -42,7 +40,6 @@ import com.google.common.base.Supplier;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Multimap;
-import com.google.common.util.concurrent.ListeningExecutorService;
 
 /**
  * An extension to compute service to allow for the manipulation of {@link SecurityGroup}s. Implementation
@@ -52,23 +49,17 @@ public class StubSecurityGroupExtension implements SecurityGroupExtension {
 
    private final Supplier<Location> location;
    private final Provider<Integer> groupIdProvider;
-   private final Supplier<Set<? extends Location>> locationSupplier;
-   private final ListeningExecutorService ioExecutor;
    private final ConcurrentMap<String, SecurityGroup> groups;
    private final Multimap<String, SecurityGroup> groupsForNodes;
 
    @Inject
    public StubSecurityGroupExtension(ConcurrentMap<String, SecurityGroup> groups,
-                                     @Named(Constants.PROPERTY_IO_WORKER_THREADS) ListeningExecutorService ioExecutor,
                                      Supplier<Location> location,
                                      @Named("GROUP_ID") Provider<Integer> groupIdProvider,
-                                     JustProvider locationSupplier,
                                      Multimap<String, SecurityGroup> groupsForNodes) {
       this.groups = groups;
-      this.ioExecutor = ioExecutor;
       this.location = location;
       this.groupIdProvider = groupIdProvider;
-      this.locationSupplier = locationSupplier;
       this.groupsForNodes = groupsForNodes;
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/compute/src/test/java/org/jclouds/compute/callables/RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilCompleteTest.java
----------------------------------------------------------------------
diff --git a/compute/src/test/java/org/jclouds/compute/callables/RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilCompleteTest.java b/compute/src/test/java/org/jclouds/compute/callables/RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilCompleteTest.java
index afc88e0..bd3a299 100644
--- a/compute/src/test/java/org/jclouds/compute/callables/RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilCompleteTest.java
+++ b/compute/src/test/java/org/jclouds/compute/callables/RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilCompleteTest.java
@@ -22,7 +22,6 @@ import static org.easymock.EasyMock.createMock;
 import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.replay;
 import static org.easymock.EasyMock.verify;
-import static org.jclouds.Constants.PROPERTY_IO_WORKER_THREADS;
 import static org.jclouds.Constants.PROPERTY_USER_THREADS;
 import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_SCRIPT_COMPLETE;
 import static org.jclouds.scriptbuilder.domain.Statements.exec;
@@ -52,11 +51,10 @@ import com.google.inject.assistedinject.FactoryModuleBuilder;
 
 @Test(groups = "unit", singleThreaded = true, testName = "RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilCompleteTest")
 public class RunScriptOnNodeAsInitScriptUsingSshAndBlockUntilCompleteTest {
-   Injector injector = Guice.createInjector(new ExecutorServiceModule(newDirectExecutorService(), newDirectExecutorService()),
+   Injector injector = Guice.createInjector(new ExecutorServiceModule(newDirectExecutorService()),
          new AbstractModule() {
             protected void configure() {
                bindConstant().annotatedWith(named(PROPERTY_USER_THREADS)).to(1);
-               bindConstant().annotatedWith(named(PROPERTY_IO_WORKER_THREADS)).to(1);
                bindConstant().annotatedWith(named(TIMEOUT_SCRIPT_COMPLETE)).to(100);
                install(new FactoryModuleBuilder().build(BlockUntilInitScriptStatusIsZeroThenReturnOutput.Factory.class));
             }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/core/src/main/java/org/jclouds/Constants.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/Constants.java b/core/src/main/java/org/jclouds/Constants.java
index f49227f..a1e77a1 100644
--- a/core/src/main/java/org/jclouds/Constants.java
+++ b/core/src/main/java/org/jclouds/Constants.java
@@ -34,7 +34,10 @@ public final class Constants {
     * Integer property. default (20)
     * <p/>
     * Amount of threads servicing the I/O of http connections.
+    *
+    * @deprecated No longer used. Will be removed in jclouds v2
     */
+   @Deprecated
    public static final String PROPERTY_IO_WORKER_THREADS = "jclouds.io-worker-threads";
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/core/src/main/java/org/jclouds/ContextBuilder.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/ContextBuilder.java b/core/src/main/java/org/jclouds/ContextBuilder.java
index 020d728..ef52f20 100644
--- a/core/src/main/java/org/jclouds/ContextBuilder.java
+++ b/core/src/main/java/org/jclouds/ContextBuilder.java
@@ -540,7 +540,7 @@ public class ContextBuilder {
                return input.getClass().isAnnotationPresent(SingleThreaded.class);
             }
          })) {
-            modules.add(new ExecutorServiceModule(newDirectExecutorService(), newDirectExecutorService()));
+            modules.add(new ExecutorServiceModule(newDirectExecutorService()));
          } else {
             modules.add(new ExecutorServiceModule());
          }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/core/src/main/java/org/jclouds/apis/internal/BaseApiMetadata.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/apis/internal/BaseApiMetadata.java b/core/src/main/java/org/jclouds/apis/internal/BaseApiMetadata.java
index 5fd88e3..410d27b 100644
--- a/core/src/main/java/org/jclouds/apis/internal/BaseApiMetadata.java
+++ b/core/src/main/java/org/jclouds/apis/internal/BaseApiMetadata.java
@@ -19,7 +19,6 @@ package org.jclouds.apis.internal;
 import static com.google.common.base.Objects.equal;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static org.jclouds.Constants.PROPERTY_CONNECTION_TIMEOUT;
-import static org.jclouds.Constants.PROPERTY_IO_WORKER_THREADS;
 import static org.jclouds.Constants.PROPERTY_ISO3166_CODES;
 import static org.jclouds.Constants.PROPERTY_MAX_CONNECTIONS_PER_CONTEXT;
 import static org.jclouds.Constants.PROPERTY_MAX_CONNECTIONS_PER_HOST;
@@ -67,7 +66,6 @@ public abstract class BaseApiMetadata implements ApiMetadata {
       props.setProperty(PROPERTY_MAX_CONNECTIONS_PER_HOST, 0 + "");
       props.setProperty(PROPERTY_SO_TIMEOUT, 60000 + "");
       props.setProperty(PROPERTY_CONNECTION_TIMEOUT, 60000 + "");
-      props.setProperty(PROPERTY_IO_WORKER_THREADS, 20 + "");
       // Successfully tested 50 user threads with BlobStore.clearContainer.
       props.setProperty(PROPERTY_USER_THREADS, numUserThreads + "");
       props.setProperty(PROPERTY_SCHEDULER_THREADS, 10 + "");

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/core/src/main/java/org/jclouds/concurrent/config/ExecutorServiceModule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/concurrent/config/ExecutorServiceModule.java b/core/src/main/java/org/jclouds/concurrent/config/ExecutorServiceModule.java
index dd7dd08..9e0e81d 100644
--- a/core/src/main/java/org/jclouds/concurrent/config/ExecutorServiceModule.java
+++ b/core/src/main/java/org/jclouds/concurrent/config/ExecutorServiceModule.java
@@ -17,7 +17,6 @@
 package org.jclouds.concurrent.config;
 
 import static com.google.common.util.concurrent.MoreExecutors.listeningDecorator;
-import static org.jclouds.Constants.PROPERTY_IO_WORKER_THREADS;
 import static org.jclouds.Constants.PROPERTY_USER_THREADS;
 import static org.jclouds.concurrent.DynamicExecutors.newScalingThreadPool;
 
@@ -74,22 +73,37 @@ public class ExecutorServiceModule extends AbstractModule {
    }
 
    final ListeningExecutorService userExecutorFromConstructor;
-   final ListeningExecutorService ioExecutorFromConstructor;
 
    public ExecutorServiceModule() {
       this.userExecutorFromConstructor = null;
-      this.ioExecutorFromConstructor = null;
    }
 
+   /**
+    * @deprecated {@code ioExecutor} is no longer used. This constructor will be removed in jclouds v2.
+    * Use {@link #ExecutorServiceModule(ExecutorService)} instead.
+    */
+   @Deprecated
    public ExecutorServiceModule(@Named(PROPERTY_USER_THREADS) ExecutorService userExecutor,
-         @Named(PROPERTY_IO_WORKER_THREADS) ExecutorService ioExecutor) {
-      this(listeningDecorator(userExecutor), listeningDecorator(ioExecutor));
+         ExecutorService ioExecutor) {
+      this(userExecutor);
    }
 
+   /**
+    * @deprecated {@code ioExecutor} is no longer used. This constructor will be removed in jclouds v2.
+    * Use {@link #ExecutorServiceModule(ListeningExecutorService)} instead.
+    */
+   @Deprecated
    public ExecutorServiceModule(@Named(PROPERTY_USER_THREADS) ListeningExecutorService userExecutor,
-         @Named(PROPERTY_IO_WORKER_THREADS) ListeningExecutorService ioExecutor) {
+         ListeningExecutorService ioExecutor) {
+      this(userExecutor);
+   }
+
+   public ExecutorServiceModule(@Named(PROPERTY_USER_THREADS) ExecutorService userExecutor) {
+      this(listeningDecorator(userExecutor));
+   }
+
+   public ExecutorServiceModule(@Named(PROPERTY_USER_THREADS) ListeningExecutorService userExecutor) {
       this.userExecutorFromConstructor = WithSubmissionTrace.wrap(userExecutor);
-      this.ioExecutorFromConstructor = WithSubmissionTrace.wrap(ioExecutor);
    }
 
    @Override
@@ -113,28 +127,11 @@ public class ExecutorServiceModule extends AbstractModule {
 
    @Provides
    @Singleton
-   @Named(PROPERTY_IO_WORKER_THREADS)
-   ListeningExecutorService provideListeningIOExecutorService(@Named(PROPERTY_IO_WORKER_THREADS) int count,
-         Closer closer) { // NO_UCD
-      if (ioExecutorFromConstructor != null)
-         return ioExecutorFromConstructor;
-      return shutdownOnClose(WithSubmissionTrace.wrap(newThreadPoolNamed("i/o thread %d", count)), closer);
-   }
-
-   @Provides
-   @Singleton
    @Named(PROPERTY_USER_THREADS)
    ExecutorService provideUserExecutorService(@Named(PROPERTY_USER_THREADS) ListeningExecutorService in) { // NO_UCD
       return in;
    }
 
-   @Provides
-   @Singleton
-   @Named(PROPERTY_IO_WORKER_THREADS)
-   ExecutorService provideIOExecutorService(@Named(PROPERTY_IO_WORKER_THREADS) ListeningExecutorService in) { // NO_UCD
-      return in;
-   }
-
    static <T extends ListeningExecutorService> T shutdownOnClose(final T service, Closer closer) {
       closer.addToClose(new ShutdownExecutorOnClose(service));
       return service;

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/core/src/main/java/org/jclouds/http/HttpCommandExecutorService.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/http/HttpCommandExecutorService.java b/core/src/main/java/org/jclouds/http/HttpCommandExecutorService.java
index eed2910..74254f3 100644
--- a/core/src/main/java/org/jclouds/http/HttpCommandExecutorService.java
+++ b/core/src/main/java/org/jclouds/http/HttpCommandExecutorService.java
@@ -16,27 +16,14 @@
  */
 package org.jclouds.http;
 
-
-import com.google.common.util.concurrent.ListenableFuture;
-
 /**
  * Capable of invoking http commands.
  */
-public interface HttpCommandExecutorService { 
+public interface HttpCommandExecutorService {
 
    /**
-    * Returns a potentially deferred {@code HttpResponse} from a server responding to the
-    * {@code command}. The output {@code ListenableFuture} need not be
-    * {@linkplain Future#isDone done}, making {@code HttpCommandExecutorService}
-    * suitable for asynchronous derivations.
-    * 
-    */
-   ListenableFuture<HttpResponse> submit(HttpCommand command);
-   
-   /**
     * Returns a {@code HttpResponse} from the server which responded to the
     * {@code command}.
     */
    HttpResponse invoke(HttpCommand command);
-
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/core/src/main/java/org/jclouds/http/internal/BaseHttpCommandExecutorService.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/http/internal/BaseHttpCommandExecutorService.java b/core/src/main/java/org/jclouds/http/internal/BaseHttpCommandExecutorService.java
index 270a217..6921aa5 100644
--- a/core/src/main/java/org/jclouds/http/internal/BaseHttpCommandExecutorService.java
+++ b/core/src/main/java/org/jclouds/http/internal/BaseHttpCommandExecutorService.java
@@ -23,7 +23,6 @@ import static org.jclouds.http.HttpUtils.wirePayloadIfEnabled;
 import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
 
 import java.io.IOException;
-import java.util.concurrent.Callable;
 
 import javax.annotation.Resource;
 import javax.inject.Inject;
@@ -43,9 +42,6 @@ import org.jclouds.http.handlers.DelegatingRetryHandler;
 import org.jclouds.io.ContentMetadataCodec;
 import org.jclouds.logging.Logger;
 
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-
 public abstract class BaseHttpCommandExecutorService<Q> implements HttpCommandExecutorService {
    protected final HttpUtils utils;
    protected final ContentMetadataCodec contentMetadataCodec;
@@ -53,7 +49,6 @@ public abstract class BaseHttpCommandExecutorService<Q> implements HttpCommandEx
    protected final DelegatingRetryHandler retryHandler;
    protected final IOExceptionRetryHandler ioRetryHandler;
    protected final DelegatingErrorHandler errorHandler;
-   protected final ListeningExecutorService ioExecutor;
 
    @Resource
    protected Logger logger = Logger.NULL;
@@ -65,7 +60,6 @@ public abstract class BaseHttpCommandExecutorService<Q> implements HttpCommandEx
 
    @Inject
    protected BaseHttpCommandExecutorService(HttpUtils utils, ContentMetadataCodec contentMetadataCodec,
-         @Named(Constants.PROPERTY_IO_WORKER_THREADS) ListeningExecutorService ioExecutor,
          DelegatingRetryHandler retryHandler, IOExceptionRetryHandler ioRetryHandler,
          DelegatingErrorHandler errorHandler, HttpWire wire) {
       this.utils = checkNotNull(utils, "utils");
@@ -73,7 +67,6 @@ public abstract class BaseHttpCommandExecutorService<Q> implements HttpCommandEx
       this.retryHandler = checkNotNull(retryHandler, "retryHandler");
       this.ioRetryHandler = checkNotNull(ioRetryHandler, "ioRetryHandler");
       this.errorHandler = checkNotNull(errorHandler, "errorHandler");
-      this.ioExecutor = checkNotNull(ioExecutor, "ioExecutor");
       this.wire = checkNotNull(wire, "wire");
    }
 
@@ -137,37 +130,6 @@ public abstract class BaseHttpCommandExecutorService<Q> implements HttpCommandEx
       return shouldContinue;
    }
 
-   @Override
-   public ListenableFuture<HttpResponse> submit(HttpCommand command) {
-      HttpRequest request = command.getCurrentRequest();
-      checkRequestHasContentLengthOrChunkedEncoding(request,
-            "if the request has a payload, it must be set to chunked encoding or specify a content length: " + request);
-      return ioExecutor.submit(new HttpResponseCallable(command));
-   }
-
-   public class HttpResponseCallable implements Callable<HttpResponse> {
-      private final HttpCommand command;
-
-      public HttpResponseCallable(HttpCommand command) {
-         this.command = command;
-      }
-
-      public HttpResponse call() throws Exception {
-         try {
-            return invoke(command);
-         } finally {
-            if (command.getException() != null)
-               throw command.getException();
-         }
-      }
-
-      @Override
-      public String toString() {
-         return command.toString();
-      }
-
-   }
-
    protected abstract Q convert(HttpRequest request) throws IOException, InterruptedException;
 
    protected abstract HttpResponse invoke(Q nativeRequest) throws IOException, InterruptedException;

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/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 3647ef2..47a8575 100644
--- a/core/src/main/java/org/jclouds/http/internal/JavaUrlHttpCommandExecutorService.java
+++ b/core/src/main/java/org/jclouds/http/internal/JavaUrlHttpCommandExecutorService.java
@@ -15,6 +15,7 @@
  * limitations under the License.
  */
 package org.jclouds.http.internal;
+
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.propagate;
 import static com.google.common.io.ByteStreams.toByteArray;
@@ -43,7 +44,6 @@ import javax.net.ssl.HostnameVerifier;
 import javax.net.ssl.HttpsURLConnection;
 import javax.net.ssl.SSLContext;
 
-import org.jclouds.Constants;
 import org.jclouds.JcloudsVersion;
 import org.jclouds.http.HttpRequest;
 import org.jclouds.http.HttpResponse;
@@ -62,7 +62,6 @@ import com.google.common.collect.ImmutableMultimap.Builder;
 import com.google.common.io.ByteStreams;
 import com.google.common.io.Closeables;
 import com.google.common.io.CountingOutputStream;
-import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.inject.Inject;
 
 /**
@@ -82,12 +81,11 @@ public class JavaUrlHttpCommandExecutorService extends BaseHttpCommandExecutorSe
 
    @Inject
    public JavaUrlHttpCommandExecutorService(HttpUtils utils, ContentMetadataCodec contentMetadataCodec,
-            @Named(Constants.PROPERTY_IO_WORKER_THREADS) ListeningExecutorService ioExecutor,
             DelegatingRetryHandler retryHandler, IOExceptionRetryHandler ioRetryHandler,
             DelegatingErrorHandler errorHandler, HttpWire wire, @Named("untrusted") HostnameVerifier verifier,
             @Named("untrusted") Supplier<SSLContext> untrustedSSLContextProvider, Function<URI, Proxy> proxyForURI) 
                   throws SecurityException, NoSuchFieldException {
-      super(utils, contentMetadataCodec, ioExecutor, retryHandler, ioRetryHandler, errorHandler, wire);
+      super(utils, contentMetadataCodec, retryHandler, ioRetryHandler, errorHandler, wire);
       if (utils.getMaxConnections() > 0)
          System.setProperty("http.maxConnections", String.valueOf(checkNotNull(utils, "utils").getMaxConnections()));
       this.untrustedSSLContextProvider = checkNotNull(untrustedSSLContextProvider, "untrustedSSLContextProvider");

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/core/src/main/java/org/jclouds/lifecycle/config/LifeCycleModule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/lifecycle/config/LifeCycleModule.java b/core/src/main/java/org/jclouds/lifecycle/config/LifeCycleModule.java
index ef4cabc..e978c24 100644
--- a/core/src/main/java/org/jclouds/lifecycle/config/LifeCycleModule.java
+++ b/core/src/main/java/org/jclouds/lifecycle/config/LifeCycleModule.java
@@ -20,7 +20,6 @@ import static com.google.common.base.Throwables.propagate;
 import static com.google.common.collect.Iterables.filter;
 import static com.google.common.util.concurrent.MoreExecutors.newDirectExecutorService;
 import static com.google.inject.matcher.Matchers.any;
-import static org.jclouds.Constants.PROPERTY_IO_WORKER_THREADS;
 import static org.jclouds.Constants.PROPERTY_SCHEDULER_THREADS;
 import static org.jclouds.Constants.PROPERTY_USER_THREADS;
 import static org.jclouds.reflect.Reflection2.methods;
@@ -70,9 +69,6 @@ public class LifeCycleModule extends AbstractModule {
          @Inject
          @Named(PROPERTY_USER_THREADS)
          ListeningExecutorService userExecutor;
-         @Inject
-         @Named(PROPERTY_IO_WORKER_THREADS)
-         ListeningExecutorService ioExecutor;
          // ScheduledExecutor is defined in an optional module
          @Inject(optional = true)
          @Named(PROPERTY_SCHEDULER_THREADS)
@@ -81,8 +77,6 @@ public class LifeCycleModule extends AbstractModule {
          public void close() throws IOException {
             assert userExecutor != null;
             userExecutor.shutdownNow();
-            assert ioExecutor != null;
-            ioExecutor.shutdownNow();
             // ScheduledExecutor is defined in an optional module
             if (scheduledExecutor != null)
                scheduledExecutor.shutdownNow();

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/core/src/test/java/org/jclouds/concurrent/config/ExecutorServiceModuleTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/jclouds/concurrent/config/ExecutorServiceModuleTest.java b/core/src/test/java/org/jclouds/concurrent/config/ExecutorServiceModuleTest.java
index a935999..ead684d 100644
--- a/core/src/test/java/org/jclouds/concurrent/config/ExecutorServiceModuleTest.java
+++ b/core/src/test/java/org/jclouds/concurrent/config/ExecutorServiceModuleTest.java
@@ -23,7 +23,6 @@ import static org.easymock.EasyMock.createMock;
 import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.replay;
 import static org.easymock.EasyMock.verify;
-import static org.jclouds.Constants.PROPERTY_IO_WORKER_THREADS;
 import static org.jclouds.Constants.PROPERTY_USER_THREADS;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotEquals;
@@ -55,7 +54,6 @@ public class ExecutorServiceModuleTest {
       ExecutorServiceModule module = new ExecutorServiceModule() {
          @Override
          protected void configure() {
-            bindConstant().annotatedWith(named(PROPERTY_IO_WORKER_THREADS)).to(1);
             bindConstant().annotatedWith(named(PROPERTY_USER_THREADS)).to(1);
             super.configure();
          }
@@ -63,18 +61,14 @@ public class ExecutorServiceModuleTest {
 
       injector = Guice.createInjector(module);
       assertNull(module.userExecutorFromConstructor);
-      assertNull(module.ioExecutorFromConstructor);
    }
 
    @AfterClass
    private void close() throws IOException {
       ListeningExecutorService user = injector.getInstance(Key.get(ListeningExecutorService.class,
             named(PROPERTY_USER_THREADS)));
-      ListeningExecutorService io = injector.getInstance(Key.get(ListeningExecutorService.class,
-            named(PROPERTY_IO_WORKER_THREADS)));
       injector.getInstance(Closer.class).close();
       assertTrue(user.isShutdown());
-      assertTrue(io.isShutdown());
    }
 
    @Test
@@ -95,23 +89,18 @@ public class ExecutorServiceModuleTest {
 
    @Test(timeOut = 5000)
    public void testExceptionInSubmitRunnableIncludesSubmissionTrace() throws Exception {
-      ListeningExecutorService user = injector.getInstance(Key.get(ListeningExecutorService.class,
+      ListeningExecutorService exec = injector.getInstance(Key.get(ListeningExecutorService.class,
             named(PROPERTY_USER_THREADS)));
-      ListeningExecutorService io = injector.getInstance(Key.get(ListeningExecutorService.class,
-            named(PROPERTY_IO_WORKER_THREADS)));
-
-      for (ListeningExecutorService exec : ImmutableList.of(user, io)) {
-         String submission = null;
-         try {
-            // this is sensitive to formatting as we are looking for the stack traces to match. if you wrap the below
-            // line again, you'll need to change incrementInitialElement to 3 line numbers instead of 2.
-            submission = getStackTraceAsString(incrementInitialElement(new RuntimeException(), 2)).replaceFirst(format(".*%s", LINE_SEPARATOR),
-                  "");
-            exec.submit(runnableThrowsRTE()).get();
-         } catch (ExecutionException e) {
-            assertTraceHasSubmission(getStackTraceAsString(e), submission);
-            assertTraceHasSubmission(getStackTraceAsString(e.getCause()), submission);
-         }
+      String submission = null;
+      try {
+         // this is sensitive to formatting as we are looking for the stack traces to match. if you wrap the below
+         // line again, you'll need to change incrementInitialElement to 3 line numbers instead of 2.
+         submission = getStackTraceAsString(incrementInitialElement(new RuntimeException(), 2)).replaceFirst(format(".*%s", LINE_SEPARATOR),
+               "");
+         exec.submit(runnableThrowsRTE()).get();
+      } catch (ExecutionException e) {
+         assertTraceHasSubmission(getStackTraceAsString(e), submission);
+         assertTraceHasSubmission(getStackTraceAsString(e.getCause()), submission);
       }
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/core/src/test/java/org/jclouds/events/config/EventBusModuleTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/jclouds/events/config/EventBusModuleTest.java b/core/src/test/java/org/jclouds/events/config/EventBusModuleTest.java
index 3a0af75..8259d96 100644
--- a/core/src/test/java/org/jclouds/events/config/EventBusModuleTest.java
+++ b/core/src/test/java/org/jclouds/events/config/EventBusModuleTest.java
@@ -45,7 +45,6 @@ public class EventBusModuleTest {
         ExecutorServiceModule userExecutorModule = new ExecutorServiceModule() {
             @Override
             protected void configure() {
-               bindConstant().annotatedWith(Names.named(Constants.PROPERTY_IO_WORKER_THREADS)).to(1);
                bindConstant().annotatedWith(Names.named(Constants.PROPERTY_USER_THREADS)).to(1);
                super.configure();
             }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/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 53184c1..d1d4c60 100644
--- a/core/src/test/java/org/jclouds/http/JavaUrlHttpCommandExecutorServiceIntegrationTest.java
+++ b/core/src/test/java/org/jclouds/http/JavaUrlHttpCommandExecutorServiceIntegrationTest.java
@@ -16,7 +16,6 @@
  */
 package org.jclouds.http;
 
-import static org.jclouds.Constants.PROPERTY_IO_WORKER_THREADS;
 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;
@@ -41,8 +40,6 @@ public class JavaUrlHttpCommandExecutorServiceIntegrationTest extends BaseHttpCo
    protected void addOverrideProperties(Properties props) {
       props.setProperty(PROPERTY_MAX_CONNECTIONS_PER_CONTEXT, 50 + "");
       props.setProperty(PROPERTY_MAX_CONNECTIONS_PER_HOST, 0 + "");
-      // IO workers not used in this executor
-      props.setProperty(PROPERTY_IO_WORKER_THREADS, 0 + "");
       props.setProperty(PROPERTY_USER_THREADS, 5 + "");
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/core/src/test/java/org/jclouds/http/internal/TrackingJavaUrlHttpCommandExecutorService.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/jclouds/http/internal/TrackingJavaUrlHttpCommandExecutorService.java b/core/src/test/java/org/jclouds/http/internal/TrackingJavaUrlHttpCommandExecutorService.java
index fbf0f24..bb808a2 100644
--- a/core/src/test/java/org/jclouds/http/internal/TrackingJavaUrlHttpCommandExecutorService.java
+++ b/core/src/test/java/org/jclouds/http/internal/TrackingJavaUrlHttpCommandExecutorService.java
@@ -27,9 +27,7 @@ import javax.inject.Singleton;
 import javax.net.ssl.HostnameVerifier;
 import javax.net.ssl.SSLContext;
 
-import org.jclouds.Constants;
 import org.jclouds.http.HttpCommand;
-import org.jclouds.http.HttpResponse;
 import org.jclouds.http.HttpUtils;
 import org.jclouds.http.IOExceptionRetryHandler;
 import org.jclouds.http.handlers.DelegatingErrorHandler;
@@ -41,8 +39,6 @@ import com.google.common.base.Function;
 import com.google.common.base.Supplier;
 import com.google.common.collect.Iterables;
 import com.google.common.reflect.Invokable;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.inject.AbstractModule;
 import com.google.inject.Module;
 import com.google.inject.TypeLiteral;
@@ -87,20 +83,12 @@ public class TrackingJavaUrlHttpCommandExecutorService extends JavaUrlHttpComman
 
    @Inject
    public TrackingJavaUrlHttpCommandExecutorService(HttpUtils utils, ContentMetadataCodec contentMetadataCodec,
-            @Named(Constants.PROPERTY_IO_WORKER_THREADS) ListeningExecutorService ioExecutor,
             DelegatingRetryHandler retryHandler, IOExceptionRetryHandler ioRetryHandler,
             DelegatingErrorHandler errorHandler, HttpWire wire, @Named("untrusted") HostnameVerifier verifier,
             @Named("untrusted") Supplier<SSLContext> untrustedSSLContextProvider, Function<URI, Proxy> proxyForURI,
             List<HttpCommand> commandsInvoked) throws SecurityException, NoSuchFieldException {
-      super(utils, contentMetadataCodec, ioExecutor, retryHandler, ioRetryHandler, errorHandler, wire, verifier,
-               untrustedSSLContextProvider, proxyForURI);
+      super(utils, contentMetadataCodec, retryHandler, ioRetryHandler, errorHandler, wire, verifier,
+            untrustedSSLContextProvider, proxyForURI);
       this.commandsInvoked = commandsInvoked;
    }
-
-   @Override
-   public ListenableFuture<HttpResponse> submit(HttpCommand command) {
-      commandsInvoked.add(command);
-      return super.submit(command);
-   }
-
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/core/src/test/java/org/jclouds/lifecycle/config/LifeCycleModuleTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/jclouds/lifecycle/config/LifeCycleModuleTest.java b/core/src/test/java/org/jclouds/lifecycle/config/LifeCycleModuleTest.java
index 1ae52ab..6feb182 100644
--- a/core/src/test/java/org/jclouds/lifecycle/config/LifeCycleModuleTest.java
+++ b/core/src/test/java/org/jclouds/lifecycle/config/LifeCycleModuleTest.java
@@ -17,7 +17,6 @@
 package org.jclouds.lifecycle.config;
 
 import static com.google.inject.name.Names.named;
-import static org.jclouds.Constants.PROPERTY_IO_WORKER_THREADS;
 import static org.jclouds.Constants.PROPERTY_USER_THREADS;
 
 import java.io.Closeable;
@@ -48,13 +47,11 @@ public class LifeCycleModuleTest {
    void testBindsExecutor() {
       Injector i = createInjector();
       assert i.getInstance(Key.get(ListeningExecutorService.class, named(PROPERTY_USER_THREADS))) != null;
-      assert i.getInstance(Key.get(ListeningExecutorService.class, named(PROPERTY_IO_WORKER_THREADS))) != null;
    }
 
    private Injector createInjector() {
       Injector i = Guice.createInjector(new AbstractModule() {
          protected void configure() {
-            bindConstant().annotatedWith(named(PROPERTY_IO_WORKER_THREADS)).to(1);
             bindConstant().annotatedWith(named(PROPERTY_USER_THREADS)).to(1);
          }
       }, new LifeCycleModule(), new ExecutorServiceModule());
@@ -90,14 +87,10 @@ public class LifeCycleModuleTest {
       ListeningExecutorService userExecutor = i.getInstance(Key.get(ListeningExecutorService.class,
             named(PROPERTY_USER_THREADS)));
       assert !userExecutor.isShutdown();
-      ListeningExecutorService ioExecutor = i.getInstance(Key.get(ListeningExecutorService.class,
-            named(PROPERTY_IO_WORKER_THREADS)));
-      assert !ioExecutor.isShutdown();
       Closer closer = i.getInstance(Closer.class);
       assert closer.getState() == Closer.State.AVAILABLE;
       closer.close();
       assert userExecutor.isShutdown();
-      assert ioExecutor.isShutdown();
       assert closer.getState() == Closer.State.DONE;
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/core/src/test/java/org/jclouds/rest/annotationparsing/ClosableApiTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/jclouds/rest/annotationparsing/ClosableApiTest.java b/core/src/test/java/org/jclouds/rest/annotationparsing/ClosableApiTest.java
index ea6b5cd..b124309 100644
--- a/core/src/test/java/org/jclouds/rest/annotationparsing/ClosableApiTest.java
+++ b/core/src/test/java/org/jclouds/rest/annotationparsing/ClosableApiTest.java
@@ -56,7 +56,7 @@ public class ClosableApiTest {
 
       DelegatingApi api = ContextBuilder.newBuilder(provider)
                                         .modules(ImmutableSet.<Module> builder()
-                                                             .add(new ExecutorServiceModule(executor, executor))
+                                                             .add(new ExecutorServiceModule(executor))
                                                              .build())
                                         .buildApi(DelegatingApi.class);
       api.close();

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/core/src/test/java/org/jclouds/rest/internal/BaseRestApiExpectTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/jclouds/rest/internal/BaseRestApiExpectTest.java b/core/src/test/java/org/jclouds/rest/internal/BaseRestApiExpectTest.java
index 34a461e..92bf77b 100644
--- a/core/src/test/java/org/jclouds/rest/internal/BaseRestApiExpectTest.java
+++ b/core/src/test/java/org/jclouds/rest/internal/BaseRestApiExpectTest.java
@@ -19,7 +19,6 @@ package org.jclouds.rest.internal;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.util.concurrent.MoreExecutors.newDirectExecutorService;
 import static com.google.inject.name.Names.named;
-import static org.jclouds.Constants.PROPERTY_IO_WORKER_THREADS;
 import static org.jclouds.Constants.PROPERTY_MAX_RETRIES;
 import static org.jclouds.Constants.PROPERTY_USER_THREADS;
 import static org.testng.Assert.assertEquals;
@@ -191,11 +190,9 @@ public abstract class BaseRestApiExpectTest<S> {
 
       @Inject
       public ExpectHttpCommandExecutorService(Function<HttpRequest, HttpResponse> fn, HttpUtils utils,
-               ContentMetadataCodec contentMetadataCodec,
-               @Named(PROPERTY_IO_WORKER_THREADS) ListeningExecutorService ioExecutor,
-               IOExceptionRetryHandler ioRetryHandler, DelegatingRetryHandler retryHandler,
-               DelegatingErrorHandler errorHandler, HttpWire wire) {
-         super(utils, contentMetadataCodec, ioExecutor, retryHandler, ioRetryHandler, errorHandler, wire);
+            ContentMetadataCodec contentMetadataCodec, IOExceptionRetryHandler ioRetryHandler,
+            DelegatingRetryHandler retryHandler, DelegatingErrorHandler errorHandler, HttpWire wire) {
+         super(utils, contentMetadataCodec, retryHandler, ioRetryHandler, errorHandler, wire);
          this.fn = checkNotNull(fn, "fn");
       }
 
@@ -228,7 +225,6 @@ public abstract class BaseRestApiExpectTest<S> {
       @Override
       public void configure() {
          bind(ListeningExecutorService.class).annotatedWith(named(PROPERTY_USER_THREADS)).toInstance(newDirectExecutorService());
-         bind(ListeningExecutorService.class).annotatedWith(named(PROPERTY_IO_WORKER_THREADS)).toInstance(newDirectExecutorService());
          bind(new TypeLiteral<Function<HttpRequest, HttpResponse>>() {
          }).toInstance(fn);
          bind(HttpCommandExecutorService.class).to(ExpectHttpCommandExecutorService.class);

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/core/src/test/java/org/jclouds/rest/internal/BaseRestApiTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/jclouds/rest/internal/BaseRestApiTest.java b/core/src/test/java/org/jclouds/rest/internal/BaseRestApiTest.java
index c151c4e..915aa99 100644
--- a/core/src/test/java/org/jclouds/rest/internal/BaseRestApiTest.java
+++ b/core/src/test/java/org/jclouds/rest/internal/BaseRestApiTest.java
@@ -21,7 +21,6 @@ import static com.google.common.net.HttpHeaders.TRANSFER_ENCODING;
 import static com.google.common.util.concurrent.MoreExecutors.newDirectExecutorService;
 import static com.google.inject.name.Names.named;
 import static org.easymock.EasyMock.createMock;
-import static org.jclouds.Constants.PROPERTY_IO_WORKER_THREADS;
 import static org.jclouds.Constants.PROPERTY_USER_THREADS;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNull;
@@ -79,7 +78,6 @@ public abstract class BaseRestApiTest {
       @Override
       protected void configure() {
          bind(ListeningExecutorService.class).annotatedWith(named(PROPERTY_USER_THREADS)).toInstance(newDirectExecutorService());
-         bind(ListeningExecutorService.class).annotatedWith(named(PROPERTY_IO_WORKER_THREADS)).toInstance(newDirectExecutorService());
          bind(HttpCommandExecutorService.class).toInstance(mock);
       }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/core/src/test/java/org/jclouds/rest/internal/RestAnnotationProcessorTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/jclouds/rest/internal/RestAnnotationProcessorTest.java b/core/src/test/java/org/jclouds/rest/internal/RestAnnotationProcessorTest.java
index a16eb91..16ace50 100644
--- a/core/src/test/java/org/jclouds/rest/internal/RestAnnotationProcessorTest.java
+++ b/core/src/test/java/org/jclouds/rest/internal/RestAnnotationProcessorTest.java
@@ -244,12 +244,6 @@ public class RestAnnotationProcessorTest extends BaseRestApiTest {
          ExecutionException {
       Injector child = injectorForCaller(new HttpCommandExecutorService() {
          int callCounter = 0;
-
-         @Override
-         public ListenableFuture<HttpResponse> submit(HttpCommand command) {
-            throw new AssertionError();
-         }
-
          @Override
          public HttpResponse invoke(HttpCommand command) {
             if (callCounter == 1)
@@ -279,19 +273,12 @@ public class RestAnnotationProcessorTest extends BaseRestApiTest {
    public void testDelegateWithPathParamIsLazyLoadedAndRequestIncludesEndpointVersionAndPath()
          throws InterruptedException, ExecutionException {
       Injector child = injectorForCaller(new HttpCommandExecutorService() {
-
-         @Override
-         public ListenableFuture<HttpResponse> submit(HttpCommand command) {
-            throw new AssertionError("jclouds no longer uses the submit method");
-         }
-
          @Override
          public HttpResponse invoke(HttpCommand command) {
             assertEquals(command.getCurrentRequest().getRequestLine(),
                   "GET http://howdyboys/testing/testing/thepathparam/client/1/foo HTTP/1.1");
             return HttpResponse.builder().build();
          }
-
       });
 
       try {
@@ -310,18 +297,11 @@ public class RestAnnotationProcessorTest extends BaseRestApiTest {
    public void testDelegateWithHeaderParamIsLazyLoadedAndRequestIncludesEndpointVersionAndHeader()
          throws InterruptedException, ExecutionException {
       Injector child = injectorForCaller(new HttpCommandExecutorService() {
-
-         @Override
-         public ListenableFuture<HttpResponse> submit(HttpCommand command) {
-            throw new AssertionError("jclouds no longer uses the submit method");
-         }
-
          @Override
          public HttpResponse invoke(HttpCommand command) {
             assertEquals(command.getCurrentRequest().getFirstHeaderOrNull("header"), "theheaderparam");
             return HttpResponse.builder().build();
          }
-
       });
 
       try {
@@ -338,12 +318,6 @@ public class RestAnnotationProcessorTest extends BaseRestApiTest {
    public void testDelegateWithoutProducesAndConsumes()
          throws InterruptedException, ExecutionException {
       Injector child = injectorForCaller(new HttpCommandExecutorService() {
-
-         @Override
-         public ListenableFuture<HttpResponse> submit(HttpCommand command) {
-            throw new AssertionError("jclouds no longer uses the submit method");
-         }
-
          @Override
          public HttpResponse invoke(HttpCommand command) {
             assertEquals(
@@ -352,7 +326,6 @@ public class RestAnnotationProcessorTest extends BaseRestApiTest {
             assertTrue(command.getCurrentRequest().getHeaders().get("Accept").contains(APPLICATION_JSON));
             return HttpResponse.builder().build();
          }
-
       });
 
       try {
@@ -368,12 +341,6 @@ public class RestAnnotationProcessorTest extends BaseRestApiTest {
    public void testDelegateWithProducesAndConsumesOnMethodIsLazyLoaded()
          throws InterruptedException, ExecutionException {
       Injector child = injectorForCaller(new HttpCommandExecutorService() {
-
-         @Override
-         public ListenableFuture<HttpResponse> submit(HttpCommand command) {
-            throw new AssertionError("jclouds no longer uses the submit method");
-         }
-
          @Override
          public HttpResponse invoke(HttpCommand command) {
             assertEquals(
@@ -398,12 +365,6 @@ public class RestAnnotationProcessorTest extends BaseRestApiTest {
    public void testDelegateWithProducesAndConsumesOnClassIsLazyLoaded()
          throws InterruptedException, ExecutionException {
       Injector child = injectorForCaller(new HttpCommandExecutorService() {
-
-         @Override
-         public ListenableFuture<HttpResponse> submit(HttpCommand command) {
-            throw new AssertionError("jclouds no longer uses the submit method");
-         }
-
          @Override
          public HttpResponse invoke(HttpCommand command) {
             assertEquals(
@@ -412,7 +373,6 @@ public class RestAnnotationProcessorTest extends BaseRestApiTest {
             assertTrue(command.getCurrentRequest().getHeaders().get("Accept").contains(APPLICATION_XML));
             return HttpResponse.builder().build();
          }
-
       });
 
       try {
@@ -428,18 +388,11 @@ public class RestAnnotationProcessorTest extends BaseRestApiTest {
    public void testDelegateIsLazyLoadedAndRequestIncludesEndpointVersionAndPathOptionalPresent()
          throws InterruptedException, ExecutionException {
       Injector child = injectorForCaller(new HttpCommandExecutorService() {
-
-         @Override
-         public ListenableFuture<HttpResponse> submit(HttpCommand command) {
-            throw new AssertionError("jclouds no longer uses the submit method");
-         }
-
          @Override
          public HttpResponse invoke(HttpCommand command) {
             assertEquals(command.getCurrentRequest().getRequestLine(), "GET http://howdyboys/client/1/foo HTTP/1.1");
             return HttpResponse.builder().build();
          }
-
       });
 
       try {
@@ -458,18 +411,11 @@ public class RestAnnotationProcessorTest extends BaseRestApiTest {
    public void testDelegateIsLazyLoadedAndRequestIncludesEndpointVersionAndPath() throws InterruptedException,
          ExecutionException {
       Injector child = injectorForCaller(new HttpCommandExecutorService() {
-
-         @Override
-         public ListenableFuture<HttpResponse> submit(HttpCommand command) {
-            throw new AssertionError("jclouds no longer uses the submit method");
-         }
-
          @Override
          public HttpResponse invoke(HttpCommand command) {
             assertEquals(command.getCurrentRequest().getRequestLine(), "GET http://howdyboys/client/1/foo HTTP/1.1");
             return HttpResponse.builder().build();
          }
-
       });
 
       try {

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/drivers/apachehc/src/main/java/org/jclouds/http/apachehc/ApacheHCHttpCommandExecutorService.java
----------------------------------------------------------------------
diff --git a/drivers/apachehc/src/main/java/org/jclouds/http/apachehc/ApacheHCHttpCommandExecutorService.java b/drivers/apachehc/src/main/java/org/jclouds/http/apachehc/ApacheHCHttpCommandExecutorService.java
index 8448a55..74d3628 100644
--- a/drivers/apachehc/src/main/java/org/jclouds/http/apachehc/ApacheHCHttpCommandExecutorService.java
+++ b/drivers/apachehc/src/main/java/org/jclouds/http/apachehc/ApacheHCHttpCommandExecutorService.java
@@ -15,6 +15,7 @@
  * limitations under the License.
  */
 package org.jclouds.http.apachehc;
+
 import static com.google.common.hash.Hashing.md5;
 import static com.google.common.io.BaseEncoding.base64;
 import static org.jclouds.http.HttpUtils.filterOutContentHeaders;
@@ -22,14 +23,13 @@ import static org.jclouds.http.HttpUtils.filterOutContentHeaders;
 import java.io.IOException;
 import java.net.URI;
 
-import javax.inject.Named;
+import javax.inject.Inject;
 
 import org.apache.http.Header;
 import org.apache.http.HttpHost;
 import org.apache.http.client.ClientProtocolException;
 import org.apache.http.client.HttpClient;
 import org.apache.http.client.methods.HttpUriRequest;
-import org.jclouds.Constants;
 import org.jclouds.http.HttpRequest;
 import org.jclouds.http.HttpResponse;
 import org.jclouds.http.HttpUtils;
@@ -38,18 +38,16 @@ import org.jclouds.http.handlers.DelegatingErrorHandler;
 import org.jclouds.http.handlers.DelegatingRetryHandler;
 import org.jclouds.http.internal.BaseHttpCommandExecutorService;
 import org.jclouds.http.internal.HttpWire;
-import org.jclouds.io.ContentMetadataCodec;
 import org.jclouds.io.ByteStreams2;
+import org.jclouds.io.ContentMetadataCodec;
 import org.jclouds.io.Payload;
 import org.jclouds.io.Payloads;
 
 import com.google.common.collect.LinkedHashMultimap;
 import com.google.common.collect.Multimap;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.inject.Inject;
 
 /**
- * Simple implementation of a {@link HttpFutureCommandClient}, Apache Components HttpClient 4.x.
+ * Simple implementation of a {@link HttpCommandExecutorService}, Apache Components HttpClient 4.x.
  */
 public class ApacheHCHttpCommandExecutorService extends BaseHttpCommandExecutorService<HttpUriRequest> {
    private final HttpClient client;
@@ -57,10 +55,9 @@ public class ApacheHCHttpCommandExecutorService extends BaseHttpCommandExecutorS
 
    @Inject
    ApacheHCHttpCommandExecutorService(HttpUtils utils, ContentMetadataCodec contentMetadataCodec,
-         @Named(Constants.PROPERTY_IO_WORKER_THREADS) ListeningExecutorService ioExecutor,
          DelegatingRetryHandler retryHandler, IOExceptionRetryHandler ioRetryHandler,
          DelegatingErrorHandler errorHandler, HttpWire wire, HttpClient client) {
-      super(utils, contentMetadataCodec, ioExecutor, retryHandler, ioRetryHandler, errorHandler, wire);
+      super(utils, contentMetadataCodec, retryHandler, ioRetryHandler, errorHandler, wire);
       this.client = client;
       this.apacheHCUtils = new ApacheHCUtils(contentMetadataCodec);
    }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/drivers/apachehc/src/test/java/org/jclouds/http/apachehc/ApacheHCHttpCommandExecutorServiceTestDisabled.java
----------------------------------------------------------------------
diff --git a/drivers/apachehc/src/test/java/org/jclouds/http/apachehc/ApacheHCHttpCommandExecutorServiceTestDisabled.java b/drivers/apachehc/src/test/java/org/jclouds/http/apachehc/ApacheHCHttpCommandExecutorServiceTestDisabled.java
index 7b46eda..016f997 100644
--- a/drivers/apachehc/src/test/java/org/jclouds/http/apachehc/ApacheHCHttpCommandExecutorServiceTestDisabled.java
+++ b/drivers/apachehc/src/test/java/org/jclouds/http/apachehc/ApacheHCHttpCommandExecutorServiceTestDisabled.java
@@ -17,7 +17,6 @@
 package org.jclouds.http.apachehc;
 
 import static org.jclouds.Constants.PROPERTY_CONNECTION_TIMEOUT;
-import static org.jclouds.Constants.PROPERTY_IO_WORKER_THREADS;
 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_SO_TIMEOUT;
@@ -49,7 +48,6 @@ public class ApacheHCHttpCommandExecutorServiceTestDisabled extends BaseHttpComm
       props.setProperty(PROPERTY_MAX_CONNECTIONS_PER_HOST, 0 + "");
       props.setProperty(PROPERTY_CONNECTION_TIMEOUT, 100 + "");
       props.setProperty(PROPERTY_SO_TIMEOUT, 100 + "");
-      props.setProperty(PROPERTY_IO_WORKER_THREADS, 3 + "");
       props.setProperty(PROPERTY_USER_THREADS, 0 + "");
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/drivers/enterprise/src/main/java/org/jclouds/enterprise/config/EnterpriseConfigurationModule.java
----------------------------------------------------------------------
diff --git a/drivers/enterprise/src/main/java/org/jclouds/enterprise/config/EnterpriseConfigurationModule.java b/drivers/enterprise/src/main/java/org/jclouds/enterprise/config/EnterpriseConfigurationModule.java
index 5dfab86..abdfd13 100644
--- a/drivers/enterprise/src/main/java/org/jclouds/enterprise/config/EnterpriseConfigurationModule.java
+++ b/drivers/enterprise/src/main/java/org/jclouds/enterprise/config/EnterpriseConfigurationModule.java
@@ -30,10 +30,20 @@ import com.google.common.util.concurrent.ListeningExecutorService;
 @ConfiguresExecutorService
 public class EnterpriseConfigurationModule extends ExecutorServiceModule {
 
+   /**
+    * @deprecated {@code ioExecutor} is no longer used. This constructor will be removed in jclouds v2.
+    * Use {@link #EnterpriseConfigurationModule(ListeningExecutorService)} instead.
+    */
+   @Deprecated
    public EnterpriseConfigurationModule(ListeningExecutorService userExecutor, ListeningExecutorService ioExecutor) {
       super(userExecutor, ioExecutor);
    }
 
+   @Deprecated
+   public EnterpriseConfigurationModule(ListeningExecutorService userExecutor) {
+      super(userExecutor);
+   }
+
    public EnterpriseConfigurationModule() {
       super();
    }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/drivers/gae/src/main/java/org/jclouds/gae/AsyncGaeHttpCommandExecutorService.java
----------------------------------------------------------------------
diff --git a/drivers/gae/src/main/java/org/jclouds/gae/AsyncGaeHttpCommandExecutorService.java b/drivers/gae/src/main/java/org/jclouds/gae/AsyncGaeHttpCommandExecutorService.java
deleted file mode 100644
index b8410b5..0000000
--- a/drivers/gae/src/main/java/org/jclouds/gae/AsyncGaeHttpCommandExecutorService.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.gae;
-
-import static com.google.common.base.Throwables.propagate;
-import static com.google.common.util.concurrent.Futures.transform;
-import static com.google.common.util.concurrent.JdkFutureAdapters.listenInPoolThread;
-import static org.jclouds.http.HttpUtils.checkRequestHasContentLengthOrChunkedEncoding;
-import static org.jclouds.http.HttpUtils.wirePayloadIfEnabled;
-
-import java.io.IOException;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.Constants;
-import org.jclouds.JcloudsVersion;
-import org.jclouds.http.HttpCommand;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.http.HttpRequestFilter;
-import org.jclouds.http.HttpResponse;
-import org.jclouds.http.HttpResponseException;
-import org.jclouds.http.HttpUtils;
-import org.jclouds.http.IOExceptionRetryHandler;
-import org.jclouds.http.handlers.DelegatingErrorHandler;
-import org.jclouds.http.handlers.DelegatingRetryHandler;
-import org.jclouds.http.internal.BaseHttpCommandExecutorService;
-import org.jclouds.http.internal.HttpWire;
-import org.jclouds.io.ContentMetadataCodec;
-import org.jclouds.util.Throwables2;
-
-import com.google.appengine.api.urlfetch.HTTPRequest;
-import com.google.appengine.api.urlfetch.HTTPResponse;
-import com.google.appengine.api.urlfetch.URLFetchService;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Function;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-
-/**
- * Google App Engine version of {@link HttpCommandExecutorService} using their
- * fetchAsync call
- */
-@Singleton
-public class AsyncGaeHttpCommandExecutorService extends BaseHttpCommandExecutorService<HTTPRequest> {
-   // TODO: look up gae version
-   public static final String USER_AGENT = String.format("jclouds/%s urlfetch/%s", JcloudsVersion.get(), "1.6.5");
-
-   private final URLFetchService urlFetchService;
-   private final ConvertToGaeRequest convertToGaeRequest;
-   private final ConvertToJcloudsResponse convertToJcloudsResponse;
-   private final ListeningExecutorService ioExecutor;
-
-   @Inject
-   public AsyncGaeHttpCommandExecutorService(URLFetchService urlFetchService, HttpUtils utils,
-         ContentMetadataCodec contentMetadataCodec,
-         @Named(Constants.PROPERTY_IO_WORKER_THREADS) ListeningExecutorService ioExecutor,
-         IOExceptionRetryHandler ioRetryHandler, DelegatingRetryHandler retryHandler,
-         DelegatingErrorHandler errorHandler, HttpWire wire, ConvertToGaeRequest convertToGaeRequest,
-         ConvertToJcloudsResponse convertToJcloudsResponse) {
-      super(utils, contentMetadataCodec, ioExecutor, retryHandler, ioRetryHandler, errorHandler, wire);
-      this.ioExecutor = ioExecutor;
-      this.urlFetchService = urlFetchService;
-      this.convertToGaeRequest = convertToGaeRequest;
-      this.convertToJcloudsResponse = convertToJcloudsResponse;
-   }
-
-   @VisibleForTesting
-   protected HttpResponse convert(HTTPResponse gaeResponse) {
-      return convertToJcloudsResponse.apply(gaeResponse);
-   }
-
-   @VisibleForTesting
-   protected HTTPRequest convert(HttpRequest request) throws IOException {
-      return convertToGaeRequest.apply(request);
-   }
-
-   /**
-    * nothing to clean up.
-    */
-   @Override
-   protected void cleanup(HTTPRequest nativeRequest) {
-   }
-
-   @Override
-   protected HttpResponse invoke(HTTPRequest request) throws IOException {
-      return convert(urlFetchService.fetch(request));
-   }
-
-   public HTTPRequest filterLogAndConvertRe(HttpRequest request) {
-      for (HttpRequestFilter filter : request.getFilters()) {
-         request = filter.filter(request);
-      }
-      checkRequestHasContentLengthOrChunkedEncoding(request,
-            "After filtering, the request has neither chunked encoding nor content length: " + request);
-      logger.debug("Sending request %s: %s", request.hashCode(), request.getRequestLine());
-      wirePayloadIfEnabled(wire, request);
-      HTTPRequest nativeRequest = convertToGaeRequest.apply(request);
-      utils.logRequest(headerLog, request, ">>");
-      return nativeRequest;
-   }
-
-   @Override
-   public ListenableFuture<HttpResponse> submit(final HttpCommand command) {
-      HTTPRequest nativeRequest = filterLogAndConvertRe(command.getCurrentRequest());
-      ListenableFuture<HttpResponse> response = transform(
-            listenInPoolThread(urlFetchService.fetchAsync(nativeRequest)), convertToJcloudsResponse);
-
-      return transform(response, new Function<HttpResponse, HttpResponse>() {
-         public HttpResponse apply(HttpResponse response) {
-            return receiveResponse(command, response);
-         }
-
-      }, ioExecutor);
-   }
-
-   private HttpResponse receiveResponse(HttpCommand command, HttpResponse response) {
-      try {
-         logger.debug("Receiving response %s: %s", command.getCurrentRequest().hashCode(), response.getStatusLine());
-         utils.logResponse(headerLog, response, "<<");
-         if (response.getPayload() != null && wire.enabled())
-            wire.input(response);
-         int statusCode = response.getStatusCode();
-         if (statusCode >= 300) {
-            if (shouldContinue(command, response))
-               return submit(command).get();
-            else
-               return response;
-         }
-         return response;
-      } catch (Exception e) {
-         IOException ioe = Throwables2.getFirstThrowableOfType(e, IOException.class);
-         if (ioe != null && ioRetryHandler.shouldRetryRequest(command, ioe)) {
-            try {
-               return submit(command).get();
-            } catch (Exception e1) {
-               command.setException(e1);
-               return response;
-            }
-         } else {
-            command.setException(new HttpResponseException(e.getMessage() + " connecting to "
-                  + command.getCurrentRequest().getRequestLine(), command, null, e));
-            return response;
-         }
-      } finally {
-         if (command.getException() != null)
-            propagate(command.getException());
-      }
-   }
-
-   private boolean shouldContinue(HttpCommand command, HttpResponse response) {
-      boolean shouldContinue = false;
-      if (retryHandler.shouldRetryRequest(command, response)) {
-         shouldContinue = true;
-      } else {
-         errorHandler.handleError(command, response);
-      }
-      return shouldContinue;
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/drivers/gae/src/main/java/org/jclouds/gae/GaeHttpCommandExecutorService.java
----------------------------------------------------------------------
diff --git a/drivers/gae/src/main/java/org/jclouds/gae/GaeHttpCommandExecutorService.java b/drivers/gae/src/main/java/org/jclouds/gae/GaeHttpCommandExecutorService.java
index ac84afe..79ff28d 100644
--- a/drivers/gae/src/main/java/org/jclouds/gae/GaeHttpCommandExecutorService.java
+++ b/drivers/gae/src/main/java/org/jclouds/gae/GaeHttpCommandExecutorService.java
@@ -19,10 +19,8 @@ package org.jclouds.gae;
 import java.io.IOException;
 
 import javax.inject.Inject;
-import javax.inject.Named;
 import javax.inject.Singleton;
 
-import org.jclouds.Constants;
 import org.jclouds.JcloudsVersion;
 import org.jclouds.concurrent.SingleThreaded;
 import org.jclouds.http.HttpRequest;
@@ -39,7 +37,6 @@ import com.google.appengine.api.urlfetch.HTTPRequest;
 import com.google.appengine.api.urlfetch.HTTPResponse;
 import com.google.appengine.api.urlfetch.URLFetchService;
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.util.concurrent.ListeningExecutorService;
 
 /**
  * Google App Engine version of {@link HttpCommandExecutorService}
@@ -57,11 +54,10 @@ public class GaeHttpCommandExecutorService extends BaseHttpCommandExecutorServic
    @Inject
    public GaeHttpCommandExecutorService(URLFetchService urlFetchService, HttpUtils utils,
             ContentMetadataCodec contentMetadataCodec,
-            @Named(Constants.PROPERTY_IO_WORKER_THREADS) ListeningExecutorService ioExecutor,
             IOExceptionRetryHandler ioRetryHandler, DelegatingRetryHandler retryHandler,
             DelegatingErrorHandler errorHandler, HttpWire wire, ConvertToGaeRequest convertToGaeRequest,
             ConvertToJcloudsResponse convertToJcloudsResponse) {
-      super(utils, contentMetadataCodec, ioExecutor, retryHandler, ioRetryHandler, errorHandler, wire);
+      super(utils, contentMetadataCodec, retryHandler, ioRetryHandler, errorHandler, wire);
       this.urlFetchService = urlFetchService;
       this.convertToGaeRequest = convertToGaeRequest;
       this.convertToJcloudsResponse = convertToJcloudsResponse;

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/drivers/gae/src/main/java/org/jclouds/gae/config/AsyncGoogleAppEngineConfigurationModule.java
----------------------------------------------------------------------
diff --git a/drivers/gae/src/main/java/org/jclouds/gae/config/AsyncGoogleAppEngineConfigurationModule.java b/drivers/gae/src/main/java/org/jclouds/gae/config/AsyncGoogleAppEngineConfigurationModule.java
deleted file mode 100644
index d6979b8..0000000
--- a/drivers/gae/src/main/java/org/jclouds/gae/config/AsyncGoogleAppEngineConfigurationModule.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.gae.config;
-
-import org.jclouds.concurrent.SingleThreaded;
-import org.jclouds.concurrent.config.ConfiguresExecutorService;
-import org.jclouds.gae.AsyncGaeHttpCommandExecutorService;
-import org.jclouds.http.HttpCommandExecutorService;
-import org.jclouds.http.config.ConfiguresHttpCommandExecutorService;
-
-import com.google.common.base.Supplier;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.inject.Module;
-
-/**
- * Configures {@link AsyncGaeHttpCommandExecutorService}.
- */
-@ConfiguresHttpCommandExecutorService
-@ConfiguresExecutorService
-@SingleThreaded
-public class AsyncGoogleAppEngineConfigurationModule extends GoogleAppEngineConfigurationModule {
-   public AsyncGoogleAppEngineConfigurationModule() {
-      super();
-   }
-
-   public AsyncGoogleAppEngineConfigurationModule(Module userExecutorModule) {
-      super(userExecutorModule);
-   }
-
-   /**
-    * Used when you are creating multiple contexts in the same app.
-    * @param memoizedCurrentRequestExecutorService
-    * @see CurrentRequestExecutorServiceModule#memoizedCurrentRequestExecutorService
-    */
-   public AsyncGoogleAppEngineConfigurationModule(Supplier<ListeningExecutorService> memoizedCurrentRequestExecutorService) {
-      super(memoizedCurrentRequestExecutorService);
-   }
-
-   protected void bindHttpCommandExecutorService() {
-      bind(HttpCommandExecutorService.class).to(AsyncGaeHttpCommandExecutorService.class);
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/drivers/gae/src/main/java/org/jclouds/gae/config/CurrentRequestExecutorServiceModule.java
----------------------------------------------------------------------
diff --git a/drivers/gae/src/main/java/org/jclouds/gae/config/CurrentRequestExecutorServiceModule.java b/drivers/gae/src/main/java/org/jclouds/gae/config/CurrentRequestExecutorServiceModule.java
index 8e1a777..70c8f19 100644
--- a/drivers/gae/src/main/java/org/jclouds/gae/config/CurrentRequestExecutorServiceModule.java
+++ b/drivers/gae/src/main/java/org/jclouds/gae/config/CurrentRequestExecutorServiceModule.java
@@ -102,11 +102,4 @@ public class CurrentRequestExecutorServiceModule extends AbstractModule {
    protected ListeningExecutorService userExecutor() {
       return memoizedCurrentRequestExecutorService.get();
    }
-
-   @Provides
-   @Singleton
-   @Named(Constants.PROPERTY_IO_WORKER_THREADS)
-   protected ListeningExecutorService ioExecutor() {
-      return memoizedCurrentRequestExecutorService.get();
-   }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/drivers/gae/src/main/java/org/jclouds/gae/config/GoogleAppEngineConfigurationModule.java
----------------------------------------------------------------------
diff --git a/drivers/gae/src/main/java/org/jclouds/gae/config/GoogleAppEngineConfigurationModule.java b/drivers/gae/src/main/java/org/jclouds/gae/config/GoogleAppEngineConfigurationModule.java
index e3264a3..21d40e2 100644
--- a/drivers/gae/src/main/java/org/jclouds/gae/config/GoogleAppEngineConfigurationModule.java
+++ b/drivers/gae/src/main/java/org/jclouds/gae/config/GoogleAppEngineConfigurationModule.java
@@ -46,7 +46,7 @@ public class GoogleAppEngineConfigurationModule extends AbstractModule {
    private final Module userExecutorModule;
 
    public GoogleAppEngineConfigurationModule() {
-      this(new ExecutorServiceModule(newDirectExecutorService(), newDirectExecutorService()));
+      this(new ExecutorServiceModule(newDirectExecutorService()));
    }
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0a236f59/drivers/gae/src/main/java/org/jclouds/gae/config/MultithreadedAsyncGoogleAppEngineConfigurationModule.java
----------------------------------------------------------------------
diff --git a/drivers/gae/src/main/java/org/jclouds/gae/config/MultithreadedAsyncGoogleAppEngineConfigurationModule.java b/drivers/gae/src/main/java/org/jclouds/gae/config/MultithreadedAsyncGoogleAppEngineConfigurationModule.java
deleted file mode 100644
index cc5d442..0000000
--- a/drivers/gae/src/main/java/org/jclouds/gae/config/MultithreadedAsyncGoogleAppEngineConfigurationModule.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.gae.config;
-
-import org.jclouds.concurrent.config.ConfiguresExecutorService;
-import org.jclouds.gae.AsyncGaeHttpCommandExecutorService;
-import org.jclouds.http.HttpCommandExecutorService;
-import org.jclouds.http.config.ConfiguresHttpCommandExecutorService;
-
-import com.google.common.annotations.Beta;
-import com.google.common.base.Supplier;
-import com.google.common.util.concurrent.ListeningExecutorService;
-
-/**
- * Configures {@link AsyncGaeHttpCommandExecutorService}.
- */
-@Beta
-@ConfiguresHttpCommandExecutorService
-@ConfiguresExecutorService
-public class MultithreadedAsyncGoogleAppEngineConfigurationModule extends GoogleAppEngineConfigurationModule {
-   public MultithreadedAsyncGoogleAppEngineConfigurationModule() {
-      super(new CurrentRequestExecutorServiceModule());
-   }
-
-   /**
-    * Used when you are creating multiple contexts in the same app.
-    * 
-    * @param currentRequestThreadFactory
-    * @see CurrentRequestExecutorServiceModule#currentRequestThreadFactory
-    */
-   public MultithreadedAsyncGoogleAppEngineConfigurationModule(ListeningExecutorService currentRequestThreadFactory) {
-      super(new CurrentRequestExecutorServiceModule(currentRequestThreadFactory));
-   }
-
-   /**
-    * Used when you are creating multiple contexts in the same app.
-    * 
-    * @param memoizedCurrentRequestExecutorService
-    * @see CurrentRequestExecutorServiceModule#memoizedCurrentRequestExecutorService
-    */
-   public MultithreadedAsyncGoogleAppEngineConfigurationModule(
-         Supplier<ListeningExecutorService> memoizedCurrentRequestExecutorService) {
-      super(memoizedCurrentRequestExecutorService);
-   }
-
-   protected void bindHttpCommandExecutorService() {
-      bind(HttpCommandExecutorService.class).to(AsyncGaeHttpCommandExecutorService.class);
-   }
-
-}


[7/7] git commit: Revert "JCLOUDS-736: Revert "Fail build on checkstyle warnings""

Posted by an...@apache.org.
Revert "JCLOUDS-736: Revert "Fail build on checkstyle warnings""

This reverts commit 80d51f409aa36f1a5505214eb4ac6e1128213c92.


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

Branch: refs/heads/reactivate-checkstyle
Commit: dc0443f4eb04695cff2f26bc161f4e7cbfcdf592
Parents: af7055a
Author: Andrew Phillips <an...@apache.org>
Authored: Mon Oct 6 15:11:48 2014 -0400
Committer: Andrew Phillips <an...@apache.org>
Committed: Mon Oct 6 16:23:19 2014 -0400

----------------------------------------------------------------------
 project/pom.xml | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/dc0443f4/project/pom.xml
----------------------------------------------------------------------
diff --git a/project/pom.xml b/project/pom.xml
index c5e6693..c337938 100644
--- a/project/pom.xml
+++ b/project/pom.xml
@@ -709,6 +709,18 @@
         <artifactId>maven-checkstyle-plugin</artifactId>
         <version>2.13</version>
         <!-- configuration and dependencies set via profiles -->
+        <executions>
+          <execution>
+          <id>checkstyle</id>
+          <phase>validate</phase>
+            <goals>
+              <goal>check</goal>
+            </goals>
+            <configuration>
+              <failOnViolation>true</failOnViolation>
+            </configuration>
+          </execution>
+        </executions>
       </plugin>
       <plugin>
         <groupId>org.gaul</groupId>
@@ -1072,6 +1084,14 @@
               <failsOnError>true</failsOnError>
               <violationSeverity>warning</violationSeverity>
             </configuration>
+            <executions>
+              <execution>
+                <phase>validate</phase>
+                <goals>
+                  <goal>check</goal>
+                </goals>
+              </execution>
+            </executions>
           </plugin>
           <plugin>
             <groupId>org.gaul</groupId>
@@ -1114,6 +1134,14 @@
               <failsOnError>true</failsOnError>
               <violationSeverity>warning</violationSeverity>
             </configuration>
+            <executions>
+              <execution>
+                <phase>validate</phase>
+                <goals>
+                  <goal>check</goal>
+                </goals>
+              </execution>
+            </executions>
           </plugin>
           <plugin>
             <groupId>org.gaul</groupId>