Use AutoService for creation of Service Loader Metadata
diff --git a/cdmi/pom.xml b/cdmi/pom.xml
index 89be9eb..e1dd321 100644
--- a/cdmi/pom.xml
+++ b/cdmi/pom.xml
@@ -82,6 +82,11 @@
       <artifactId>logback-classic</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>com.google.auto.service</groupId>
+      <artifactId>auto-service</artifactId>
+      <optional>true</optional>
+    </dependency>
   </dependencies>
   
   <profiles>
diff --git a/cdmi/src/main/java/org/jclouds/snia/cdmi/v1/CDMIApiMetadata.java b/cdmi/src/main/java/org/jclouds/snia/cdmi/v1/CDMIApiMetadata.java
index 3262843..82f6f98 100644
--- a/cdmi/src/main/java/org/jclouds/snia/cdmi/v1/CDMIApiMetadata.java
+++ b/cdmi/src/main/java/org/jclouds/snia/cdmi/v1/CDMIApiMetadata.java
@@ -19,12 +19,15 @@
 import java.net.URI;
 import java.util.Properties;
 
+import org.jclouds.apis.ApiMetadata;
 import org.jclouds.rest.internal.BaseHttpApiMetadata;
 import org.jclouds.snia.cdmi.v1.config.CDMIHttpApiModule;
 
+import com.google.auto.service.AutoService;
 import com.google.common.collect.ImmutableSet;
 import com.google.inject.Module;
 
+@AutoService(ApiMetadata.class)
 public class CDMIApiMetadata extends BaseHttpApiMetadata {
 
    @Override
diff --git a/cdmi/src/main/resources/META-INF/services/org.jclouds.apis.ApiMetadata b/cdmi/src/main/resources/META-INF/services/org.jclouds.apis.ApiMetadata
deleted file mode 100644
index 19b5767..0000000
--- a/cdmi/src/main/resources/META-INF/services/org.jclouds.apis.ApiMetadata
+++ /dev/null
@@ -1 +0,0 @@
-org.jclouds.snia.cdmi.v1.CDMIApiMetadata
diff --git a/cloudsigma2-hnl/pom.xml b/cloudsigma2-hnl/pom.xml
index 3b68dff..2677b25 100644
--- a/cloudsigma2-hnl/pom.xml
+++ b/cloudsigma2-hnl/pom.xml
@@ -89,6 +89,11 @@
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>com.google.auto.service</groupId>
+      <artifactId>auto-service</artifactId>
+      <optional>true</optional>
+    </dependency>
   </dependencies>
 
   <profiles>
diff --git a/cloudsigma2-hnl/src/main/java/org/jclouds/cloudsigma2/CloudSigma2HonoluluProviderMetadata.java b/cloudsigma2-hnl/src/main/java/org/jclouds/cloudsigma2/CloudSigma2HonoluluProviderMetadata.java
index ed5860c..4d6cb1c 100644
--- a/cloudsigma2-hnl/src/main/java/org/jclouds/cloudsigma2/CloudSigma2HonoluluProviderMetadata.java
+++ b/cloudsigma2-hnl/src/main/java/org/jclouds/cloudsigma2/CloudSigma2HonoluluProviderMetadata.java
@@ -22,9 +22,12 @@
 import org.jclouds.providers.ProviderMetadata;
 import org.jclouds.providers.internal.BaseProviderMetadata;
 
+import com.google.auto.service.AutoService;
+
 /**
- * Implementation of {@link org.jclouds.providers.internal.BaseProviderMetadata} for CloudSigma Honolulu.
+ * Implementation of {@link ProviderMetadata} for CloudSigma Honolulu.
  */
+@AutoService(ProviderMetadata.class)
 public class CloudSigma2HonoluluProviderMetadata extends BaseProviderMetadata {
 
    public static Builder builder() {
diff --git a/cloudsigma2-hnl/src/main/resources/META-INF/services/org.jclouds.providers.ProviderMetadata b/cloudsigma2-hnl/src/main/resources/META-INF/services/org.jclouds.providers.ProviderMetadata
deleted file mode 100644
index 01eff09..0000000
--- a/cloudsigma2-hnl/src/main/resources/META-INF/services/org.jclouds.providers.ProviderMetadata
+++ /dev/null
@@ -1 +0,0 @@
-org.jclouds.cloudsigma2.CloudSigma2HonoluluProviderMetadata
diff --git a/cloudsigma2-lvs/pom.xml b/cloudsigma2-lvs/pom.xml
index 25b7e2d..2c978b6 100644
--- a/cloudsigma2-lvs/pom.xml
+++ b/cloudsigma2-lvs/pom.xml
@@ -89,6 +89,11 @@
       <version>1.8.2-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>com.google.auto.service</groupId>
+      <artifactId>auto-service</artifactId>
+      <optional>true</optional>
+    </dependency>
   </dependencies>
 
   <profiles>
diff --git a/cloudsigma2-lvs/src/main/java/org/jclouds/cloudsigma2/CloudSigma2LasVegasProviderMetadata.java b/cloudsigma2-lvs/src/main/java/org/jclouds/cloudsigma2/CloudSigma2LasVegasProviderMetadata.java
index 8a7e7af..2e7badd 100644
--- a/cloudsigma2-lvs/src/main/java/org/jclouds/cloudsigma2/CloudSigma2LasVegasProviderMetadata.java
+++ b/cloudsigma2-lvs/src/main/java/org/jclouds/cloudsigma2/CloudSigma2LasVegasProviderMetadata.java
@@ -22,9 +22,12 @@
 import org.jclouds.providers.ProviderMetadata;
 import org.jclouds.providers.internal.BaseProviderMetadata;
 
+import com.google.auto.service.AutoService;
+
 /**
- * Implementation of {@link org.jclouds.providers.internal.BaseProviderMetadata} for CloudSigma Las Vegas.
+ * Implementation of {@link ProviderMetadata} for CloudSigma Las Vegas.
  */
+@AutoService(ProviderMetadata.class)
 public class CloudSigma2LasVegasProviderMetadata extends BaseProviderMetadata {
 
    public static Builder builder() {
diff --git a/cloudsigma2-lvs/src/main/resources/META-INF/services/org.jclouds.providers.ProviderMetadata b/cloudsigma2-lvs/src/main/resources/META-INF/services/org.jclouds.providers.ProviderMetadata
deleted file mode 100644
index 3b66f7d..0000000
--- a/cloudsigma2-lvs/src/main/resources/META-INF/services/org.jclouds.providers.ProviderMetadata
+++ /dev/null
@@ -1 +0,0 @@
-org.jclouds.cloudsigma2.CloudSigma2LasVegasProviderMetadata
diff --git a/cloudsigma2-sjc/pom.xml b/cloudsigma2-sjc/pom.xml
index a2b0f9e..79af823 100644
--- a/cloudsigma2-sjc/pom.xml
+++ b/cloudsigma2-sjc/pom.xml
@@ -89,6 +89,11 @@
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>com.google.auto.service</groupId>
+      <artifactId>auto-service</artifactId>
+      <optional>true</optional>
+    </dependency>
   </dependencies>
 
   <profiles>
diff --git a/cloudsigma2-sjc/src/main/java/org/jclouds/cloudsigma2/CloudSigma2SanJoseProviderMetadata.java b/cloudsigma2-sjc/src/main/java/org/jclouds/cloudsigma2/CloudSigma2SanJoseProviderMetadata.java
index b47b399..20ed5ac 100644
--- a/cloudsigma2-sjc/src/main/java/org/jclouds/cloudsigma2/CloudSigma2SanJoseProviderMetadata.java
+++ b/cloudsigma2-sjc/src/main/java/org/jclouds/cloudsigma2/CloudSigma2SanJoseProviderMetadata.java
@@ -22,9 +22,12 @@
 import org.jclouds.providers.ProviderMetadata;
 import org.jclouds.providers.internal.BaseProviderMetadata;
 
+import com.google.auto.service.AutoService;
+
 /**
- * Implementation of {@link org.jclouds.providers.internal.BaseProviderMetadata} for CloudSigma San Jose.
+ * Implementation of {@link ProviderMetadata} for CloudSigma San Jose.
  */
+@AutoService(ProviderMetadata.class)
 public class CloudSigma2SanJoseProviderMetadata extends BaseProviderMetadata {
 
    public static Builder builder() {
diff --git a/cloudsigma2-sjc/src/main/resources/META-INF/services/org.jclouds.providers.ProviderMetadata b/cloudsigma2-sjc/src/main/resources/META-INF/services/org.jclouds.providers.ProviderMetadata
deleted file mode 100644
index d8aa542..0000000
--- a/cloudsigma2-sjc/src/main/resources/META-INF/services/org.jclouds.providers.ProviderMetadata
+++ /dev/null
@@ -1 +0,0 @@
-org.jclouds.cloudsigma2.CloudSigma2SanJoseProviderMetadata
diff --git a/cloudsigma2-wdc/pom.xml b/cloudsigma2-wdc/pom.xml
index 62bfd41..be84c65 100644
--- a/cloudsigma2-wdc/pom.xml
+++ b/cloudsigma2-wdc/pom.xml
@@ -89,6 +89,11 @@
       <version>1.8.2-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>com.google.auto.service</groupId>
+      <artifactId>auto-service</artifactId>
+      <optional>true</optional>
+    </dependency>
   </dependencies>
 
   <profiles>
diff --git a/cloudsigma2-wdc/src/main/java/org/jclouds/cloudsigma2/CloudSigma2WashingtonProviderMetadata.java b/cloudsigma2-wdc/src/main/java/org/jclouds/cloudsigma2/CloudSigma2WashingtonProviderMetadata.java
index de20a7b..a816b51 100644
--- a/cloudsigma2-wdc/src/main/java/org/jclouds/cloudsigma2/CloudSigma2WashingtonProviderMetadata.java
+++ b/cloudsigma2-wdc/src/main/java/org/jclouds/cloudsigma2/CloudSigma2WashingtonProviderMetadata.java
@@ -16,15 +16,18 @@
  */
 package org.jclouds.cloudsigma2;
 
-import org.jclouds.providers.ProviderMetadata;
-import org.jclouds.providers.internal.BaseProviderMetadata;
-
 import java.net.URI;
 import java.util.Properties;
 
+import org.jclouds.providers.ProviderMetadata;
+import org.jclouds.providers.internal.BaseProviderMetadata;
+
+import com.google.auto.service.AutoService;
+
 /**
- * Implementation of {@link org.jclouds.providers.internal.BaseProviderMetadata} for CloudSigma Washington DC.
+ * Implementation of {@link ProviderMetadata} for CloudSigma Washington DC.
  */
+@AutoService(ProviderMetadata.class)
 public class CloudSigma2WashingtonProviderMetadata extends BaseProviderMetadata {
 
    public static Builder builder() {
diff --git a/cloudsigma2-wdc/src/main/resources/META-INF/services/org.jclouds.providers.ProviderMetadata b/cloudsigma2-wdc/src/main/resources/META-INF/services/org.jclouds.providers.ProviderMetadata
deleted file mode 100644
index 383b696..0000000
--- a/cloudsigma2-wdc/src/main/resources/META-INF/services/org.jclouds.providers.ProviderMetadata
+++ /dev/null
@@ -1 +0,0 @@
-org.jclouds.cloudsigma2.CloudSigma2WashingtonProviderMetadata
diff --git a/cloudsigma2-zrh/pom.xml b/cloudsigma2-zrh/pom.xml
index f32a108..cee3881 100644
--- a/cloudsigma2-zrh/pom.xml
+++ b/cloudsigma2-zrh/pom.xml
@@ -89,6 +89,11 @@
       <version>1.8.2-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>com.google.auto.service</groupId>
+      <artifactId>auto-service</artifactId>
+      <optional>true</optional>
+    </dependency>
   </dependencies>
 
   <profiles>
diff --git a/cloudsigma2-zrh/src/main/java/org/jclouds/cloudsigma2/CloudSigma2ZurichProviderMetadata.java b/cloudsigma2-zrh/src/main/java/org/jclouds/cloudsigma2/CloudSigma2ZurichProviderMetadata.java
index e54e8cb..71ec6b7 100644
--- a/cloudsigma2-zrh/src/main/java/org/jclouds/cloudsigma2/CloudSigma2ZurichProviderMetadata.java
+++ b/cloudsigma2-zrh/src/main/java/org/jclouds/cloudsigma2/CloudSigma2ZurichProviderMetadata.java
@@ -16,15 +16,18 @@
  */
 package org.jclouds.cloudsigma2;
 
-import org.jclouds.providers.ProviderMetadata;
-import org.jclouds.providers.internal.BaseProviderMetadata;
-
 import java.net.URI;
 import java.util.Properties;
 
+import org.jclouds.providers.ProviderMetadata;
+import org.jclouds.providers.internal.BaseProviderMetadata;
+
+import com.google.auto.service.AutoService;
+
 /**
- * Implementation of {@link org.jclouds.providers.internal.BaseProviderMetadata} for CloudSigma Zurich.
+ * Implementation of {@link ProviderMetadata} for CloudSigma Zurich.
  */
+@AutoService(ProviderMetadata.class)
 public class CloudSigma2ZurichProviderMetadata extends BaseProviderMetadata {
 
    public static Builder builder() {
diff --git a/cloudsigma2-zrh/src/main/resources/META-INF/services/org.jclouds.providers.ProviderMetadata b/cloudsigma2-zrh/src/main/resources/META-INF/services/org.jclouds.providers.ProviderMetadata
deleted file mode 100644
index d7f9791..0000000
--- a/cloudsigma2-zrh/src/main/resources/META-INF/services/org.jclouds.providers.ProviderMetadata
+++ /dev/null
@@ -1 +0,0 @@
-org.jclouds.cloudsigma2.CloudSigma2ZurichProviderMetadata
diff --git a/cloudsigma2/pom.xml b/cloudsigma2/pom.xml
index b18b8f2..523c761 100644
--- a/cloudsigma2/pom.xml
+++ b/cloudsigma2/pom.xml
@@ -80,6 +80,11 @@
             <version>1.8.2-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+          <groupId>com.google.auto.service</groupId>
+          <artifactId>auto-service</artifactId>
+          <optional>true</optional>
+        </dependency>
     </dependencies>
 
     <profiles>
diff --git a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/CloudSigma2ApiMetadata.java b/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/CloudSigma2ApiMetadata.java
index b1dec88..1525fcd 100644
--- a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/CloudSigma2ApiMetadata.java
+++ b/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/CloudSigma2ApiMetadata.java
@@ -31,12 +31,14 @@
 import org.jclouds.compute.ComputeServiceContext;
 import org.jclouds.rest.internal.BaseHttpApiMetadata;
 
+import com.google.auto.service.AutoService;
 import com.google.common.collect.ImmutableSet;
 import com.google.inject.Module;
 
 /**
- * Implementation of {@link BaseHttpApiMetadata} for the Cloud Sigma API
+ * Implementation of {@link ApiMetadata} for the Cloud Sigma API
  */
+@AutoService(ApiMetadata.class)
 public class CloudSigma2ApiMetadata extends BaseHttpApiMetadata<CloudSigma2Api> {
 
    @Override
diff --git a/cloudsigma2/src/main/resources/META-INF/services/org.jclouds.apis.ApiMetadata b/cloudsigma2/src/main/resources/META-INF/services/org.jclouds.apis.ApiMetadata
deleted file mode 100644
index b6f3d71..0000000
--- a/cloudsigma2/src/main/resources/META-INF/services/org.jclouds.apis.ApiMetadata
+++ /dev/null
@@ -1 +0,0 @@
-org.jclouds.cloudsigma2.CloudSigma2ApiMetadata
\ No newline at end of file
diff --git a/digitalocean/pom.xml b/digitalocean/pom.xml
index 0b60e8f..dee163f 100644
--- a/digitalocean/pom.xml
+++ b/digitalocean/pom.xml
@@ -86,6 +86,11 @@
         </exclusion>
       </exclusions>
     </dependency>
+    <dependency>
+      <groupId>com.google.auto.service</groupId>
+      <artifactId>auto-service</artifactId>
+      <optional>true</optional>
+    </dependency>
   </dependencies>
 
   <profiles>
diff --git a/digitalocean/src/main/java/org/jclouds/digitalocean/DigitalOceanProviderMetadata.java b/digitalocean/src/main/java/org/jclouds/digitalocean/DigitalOceanProviderMetadata.java
index 78e1119..3dbd814 100644
--- a/digitalocean/src/main/java/org/jclouds/digitalocean/DigitalOceanProviderMetadata.java
+++ b/digitalocean/src/main/java/org/jclouds/digitalocean/DigitalOceanProviderMetadata.java
@@ -22,9 +22,12 @@
 import org.jclouds.providers.ProviderMetadata;
 import org.jclouds.providers.internal.BaseProviderMetadata;
 
+import com.google.auto.service.AutoService;
+
 /**
  * Implementation of {@link ProviderMetadata} for DigitalOcean.
  */
+@AutoService(ProviderMetadata.class)
 public class DigitalOceanProviderMetadata extends BaseProviderMetadata {
 
    public static Builder builder() {
diff --git a/digitalocean/src/main/resources/META-INF/services/org.jclouds.providers.ProviderMetadata b/digitalocean/src/main/resources/META-INF/services/org.jclouds.providers.ProviderMetadata
deleted file mode 100644
index 0c26db4..0000000
--- a/digitalocean/src/main/resources/META-INF/services/org.jclouds.providers.ProviderMetadata
+++ /dev/null
@@ -1 +0,0 @@
-org.jclouds.digitalocean.DigitalOceanProviderMetadata
\ No newline at end of file
diff --git a/joyent-cloudapi/pom.xml b/joyent-cloudapi/pom.xml
index c292405..ba1011b 100644
--- a/joyent-cloudapi/pom.xml
+++ b/joyent-cloudapi/pom.xml
@@ -84,6 +84,11 @@
       <artifactId>logback-classic</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>com.google.auto.service</groupId>
+      <artifactId>auto-service</artifactId>
+      <optional>true</optional>
+    </dependency>
   </dependencies>
   
   <profiles>
diff --git a/joyent-cloudapi/src/main/java/org/jclouds/joyent/cloudapi/v6_5/JoyentCloudApiMetadata.java b/joyent-cloudapi/src/main/java/org/jclouds/joyent/cloudapi/v6_5/JoyentCloudApiMetadata.java
index 1b75d7a..35c7609 100644
--- a/joyent-cloudapi/src/main/java/org/jclouds/joyent/cloudapi/v6_5/JoyentCloudApiMetadata.java
+++ b/joyent-cloudapi/src/main/java/org/jclouds/joyent/cloudapi/v6_5/JoyentCloudApiMetadata.java
@@ -21,6 +21,7 @@
 import java.net.URI;
 import java.util.Properties;
 
+import org.jclouds.apis.ApiMetadata;
 import org.jclouds.compute.ComputeServiceContext;
 import org.jclouds.joyent.cloudapi.v6_5.compute.config.JoyentCloudComputeServiceContextModule;
 import org.jclouds.joyent.cloudapi.v6_5.config.DatacentersAreZonesModule;
@@ -28,9 +29,11 @@
 import org.jclouds.joyent.cloudapi.v6_5.config.JoyentCloudProperties;
 import org.jclouds.rest.internal.BaseHttpApiMetadata;
 
+import com.google.auto.service.AutoService;
 import com.google.common.collect.ImmutableSet;
 import com.google.inject.Module;
 
+@AutoService(ApiMetadata.class)
 public class JoyentCloudApiMetadata extends BaseHttpApiMetadata {
 
    @Override
@@ -49,7 +52,7 @@
    public static Properties defaultProperties() {
       Properties properties = BaseHttpApiMetadata.defaultProperties();
       // auth fail sometimes happens, as the rc.local script that injects the
-      // authorized key executes after ssh has started.  
+      // authorized key executes after ssh has started.
       properties.setProperty("jclouds.ssh.max-retries", "7");
       properties.setProperty("jclouds.ssh.retry-auth", "true");
       properties.setProperty(JoyentCloudProperties.AUTOGENERATE_KEYS, "true");
diff --git a/joyent-cloudapi/src/main/resources/META-INF/services/org.jclouds.apis.ApiMetadata b/joyent-cloudapi/src/main/resources/META-INF/services/org.jclouds.apis.ApiMetadata
deleted file mode 100644
index 8deea9e..0000000
--- a/joyent-cloudapi/src/main/resources/META-INF/services/org.jclouds.apis.ApiMetadata
+++ /dev/null
@@ -1 +0,0 @@
-org.jclouds.joyent.cloudapi.v6_5.JoyentCloudApiMetadata
diff --git a/joyentcloud/pom.xml b/joyentcloud/pom.xml
index b2e3a4d..40532ba 100644
--- a/joyentcloud/pom.xml
+++ b/joyentcloud/pom.xml
@@ -91,6 +91,11 @@
       <artifactId>logback-classic</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>com.google.auto.service</groupId>
+      <artifactId>auto-service</artifactId>
+      <optional>true</optional>
+    </dependency>
   </dependencies>
   
   <profiles>
diff --git a/joyentcloud/src/main/java/org/jclouds/joyent/joyentcloud/JoyentCloudProviderMetadata.java b/joyentcloud/src/main/java/org/jclouds/joyent/joyentcloud/JoyentCloudProviderMetadata.java
index e5e68a7..d86f223 100644
--- a/joyentcloud/src/main/java/org/jclouds/joyent/joyentcloud/JoyentCloudProviderMetadata.java
+++ b/joyentcloud/src/main/java/org/jclouds/joyent/joyentcloud/JoyentCloudProviderMetadata.java
@@ -27,9 +27,12 @@
 import org.jclouds.providers.ProviderMetadata;
 import org.jclouds.providers.internal.BaseProviderMetadata;
 
+import com.google.auto.service.AutoService;
+
 /**
- * Implementation of {@link org.jclouds.types.ProviderMetadata} for SDC.
+ * Implementation of {@link ProviderMetadata} for SDC.
  */
+@AutoService(ProviderMetadata.class)
 public class JoyentCloudProviderMetadata extends BaseProviderMetadata {
 
    public static Builder builder() {
diff --git a/joyentcloud/src/main/resources/META-INF/services/org.jclouds.providers.ProviderMetadata b/joyentcloud/src/main/resources/META-INF/services/org.jclouds.providers.ProviderMetadata
deleted file mode 100644
index 73d417c..0000000
--- a/joyentcloud/src/main/resources/META-INF/services/org.jclouds.providers.ProviderMetadata
+++ /dev/null
@@ -1 +0,0 @@
-org.jclouds.joyent.joyentcloud.JoyentCloudProviderMetadata