// Path: aliyun-oss/src/main/java/org/jclouds/aliyun/oss/blobstore/OSSBlobStoreContext.java
// @ImplementedBy(OSSBlobStoreContextImpl.class)
// public interface OSSBlobStoreContext extends BlobStoreContext {
// 
//    @Override
//    OSSBlobStore getBlobStore();
// }
// 
// Path: aliyun-oss/src/main/java/org/jclouds/aliyun/oss/blobstore/config/OSSBlobStoreContextModule.java
// public class OSSBlobStoreContextModule extends AbstractModule {
// 
//    @Override
//    protected void configure() {
//       bind(OSSApi.class).to(OSSApiImpl.class);
//       bind(BlobStore.class).to(OSSBlobStore.class);
//       bind(BlobRequestSigner.class).to(OSSBlobRequestSigner.class);
//       bind(ConsistencyModel.class).toInstance(ConsistencyModel.EVENTUAL);
//       bind(BlobBuilder.class).to(OSSBlobBuilder.class);
//       bind(BlobUtils.class).to(OSSBlobUtils.class);
//       bind(LocationsSupplier.class).to(OSSLocationsSupplier.class);
//       bind(RegionIdsSupplier.class).to(OSSRegionIdsSupplier.class);
//    }
// 
//    @Provides
//    @Singleton
//    protected final Supplier<Map<BlobAccess, CannedAccessControlList>> accessFromBlobToOSS() {
//       Map<BlobAccess, CannedAccessControlList> regions = ImmutableMap
//             .<BlobAccess, CannedAccessControlList>builder()
//             .put(BlobAccess.PRIVATE, CannedAccessControlList.Private)
//             .put(BlobAccess.PUBLIC_READ, CannedAccessControlList.PublicRead)
//             .build();
//       return Suppliers.ofInstance(regions);
//    }
// 
//    @Provides
//    @Singleton
//    protected final Supplier<Map<ContainerAccess, CannedAccessControlList>> accessFromContainerToOSS() {
//       Map<ContainerAccess, CannedAccessControlList> regions = ImmutableMap
//             .<ContainerAccess, CannedAccessControlList>builder()
//             .put(ContainerAccess.PRIVATE, CannedAccessControlList.Private)
//             .put(ContainerAccess.PUBLIC_READ, CannedAccessControlList.PublicRead)
//             .build();
//       return Suppliers.ofInstance(regions);
//    }
// }


import java.net.URI;
import java.util.Properties;
import org.jclouds.aliyun.oss.blobstore.OSSBlobStoreContext;
import org.jclouds.aliyun.oss.blobstore.config.OSSBlobStoreContextModule;
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.oss;




public class OSSApiMetadata extends BaseApiMetadata {

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

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

   protected OSSApiMetadata(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-oss-api")
         .name("aliyun oss api")
         .identityName("identity")
         .documentation(URI.create("https://help.aliyun.com/document_detail/oss/api-reference/abstract.html"))
         .defaultEndpoint("http://oss.aliyuncs.com")
         .defaultProperties(OSSApiMetadata.defaultProperties())
// Path: aliyun-oss/src/main/java/org/jclouds/aliyun/oss/blobstore/OSSBlobStoreContext.java
// @ImplementedBy(OSSBlobStoreContextImpl.class)
// public interface OSSBlobStoreContext extends BlobStoreContext {
// 
//    @Override
//    OSSBlobStore getBlobStore();
// }
// 
// Path: aliyun-oss/src/main/java/org/jclouds/aliyun/oss/blobstore/config/OSSBlobStoreContextModule.java
// public class OSSBlobStoreContextModule extends AbstractModule {
// 
//    @Override
//    protected void configure() {
//       bind(OSSApi.class).to(OSSApiImpl.class);
//       bind(BlobStore.class).to(OSSBlobStore.class);
//       bind(BlobRequestSigner.class).to(OSSBlobRequestSigner.class);
//       bind(ConsistencyModel.class).toInstance(ConsistencyModel.EVENTUAL);
//       bind(BlobBuilder.class).to(OSSBlobBuilder.class);
//       bind(BlobUtils.class).to(OSSBlobUtils.class);
//       bind(LocationsSupplier.class).to(OSSLocationsSupplier.class);
//       bind(RegionIdsSupplier.class).to(OSSRegionIdsSupplier.class);
//    }
// 
//    @Provides
//    @Singleton
//    protected final Supplier<Map<BlobAccess, CannedAccessControlList>> accessFromBlobToOSS() {
//       Map<BlobAccess, CannedAccessControlList> regions = ImmutableMap
//             .<BlobAccess, CannedAccessControlList>builder()
//             .put(BlobAccess.PRIVATE, CannedAccessControlList.Private)
//             .put(BlobAccess.PUBLIC_READ, CannedAccessControlList.PublicRead)
//             .build();
//       return Suppliers.ofInstance(regions);
//    }
// 
//    @Provides
//    @Singleton
//    protected final Supplier<Map<ContainerAccess, CannedAccessControlList>> accessFromContainerToOSS() {
//       Map<ContainerAccess, CannedAccessControlList> regions = ImmutableMap
//             .<ContainerAccess, CannedAccessControlList>builder()
//             .put(ContainerAccess.PRIVATE, CannedAccessControlList.Private)
//             .put(ContainerAccess.PUBLIC_READ, CannedAccessControlList.PublicRead)
//             .build();
//       return Suppliers.ofInstance(regions);
//    }
// }


// Path: aliyun-oss/src/main/java/org/jclouds/aliyun/oss/OSSApiMetadata.java
import java.net.URI;
import java.util.Properties;
import org.jclouds.aliyun.oss.blobstore.OSSBlobStoreContext;
import org.jclouds.aliyun.oss.blobstore.config.OSSBlobStoreContextModule;
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.oss;




public class OSSApiMetadata extends BaseApiMetadata {

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

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

   protected OSSApiMetadata(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-oss-api")
         .name("aliyun oss api")
         .identityName("identity")
         .documentation(URI.create("https://help.aliyun.com/document_detail/oss/api-reference/abstract.html"))
         .defaultEndpoint("http://oss.aliyuncs.com")
         .defaultProperties(OSSApiMetadata.defaultProperties())
         .view(OSSBlobStoreContext.class)