@@ -0,0 +1,2609 @@
+package org.dasein.cloud.openstack.nova.os.storage;%0A%0Aimport org.dasein.cloud.AbstractCapabilities;%0Aimport org.dasein.cloud.CloudException;%0Aimport org.dasein.cloud.InternalException;%0Aimport org.dasein.cloud.openstack.nova.os.NovaOpenStack;%0Aimport org.dasein.cloud.storage.BlobStoreCapabilities;%0Aimport org.dasein.cloud.util.NamingConstraints;%0Aimport org.dasein.util.uom.storage.*;%0Aimport org.dasein.util.uom.storage.Byte;%0A%0Aimport javax.annotation.Nonnull;%0Aimport java.util.Locale;%0A%0Apublic class SwiftBlobStoreCapabilities extends AbstractCapabilities%3CNovaOpenStack%3E implements BlobStoreCapabilities %7B%0A    static final  int                                       MAX_BUCKETS         = 100;%0A    static final  int                                       MAX_OBJECTS         = -1;%0A    static final Storage%3Corg.dasein.util.uom.storage.Byte%3E MAX_OBJECT_SIZE     = new Storage%3Corg.dasein.util.uom.storage.Byte%3E(5000000000L, Storage.BYTE);%0A%0A    public SwiftBlobStoreCapabilities(NovaOpenStack provider) %7B%0A        super(provider);%0A    %7D%0A%0A    @Override%0A    public boolean allowsNestedBuckets() throws CloudException, InternalException %7B%0A        return false;%0A    %7D%0A%0A    @Override%0A    public boolean allowsRootObjects() throws CloudException, InternalException %7B%0A        return false;%0A    %7D%0A%0A    @Override%0A    public boolean allowsPublicSharing() throws CloudException, InternalException %7B%0A        return true;%0A    %7D%0A%0A    @Override%0A    public int getMaxBuckets() throws CloudException, InternalException %7B%0A        return MAX_BUCKETS;%0A    %7D%0A%0A    @Nonnull%0A    @Override%0A    public Storage%3CByte%3E getMaxObjectSize() throws InternalException, CloudException %7B%0A        return MAX_OBJECT_SIZE;%0A    %7D%0A%0A    @Override%0A    public int getMaxObjectsPerBucket() throws CloudException, InternalException %7B%0A        return MAX_OBJECTS;%0A    %7D%0A%0A    @Nonnull%0A    @Override%0A    public NamingConstraints getBucketNamingConstraints() throws CloudException, InternalException %7B%0A        return NamingConstraints.getAlphaNumeric(1, 255).lowerCaseOnly().limitedToLatin1().constrainedBy(new char%5B%5D%7B'-', '.'%7D);%0A    %7D%0A%0A    @Nonnull%0A    @Override%0A    public NamingConstraints getObjectNamingConstraints() throws CloudException, InternalException %7B%0A        return NamingConstraints.getAlphaNumeric(1, 255).lowerCaseOnly().limitedToLatin1().constrainedBy(new char%5B%5D%7B'-', '.', ',', '#', '+'%7D);%0A    %7D%0A%0A    @Nonnull%0A    @Override%0A    public String getProviderTermForBucket(@Nonnull Locale locale) %7B%0A        return %22bucket%22;%0A    %7D%0A%0A    @Nonnull%0A    @Override%0A    public String getProviderTermForObject(@Nonnull Locale locale) %7B%0A        return %22object%22;%0A    %7D%0A%7D%0A

Add blob store capabilities