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

[2/4] git commit: JCLOUDS-534 Avoid runtime incompatibility introduced by Guava's closeQuietly.

JCLOUDS-534 Avoid runtime incompatibility introduced by Guava's closeQuietly.


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

Branch: refs/heads/master
Commit: 0012e6f95002d24dd55b7b4b26cea2bb394e7097
Parents: c6c1b1a
Author: Adrian Cole <ac...@twitter.com>
Authored: Mon Oct 27 08:45:45 2014 -0700
Committer: Adrian Cole <ad...@apache.org>
Committed: Wed Oct 29 17:01:26 2014 -0700

----------------------------------------------------------------------
 .../byon/functions/NodesFromYamlStream.java     | 10 ++--
 .../jclouds/chef/handlers/ChefErrorHandler.java | 14 +----
 .../chef/internal/BaseChefApiLiveTest.java      | 11 +---
 .../handlers/ElasticStackErrorHandler.java      | 13 ++--
 .../internal/FilesystemStorageStrategyImpl.java |  4 +-
 .../main/java/org/jclouds/JcloudsVersion.java   |  6 +-
 .../JavaUrlHttpCommandExecutorService.java      | 13 ++--
 .../main/java/org/jclouds/io/ByteStreams2.java  |  7 ++-
 .../main/java/org/jclouds/util/Closeables2.java | 35 +++++------
 .../http/BackoffLimitedRetryJavaTest.java       | 12 ++--
 ...tpCommandExecutorServiceIntegrationTest.java | 62 ++++++++++----------
 ...tpCommandExecutorServiceIntegrationTest.java |  4 +-
 .../OkHttpCommandExecutorServiceTest.java       | 10 ++--
 13 files changed, 90 insertions(+), 111 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/0012e6f9/apis/byon/src/main/java/org/jclouds/byon/functions/NodesFromYamlStream.java
----------------------------------------------------------------------
diff --git a/apis/byon/src/main/java/org/jclouds/byon/functions/NodesFromYamlStream.java b/apis/byon/src/main/java/org/jclouds/byon/functions/NodesFromYamlStream.java
index 00439b4..45a931f 100644
--- a/apis/byon/src/main/java/org/jclouds/byon/functions/NodesFromYamlStream.java
+++ b/apis/byon/src/main/java/org/jclouds/byon/functions/NodesFromYamlStream.java
@@ -17,9 +17,11 @@
 package org.jclouds.byon.functions;
 
 import static com.google.common.base.Preconditions.checkState;
+import static com.google.common.base.Throwables.propagate;
+import static org.jclouds.util.Closeables2.closeQuietly;
 
-import java.io.InputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.List;
 import java.util.Map;
 
@@ -34,14 +36,12 @@ import org.yaml.snakeyaml.constructor.Constructor;
 
 import com.google.common.base.Function;
 import com.google.common.base.Functions;
-import com.google.common.base.Throwables;
 import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Maps;
 import com.google.common.io.ByteSource;
-import com.google.common.io.Closeables;
 
 /**
  * Parses the following syntax.
@@ -100,9 +100,9 @@ public class NodesFromYamlStream implements Function<ByteSource, LoadingCache<St
          in = source.openStream();
          config = (Config) yaml.load(in);
       } catch (IOException ioe) {
-         throw Throwables.propagate(ioe);
+         throw propagate(ioe);
       } finally {
-         Closeables.closeQuietly(in);
+         closeQuietly(in);
       }
       checkState(config != null, "missing config: class");
       checkState(config.nodes != null, "missing nodes: collection");

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0012e6f9/apis/chef/src/main/java/org/jclouds/chef/handlers/ChefErrorHandler.java
----------------------------------------------------------------------
diff --git a/apis/chef/src/main/java/org/jclouds/chef/handlers/ChefErrorHandler.java b/apis/chef/src/main/java/org/jclouds/chef/handlers/ChefErrorHandler.java
index 3376219..85f9129 100644
--- a/apis/chef/src/main/java/org/jclouds/chef/handlers/ChefErrorHandler.java
+++ b/apis/chef/src/main/java/org/jclouds/chef/handlers/ChefErrorHandler.java
@@ -16,9 +16,7 @@
  */
 package org.jclouds.chef.handlers;
 
-import static com.google.common.base.Throwables.propagate;
-
-import java.io.IOException;
+import static org.jclouds.util.Closeables2.closeQuietly;
 
 import javax.annotation.Resource;
 import javax.inject.Inject;
@@ -33,8 +31,6 @@ import org.jclouds.logging.Logger;
 import org.jclouds.rest.AuthorizationException;
 import org.jclouds.rest.ResourceNotFoundException;
 
-import com.google.common.io.Closeables;
-
 /**
  * This will parse and set an appropriate exception on the command object.
  */
@@ -67,13 +63,7 @@ public class ChefErrorHandler implements HttpErrorHandler {
                break;
          }
       } finally {
-         if (response.getPayload() != null) {
-            try {
-               Closeables.close(response.getPayload().getInput(), true);
-            } catch (IOException e) {
-               throw propagate(e);
-            }
-         }
+         closeQuietly(response.getPayload());
          command.setException(exception);
       }
    }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0012e6f9/apis/chef/src/test/java/org/jclouds/chef/internal/BaseChefApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/chef/src/test/java/org/jclouds/chef/internal/BaseChefApiLiveTest.java b/apis/chef/src/test/java/org/jclouds/chef/internal/BaseChefApiLiveTest.java
index 225e593..a477be0 100644
--- a/apis/chef/src/test/java/org/jclouds/chef/internal/BaseChefApiLiveTest.java
+++ b/apis/chef/src/test/java/org/jclouds/chef/internal/BaseChefApiLiveTest.java
@@ -16,11 +16,11 @@
  */
 package org.jclouds.chef.internal;
 
-import static com.google.common.base.Throwables.propagate;
 import static com.google.common.collect.Iterables.any;
 import static com.google.common.collect.Iterables.isEmpty;
 import static com.google.common.hash.Hashing.md5;
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
+import static org.jclouds.util.Closeables2.closeQuietly;
 import static org.jclouds.util.Predicates2.retry;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertFalse;
@@ -30,7 +30,6 @@ import static org.testng.Assert.assertTrue;
 import static org.testng.Assert.fail;
 
 import java.io.File;
-import java.io.IOException;
 import java.io.InputStream;
 import java.util.Collections;
 import java.util.List;
@@ -65,7 +64,6 @@ import com.google.common.base.Predicate;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.hash.Hashing;
-import com.google.common.io.Closeables;
 import com.google.common.io.Files;
 import com.google.common.primitives.Bytes;
 
@@ -531,12 +529,7 @@ public abstract class BaseChefApiLiveTest<A extends ChefApi> extends BaseChefLiv
          Client client = clientApi.getClient(identity);
          assertNotNull(client, "Client not found: " + identity);
       } finally {
-         try {
-            Closeables.close(clientApi, true);
-         } catch (IOException e) {
-            throw propagate(e);
-         }
+         closeQuietly(clientApi);
       }
    }
-
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0012e6f9/apis/elasticstack/src/main/java/org/jclouds/elasticstack/handlers/ElasticStackErrorHandler.java
----------------------------------------------------------------------
diff --git a/apis/elasticstack/src/main/java/org/jclouds/elasticstack/handlers/ElasticStackErrorHandler.java b/apis/elasticstack/src/main/java/org/jclouds/elasticstack/handlers/ElasticStackErrorHandler.java
index 36ef425..83ac0a3 100644
--- a/apis/elasticstack/src/main/java/org/jclouds/elasticstack/handlers/ElasticStackErrorHandler.java
+++ b/apis/elasticstack/src/main/java/org/jclouds/elasticstack/handlers/ElasticStackErrorHandler.java
@@ -17,6 +17,8 @@
 package org.jclouds.elasticstack.handlers;
 
 import static org.jclouds.http.HttpUtils.releasePayload;
+import static org.jclouds.util.Closeables2.closeQuietly;
+import static org.jclouds.util.Strings2.toStringAndClose;
 
 import java.io.IOException;
 
@@ -30,9 +32,6 @@ import org.jclouds.http.HttpResponseException;
 import org.jclouds.logging.Logger;
 import org.jclouds.rest.AuthorizationException;
 import org.jclouds.rest.ResourceNotFoundException;
-import org.jclouds.util.Strings2;
-
-import com.google.common.io.Closeables;
 
 /**
  * This will parse and set an appropriate exception on the command object.
@@ -78,11 +77,7 @@ public class ElasticStackErrorHandler implements HttpErrorHandler {
             break;
          }
       } finally {
-         try {
-            Closeables.close(response.getPayload(), true);
-         } catch (IOException e) {
-            // Unreachable code
-         }
+         closeQuietly(response.getPayload());
          command.setException(exception);
       }
    }
@@ -91,7 +86,7 @@ public class ElasticStackErrorHandler implements HttpErrorHandler {
       if (response.getPayload() == null)
          return null;
       try {
-         return Strings2.toStringAndClose(response.getPayload().openStream());
+         return toStringAndClose(response.getPayload().openStream());
       } catch (IOException e) {
          throw new RuntimeException(e);
       } finally {

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0012e6f9/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java
----------------------------------------------------------------------
diff --git a/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java b/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java
index 65919d3..fb22789 100644
--- a/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java
+++ b/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java
@@ -22,6 +22,7 @@ import static java.nio.file.Files.getFileStore;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Strings.isNullOrEmpty;
 import static com.google.common.io.BaseEncoding.base16;
+import static org.jclouds.util.Closeables2.closeQuietly;
 
 import java.io.File;
 import java.io.IOException;
@@ -63,7 +64,6 @@ import com.google.common.hash.HashCode;
 import com.google.common.hash.Hashing;
 import com.google.common.hash.HashingInputStream;
 import com.google.common.io.ByteSource;
-import com.google.common.io.Closeables;
 import com.google.common.io.Files;
 import com.google.common.primitives.Longs;
 
@@ -315,7 +315,7 @@ public class FilesystemStorageStrategyImpl implements LocalStorageStrategy {
          }
          throw ex;
       } finally {
-         Closeables.closeQuietly(his);
+         closeQuietly(his);
          payload.release();
       }
    }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0012e6f9/core/src/main/java/org/jclouds/JcloudsVersion.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/JcloudsVersion.java b/core/src/main/java/org/jclouds/JcloudsVersion.java
index a2cd705..99c0f3b 100644
--- a/core/src/main/java/org/jclouds/JcloudsVersion.java
+++ b/core/src/main/java/org/jclouds/JcloudsVersion.java
@@ -19,9 +19,10 @@ package org.jclouds;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static java.lang.String.format;
+import static org.jclouds.util.Closeables2.closeQuietly;
 
-import java.io.InputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.Properties;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -29,7 +30,6 @@ import java.util.regex.Pattern;
 import org.jclouds.javax.annotation.Nullable;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.io.Closeables;
 
 public class JcloudsVersion {
     @VisibleForTesting
@@ -90,7 +90,7 @@ public class JcloudsVersion {
         } catch (IOException exception) {
             throw new IllegalStateException(format("Unable to load version resource file '%s'", VERSION_RESOURCE_FILE), exception);
         } finally {
-            Closeables.closeQuietly(is);
+            closeQuietly(is);
         }
         return checkNotNull(versionProperties.getProperty(VERSION_PROPERTY_NAME), VERSION_PROPERTY_NAME);
     }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0012e6f9/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 6afd80d..bafe7f3 100644
--- a/core/src/main/java/org/jclouds/http/internal/JavaUrlHttpCommandExecutorService.java
+++ b/core/src/main/java/org/jclouds/http/internal/JavaUrlHttpCommandExecutorService.java
@@ -19,12 +19,12 @@ 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;
-import static com.google.common.io.Closeables.close;
 import static com.google.common.net.HttpHeaders.CONTENT_LENGTH;
 import static com.google.common.net.HttpHeaders.HOST;
 import static com.google.common.net.HttpHeaders.USER_AGENT;
 import static org.jclouds.http.HttpUtils.filterOutContentHeaders;
 import static org.jclouds.io.Payloads.newInputStreamPayload;
+import static org.jclouds.util.Closeables2.closeQuietly;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
@@ -60,7 +60,6 @@ import com.google.common.base.Supplier;
 import com.google.common.collect.ImmutableMultimap;
 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.inject.Inject;
 
@@ -99,13 +98,13 @@ public class JavaUrlHttpCommandExecutorService extends BaseHttpCommandExecutorSe
       } catch (IOException e) {
          in = bufferAndCloseStream(connection.getErrorStream());
       } catch (RuntimeException e) {
-         close(in, true);
-         throw propagate(e);
+         closeQuietly(in);
+         throw e;
       }
 
       int responseCode = connection.getResponseCode();
       if (responseCode == 204) {
-         close(in, true);
+         closeQuietly(in);
          in = null;
       }
       builder.statusCode(responseCode);
@@ -135,7 +134,7 @@ public class JavaUrlHttpCommandExecutorService extends BaseHttpCommandExecutorSe
             in = new ByteArrayInputStream(toByteArray(inputStream));
          }
       } finally {
-         close(inputStream, true);
+         closeQuietly(inputStream);
       }
       return in;
    }
@@ -314,7 +313,7 @@ public class JavaUrlHttpCommandExecutorService extends BaseHttpCommandExecutorSe
          logger.error(e, "error after writing %d/%s bytes to %s", out.getCount(), lengthDesc, connection.getURL());
          throw e;
       } finally {
-         Closeables.closeQuietly(is);
+         closeQuietly(is);
       }
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0012e6f9/core/src/main/java/org/jclouds/io/ByteStreams2.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/io/ByteStreams2.java b/core/src/main/java/org/jclouds/io/ByteStreams2.java
index 91d5d4e..814f1ec 100644
--- a/core/src/main/java/org/jclouds/io/ByteStreams2.java
+++ b/core/src/main/java/org/jclouds/io/ByteStreams2.java
@@ -18,15 +18,16 @@
 package org.jclouds.io;
 
 import static com.google.common.base.Preconditions.checkNotNull;
+import static org.jclouds.util.Closeables2.closeQuietly;
 
 import java.io.IOException;
 import java.io.InputStream;
+
 import com.google.common.annotations.Beta;
 import com.google.common.hash.HashCode;
 import com.google.common.hash.HashFunction;
 import com.google.common.hash.HashingInputStream;
 import com.google.common.io.ByteStreams;
-import com.google.common.io.Closeables;
 
 @Beta
 public class ByteStreams2 {
@@ -38,7 +39,7 @@ public class ByteStreams2 {
          ByteStreams.copy(his, ByteStreams.nullOutputStream());
          return his.hash();
       } finally {
-         Closeables.closeQuietly(input);
+         closeQuietly(input);
       }
    }
 
@@ -47,7 +48,7 @@ public class ByteStreams2 {
       try {
          return ByteStreams.toByteArray(input);
       } finally {
-         Closeables.closeQuietly(input);
+         closeQuietly(input);
       }
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0012e6f9/core/src/main/java/org/jclouds/util/Closeables2.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/util/Closeables2.java b/core/src/main/java/org/jclouds/util/Closeables2.java
index 7335908..ac45a58 100644
--- a/core/src/main/java/org/jclouds/util/Closeables2.java
+++ b/core/src/main/java/org/jclouds/util/Closeables2.java
@@ -20,28 +20,29 @@ package org.jclouds.util;
 import java.io.Closeable;
 import java.io.IOException;
 
-import com.google.common.base.Throwables;
-import com.google.common.io.Closeables;
-
 import org.jclouds.javax.annotation.Nullable;
 
-@Deprecated
-public class Closeables2 {
-   private Closeables2() {
-   }
+import com.google.common.annotations.Beta;
+
+/**
+ * Alternative to {@link com.google.common.io.Closeables}, which allows jclouds
+ * to avoid guava incompatibility on said class.
+ */
+@Beta
+public final class Closeables2 {
 
-   /**
-    * Equivalent to calling {@code Closeables.close(closeable, true)}, but with no IOException in the signature.
-    *
-    * @param closeable the {@code Closeable} object to be closed, or null, in which case this method
-    *     does nothing
-    */
-   @Deprecated
+   /** Closes the closable, swallowing any {@linkplain IOException}. */
    public static void closeQuietly(@Nullable Closeable closeable) {
+      if (closeable == null) {
+         return;
+      }
       try {
-         Closeables.close(closeable, true);
-      } catch (IOException e) {
-         throw Throwables.propagate(e);
+         closeable.close();
+      } catch (IOException ignored) {
       }
    }
+
+   private Closeables2() {
+      throw new AssertionError("intentionally unimplemented");
+   }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0012e6f9/core/src/test/java/org/jclouds/http/BackoffLimitedRetryJavaTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/jclouds/http/BackoffLimitedRetryJavaTest.java b/core/src/test/java/org/jclouds/http/BackoffLimitedRetryJavaTest.java
index 879decc..e7ec694 100644
--- a/core/src/test/java/org/jclouds/http/BackoffLimitedRetryJavaTest.java
+++ b/core/src/test/java/org/jclouds/http/BackoffLimitedRetryJavaTest.java
@@ -16,8 +16,8 @@
  */
 package org.jclouds.http;
 
-import static com.google.common.io.Closeables.close;
 import static org.jclouds.Constants.PROPERTY_MAX_RETRIES;
+import static org.jclouds.util.Closeables2.closeQuietly;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.fail;
 
@@ -62,7 +62,7 @@ public class BackoffLimitedRetryJavaTest extends BaseMockWebServerTest {
          client.download("");
          assertEquals(server.getRequestCount(), 1);
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -75,7 +75,7 @@ public class BackoffLimitedRetryJavaTest extends BaseMockWebServerTest {
          client.download("");
          assertEquals(server.getRequestCount(), 2);
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -93,7 +93,7 @@ public class BackoffLimitedRetryJavaTest extends BaseMockWebServerTest {
          client.download("");
          assertEquals(server.getRequestCount(), maxRetries);
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -114,7 +114,7 @@ public class BackoffLimitedRetryJavaTest extends BaseMockWebServerTest {
          assertEquals(ex.getResponse().getStatusCode(), 500);
          assertEquals(server.getRequestCount(), maxRetries + 1);
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -139,7 +139,7 @@ public class BackoffLimitedRetryJavaTest extends BaseMockWebServerTest {
             assertEquals(server.getRequestCount(), maxRetries + 3);
          }
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0012e6f9/core/src/test/java/org/jclouds/http/BaseHttpCommandExecutorServiceIntegrationTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/jclouds/http/BaseHttpCommandExecutorServiceIntegrationTest.java b/core/src/test/java/org/jclouds/http/BaseHttpCommandExecutorServiceIntegrationTest.java
index 4d04704..29f1778 100644
--- a/core/src/test/java/org/jclouds/http/BaseHttpCommandExecutorServiceIntegrationTest.java
+++ b/core/src/test/java/org/jclouds/http/BaseHttpCommandExecutorServiceIntegrationTest.java
@@ -18,10 +18,10 @@ package org.jclouds.http;
 
 import static com.google.common.hash.Hashing.md5;
 import static com.google.common.io.BaseEncoding.base64;
-import static com.google.common.io.Closeables.close;
 import static com.google.common.io.Files.asByteSource;
 import static org.jclouds.http.options.GetOptions.Builder.tail;
 import static org.jclouds.io.Payloads.newByteSourcePayload;
+import static org.jclouds.util.Closeables2.closeQuietly;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertTrue;
@@ -85,7 +85,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
          assertEquals(request.getHeader("test"), "test");
          assertEquals(result, "test");
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -101,7 +101,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
          assertEquals(request.getHeader("test"), "test");
          assertEquals(result, "test");
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -113,7 +113,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
       try {
          assertEquals(client.download(""), XML);
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -127,7 +127,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
          assertEquals(server.getRequestCount(), 2);
          assertEquals(result, XML);
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -141,7 +141,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
                .endpoint(server.getUrl("/objects").toString()).build());
          assertEquals(Strings2.toStringAndClose(getStringResponse.getPayload().openStream()).trim(), XML);
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -161,7 +161,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
          assertTrue(URLDecoder.decode(request.getPath(), "UTF-8").endsWith(uri));
          assertEquals(result, XML);
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -174,7 +174,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
          String result = client.downloadException("", tail(1));
          assertEquals(result, "foo");
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -187,7 +187,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
          String result = client.synchException("", "");
          assertEquals(result, "foo");
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -205,7 +205,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
          assertEquals(server.getRequestCount(), 1);
          assertEquals(redirectTarget.getRequestCount(), 1);
       } finally {
-         close(client, true);
+         closeQuietly(client);
          redirectTarget.shutdown();
          server.shutdown();
       }
@@ -225,7 +225,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
          assertValidMd5(input, constitutionsMd5);
       } catch (RuntimeException e) {
       } finally {
-         close(input, true);
+         closeQuietly(input);
       }
    }
 
@@ -287,7 +287,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
          if (f != null && f.exists()) {
             f.delete();
          }
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -303,7 +303,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
          assertEquals(new String(request.getBody(), Charsets.UTF_8), "foo");
          assertEquals(result, "fooPOST");
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -318,7 +318,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
          RecordedRequest request = server.takeRequest();
          assertEquals(new String(request.getBody(), Charsets.UTF_8), "");
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -338,7 +338,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
          request = server.takeRequest();
          assertEquals(new String(request.getBody(), Charsets.UTF_8), "foo");
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -361,7 +361,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
          request = redirectTarget.takeRequest();
          assertEquals(new String(request.getBody(), Charsets.UTF_8), "foo");
       } finally {
-         close(client, true);
+         closeQuietly(client);
          redirectTarget.shutdown();
          server.shutdown();
       }
@@ -378,7 +378,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
          assertEquals(new String(request.getBody(), Charsets.UTF_8), "foo");
          assertEquals(result, "fooPOST");
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -393,7 +393,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
       } catch (Exception expected) {
          assertEquals(server.getRequestCount(), 1);
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -409,7 +409,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
          assertEquals(new String(request.getBody(), Charsets.UTF_8), "{\"key\":\"foo\"}");
          assertEquals(result, "fooPOSTJSON");
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -433,7 +433,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
          if (payload != null) {
             payload.release();
          }
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -456,7 +456,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
          if (payload != null) {
             payload.release();
          }
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -479,7 +479,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
          if (payload != null) {
             payload.release();
          }
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -495,7 +495,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
          assertEquals(new String(request.getBody(), Charsets.UTF_8), "foo");
          assertEquals(result, "fooPUT");
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -518,7 +518,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
          request = redirectTarget.takeRequest();
          assertEquals(new String(request.getBody(), Charsets.UTF_8), "foo");
       } finally {
-         close(client, true);
+         closeQuietly(client);
          redirectTarget.shutdown();
          server.shutdown();
       }
@@ -534,7 +534,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
          RecordedRequest request = server.takeRequest();
          assertEquals(new String(request.getBody(), Charsets.UTF_8), "");
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -554,7 +554,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
          request = server.takeRequest();
          assertEquals(new String(request.getBody(), Charsets.UTF_8), "foo");
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -566,7 +566,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
       try {
          assertTrue(client.exists(""));
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -579,7 +579,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
          assertTrue(client.exists(""));
          assertEquals(server.getRequestCount(), 2);
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -591,7 +591,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
       try {
          assertFalse(client.exists(""));
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -604,7 +604,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
          String result = client.downloadAndParse("");
          assertEquals(result, "whoppers");
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }
@@ -625,7 +625,7 @@ public abstract class BaseHttpCommandExecutorServiceIntegrationTest extends Base
          long diff = System.currentTimeMillis() - now;
          assertTrue(diff < timeoutMillis / 2, "expected " + diff + " to be less than " + (timeoutMillis / 2));
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0012e6f9/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 265048a..e911b0e 100644
--- a/core/src/test/java/org/jclouds/http/JavaUrlHttpCommandExecutorServiceIntegrationTest.java
+++ b/core/src/test/java/org/jclouds/http/JavaUrlHttpCommandExecutorServiceIntegrationTest.java
@@ -16,11 +16,11 @@
  */
 package org.jclouds.http;
 
-import static com.google.common.io.Closeables.close;
 import static com.google.common.net.HttpHeaders.CONTENT_LENGTH;
 import static org.jclouds.Constants.PROPERTY_MAX_CONNECTIONS_PER_CONTEXT;
 import static org.jclouds.Constants.PROPERTY_MAX_CONNECTIONS_PER_HOST;
 import static org.jclouds.Constants.PROPERTY_USER_THREADS;
+import static org.jclouds.util.Closeables2.closeQuietly;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.fail;
 
@@ -78,7 +78,7 @@ public class JavaUrlHttpCommandExecutorServiceIntegrationTest extends BaseHttpCo
          }
          assertEquals(server.takeRequest().getHeader(CONTENT_LENGTH), String.valueOf(reallyLongContent));
       } finally {
-         close(client, true);
+         closeQuietly(client);
          server.shutdown();
       }
    }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0012e6f9/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 f201416..0d204b9 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
@@ -16,10 +16,10 @@
  */
 package org.jclouds.http.okhttp;
 
-import static com.google.common.io.Closeables.close;
 import static org.jclouds.Constants.PROPERTY_MAX_CONNECTIONS_PER_CONTEXT;
 import static org.jclouds.Constants.PROPERTY_MAX_CONNECTIONS_PER_HOST;
 import static org.jclouds.Constants.PROPERTY_USER_THREADS;
+import static org.jclouds.util.Closeables2.closeQuietly;
 import static org.testng.Assert.assertEquals;
 
 import java.io.Closeable;
@@ -81,7 +81,7 @@ public class OkHttpCommandExecutorServiceTest extends BaseHttpCommandExecutorSer
          assertEquals(new String(request.getBody(), Charsets.UTF_8), "foo");
          assertEquals(result, "fooPATCH");
       } finally {
-         close(api, true);
+         closeQuietly(api);
          server.shutdown();
       }
    }
@@ -103,7 +103,7 @@ public class OkHttpCommandExecutorServiceTest extends BaseHttpCommandExecutorSer
          assertEquals(request.getMethod(), "PATCH");
          assertEquals(new String(request.getBody(), Charsets.UTF_8), "foo");
       } finally {
-         close(api, true);
+         closeQuietly(api);
          server.shutdown();
       }
    }
@@ -128,7 +128,7 @@ public class OkHttpCommandExecutorServiceTest extends BaseHttpCommandExecutorSer
          assertEquals(request.getMethod(), "PATCH");
          assertEquals(new String(request.getBody(), Charsets.UTF_8), "foo");
       } finally {
-         close(api, true);
+         closeQuietly(api);
          redirectTarget.shutdown();
          server.shutdown();
       }
@@ -145,7 +145,7 @@ public class OkHttpCommandExecutorServiceTest extends BaseHttpCommandExecutorSer
          assertEquals(request.getMethod(), "PATCH");
          assertEquals(new String(request.getBody(), Charsets.UTF_8), "");
       } finally {
-         close(api, true);
+         closeQuietly(api);
          server.shutdown();
       }
    }