You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ga...@apache.org on 2020/06/24 23:11:48 UTC

[jclouds] branch master updated: JCLOUDS-1333: JCLOUDS-1334: JCLOUDS-1470: Require Java 8 and Guava 22

This is an automated email from the ASF dual-hosted git repository.

gaul pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jclouds.git


The following commit(s) were added to refs/heads/master by this push:
     new 62767a1  JCLOUDS-1333: JCLOUDS-1334: JCLOUDS-1470: Require Java 8 and Guava 22
62767a1 is described below

commit 62767a14610fc1c97c440dbd5ee0f02b276a1069
Author: Andrew Gaul <ga...@apache.org>
AuthorDate: Sun Jun 14 11:40:04 2020 +0900

    JCLOUDS-1333: JCLOUDS-1334: JCLOUDS-1470: Require Java 8 and Guava 22
    
    This allows compatibility with Guava 29.  Also unwind some older
    workarounds.
---
 allblobstore/pom.xml                               | 15 ------
 .../chef/features/OrganizationApiExpectTest.java   |  3 +-
 .../compute/functions/ImageToOperatingSystem.java  |  2 +-
 ...eNodesWithGroupEncodedIntoNameThenAddToSet.java |  4 +-
 .../strategy/internal/DeleteAllKeysInList.java     |  3 +-
 .../internal/DelegatingImageExtension.java         |  5 +-
 .../StubComputeServiceDependenciesModule.java      |  4 +-
 .../concurrent/config/ExecutorServiceModule.java   | 59 +---------------------
 .../predicates/InetSocketAddressConnect.java       |  4 +-
 .../main/java/org/jclouds/proxy/ProxyForURI.java   |  2 +-
 .../jclouds/rest/internal/InvokeHttpMethod.java    |  4 +-
 .../rest/internal/BaseRestApiExpectTest.java       |  4 +-
 .../org/jclouds/rest/internal/BaseRestApiTest.java |  4 +-
 .../rest/internal/InvokeHttpMethodTest.java        |  4 +-
 .../java/org/jclouds/ssh/jsch/JschSshClient.java   |  2 +-
 .../org/jclouds/ssh/jsch/SessionConnection.java    |  6 +--
 .../java/org/jclouds/sshj/SSHClientConnection.java |  2 +-
 .../main/java/org/jclouds/sshj/SshjSshClient.java  |  2 +-
 project/pom.xml                                    | 12 ++---
 .../arm/compute/config/AzureNameValidator.java     |  2 +-
 20 files changed, 37 insertions(+), 106 deletions(-)

diff --git a/allblobstore/pom.xml b/allblobstore/pom.xml
index 462ab7a..07d5a90 100644
--- a/allblobstore/pom.xml
+++ b/allblobstore/pom.xml
@@ -74,19 +74,4 @@
       <version>${project.version}</version>
     </dependency>
   </dependencies>
-  <profiles>
-    <profile>
-      <id>jre1.7</id>
-      <activation>
-        <jdk>[1.7,)</jdk>
-      </activation>
-      <dependencies>
-        <dependency>
-          <groupId>org.apache.jclouds.api</groupId>
-          <artifactId>filesystem</artifactId>
-         <version>${project.version}</version>
-       </dependency>
-      </dependencies>
-    </profile>
-  </profiles>
 </project>
diff --git a/apis/chef/src/test/java/org/jclouds/chef/features/OrganizationApiExpectTest.java b/apis/chef/src/test/java/org/jclouds/chef/features/OrganizationApiExpectTest.java
index 748c3c5..3673639 100644
--- a/apis/chef/src/test/java/org/jclouds/chef/features/OrganizationApiExpectTest.java
+++ b/apis/chef/src/test/java/org/jclouds/chef/features/OrganizationApiExpectTest.java
@@ -34,6 +34,7 @@ import org.jclouds.chef.domain.User;
 import org.jclouds.date.TimeStamp;
 import org.jclouds.http.HttpRequest;
 import org.jclouds.http.HttpResponse;
+import org.jclouds.http.HttpResponseException;
 import org.jclouds.rest.ConfiguresHttpApi;
 import org.jclouds.rest.ResourceNotFoundException;
 import org.testng.annotations.Test;
@@ -144,7 +145,7 @@ public class OrganizationApiExpectTest extends BaseChefApiExpectTest<ChefApi> {
       api.organizationApi().get().deleteGroup("foo");
    }
 
-   @Test(expectedExceptions = ResourceNotFoundException.class)
+   @Test(expectedExceptions = HttpResponseException.class)
    public void testDeleteGroupFailsOn404() {
       ChefApi api = requestSendsResponse(signed(HttpRequest.builder() //
             .method("DELETE") //
diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/functions/ImageToOperatingSystem.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/functions/ImageToOperatingSystem.java
index 9008ca3..c521d2f 100644
--- a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/functions/ImageToOperatingSystem.java
+++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/functions/ImageToOperatingSystem.java
@@ -85,7 +85,7 @@ public class ImageToOperatingSystem implements Function<Image, OperatingSystem>
          } else if (imageName.contains("Oracle")) {
             osFamily = OsFamily.OEL;
          } else {
-            final Iterable<String> imageNameParts = Splitter.on(CharMatcher.WHITESPACE).trimResults().split(
+            final Iterable<String> imageNameParts = Splitter.on(CharMatcher.whitespace()).trimResults().split(
                      imageName.toLowerCase());
 
             try {
diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/strategy/ApplyNovaTemplateOptionsCreateNodesWithGroupEncodedIntoNameThenAddToSet.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/strategy/ApplyNovaTemplateOptionsCreateNodesWithGroupEncodedIntoNameThenAddToSet.java
index 532643a..908728e 100644
--- a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/strategy/ApplyNovaTemplateOptionsCreateNodesWithGroupEncodedIntoNameThenAddToSet.java
+++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/strategy/ApplyNovaTemplateOptionsCreateNodesWithGroupEncodedIntoNameThenAddToSet.java
@@ -61,6 +61,7 @@ import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
+import com.google.common.util.concurrent.MoreExecutors;
 
 @Singleton
 public class ApplyNovaTemplateOptionsCreateNodesWithGroupEncodedIntoNameThenAddToSet extends
@@ -188,8 +189,7 @@ public class ApplyNovaTemplateOptionsCreateNodesWithGroupEncodedIntoNameThenAddT
                   public AtomicReference<NodeAndNovaTemplateOptions> apply(AtomicReference<NodeMetadata> input) {
                      return NodeAndNovaTemplateOptions.newAtomicReference(input, Atomics.newReference(templateOptions));
                   }
-               }
-         );
+               }, MoreExecutors.directExecutor());
          return Futures.transform(nodeAndNovaTemplateOptions, createAndAddFloatingIpToNode, userExecutor);
       } else {
          return future;
diff --git a/blobstore/src/main/java/org/jclouds/blobstore/strategy/internal/DeleteAllKeysInList.java b/blobstore/src/main/java/org/jclouds/blobstore/strategy/internal/DeleteAllKeysInList.java
index 85b19eb..0f8b6ca 100644
--- a/blobstore/src/main/java/org/jclouds/blobstore/strategy/internal/DeleteAllKeysInList.java
+++ b/blobstore/src/main/java/org/jclouds/blobstore/strategy/internal/DeleteAllKeysInList.java
@@ -49,6 +49,7 @@ import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
+import com.google.common.util.concurrent.MoreExecutors;
 import com.google.inject.Inject;
 
 /**
@@ -286,7 +287,7 @@ public class DeleteAllKeysInList implements ClearListStrategy, ClearContainerStr
                   outstandingFutures.remove(blobDelFuture);
                   semaphore.release();
                }
-            });
+            }, MoreExecutors.directExecutor());
          } else {
             // It is possible above to acquire a semaphore but not submit any
             // task to the executorService. For e.g. if the listing contains
diff --git a/compute/src/main/java/org/jclouds/compute/extensions/internal/DelegatingImageExtension.java b/compute/src/main/java/org/jclouds/compute/extensions/internal/DelegatingImageExtension.java
index 7fd7544..8e26316 100644
--- a/compute/src/main/java/org/jclouds/compute/extensions/internal/DelegatingImageExtension.java
+++ b/compute/src/main/java/org/jclouds/compute/extensions/internal/DelegatingImageExtension.java
@@ -39,6 +39,7 @@ import com.google.common.base.Function;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
 import com.google.inject.assistedinject.Assisted;
 
 /**
@@ -105,7 +106,7 @@ public class DelegatingImageExtension implements ImageExtension {
             logger.info(">> Adding default image credentials to image(%s)...", template.getName());
             return addDefaultCredentialsToImage.apply(input);
          }
-      });
+      }, MoreExecutors.directExecutor());
 
       Futures.addCallback(future, new FutureCallback<Image>() {
          @Override
@@ -117,7 +118,7 @@ public class DelegatingImageExtension implements ImageExtension {
          public void onFailure(Throwable t) {
 
          }
-      });
+      }, MoreExecutors.directExecutor());
       return future;
    }
 
diff --git a/compute/src/main/java/org/jclouds/compute/stub/config/StubComputeServiceDependenciesModule.java b/compute/src/main/java/org/jclouds/compute/stub/config/StubComputeServiceDependenciesModule.java
index aea242f..375f761 100644
--- a/compute/src/main/java/org/jclouds/compute/stub/config/StubComputeServiceDependenciesModule.java
+++ b/compute/src/main/java/org/jclouds/compute/stub/config/StubComputeServiceDependenciesModule.java
@@ -183,9 +183,9 @@ public class StubComputeServiceDependenciesModule extends AbstractModule {
 
       @Override
       public boolean apply(HostAndPort input) {
-         if (input.getHostText().indexOf(publicIpPrefix) == -1)
+         if (input.getHost().indexOf(publicIpPrefix) == -1)
             return false;
-         String id = input.getHostText().replace(publicIpPrefix, "");
+         String id = input.getHost().replace(publicIpPrefix, "");
          NodeMetadata node = nodes.get(id);
          return node != null && node.getStatus() == Status.RUNNING;
       }
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 8ccfd6d..c42c959 100644
--- a/core/src/main/java/org/jclouds/concurrent/config/ExecutorServiceModule.java
+++ b/core/src/main/java/org/jclouds/concurrent/config/ExecutorServiceModule.java
@@ -20,9 +20,6 @@ import static com.google.common.util.concurrent.MoreExecutors.listeningDecorator
 import static org.jclouds.Constants.PROPERTY_USER_THREADS;
 import static org.jclouds.concurrent.DynamicExecutors.newScalingThreadPool;
 
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
 import java.io.Closeable;
 import java.io.IOException;
 import java.util.List;
@@ -57,60 +54,6 @@ import com.google.inject.Provides;
 @ConfiguresExecutorService
 public class ExecutorServiceModule extends AbstractModule {
 
-   private static final Method CREATE_STL;
-   private static final Constructor<SimpleTimeLimiter> CONSTRUCT_STL;
-   static {
-      Method create = null;
-      Constructor ctor = null;
-      try {
-         create = SimpleTimeLimiter.class.getDeclaredMethod("create", ExecutorService.class);
-      } catch (NoSuchMethodException nsme) {
-         try {
-            ctor = SimpleTimeLimiter.class.getConstructor(ExecutorService.class);
-         } catch (NoSuchMethodException nsme2) {
-            throw new UnsupportedOperationException(
-               "Can't find SimpleTimeLimiter creator or constructor taking ExecutorService", nsme2);
-         }
-      }
-      CREATE_STL = create;
-      CONSTRUCT_STL = ctor;
-   }
-
-   /**
-    * Reflective creation of SimpleTimeLimiter to allow compatibility with Guava 23.0.
-    * SimpleTimeLimiter.create(ExecutorService) was introduced in Guava 22.0 to replace
-    * the SimpleTimeLimiter(ExecutorService) constructor, which was deprecated in
-    * Guava 22.0 and removed in Guava 23.0. The method is public to allow test methods
-    * in other packages to use it.
-    * @param executorService the execution service to use when running time-limited tasks
-    * @return a new instance of SimpleTimeLimiter that uses executorService
-    */
-   public static SimpleTimeLimiter createSimpleTimeLimiter(ExecutorService executorService) {
-      try {
-         if (CREATE_STL != null) {
-            return (SimpleTimeLimiter) CREATE_STL.invoke(null, executorService);
-         } else if (CONSTRUCT_STL != null) {
-            return CONSTRUCT_STL.newInstance(executorService);
-         }
-         throw new UnsupportedOperationException(
-            "Can't find SimpleTimeLimiter creator or constructor taking ExecutorService");
-      } catch (IllegalAccessException iae) {
-         throw new UnsupportedOperationException("Can't access SimpleTimeLimiter method/ctor", iae);
-      } catch (InstantiationException ie) {
-         throw new UnsupportedOperationException("Can't construct SimpleTimeLimiter", ie);
-      } catch (InvocationTargetException ite) {
-         Throwable throwable = ite.getCause();
-         if (throwable instanceof RuntimeException) {
-            throw (RuntimeException) throwable;
-         }
-         if (throwable instanceof Error) {
-            throw (Error) throwable;
-         }
-         throw new UnsupportedOperationException(
-            "Checked exception thrown while creating SimpleTimeLimiter", throwable);
-      }
-   }
-
    static final class ShutdownExecutorOnClose implements Closeable {
       @Resource
       private Logger logger = Logger.NULL;
@@ -170,7 +113,7 @@ public class ExecutorServiceModule extends AbstractModule {
    @Provides
    @Singleton
    final TimeLimiter timeLimiter(@Named(PROPERTY_USER_THREADS) ListeningExecutorService userExecutor) {
-      return createSimpleTimeLimiter(userExecutor);
+      return SimpleTimeLimiter.create(userExecutor);
    }
 
    @Provides
diff --git a/core/src/main/java/org/jclouds/predicates/InetSocketAddressConnect.java b/core/src/main/java/org/jclouds/predicates/InetSocketAddressConnect.java
index 8482a0f..85217bf 100644
--- a/core/src/main/java/org/jclouds/predicates/InetSocketAddressConnect.java
+++ b/core/src/main/java/org/jclouds/predicates/InetSocketAddressConnect.java
@@ -59,13 +59,13 @@ public class InetSocketAddressConnect implements SocketOpen {
    
    @Override
    public boolean apply(HostAndPort socketA) {
-      InetSocketAddress socketAddress = new InetSocketAddress(socketA.getHostText(), socketA
+      InetSocketAddress socketAddress = new InetSocketAddress(socketA.getHost(), socketA
                .getPort());
       Socket socket = null;
       try {
          logger.trace("testing socket %s", socketAddress);
          socket = new Socket(
-               proxyForURI.apply(URI.create("socket://" + socketA.getHostText() + ":" + socketA.getPort())));
+               proxyForURI.apply(URI.create("socket://" + socketA.getHost() + ":" + socketA.getPort())));
          socket.setReuseAddress(false);
          socket.setSoLinger(false, 1);
          socket.setSoTimeout(timeout);
diff --git a/core/src/main/java/org/jclouds/proxy/ProxyForURI.java b/core/src/main/java/org/jclouds/proxy/ProxyForURI.java
index eb1645f..ab54bb0 100644
--- a/core/src/main/java/org/jclouds/proxy/ProxyForURI.java
+++ b/core/src/main/java/org/jclouds/proxy/ProxyForURI.java
@@ -67,7 +67,7 @@ public class ProxyForURI implements Function<URI, Proxy> {
          return Proxy.NO_PROXY;
       }
       if (config.getProxy().isPresent()) {
-         SocketAddress addr = new InetSocketAddress(config.getProxy().get().getHostText(), config.getProxy().get()
+         SocketAddress addr = new InetSocketAddress(config.getProxy().get().getHost(), config.getProxy().get()
             .getPort());
          Proxy proxy = new Proxy(config.getType(), addr);
 
diff --git a/core/src/main/java/org/jclouds/rest/internal/InvokeHttpMethod.java b/core/src/main/java/org/jclouds/rest/internal/InvokeHttpMethod.java
index 064e500..8594bf5 100644
--- a/core/src/main/java/org/jclouds/rest/internal/InvokeHttpMethod.java
+++ b/core/src/main/java/org/jclouds/rest/internal/InvokeHttpMethod.java
@@ -115,7 +115,7 @@ public class InvokeHttpMethod implements Function<Invocation, Object> {
     *            if our thread is interrupted during execution
     * @throws UncheckedTimeoutException
     *            if the time limit is reached
-    * @see TimeLimiter#callWithTimeout(Callable, long, TimeUnit, boolean)
+    * @see TimeLimiter#callWithTimeout(Callable, long, TimeUnit)
     */
    public Object invokeWithTimeout(final Invocation invocation, final long limitNanos) {
       String commandName = config.getCommandName(invocation);
@@ -125,7 +125,7 @@ public class InvokeHttpMethod implements Function<Invocation, Object> {
       logger.debug(">> blocking on %s for %s", invocation, limitNanos);
       try {
          return timeLimiter
-               .callWithTimeout(new InvokeAndTransform(commandName, command), limitNanos, NANOSECONDS, true);
+               .callWithTimeout(new InvokeAndTransform(commandName, command), limitNanos, NANOSECONDS);
       } catch (Throwable t) {
          try {
             return fallback.createOrPropagate(t);
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 144ad7e..5c45faa 100644
--- a/core/src/test/java/org/jclouds/rest/internal/BaseRestApiExpectTest.java
+++ b/core/src/test/java/org/jclouds/rest/internal/BaseRestApiExpectTest.java
@@ -22,7 +22,6 @@ import static com.google.inject.name.Names.named;
 import static org.jclouds.Constants.PROPERTY_IDEMPOTENT_METHODS;
 import static org.jclouds.Constants.PROPERTY_MAX_RETRIES;
 import static org.jclouds.Constants.PROPERTY_USER_THREADS;
-import static org.jclouds.concurrent.config.ExecutorServiceModule.createSimpleTimeLimiter;
 import static org.testng.Assert.assertEquals;
 
 import java.io.IOException;
@@ -81,6 +80,7 @@ import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.io.ByteSource;
 import com.google.common.util.concurrent.ListeningExecutorService;
+import com.google.common.util.concurrent.SimpleTimeLimiter;
 import com.google.common.util.concurrent.TimeLimiter;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonParser;
@@ -235,7 +235,7 @@ public abstract class BaseRestApiExpectTest<S> {
       @Provides
       @Singleton
       TimeLimiter timeLimiter(@Named(PROPERTY_USER_THREADS) ListeningExecutorService userExecutor) {
-         return createSimpleTimeLimiter(userExecutor);
+         return SimpleTimeLimiter.create(userExecutor);
       }
    }
 
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 cee3a5a..ec3b618 100644
--- a/core/src/test/java/org/jclouds/rest/internal/BaseRestApiTest.java
+++ b/core/src/test/java/org/jclouds/rest/internal/BaseRestApiTest.java
@@ -22,7 +22,6 @@ import static com.google.common.util.concurrent.MoreExecutors.newDirectExecutorS
 import static com.google.inject.name.Names.named;
 import static org.easymock.EasyMock.createMock;
 import static org.jclouds.Constants.PROPERTY_USER_THREADS;
-import static org.jclouds.concurrent.config.ExecutorServiceModule.createSimpleTimeLimiter;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNull;
 
@@ -51,6 +50,7 @@ import com.google.common.collect.SortedSetMultimap;
 import com.google.common.collect.TreeMultimap;
 import com.google.common.reflect.Invokable;
 import com.google.common.util.concurrent.ListeningExecutorService;
+import com.google.common.util.concurrent.SimpleTimeLimiter;
 import com.google.common.util.concurrent.TimeLimiter;
 import com.google.inject.AbstractModule;
 import com.google.inject.Injector;
@@ -84,7 +84,7 @@ public abstract class BaseRestApiTest {
       @Provides
       @Singleton
       TimeLimiter timeLimiter(@Named(PROPERTY_USER_THREADS) ListeningExecutorService userExecutor) {
-         return createSimpleTimeLimiter(userExecutor);
+         return SimpleTimeLimiter.create(userExecutor);
       }
    }
 
diff --git a/core/src/test/java/org/jclouds/rest/internal/InvokeHttpMethodTest.java b/core/src/test/java/org/jclouds/rest/internal/InvokeHttpMethodTest.java
index d2e30a4..e6b8b7d 100644
--- a/core/src/test/java/org/jclouds/rest/internal/InvokeHttpMethodTest.java
+++ b/core/src/test/java/org/jclouds/rest/internal/InvokeHttpMethodTest.java
@@ -98,7 +98,7 @@ public class InvokeHttpMethodTest {
    public void testMethodWithTimeoutRunsTimeLimiter() throws Exception {
       expect(config.getTimeoutNanos(get)).andReturn(Optional.of(250000000L));
       InvokeAndTransform invoke = invokeHttpMethod.new InvokeAndTransform("ns:get", getCommand);
-      expect(timeLimiter.callWithTimeout(invoke, 250000000, TimeUnit.NANOSECONDS, true)).andReturn(response);
+      expect(timeLimiter.callWithTimeout(invoke, 250000000, TimeUnit.NANOSECONDS)).andReturn(response);
       replay(http, timeLimiter, fallback, config);
       invokeHttpMethod.apply(get);
    }
@@ -125,7 +125,7 @@ public class InvokeHttpMethodTest {
       IllegalStateException exception = new IllegalStateException();
       expect(config.getTimeoutNanos(get)).andReturn(Optional.of(250000000L));
       InvokeAndTransform invoke = invokeHttpMethod.new InvokeAndTransform("ns:get", getCommand);
-      expect(timeLimiter.callWithTimeout(invoke, 250000000, TimeUnit.NANOSECONDS, true)).andThrow(exception);
+      expect(timeLimiter.callWithTimeout(invoke, 250000000, TimeUnit.NANOSECONDS)).andThrow(exception);
       expect(fallback.createOrPropagate(exception)).andReturn(fallbackResponse);
       replay(http, timeLimiter, fallback, config);
       assertEquals(invokeHttpMethod.apply(get), fallbackResponse);
diff --git a/drivers/jsch/src/main/java/org/jclouds/ssh/jsch/JschSshClient.java b/drivers/jsch/src/main/java/org/jclouds/ssh/jsch/JschSshClient.java
index 255bc79..7f319d0 100644
--- a/drivers/jsch/src/main/java/org/jclouds/ssh/jsch/JschSshClient.java
+++ b/drivers/jsch/src/main/java/org/jclouds/ssh/jsch/JschSshClient.java
@@ -126,7 +126,7 @@ public class JschSshClient implements SshClient {
    public JschSshClient(ProxyConfig proxyConfig, BackoffLimitedRetryHandler backoffLimitedRetryHandler, HostAndPort socket,
             LoginCredentials loginCredentials, int timeout, Optional<Connector> agentConnector) {
       this.user = checkNotNull(loginCredentials, "loginCredentials").getUser();
-      this.host = checkNotNull(socket, "socket").getHostText();
+      this.host = checkNotNull(socket, "socket").getHost();
       checkArgument(socket.getPort() > 0, "ssh port must be greater then zero" + socket.getPort());
       checkArgument(loginCredentials.getOptionalPassword().isPresent() || loginCredentials.hasUnencryptedPrivateKey() || agentConnector.isPresent(),
                "you must specify a password, a key or an SSH agent needs to be available");
diff --git a/drivers/jsch/src/main/java/org/jclouds/ssh/jsch/SessionConnection.java b/drivers/jsch/src/main/java/org/jclouds/ssh/jsch/SessionConnection.java
index bf45922..816f52e 100644
--- a/drivers/jsch/src/main/java/org/jclouds/ssh/jsch/SessionConnection.java
+++ b/drivers/jsch/src/main/java/org/jclouds/ssh/jsch/SessionConnection.java
@@ -89,12 +89,12 @@ public final class SessionConnection implements Connection<Session> {
          Optional<Credentials> creds = proxyConfig.getCredentials();
          switch (proxyConfig.getType()) {
          case HTTP:
-            ProxyHTTP httpProxy = new ProxyHTTP(proxyEndpoint.get().getHostText(), proxyEndpoint.get().getPort());
+            ProxyHTTP httpProxy = new ProxyHTTP(proxyEndpoint.get().getHost(), proxyEndpoint.get().getPort());
             if (creds.isPresent())
                httpProxy.setUserPasswd(creds.get().identity, creds.get().credential);
             return proxy(httpProxy);
          case SOCKS:
-            ProxySOCKS5 socksProxy = new ProxySOCKS5(proxyEndpoint.get().getHostText(), proxyEndpoint.get().getPort());
+            ProxySOCKS5 socksProxy = new ProxySOCKS5(proxyEndpoint.get().getHost(), proxyEndpoint.get().getPort());
             if (creds.isPresent())
                socksProxy.setUserPasswd(creds.get().identity, creds.get().credential);
             return proxy(socksProxy);
@@ -167,7 +167,7 @@ public final class SessionConnection implements Connection<Session> {
    public Session create() throws Exception {
       JSch jsch = new JSch();
       session = jsch
-            .getSession(loginCredentials.getUser(), hostAndPort.getHostText(), hostAndPort.getPortOrDefault(22));
+            .getSession(loginCredentials.getUser(), hostAndPort.getHost(), hostAndPort.getPortOrDefault(22));
       if (sessionTimeout != 0)
          session.setTimeout(sessionTimeout);
       if (loginCredentials.hasUnencryptedPrivateKey()) {
diff --git a/drivers/sshj/src/main/java/org/jclouds/sshj/SSHClientConnection.java b/drivers/sshj/src/main/java/org/jclouds/sshj/SSHClientConnection.java
index 01a5f42..35bddb2 100644
--- a/drivers/sshj/src/main/java/org/jclouds/sshj/SSHClientConnection.java
+++ b/drivers/sshj/src/main/java/org/jclouds/sshj/SSHClientConnection.java
@@ -157,7 +157,7 @@ public class SSHClientConnection implements Connection<SSHClient> {
       if (sessionTimeout != 0) {
          ssh.setTimeout(sessionTimeout);
       }
-      ssh.connect(hostAndPort.getHostText(), hostAndPort.getPortOrDefault(22));
+      ssh.connect(hostAndPort.getHost(), hostAndPort.getPortOrDefault(22));
       if (loginCredentials.hasUnencryptedPrivateKey()) {
          OpenSSHKeyFile key = new OpenSSHKeyFile();
          key.init(loginCredentials.getOptionalPrivateKey().get(), null);
diff --git a/drivers/sshj/src/main/java/org/jclouds/sshj/SshjSshClient.java b/drivers/sshj/src/main/java/org/jclouds/sshj/SshjSshClient.java
index bdb60d0..2c55635 100644
--- a/drivers/sshj/src/main/java/org/jclouds/sshj/SshjSshClient.java
+++ b/drivers/sshj/src/main/java/org/jclouds/sshj/SshjSshClient.java
@@ -144,7 +144,7 @@ public class SshjSshClient implements SshClient {
    public SshjSshClient(BackoffLimitedRetryHandler backoffLimitedRetryHandler, HostAndPort socket,
             LoginCredentials loginCredentials, int timeout, Optional<Connector> agentConnector) {
       this.user = checkNotNull(loginCredentials, "loginCredentials").getUser();
-      this.host = checkNotNull(socket, "socket").getHostText();
+      this.host = checkNotNull(socket, "socket").getHost();
       checkArgument(socket.getPort() > 0, "ssh port must be greater then zero" + socket.getPort());
       checkArgument(loginCredentials.getOptionalPassword().isPresent() || loginCredentials.hasUnencryptedPrivateKey() || agentConnector.isPresent(),
               "you must specify a password, a key or an SSH agent needs to be available");
diff --git a/project/pom.xml b/project/pom.xml
index f06cdfc..2bc7139 100644
--- a/project/pom.xml
+++ b/project/pom.xml
@@ -217,13 +217,13 @@
   </developers>
 
   <properties>
-    <maven.compile.source>1.7</maven.compile.source>
-    <maven.compile.target>1.7</maven.compile.target>
-    <jdk.version>1.7</jdk.version>
+    <maven.compile.source>1.8</maven.compile.source>
+    <maven.compile.target>1.8</maven.compile.target>
+    <jdk.version>1.8</jdk.version>
     <maven.compile.deprecation>true</maven.compile.deprecation>
     <maven.site.url.base>gitsite:git@github.com/jclouds/jclouds-maven-site.git</maven.site.url.base>
-    <guava.version>18.0</guava.version>
-    <guava.osgi.import>com.google.common.*;version="[18.0,24.0.0)"</guava.osgi.import>
+    <guava.version>22.0</guava.version>
+    <guava.osgi.import>com.google.common.*;version="[22.0,30.0.0)"</guava.osgi.import>
     <guice.version>3.0</guice.version>
     <okhttp.version>2.2.0</okhttp.version>
     <okio.osgi.import>okio;version="[1.2.0,1.3)"</okio.osgi.import>
@@ -585,7 +585,7 @@
             <configuration>
               <rules>
                 <requireJavaVersion>
-                  <version>[1.7,)</version>
+                  <version>[1.8,)</version>
                 </requireJavaVersion>
                 <requireMavenVersion>
                   <version>[3.0.2,)</version>
diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/config/AzureNameValidator.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/config/AzureNameValidator.java
index 1f3bc3e..62df768 100644
--- a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/config/AzureNameValidator.java
+++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/config/AzureNameValidator.java
@@ -40,7 +40,7 @@ public class AzureNameValidator extends Validator<String> {
 
       if (name == null || name.length() < minLength || name.length() > maxLength)
          throw exception(name, "Can't be null or empty. Length must be " + minLength + " to " + maxLength + " symbols");
-      if (!CharMatcher.JAVA_LETTER_OR_DIGIT.matches(name.charAt(0)))
+      if (!Character.isLetterOrDigit(name.charAt(0)))
          throw exception(name, "Should start with letter/number");
 
       CharMatcher range = getAcceptableRange();