// Path: aliyun-slb/src/main/java/org/jclouds/aliyun/slb/loadbalancer/SLBLoadBalancerServiceContext.java
// @ImplementedBy(SLBLoadBalancerServiceContextImpl.class)
// public interface SLBLoadBalancerServiceContext extends LoadBalancerServiceContext {
// 
//    @Override
//    SLBLoadBalancerService getLoadBalancerService();
// }
// 
// Path: aliyun-slb/src/main/java/org/jclouds/aliyun/slb/loadbalancer/config/SLBLoadBalancerServiceContextModule.java
// public class SLBLoadBalancerServiceContextModule extends BaseLoadBalancerServiceContextModule {
// 
//    @Override
//    protected void configure() {
//       super.configure();
//       bind(new TypeLiteral<LoadBalancerServiceAdapter<LoadBalancerMetadata, Location>>(){}).to(SLBLoadBalancerServiceAdapter.class);
//       bind(SLBApi.class).to(SLBApiImpl.class);
//       bind(LoadBalancerService.class).to(SLBLoadBalancerService.class);
//       install(new SLBBindLoadBalancerStrategiesByClass());
//    }
// 
//    @Provides
//    @Singleton
//    protected final Map<String, LoadBalancerType> loadBalancerTypeProvides() {
//       return ImmutableMap.<String, LoadBalancerType> builder()
//             .put("internet", LoadBalancerType.GSLB)
//             .put("intranet", LoadBalancerType.LB)
//             .build();
//    }
// }


import java.net.URI;
import java.util.Properties;
import org.jclouds.aliyun.slb.loadbalancer.SLBLoadBalancerServiceContext;
import org.jclouds.aliyun.slb.loadbalancer.config.SLBLoadBalancerServiceContextModule;
import org.jclouds.apis.ApiMetadata;
import org.jclouds.apis.internal.BaseApiMetadata;
import org.jclouds.logging.log4j.config.Log4JLoggingModule;
import org.jclouds.rest.internal.BaseHttpApiMetadata;
import com.google.common.collect.ImmutableSet;
import com.google.inject.Module;
package org.jclouds.aliyun.slb;




public class SLBApiMetadata extends BaseApiMetadata {

   @Override
   public Builder toBuilder() {
      return new Builder().fromApiMetadata(this);
   }

   public SLBApiMetadata() {
      this(new Builder());
   }

   protected SLBApiMetadata(Builder builder) {
      super(builder);
   }

   public static Properties defaultProperties() {
      Properties properties = BaseHttpApiMetadata.defaultProperties();
      return properties;
   }

   public static class Builder extends BaseApiMetadata.Builder<Builder> {

      protected Builder() {
         id("aliyun-slb-api")
         .name("aliyun slb api")
         .identityName("identity")
         .documentation(URI.create("https://help.aliyun.com/document_detail/slb/api-reference/brief-introduction.html"))
         .defaultEndpoint("http://slb.aliyuncs.com")
         .defaultProperties(SLBApiMetadata.defaultProperties())
         .view(SLBLoadBalancerServiceContext.class)
         .defaultModules(ImmutableSet.<Class<? extends Module>>builder()
// Path: aliyun-slb/src/main/java/org/jclouds/aliyun/slb/loadbalancer/SLBLoadBalancerServiceContext.java
// @ImplementedBy(SLBLoadBalancerServiceContextImpl.class)
// public interface SLBLoadBalancerServiceContext extends LoadBalancerServiceContext {
// 
//    @Override
//    SLBLoadBalancerService getLoadBalancerService();
// }
// 
// Path: aliyun-slb/src/main/java/org/jclouds/aliyun/slb/loadbalancer/config/SLBLoadBalancerServiceContextModule.java
// public class SLBLoadBalancerServiceContextModule extends BaseLoadBalancerServiceContextModule {
// 
//    @Override
//    protected void configure() {
//       super.configure();
//       bind(new TypeLiteral<LoadBalancerServiceAdapter<LoadBalancerMetadata, Location>>(){}).to(SLBLoadBalancerServiceAdapter.class);
//       bind(SLBApi.class).to(SLBApiImpl.class);
//       bind(LoadBalancerService.class).to(SLBLoadBalancerService.class);
//       install(new SLBBindLoadBalancerStrategiesByClass());
//    }
// 
//    @Provides
//    @Singleton
//    protected final Map<String, LoadBalancerType> loadBalancerTypeProvides() {
//       return ImmutableMap.<String, LoadBalancerType> builder()
//             .put("internet", LoadBalancerType.GSLB)
//             .put("intranet", LoadBalancerType.LB)
//             .build();
//    }
// }


// Path: aliyun-slb/src/main/java/org/jclouds/aliyun/slb/SLBApiMetadata.java
import java.net.URI;
import java.util.Properties;
import org.jclouds.aliyun.slb.loadbalancer.SLBLoadBalancerServiceContext;
import org.jclouds.aliyun.slb.loadbalancer.config.SLBLoadBalancerServiceContextModule;
import org.jclouds.apis.ApiMetadata;
import org.jclouds.apis.internal.BaseApiMetadata;
import org.jclouds.logging.log4j.config.Log4JLoggingModule;
import org.jclouds.rest.internal.BaseHttpApiMetadata;
import com.google.common.collect.ImmutableSet;
import com.google.inject.Module;

package org.jclouds.aliyun.slb;




public class SLBApiMetadata extends BaseApiMetadata {

   @Override
   public Builder toBuilder() {
      return new Builder().fromApiMetadata(this);
   }

   public SLBApiMetadata() {
      this(new Builder());
   }

   protected SLBApiMetadata(Builder builder) {
      super(builder);
   }

   public static Properties defaultProperties() {
      Properties properties = BaseHttpApiMetadata.defaultProperties();
      return properties;
   }

   public static class Builder extends BaseApiMetadata.Builder<Builder> {

      protected Builder() {
         id("aliyun-slb-api")
         .name("aliyun slb api")
         .identityName("identity")
         .documentation(URI.create("https://help.aliyun.com/document_detail/slb/api-reference/brief-introduction.html"))
         .defaultEndpoint("http://slb.aliyuncs.com")
         .defaultProperties(SLBApiMetadata.defaultProperties())
         .view(SLBLoadBalancerServiceContext.class)
         .defaultModules(ImmutableSet.<Class<? extends Module>>builder()
               .add(SLBLoadBalancerServiceContextModule.class)