JCLOUDS-1443: fix(rest/processor): check if `/` is ending a default endpoint
diff --git a/core/src/main/java/org/jclouds/rest/internal/RestAnnotationProcessor.java b/core/src/main/java/org/jclouds/rest/internal/RestAnnotationProcessor.java
index 8fdbb43..352e032 100644
--- a/core/src/main/java/org/jclouds/rest/internal/RestAnnotationProcessor.java
+++ b/core/src/main/java/org/jclouds/rest/internal/RestAnnotationProcessor.java
@@ -573,7 +573,9 @@
          return null;
       if (original.getHost() != null)
          return original;
-      return withHost.resolve(original);
+      String host = withHost.toString();
+      URI baseURI = host.endsWith("/") ? withHost : URI.create(host + "/");
+      return baseURI.resolve(original);
    }
 
    private org.jclouds.rest.MapBinder getMapPayloadBinderOrNull(Invocation invocation) {
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 73355ad..e2d7eb2 100644
--- a/core/src/test/java/org/jclouds/rest/internal/RestAnnotationProcessorTest.java
+++ b/core/src/test/java/org/jclouds/rest/internal/RestAnnotationProcessorTest.java
@@ -2679,6 +2679,13 @@
       assertEquals(new URI("http://foo/bar"), result);
    }
 
+   @Test
+   public void testComplexHost() throws Exception {
+      URI result = RestAnnotationProcessor.addHostIfMissing(new URI("bar"), new URI("http://foo/foobar"));
+      assertEquals(new URI("http://foo/foobar/bar"), result);
+   }
+
+
    DateService dateService = new SimpleDateFormatDateService();
    RestAnnotationProcessor processor;
    TransformerForRequest transformer;