mirror of https://github.com/apache/jclouds.git
Git merge upstream/master
This commit is contained in:
commit
fe9922acce
25
README.txt
25
README.txt
|
@ -29,24 +29,29 @@ data.
|
|||
our current version is 1.0-beta-8
|
||||
our dev version is 1.0-SNAPSHOT
|
||||
|
||||
our compute api supports: ec2, gogrid, cloudservers (rackspace), vcloud,
|
||||
trmk-ecloud, trmk-vcloudexpress, eucalyptus, cloudsigma,
|
||||
elasticstack, bluelock-vclouddirector, slicehost,
|
||||
elastichosts-lon-p (Peer 1), elastichosts-sat-p (Peer 1),
|
||||
elastichosts-lon-b (BlueSquare), stub (in-memory)
|
||||
our compute api supports: aws-ec2, gogrid, cloudservers (generic), cloudservers-us,
|
||||
cloudservers-uk, vcloud (generic), ec2 (generic),
|
||||
trmk-ecloud, trmk-vcloudexpress, eucalyptus (generic),
|
||||
cloudsigma-zrh, elasticstack(generic), bluelock-vclouddirector,
|
||||
slicehost, eucalyptus-partnercloud-ec2, elastichosts-lon-p (Peer 1),
|
||||
elastichosts-sat-p (Peer 1), elastichosts-lon-b (BlueSquare),
|
||||
openhosting-east1, serverlove-z1-man, skalicloud-sdg-my,
|
||||
vcloudexpress (generic), stub (in-memory)
|
||||
|
||||
* note * the pom dependency org.jclouds/jclouds-allcompute gives you access to
|
||||
to all of these providers
|
||||
|
||||
our blobstore api supports: s3, cloudfiles (rackspace), azurestorage, atmosonline,
|
||||
synaptic, peer1-storage, walrus, googlestorage,
|
||||
transient (in-memory), filesystem (on-disk)
|
||||
our blobstore api supports: aws-s3, cloudfiles (generic), cloudfiles-us, cloudfiles-uk,
|
||||
azureblob, atmos (generic), synaptic-storage,
|
||||
cloudonestorage, s3 (generic), walrus(generic), googlestorage,
|
||||
scaleup-storage, eucalyptus-partnercloud-s3, swift (generic),
|
||||
transient (in-mem), filesystem (on-disk)
|
||||
|
||||
* note * the pom dependency org.jclouds/jclouds-allblobstore gives you access to
|
||||
to all of these providers
|
||||
|
||||
we also have support for: ibmdev, mezeo, nirvanix, boxdotnet, rimuhosting, as well
|
||||
a number of features the sandbox
|
||||
we also have support for: ibmdev, mezeo, nirvanix, boxdotnet, rimuhosting, openstack nova,
|
||||
azurequeue, simpledb as well a number of features the sandbox
|
||||
|
||||
|
||||
If you want access to all jclouds components, include the maven dependency org.jclouds/jclouds-all
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>aws-simpledb</artifactId>
|
||||
<artifactId>aws-elb</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
|
|
@ -30,23 +30,73 @@
|
|||
<name>allblobstore</name>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>jclouds-aws</artifactId>
|
||||
<groupId>org.jclouds.api</groupId>
|
||||
<artifactId>s3</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>jclouds-azure</artifactId>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>aws-s3</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>jclouds-atmos</artifactId>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>googlestorage</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>jclouds-rackspace</artifactId>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>synaptic-storage</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>scaleup-storage</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>cloudonestorage</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.api</groupId>
|
||||
<artifactId>walrus</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>eucalyptus-partnercloud-s3</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>azureblob</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.api</groupId>
|
||||
<artifactId>atmos</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.api</groupId>
|
||||
<artifactId>swift</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.api</groupId>
|
||||
<artifactId>cloudfiles</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>cloudfiles-us</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>cloudfiles-uk</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
|
|
@ -30,28 +30,68 @@
|
|||
<name>allcompute</name>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>jclouds-aws</artifactId>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>eucalyptus-partnercloud-ec2</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>jclouds-rackspace</artifactId>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>aws-ec2</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>jclouds-vcloud</artifactId>
|
||||
<groupId>org.jclouds.api</groupId>
|
||||
<artifactId>ec2</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>jclouds-bluelock</artifactId>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>cloudservers-us</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>jclouds-terremark</artifactId>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>cloudservers-uk</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.api</groupId>
|
||||
<artifactId>cloudservers</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.api</groupId>
|
||||
<artifactId>vcloud</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.api</groupId>
|
||||
<artifactId>vcloudexpress</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>trmk-vcloudexpress</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>trmk-ecloud</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>trmk-vcloudexpress</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>trmk-ecloud</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>bluelock-vcdirector</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
@ -65,13 +105,43 @@
|
|||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>jclouds-elasticstack</artifactId>
|
||||
<groupId>org.jclouds.api</groupId>
|
||||
<artifactId>elasticstack</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>cloudsigma</artifactId>
|
||||
<artifactId>elastichosts-lon-p</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>elastichosts-sat-p</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>elastichosts-lon-b</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>openhosting-east1</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>serverlove-z1-man</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>skalicloud-sdg-my</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>cloudsigma-zrh</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
|
|
@ -24,8 +24,9 @@
|
|||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.jclouds</groupId>
|
||||
<artifactId>jclouds-tools-project</artifactId>
|
||||
<artifactId>jclouds-project</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<relativePath>../project/pom.xml</relativePath>
|
||||
</parent>
|
||||
<artifactId>jclouds-antcontrib</artifactId>
|
||||
<name>Ant-Contrib extensions</name>
|
||||
|
@ -55,7 +56,7 @@
|
|||
<version>1.7.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<groupId>org.jclouds.driver</groupId>
|
||||
<artifactId>jclouds-jsch</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
|
@ -21,41 +21,57 @@
|
|||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<parent>
|
||||
<artifactId>jclouds-extensions-project</artifactId>
|
||||
<groupId>org.jclouds</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>jclouds-ssh-project</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<name>jclouds ssh project</name>
|
||||
<modules>
|
||||
<module>jsch</module>
|
||||
</modules>
|
||||
<parent>
|
||||
<groupId>org.jclouds</groupId>
|
||||
<artifactId>jclouds-project</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<relativePath>../../project/pom.xml</relativePath>
|
||||
</parent>
|
||||
<groupId>org.jclouds.api</groupId>
|
||||
<artifactId>atmos</artifactId>
|
||||
<name>jclouds atmos components</name>
|
||||
<properties>
|
||||
<jclouds.test.ssh.host>localhost</jclouds.test.ssh.host>
|
||||
<jclouds.test.ssh.port>22</jclouds.test.ssh.port>
|
||||
<jclouds.test.ssh.username />
|
||||
<jclouds.test.ssh.password />
|
||||
<jclouds.test.ssh.keyfile />
|
||||
<test.initializer>org.jclouds.atmos.blobstore.integration.AtmosStorageTestInitializer</test.initializer>
|
||||
<test.atmos.endpoint>https://accesspoint.atmos.com</test.atmos.endpoint>
|
||||
<test.atmos.apiversion>1.3.0</test.atmos.apiversion>
|
||||
<test.atmos.identity>FIXME</test.atmos.identity>
|
||||
<test.atmos.credential>FIXME</test.atmos.credential>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>jclouds-compute</artifactId>
|
||||
<groupId>org.jclouds</groupId>
|
||||
<artifactId>jclouds-blobstore</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>jclouds-compute</artifactId>
|
||||
<groupId>org.jclouds</groupId>
|
||||
<artifactId>jclouds-blobstore</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>test-jar</type>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds</groupId>
|
||||
<artifactId>jclouds-core</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>test-jar</type>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>log4j</groupId>
|
||||
<artifactId>log4j</artifactId>
|
||||
<version>1.2.14</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.driver</groupId>
|
||||
<artifactId>jclouds-log4j</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<profiles>
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>live</id>
|
||||
<build>
|
||||
|
@ -71,41 +87,34 @@
|
|||
<goal>test</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<!-- note that the groups/excluded groups don't work due to some problem
|
||||
in surefire or testng. instead, we have to exclude via file path
|
||||
<groups>live,integration</groups>
|
||||
<excludedGroups>unit,performance</excludedGroups> -->
|
||||
<excludes>
|
||||
<exclude>none</exclude>
|
||||
</excludes>
|
||||
<includes>
|
||||
<include>**/*IntegrationTest.java</include>
|
||||
<include>**/*LiveTest.java</include>
|
||||
</includes>
|
||||
<systemProperties>
|
||||
<property>
|
||||
<name>file.encoding</name>
|
||||
<value>UTF-8</value>
|
||||
<name>test.atmos.endpoint</name>
|
||||
<value>${test.atmos.endpoint}</value>
|
||||
</property>
|
||||
<property>
|
||||
<name>jclouds.test.ssh.host</name>
|
||||
<value>${jclouds.test.ssh.host}</value>
|
||||
<name>test.atmos.apiversion</name>
|
||||
<value>${test.atmos.apiversion}</value>
|
||||
</property>
|
||||
<property>
|
||||
<name>jclouds.test.ssh.port</name>
|
||||
<value>${jclouds.test.ssh.port}</value>
|
||||
<name>test.atmos.identity</name>
|
||||
<value>${test.atmos.identity}</value>
|
||||
</property>
|
||||
<property>
|
||||
<name>jclouds.test.ssh.username</name>
|
||||
<value>${jclouds.test.ssh.username}</value>
|
||||
<name>test.atmos.credential</name>
|
||||
<value>${test.atmos.credential}</value>
|
||||
</property>
|
||||
<property>
|
||||
<name>jclouds.test.ssh.keyfile</name>
|
||||
<value>${jclouds.test.ssh.keyfile}</value>
|
||||
<name>test.initializer</name>
|
||||
<value>${test.initializer}</value>
|
||||
</property>
|
||||
<property>
|
||||
<name>jclouds.test.ssh.password</name>
|
||||
<value>${jclouds.test.ssh.password}</value>
|
||||
<name>jclouds.blobstore.httpstream.url</name>
|
||||
<value>${jclouds.blobstore.httpstream.url}</value>
|
||||
</property>
|
||||
<property>
|
||||
<name>jclouds.blobstore.httpstream.md5</name>
|
||||
<value>${jclouds.blobstore.httpstream.md5}</value>
|
||||
</property>
|
||||
</systemProperties>
|
||||
</configuration>
|
||||
|
@ -116,5 +125,5 @@
|
|||
</build>
|
||||
</profile>
|
||||
</profiles>
|
||||
|
||||
|
||||
</project>
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas;
|
||||
package org.jclouds.atmos;
|
||||
|
||||
import java.net.URI;
|
||||
|
||||
|
@ -32,19 +32,19 @@ import javax.ws.rs.PathParam;
|
|||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
|
||||
import org.jclouds.atmosonline.saas.binders.BindMetadataToHeaders;
|
||||
import org.jclouds.atmosonline.saas.domain.AtmosObject;
|
||||
import org.jclouds.atmosonline.saas.domain.BoundedSet;
|
||||
import org.jclouds.atmosonline.saas.domain.DirectoryEntry;
|
||||
import org.jclouds.atmosonline.saas.domain.SystemMetadata;
|
||||
import org.jclouds.atmosonline.saas.domain.UserMetadata;
|
||||
import org.jclouds.atmosonline.saas.filters.SignRequest;
|
||||
import org.jclouds.atmosonline.saas.functions.AtmosObjectName;
|
||||
import org.jclouds.atmosonline.saas.functions.ParseDirectoryListFromContentAndHeaders;
|
||||
import org.jclouds.atmosonline.saas.functions.ParseObjectFromHeadersAndHttpContent;
|
||||
import org.jclouds.atmosonline.saas.functions.ParseSystemMetadataFromHeaders;
|
||||
import org.jclouds.atmosonline.saas.functions.ReturnEndpointIfAlreadyExists;
|
||||
import org.jclouds.atmosonline.saas.options.ListOptions;
|
||||
import org.jclouds.atmos.binders.BindMetadataToHeaders;
|
||||
import org.jclouds.atmos.domain.AtmosObject;
|
||||
import org.jclouds.atmos.domain.BoundedSet;
|
||||
import org.jclouds.atmos.domain.DirectoryEntry;
|
||||
import org.jclouds.atmos.domain.SystemMetadata;
|
||||
import org.jclouds.atmos.domain.UserMetadata;
|
||||
import org.jclouds.atmos.filters.SignRequest;
|
||||
import org.jclouds.atmos.functions.AtmosObjectName;
|
||||
import org.jclouds.atmos.functions.ParseDirectoryListFromContentAndHeaders;
|
||||
import org.jclouds.atmos.functions.ParseObjectFromHeadersAndHttpContent;
|
||||
import org.jclouds.atmos.functions.ParseSystemMetadataFromHeaders;
|
||||
import org.jclouds.atmos.functions.ReturnEndpointIfAlreadyExists;
|
||||
import org.jclouds.atmos.options.ListOptions;
|
||||
import org.jclouds.blobstore.functions.ThrowContainerNotFoundOn404;
|
||||
import org.jclouds.blobstore.functions.ThrowKeyNotFoundOn404;
|
||||
import org.jclouds.http.options.GetOptions;
|
||||
|
@ -65,21 +65,21 @@ import com.google.common.util.concurrent.ListenableFuture;
|
|||
* Provides asynchronous access to EMC Atmos Online Storage resources via their REST API.
|
||||
* <p/>
|
||||
*
|
||||
* @see AtmosStorageClient
|
||||
* @see AtmosClient
|
||||
* @see <a href="https://community.emc.com/community/labs/atmos_online" />
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
@RequestFilters(SignRequest.class)
|
||||
@SkipEncoding('/')
|
||||
@Path("/rest/namespace")
|
||||
public interface AtmosStorageAsyncClient {
|
||||
public interface AtmosAsyncClient {
|
||||
/**
|
||||
* Creates a default implementation of AtmosObject
|
||||
*/
|
||||
AtmosObject newObject();
|
||||
|
||||
/**
|
||||
* @see AtmosStorageClient#listDirectories
|
||||
* @see AtmosClient#listDirectories
|
||||
*/
|
||||
@GET
|
||||
@ResponseParser(ParseDirectoryListFromContentAndHeaders.class)
|
||||
|
@ -87,7 +87,7 @@ public interface AtmosStorageAsyncClient {
|
|||
ListenableFuture<BoundedSet<? extends DirectoryEntry>> listDirectories(ListOptions... options);
|
||||
|
||||
/**
|
||||
* @see AtmosStorageClient#listDirectory
|
||||
* @see AtmosClient#listDirectory
|
||||
*/
|
||||
@GET
|
||||
@Path("/{directoryName}/")
|
||||
|
@ -98,7 +98,7 @@ public interface AtmosStorageAsyncClient {
|
|||
@PathParam("directoryName") String directoryName, ListOptions... options);
|
||||
|
||||
/**
|
||||
* @see AtmosStorageClient#createDirectory
|
||||
* @see AtmosClient#createDirectory
|
||||
*/
|
||||
@POST
|
||||
@Path("/{directoryName}/")
|
||||
|
@ -108,7 +108,7 @@ public interface AtmosStorageAsyncClient {
|
|||
ListenableFuture<URI> createDirectory(@PathParam("directoryName") String directoryName);
|
||||
|
||||
/**
|
||||
* @see AtmosStorageClient#createFile
|
||||
* @see AtmosClient#createFile
|
||||
*/
|
||||
@POST
|
||||
@Path("/{parent}/{name}")
|
||||
|
@ -118,7 +118,7 @@ public interface AtmosStorageAsyncClient {
|
|||
@PathParam("name") @ParamParser(AtmosObjectName.class) @BinderParam(BindMetadataToHeaders.class) AtmosObject object);
|
||||
|
||||
/**
|
||||
* @see AtmosStorageClient#updateFile
|
||||
* @see AtmosClient#updateFile
|
||||
*/
|
||||
@PUT
|
||||
@Path("/{parent}/{name}")
|
||||
|
@ -129,7 +129,7 @@ public interface AtmosStorageAsyncClient {
|
|||
@PathParam("name") @ParamParser(AtmosObjectName.class) @BinderParam(BindMetadataToHeaders.class) AtmosObject object);
|
||||
|
||||
/**
|
||||
* @see AtmosStorageClient#readFile
|
||||
* @see AtmosClient#readFile
|
||||
*/
|
||||
@GET
|
||||
@ResponseParser(ParseObjectFromHeadersAndHttpContent.class)
|
||||
|
@ -139,7 +139,7 @@ public interface AtmosStorageAsyncClient {
|
|||
ListenableFuture<AtmosObject> readFile(@PathParam("path") String path, GetOptions... options);
|
||||
|
||||
/**
|
||||
* @see AtmosStorageClient#headFile
|
||||
* @see AtmosClient#headFile
|
||||
*/
|
||||
@HEAD
|
||||
@ResponseParser(ParseObjectFromHeadersAndHttpContent.class)
|
||||
|
@ -149,7 +149,7 @@ public interface AtmosStorageAsyncClient {
|
|||
ListenableFuture<AtmosObject> headFile(@PathParam("path") String path);
|
||||
|
||||
/**
|
||||
* @see AtmosStorageClient#getSystemMetadata
|
||||
* @see AtmosClient#getSystemMetadata
|
||||
*/
|
||||
@HEAD
|
||||
@ResponseParser(ParseSystemMetadataFromHeaders.class)
|
||||
|
@ -160,7 +160,7 @@ public interface AtmosStorageAsyncClient {
|
|||
ListenableFuture<SystemMetadata> getSystemMetadata(@PathParam("path") String path);
|
||||
|
||||
/**
|
||||
* @see AtmosStorageClient#getUserMetadata
|
||||
* @see AtmosClient#getUserMetadata
|
||||
*/
|
||||
@HEAD
|
||||
@ResponseParser(ParseSystemMetadataFromHeaders.class)
|
||||
|
@ -171,7 +171,7 @@ public interface AtmosStorageAsyncClient {
|
|||
ListenableFuture<UserMetadata> getUserMetadata(@PathParam("path") String path);
|
||||
|
||||
/**
|
||||
* @see AtmosStorageClient#deletePath
|
||||
* @see AtmosClient#deletePath
|
||||
*/
|
||||
@DELETE
|
||||
@ExceptionParser(ReturnVoidOnNotFoundOr404.class)
|
||||
|
@ -180,7 +180,7 @@ public interface AtmosStorageAsyncClient {
|
|||
ListenableFuture<Void> deletePath(@PathParam("path") String path);
|
||||
|
||||
/**
|
||||
* @see AtmosStorageClient#pathExists
|
||||
* @see AtmosClient#pathExists
|
||||
*/
|
||||
@HEAD
|
||||
@ExceptionParser(ReturnFalseOnNotFoundOr404.class)
|
|
@ -17,17 +17,17 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas;
|
||||
package org.jclouds.atmos;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.AtmosObject;
|
||||
import org.jclouds.atmosonline.saas.domain.BoundedSet;
|
||||
import org.jclouds.atmosonline.saas.domain.DirectoryEntry;
|
||||
import org.jclouds.atmosonline.saas.domain.SystemMetadata;
|
||||
import org.jclouds.atmosonline.saas.domain.UserMetadata;
|
||||
import org.jclouds.atmosonline.saas.options.ListOptions;
|
||||
import org.jclouds.atmos.domain.AtmosObject;
|
||||
import org.jclouds.atmos.domain.BoundedSet;
|
||||
import org.jclouds.atmos.domain.DirectoryEntry;
|
||||
import org.jclouds.atmos.domain.SystemMetadata;
|
||||
import org.jclouds.atmos.domain.UserMetadata;
|
||||
import org.jclouds.atmos.options.ListOptions;
|
||||
import org.jclouds.concurrent.Timeout;
|
||||
import org.jclouds.http.options.GetOptions;
|
||||
|
||||
|
@ -35,12 +35,12 @@ import org.jclouds.http.options.GetOptions;
|
|||
* Provides access to EMC Atmos Online Storage resources via their REST API.
|
||||
* <p/>
|
||||
*
|
||||
* @see AtmosStorageAsyncClient
|
||||
* @see AtmosAsyncClient
|
||||
* @see <a href="https://community.emc.com/community/labs/atmos_online" />
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
@Timeout(duration = 300, timeUnit = TimeUnit.SECONDS)
|
||||
public interface AtmosStorageClient {
|
||||
public interface AtmosClient {
|
||||
/**
|
||||
* Creates a default implementation of AtmosObject
|
||||
*/
|
|
@ -17,13 +17,13 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas;
|
||||
package org.jclouds.atmos;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import org.jclouds.atmosonline.saas.blobstore.config.AtmosBlobStoreContextModule;
|
||||
import org.jclouds.atmosonline.saas.config.AtmosStorageRestClientModule;
|
||||
import org.jclouds.atmos.blobstore.config.AtmosBlobStoreContextModule;
|
||||
import org.jclouds.atmos.config.AtmosRestClientModule;
|
||||
import org.jclouds.blobstore.BlobStoreContextBuilder;
|
||||
import org.jclouds.http.config.JavaUrlHttpCommandExecutorServiceModule;
|
||||
import org.jclouds.logging.jdk.config.JDKLoggingModule;
|
||||
|
@ -44,11 +44,11 @@ import com.google.inject.Module;
|
|||
* @author Adrian Cole, Andrew Newdigate
|
||||
* @see AtmosBlobStoreContext
|
||||
*/
|
||||
public class AtmosStorageContextBuilder extends
|
||||
BlobStoreContextBuilder<AtmosStorageClient, AtmosStorageAsyncClient> {
|
||||
public class AtmosContextBuilder extends
|
||||
BlobStoreContextBuilder<AtmosClient, AtmosAsyncClient> {
|
||||
|
||||
public AtmosStorageContextBuilder(Properties props) {
|
||||
super(AtmosStorageClient.class, AtmosStorageAsyncClient.class, props);
|
||||
public AtmosContextBuilder(Properties props) {
|
||||
super(AtmosClient.class, AtmosAsyncClient.class, props);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -58,6 +58,6 @@ public class AtmosStorageContextBuilder extends
|
|||
|
||||
@Override
|
||||
protected void addClientModule(List<Module> modules) {
|
||||
modules.add(new AtmosStorageRestClientModule());
|
||||
modules.add(new AtmosRestClientModule());
|
||||
}
|
||||
}
|
|
@ -17,10 +17,10 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas;
|
||||
package org.jclouds.atmos;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.AtmosStorageError;
|
||||
import org.jclouds.atmosonline.saas.handlers.ParseAtmosStorageErrorFromXmlContent;
|
||||
import org.jclouds.atmos.domain.AtmosError;
|
||||
import org.jclouds.atmos.handlers.ParseAtmosErrorFromXmlContent;
|
||||
import org.jclouds.http.HttpCommand;
|
||||
import org.jclouds.http.HttpResponse;
|
||||
import org.jclouds.http.HttpResponseException;
|
||||
|
@ -28,52 +28,52 @@ import org.jclouds.http.HttpResponseException;
|
|||
/**
|
||||
* Encapsulates an Error from Atmos Storage Services.
|
||||
*
|
||||
* @see AtmosStorageError
|
||||
* @see ParseAtmosStorageErrorFromXmlContent
|
||||
* @see AtmosError
|
||||
* @see ParseAtmosErrorFromXmlContent
|
||||
* @author Adrian Cole
|
||||
*
|
||||
*/
|
||||
public class AtmosStorageResponseException extends HttpResponseException {
|
||||
public class AtmosResponseException extends HttpResponseException {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private AtmosStorageError error;
|
||||
private AtmosError error;
|
||||
|
||||
public AtmosStorageResponseException(HttpCommand command, HttpResponse response,
|
||||
AtmosStorageError error) {
|
||||
public AtmosResponseException(HttpCommand command, HttpResponse response,
|
||||
AtmosError error) {
|
||||
super(String.format("command %s failed with code %s, error: %s", command.getCurrentRequest()
|
||||
.getRequestLine(), response.getStatusCode(), error.toString()), command, response);
|
||||
this.setError(error);
|
||||
|
||||
}
|
||||
|
||||
public AtmosStorageResponseException(HttpCommand command, HttpResponse response,
|
||||
AtmosStorageError error, Throwable cause) {
|
||||
public AtmosResponseException(HttpCommand command, HttpResponse response,
|
||||
AtmosError error, Throwable cause) {
|
||||
super(String.format("command %1$s failed with error: %2$s", command.getCurrentRequest()
|
||||
.getRequestLine(), error.toString()), command, response, cause);
|
||||
this.setError(error);
|
||||
|
||||
}
|
||||
|
||||
public AtmosStorageResponseException(String message, HttpCommand command, HttpResponse response,
|
||||
AtmosStorageError error) {
|
||||
public AtmosResponseException(String message, HttpCommand command, HttpResponse response,
|
||||
AtmosError error) {
|
||||
super(message, command, response);
|
||||
this.setError(error);
|
||||
|
||||
}
|
||||
|
||||
public AtmosStorageResponseException(String message, HttpCommand command, HttpResponse response,
|
||||
AtmosStorageError error, Throwable cause) {
|
||||
public AtmosResponseException(String message, HttpCommand command, HttpResponse response,
|
||||
AtmosError error, Throwable cause) {
|
||||
super(message, command, response, cause);
|
||||
this.setError(error);
|
||||
|
||||
}
|
||||
|
||||
public void setError(AtmosStorageError error) {
|
||||
public void setError(AtmosError error) {
|
||||
this.error = error;
|
||||
}
|
||||
|
||||
public AtmosStorageError getError() {
|
||||
public AtmosError getError() {
|
||||
return error;
|
||||
}
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.binders;
|
||||
package org.jclouds.atmos.binders;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
@ -25,7 +25,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
|
|||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.AtmosObject;
|
||||
import org.jclouds.atmos.domain.AtmosObject;
|
||||
import org.jclouds.http.HttpRequest;
|
||||
import org.jclouds.rest.Binder;
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.binders;
|
||||
package org.jclouds.atmos.binders;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
@ -26,7 +26,7 @@ import java.util.Map;
|
|||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.UserMetadata;
|
||||
import org.jclouds.atmos.domain.UserMetadata;
|
||||
import org.jclouds.http.HttpRequest;
|
||||
import org.jclouds.http.utils.ModifyRequest;
|
||||
import org.jclouds.rest.Binder;
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.blobstore;
|
||||
package org.jclouds.atmos.blobstore;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
|
@ -32,18 +32,18 @@ import javax.inject.Provider;
|
|||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.Constants;
|
||||
import org.jclouds.atmosonline.saas.AtmosStorageAsyncClient;
|
||||
import org.jclouds.atmosonline.saas.AtmosStorageClient;
|
||||
import org.jclouds.atmosonline.saas.blobstore.functions.BlobStoreListOptionsToListOptions;
|
||||
import org.jclouds.atmosonline.saas.blobstore.functions.BlobToObject;
|
||||
import org.jclouds.atmosonline.saas.blobstore.functions.DirectoryEntryListToResourceMetadataList;
|
||||
import org.jclouds.atmosonline.saas.blobstore.functions.ObjectToBlob;
|
||||
import org.jclouds.atmosonline.saas.blobstore.functions.ObjectToBlobMetadata;
|
||||
import org.jclouds.atmosonline.saas.domain.AtmosObject;
|
||||
import org.jclouds.atmosonline.saas.domain.BoundedSet;
|
||||
import org.jclouds.atmosonline.saas.domain.DirectoryEntry;
|
||||
import org.jclouds.atmosonline.saas.options.ListOptions;
|
||||
import org.jclouds.atmosonline.saas.util.AtmosStorageUtils;
|
||||
import org.jclouds.atmos.AtmosAsyncClient;
|
||||
import org.jclouds.atmos.AtmosClient;
|
||||
import org.jclouds.atmos.blobstore.functions.BlobStoreListOptionsToListOptions;
|
||||
import org.jclouds.atmos.blobstore.functions.BlobToObject;
|
||||
import org.jclouds.atmos.blobstore.functions.DirectoryEntryListToResourceMetadataList;
|
||||
import org.jclouds.atmos.blobstore.functions.ObjectToBlob;
|
||||
import org.jclouds.atmos.blobstore.functions.ObjectToBlobMetadata;
|
||||
import org.jclouds.atmos.domain.AtmosObject;
|
||||
import org.jclouds.atmos.domain.BoundedSet;
|
||||
import org.jclouds.atmos.domain.DirectoryEntry;
|
||||
import org.jclouds.atmos.options.ListOptions;
|
||||
import org.jclouds.atmos.util.AtmosUtils;
|
||||
import org.jclouds.blobstore.BlobStoreContext;
|
||||
import org.jclouds.blobstore.domain.Blob;
|
||||
import org.jclouds.blobstore.domain.BlobMetadata;
|
||||
|
@ -68,8 +68,8 @@ import com.google.common.util.concurrent.ListenableFuture;
|
|||
*/
|
||||
@Singleton
|
||||
public class AtmosAsyncBlobStore extends BaseAsyncBlobStore {
|
||||
private final AtmosStorageAsyncClient async;
|
||||
private final AtmosStorageClient sync;
|
||||
private final AtmosAsyncClient async;
|
||||
private final AtmosClient sync;
|
||||
private final ObjectToBlob object2Blob;
|
||||
private final ObjectToBlobMetadata object2BlobMd;
|
||||
private final BlobToObject blob2Object;
|
||||
|
@ -82,8 +82,8 @@ public class AtmosAsyncBlobStore extends BaseAsyncBlobStore {
|
|||
@Inject
|
||||
AtmosAsyncBlobStore(BlobStoreContext context, BlobUtils blobUtils,
|
||||
@Named(Constants.PROPERTY_USER_THREADS) ExecutorService service, Supplier<Location> defaultLocation,
|
||||
@Memoized Supplier<Set<? extends Location>> locations, AtmosStorageAsyncClient async,
|
||||
AtmosStorageClient sync, ObjectToBlob object2Blob, ObjectToBlobMetadata object2BlobMd,
|
||||
@Memoized Supplier<Set<? extends Location>> locations, AtmosAsyncClient async,
|
||||
AtmosClient sync, ObjectToBlob object2Blob, ObjectToBlobMetadata object2BlobMd,
|
||||
BlobToObject blob2Object, BlobStoreListOptionsToListOptions container2ContainerListOptions,
|
||||
DirectoryEntryListToResourceMetadataList container2ResourceList, Crypto crypto,
|
||||
BlobToHttpGetOptions blob2ObjectGetOptions, Provider<FetchBlobMetadata> fetchBlobMetadataProvider) {
|
||||
|
@ -102,7 +102,7 @@ public class AtmosAsyncBlobStore extends BaseAsyncBlobStore {
|
|||
}
|
||||
|
||||
/**
|
||||
* This implementation invokes {@link AtmosStorageAsyncClient#headFile}
|
||||
* This implementation invokes {@link AtmosAsyncClient#headFile}
|
||||
*/
|
||||
@Override
|
||||
public ListenableFuture<BlobMetadata> blobMetadata(String container, String key) {
|
||||
|
@ -115,7 +115,7 @@ public class AtmosAsyncBlobStore extends BaseAsyncBlobStore {
|
|||
}
|
||||
|
||||
/**
|
||||
* This implementation invokes {@link AtmosStorageAsyncClient#createDirectory}
|
||||
* This implementation invokes {@link AtmosAsyncClient#createDirectory}
|
||||
* <p/>
|
||||
* Note location is ignored
|
||||
*/
|
||||
|
@ -131,7 +131,7 @@ public class AtmosAsyncBlobStore extends BaseAsyncBlobStore {
|
|||
}
|
||||
|
||||
/**
|
||||
* This implementation invokes {@link AtmosStorageAsyncClient#createDirectory}
|
||||
* This implementation invokes {@link AtmosAsyncClient#createDirectory}
|
||||
*/
|
||||
@Override
|
||||
public ListenableFuture<Void> createDirectory(String container, String directory) {
|
||||
|
@ -145,8 +145,8 @@ public class AtmosAsyncBlobStore extends BaseAsyncBlobStore {
|
|||
}
|
||||
|
||||
/**
|
||||
* This implementation invokes {@link AtmosStorageAsyncClient#deletePath} followed by
|
||||
* {@link AtmosStorageAsyncClient#pathExists} until it is true.
|
||||
* This implementation invokes {@link AtmosAsyncClient#deletePath} followed by
|
||||
* {@link AtmosAsyncClient#pathExists} until it is true.
|
||||
*/
|
||||
protected boolean deleteAndVerifyContainerGone(final String container) {
|
||||
sync.deletePath(container + "/");
|
||||
|
@ -154,7 +154,7 @@ public class AtmosAsyncBlobStore extends BaseAsyncBlobStore {
|
|||
}
|
||||
|
||||
/**
|
||||
* This implementation invokes {@link AtmosStorageAsyncClient#pathExists}
|
||||
* This implementation invokes {@link AtmosAsyncClient#pathExists}
|
||||
*/
|
||||
@Override
|
||||
public ListenableFuture<Boolean> containerExists(String container) {
|
||||
|
@ -162,7 +162,7 @@ public class AtmosAsyncBlobStore extends BaseAsyncBlobStore {
|
|||
}
|
||||
|
||||
/**
|
||||
* This implementation invokes {@link AtmosStorageAsyncClient#pathExists}
|
||||
* This implementation invokes {@link AtmosAsyncClient#pathExists}
|
||||
*/
|
||||
@Override
|
||||
public ListenableFuture<Boolean> directoryExists(String container, String directory) {
|
||||
|
@ -178,7 +178,7 @@ public class AtmosAsyncBlobStore extends BaseAsyncBlobStore {
|
|||
}
|
||||
|
||||
/**
|
||||
* This implementation invokes {@link AtmosStorageAsyncClient#pathExists}
|
||||
* This implementation invokes {@link AtmosAsyncClient#pathExists}
|
||||
*
|
||||
* @param container
|
||||
* container
|
||||
|
@ -191,7 +191,7 @@ public class AtmosAsyncBlobStore extends BaseAsyncBlobStore {
|
|||
}
|
||||
|
||||
/**
|
||||
* This implementation invokes {@link AtmosStorageAsyncClient#readFile}
|
||||
* This implementation invokes {@link AtmosAsyncClient#readFile}
|
||||
*/
|
||||
@Override
|
||||
public ListenableFuture<Blob> getBlob(String container, String key, org.jclouds.blobstore.options.GetOptions options) {
|
||||
|
@ -201,7 +201,7 @@ public class AtmosAsyncBlobStore extends BaseAsyncBlobStore {
|
|||
}
|
||||
|
||||
/**
|
||||
* This implementation invokes {@link AtmosStorageAsyncClient#listDirectories}
|
||||
* This implementation invokes {@link AtmosAsyncClient#listDirectories}
|
||||
*/
|
||||
@Override
|
||||
public ListenableFuture<PageSet<? extends StorageMetadata>> list() {
|
||||
|
@ -209,12 +209,12 @@ public class AtmosAsyncBlobStore extends BaseAsyncBlobStore {
|
|||
}
|
||||
|
||||
/**
|
||||
* This implementation invokes {@link AtmosStorageAsyncClient#listDirectory}
|
||||
* This implementation invokes {@link AtmosAsyncClient#listDirectory}
|
||||
*/
|
||||
@Override
|
||||
public ListenableFuture<PageSet<? extends StorageMetadata>> list(String container,
|
||||
org.jclouds.blobstore.options.ListContainerOptions options) {
|
||||
container = AtmosStorageUtils.adjustContainerIfDirOptionPresent(container, options);
|
||||
container = AtmosUtils.adjustContainerIfDirOptionPresent(container, options);
|
||||
ListOptions nativeOptions = container2ContainerListOptions.apply(options);
|
||||
ListenableFuture<BoundedSet<? extends DirectoryEntry>> returnVal = async.listDirectory(container, nativeOptions);
|
||||
ListenableFuture<PageSet<? extends StorageMetadata>> list = Futures.compose(returnVal, container2ResourceList,
|
||||
|
@ -224,7 +224,7 @@ public class AtmosAsyncBlobStore extends BaseAsyncBlobStore {
|
|||
}
|
||||
|
||||
/**
|
||||
* This implementation invokes {@link AtmosStorageAsyncClient#createFile}
|
||||
* This implementation invokes {@link AtmosAsyncClient#createFile}
|
||||
* <p/>
|
||||
* Since there is no etag support in atmos, we just return the path.
|
||||
*/
|
||||
|
@ -234,7 +234,7 @@ public class AtmosAsyncBlobStore extends BaseAsyncBlobStore {
|
|||
|
||||
@Override
|
||||
public String call() throws Exception {
|
||||
return AtmosStorageUtils.putBlob(sync, crypto, blob2Object, container, blob);
|
||||
return AtmosUtils.putBlob(sync, crypto, blob2Object, container, blob);
|
||||
|
||||
}
|
||||
|
||||
|
@ -243,7 +243,7 @@ public class AtmosAsyncBlobStore extends BaseAsyncBlobStore {
|
|||
}
|
||||
|
||||
/**
|
||||
* This implementation invokes {@link AtmosStorageAsyncClient#deletePath}
|
||||
* This implementation invokes {@link AtmosAsyncClient#deletePath}
|
||||
*/
|
||||
@Override
|
||||
public ListenableFuture<Void> removeBlob(String container, String key) {
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.blobstore;
|
||||
package org.jclouds.atmos.blobstore;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static org.jclouds.blobstore.util.BlobStoreUtils.cleanRequest;
|
||||
|
@ -27,9 +27,9 @@ import java.lang.reflect.Method;
|
|||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.atmosonline.saas.AtmosStorageAsyncClient;
|
||||
import org.jclouds.atmosonline.saas.blobstore.functions.BlobToObject;
|
||||
import org.jclouds.atmosonline.saas.domain.AtmosObject;
|
||||
import org.jclouds.atmos.AtmosAsyncClient;
|
||||
import org.jclouds.atmos.blobstore.functions.BlobToObject;
|
||||
import org.jclouds.atmos.domain.AtmosObject;
|
||||
import org.jclouds.blobstore.BlobRequestSigner;
|
||||
import org.jclouds.blobstore.domain.Blob;
|
||||
import org.jclouds.http.HttpRequest;
|
||||
|
@ -42,20 +42,20 @@ import org.jclouds.rest.internal.RestAnnotationProcessor;
|
|||
*/
|
||||
@Singleton
|
||||
public class AtmosBlobRequestSigner implements BlobRequestSigner {
|
||||
private final RestAnnotationProcessor<AtmosStorageAsyncClient> processor;
|
||||
private final RestAnnotationProcessor<AtmosAsyncClient> processor;
|
||||
private final BlobToObject blobToObject;
|
||||
private final Method getMethod;
|
||||
private final Method deleteMethod;
|
||||
private final Method createMethod;
|
||||
|
||||
@Inject
|
||||
public AtmosBlobRequestSigner(RestAnnotationProcessor<AtmosStorageAsyncClient> processor, BlobToObject blobToObject)
|
||||
public AtmosBlobRequestSigner(RestAnnotationProcessor<AtmosAsyncClient> processor, BlobToObject blobToObject)
|
||||
throws SecurityException, NoSuchMethodException {
|
||||
this.processor = checkNotNull(processor, "processor");
|
||||
this.blobToObject = checkNotNull(blobToObject, "blobToObject");
|
||||
this.getMethod = AtmosStorageAsyncClient.class.getMethod("readFile", String.class, GetOptions[].class);
|
||||
this.deleteMethod = AtmosStorageAsyncClient.class.getMethod("deletePath", String.class);
|
||||
this.createMethod = AtmosStorageAsyncClient.class.getMethod("createFile", String.class, AtmosObject.class);
|
||||
this.getMethod = AtmosAsyncClient.class.getMethod("readFile", String.class, GetOptions[].class);
|
||||
this.deleteMethod = AtmosAsyncClient.class.getMethod("deletePath", String.class);
|
||||
this.createMethod = AtmosAsyncClient.class.getMethod("createFile", String.class, AtmosObject.class);
|
||||
|
||||
}
|
||||
|
||||
|
@ -78,4 +78,4 @@ public class AtmosBlobRequestSigner implements BlobRequestSigner {
|
|||
return checkNotNull(container, "container") + "/" + checkNotNull(name, "name");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.blobstore;
|
||||
package org.jclouds.atmos.blobstore;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
|
@ -27,15 +27,15 @@ import javax.inject.Inject;
|
|||
import javax.inject.Provider;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.atmosonline.saas.AtmosStorageAsyncClient;
|
||||
import org.jclouds.atmosonline.saas.AtmosStorageClient;
|
||||
import org.jclouds.atmosonline.saas.blobstore.functions.BlobStoreListOptionsToListOptions;
|
||||
import org.jclouds.atmosonline.saas.blobstore.functions.BlobToObject;
|
||||
import org.jclouds.atmosonline.saas.blobstore.functions.DirectoryEntryListToResourceMetadataList;
|
||||
import org.jclouds.atmosonline.saas.blobstore.functions.ObjectToBlob;
|
||||
import org.jclouds.atmosonline.saas.blobstore.functions.ObjectToBlobMetadata;
|
||||
import org.jclouds.atmosonline.saas.options.ListOptions;
|
||||
import org.jclouds.atmosonline.saas.util.AtmosStorageUtils;
|
||||
import org.jclouds.atmos.AtmosAsyncClient;
|
||||
import org.jclouds.atmos.AtmosClient;
|
||||
import org.jclouds.atmos.blobstore.functions.BlobStoreListOptionsToListOptions;
|
||||
import org.jclouds.atmos.blobstore.functions.BlobToObject;
|
||||
import org.jclouds.atmos.blobstore.functions.DirectoryEntryListToResourceMetadataList;
|
||||
import org.jclouds.atmos.blobstore.functions.ObjectToBlob;
|
||||
import org.jclouds.atmos.blobstore.functions.ObjectToBlobMetadata;
|
||||
import org.jclouds.atmos.options.ListOptions;
|
||||
import org.jclouds.atmos.util.AtmosUtils;
|
||||
import org.jclouds.blobstore.BlobStoreContext;
|
||||
import org.jclouds.blobstore.domain.Blob;
|
||||
import org.jclouds.blobstore.domain.BlobMetadata;
|
||||
|
@ -57,7 +57,7 @@ import com.google.common.base.Supplier;
|
|||
*/
|
||||
@Singleton
|
||||
public class AtmosBlobStore extends BaseBlobStore {
|
||||
private final AtmosStorageClient sync;
|
||||
private final AtmosClient sync;
|
||||
private final ObjectToBlob object2Blob;
|
||||
private final ObjectToBlobMetadata object2BlobMd;
|
||||
private final BlobToObject blob2Object;
|
||||
|
@ -69,7 +69,7 @@ public class AtmosBlobStore extends BaseBlobStore {
|
|||
|
||||
@Inject
|
||||
AtmosBlobStore(BlobStoreContext context, BlobUtils blobUtils, Supplier<Location> defaultLocation,
|
||||
@Memoized Supplier<Set<? extends Location>> locations, AtmosStorageClient sync, ObjectToBlob object2Blob,
|
||||
@Memoized Supplier<Set<? extends Location>> locations, AtmosClient sync, ObjectToBlob object2Blob,
|
||||
ObjectToBlobMetadata object2BlobMd, BlobToObject blob2Object,
|
||||
BlobStoreListOptionsToListOptions container2ContainerListOptions,
|
||||
DirectoryEntryListToResourceMetadataList container2ResourceList, Crypto crypto,
|
||||
|
@ -88,7 +88,7 @@ public class AtmosBlobStore extends BaseBlobStore {
|
|||
}
|
||||
|
||||
/**
|
||||
* This implementation invokes {@link AtmosStorageClient#headFile}
|
||||
* This implementation invokes {@link AtmosClient#headFile}
|
||||
*/
|
||||
@Override
|
||||
public BlobMetadata blobMetadata(String container, String key) {
|
||||
|
@ -96,8 +96,8 @@ public class AtmosBlobStore extends BaseBlobStore {
|
|||
}
|
||||
|
||||
/**
|
||||
* This implementation invokes {@link AtmosStorageAsyncClient#deletePath} followed by
|
||||
* {@link AtmosStorageAsyncClient#pathExists} until it is true.
|
||||
* This implementation invokes {@link AtmosAsyncClient#deletePath} followed by
|
||||
* {@link AtmosAsyncClient#pathExists} until it is true.
|
||||
*/
|
||||
protected boolean deleteAndVerifyContainerGone(final String container) {
|
||||
sync.deletePath(container + "/");
|
||||
|
@ -105,7 +105,7 @@ public class AtmosBlobStore extends BaseBlobStore {
|
|||
}
|
||||
|
||||
/**
|
||||
* This implementation invokes {@link AtmosStorageClient#createDirectory}
|
||||
* This implementation invokes {@link AtmosClient#createDirectory}
|
||||
*
|
||||
* @param location
|
||||
* currently ignored
|
||||
|
@ -119,7 +119,7 @@ public class AtmosBlobStore extends BaseBlobStore {
|
|||
}
|
||||
|
||||
/**
|
||||
* This implementation invokes {@link AtmosStorageClient#createDirectory}
|
||||
* This implementation invokes {@link AtmosClient#createDirectory}
|
||||
*
|
||||
* @param container
|
||||
* directory name
|
||||
|
@ -138,7 +138,7 @@ public class AtmosBlobStore extends BaseBlobStore {
|
|||
}
|
||||
|
||||
/**
|
||||
* This implementation invokes {@link AtmosStorageClient#pathExists}
|
||||
* This implementation invokes {@link AtmosClient#pathExists}
|
||||
*/
|
||||
@Override
|
||||
public boolean containerExists(String container) {
|
||||
|
@ -146,7 +146,7 @@ public class AtmosBlobStore extends BaseBlobStore {
|
|||
}
|
||||
|
||||
/**
|
||||
* This implementation invokes {@link AtmosStorageClient#pathExists}
|
||||
* This implementation invokes {@link AtmosClient#pathExists}
|
||||
*/
|
||||
@Override
|
||||
public boolean directoryExists(String container, String directory) {
|
||||
|
@ -154,7 +154,7 @@ public class AtmosBlobStore extends BaseBlobStore {
|
|||
}
|
||||
|
||||
/**
|
||||
* This implementation invokes {@link AtmosStorageClient#pathExists}
|
||||
* This implementation invokes {@link AtmosClient#pathExists}
|
||||
*
|
||||
* @param container
|
||||
* container
|
||||
|
@ -167,7 +167,7 @@ public class AtmosBlobStore extends BaseBlobStore {
|
|||
}
|
||||
|
||||
/**
|
||||
* This implementation invokes {@link AtmosStorageClient#readFile}
|
||||
* This implementation invokes {@link AtmosClient#readFile}
|
||||
*/
|
||||
@Override
|
||||
public Blob getBlob(String container, String key, org.jclouds.blobstore.options.GetOptions options) {
|
||||
|
@ -176,7 +176,7 @@ public class AtmosBlobStore extends BaseBlobStore {
|
|||
}
|
||||
|
||||
/**
|
||||
* This implementation invokes {@link AtmosStorageClient#listDirectories}
|
||||
* This implementation invokes {@link AtmosClient#listDirectories}
|
||||
*/
|
||||
@Override
|
||||
public PageSet<? extends StorageMetadata> list() {
|
||||
|
@ -184,12 +184,12 @@ public class AtmosBlobStore extends BaseBlobStore {
|
|||
}
|
||||
|
||||
/**
|
||||
* This implementation invokes {@link AtmosStorageClient#listDirectory}
|
||||
* This implementation invokes {@link AtmosClient#listDirectory}
|
||||
*/
|
||||
@Override
|
||||
public PageSet<? extends StorageMetadata> list(String container,
|
||||
org.jclouds.blobstore.options.ListContainerOptions options) {
|
||||
container = AtmosStorageUtils.adjustContainerIfDirOptionPresent(container, options);
|
||||
container = AtmosUtils.adjustContainerIfDirOptionPresent(container, options);
|
||||
ListOptions nativeOptions = container2ContainerListOptions.apply(options);
|
||||
// until includeMeta() option works for namespace interface
|
||||
PageSet<? extends StorageMetadata> list = container2ResourceList.apply(sync.listDirectory(container,
|
||||
|
@ -198,17 +198,17 @@ public class AtmosBlobStore extends BaseBlobStore {
|
|||
}
|
||||
|
||||
/**
|
||||
* This implementation invokes {@link AtmosStorageClient#createFile}
|
||||
* This implementation invokes {@link AtmosClient#createFile}
|
||||
* <p/>
|
||||
* Since there is no etag support in atmos, we just return the path.
|
||||
*/
|
||||
@Override
|
||||
public String putBlob(final String container, final Blob blob) {
|
||||
return AtmosStorageUtils.putBlob(sync, crypto, blob2Object, container, blob);
|
||||
return AtmosUtils.putBlob(sync, crypto, blob2Object, container, blob);
|
||||
}
|
||||
|
||||
/**
|
||||
* This implementation invokes {@link AtmosStorageClient#deletePath}
|
||||
* This implementation invokes {@link AtmosClient#deletePath}
|
||||
*/
|
||||
@Override
|
||||
public void removeBlob(String container, String key) {
|
|
@ -17,18 +17,18 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.blobstore.config;
|
||||
package org.jclouds.atmos.blobstore.config;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.atmosonline.saas.AtmosStorageAsyncClient;
|
||||
import org.jclouds.atmosonline.saas.AtmosStorageClient;
|
||||
import org.jclouds.atmosonline.saas.blobstore.AtmosAsyncBlobStore;
|
||||
import org.jclouds.atmosonline.saas.blobstore.AtmosBlobRequestSigner;
|
||||
import org.jclouds.atmosonline.saas.blobstore.AtmosBlobStore;
|
||||
import org.jclouds.atmosonline.saas.blobstore.strategy.FindMD5InUserMetadata;
|
||||
import org.jclouds.atmos.AtmosAsyncClient;
|
||||
import org.jclouds.atmos.AtmosClient;
|
||||
import org.jclouds.atmos.blobstore.AtmosAsyncBlobStore;
|
||||
import org.jclouds.atmos.blobstore.AtmosBlobRequestSigner;
|
||||
import org.jclouds.atmos.blobstore.AtmosBlobStore;
|
||||
import org.jclouds.atmos.blobstore.strategy.FindMD5InUserMetadata;
|
||||
import org.jclouds.blobstore.AsyncBlobStore;
|
||||
import org.jclouds.blobstore.BlobRequestSigner;
|
||||
import org.jclouds.blobstore.BlobStore;
|
||||
|
@ -65,7 +65,7 @@ public class AtmosBlobStoreContextModule extends AbstractModule {
|
|||
bind(AsyncBlobStore.class).to(AtmosAsyncBlobStore.class).in(Scopes.SINGLETON);
|
||||
bind(BlobStore.class).to(AtmosBlobStore.class).in(Scopes.SINGLETON);
|
||||
bind(BlobStoreContext.class).to(
|
||||
new TypeLiteral<BlobStoreContextImpl<AtmosStorageClient, AtmosStorageAsyncClient>>() {
|
||||
new TypeLiteral<BlobStoreContextImpl<AtmosClient, AtmosAsyncClient>>() {
|
||||
}).in(Scopes.SINGLETON);
|
||||
bind(ContainsValueInListStrategy.class).to(FindMD5InUserMetadata.class);
|
||||
bind(BlobRequestSigner.class).to(AtmosBlobRequestSigner.class);
|
|
@ -17,15 +17,15 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.blobstore.functions;
|
||||
package org.jclouds.atmos.blobstore.functions;
|
||||
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.AtmosObject;
|
||||
import org.jclouds.atmosonline.saas.domain.UserMetadata;
|
||||
import org.jclouds.atmos.domain.AtmosObject;
|
||||
import org.jclouds.atmos.domain.UserMetadata;
|
||||
import org.jclouds.blobstore.domain.BlobMetadata;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
|
@ -58,4 +58,4 @@ public class BlobMetadataToObject implements Function<BlobMetadata, AtmosObject>
|
|||
return factory.create(blob2ContentMd.apply(from), blob2SysMd.apply(from), userMd);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.blobstore.functions;
|
||||
package org.jclouds.atmos.blobstore.functions;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
|
@ -32,11 +32,11 @@ import com.google.common.base.Function;
|
|||
*/
|
||||
@Singleton
|
||||
public class BlobStoreListOptionsToListOptions implements
|
||||
Function<ListContainerOptions, org.jclouds.atmosonline.saas.options.ListOptions> {
|
||||
Function<ListContainerOptions, org.jclouds.atmos.options.ListOptions> {
|
||||
@Override
|
||||
public org.jclouds.atmosonline.saas.options.ListOptions apply(ListContainerOptions from) {
|
||||
public org.jclouds.atmos.options.ListOptions apply(ListContainerOptions from) {
|
||||
checkNotNull(from, "set options to instance NONE instead of passing null");
|
||||
org.jclouds.atmosonline.saas.options.ListOptions httpOptions = new org.jclouds.atmosonline.saas.options.ListOptions();
|
||||
org.jclouds.atmos.options.ListOptions httpOptions = new org.jclouds.atmos.options.ListOptions();
|
||||
if (from.getMarker() != null) {
|
||||
httpOptions.token(from.getMarker());
|
||||
}
|
||||
|
@ -48,4 +48,4 @@ public class BlobStoreListOptionsToListOptions implements
|
|||
}
|
||||
return httpOptions;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -17,12 +17,12 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.blobstore.functions;
|
||||
package org.jclouds.atmos.blobstore.functions;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.MutableContentMetadata;
|
||||
import org.jclouds.atmosonline.saas.domain.internal.DelegatingMutableContentMetadata;
|
||||
import org.jclouds.atmos.domain.MutableContentMetadata;
|
||||
import org.jclouds.atmos.domain.internal.DelegatingMutableContentMetadata;
|
||||
import org.jclouds.blobstore.domain.BlobMetadata;
|
||||
import org.jclouds.blobstore.domain.internal.MutableBlobMetadataImpl;
|
||||
import org.jclouds.http.HttpUtils;
|
||||
|
@ -40,4 +40,4 @@ public class BlobToContentMetadata implements Function<BlobMetadata, MutableCont
|
|||
return new DelegatingMutableContentMetadata(base.getName(), to.getContentMetadata());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -17,14 +17,14 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.blobstore.functions;
|
||||
package org.jclouds.atmos.blobstore.functions;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.AtmosObject;
|
||||
import org.jclouds.atmos.domain.AtmosObject;
|
||||
import org.jclouds.blobstore.domain.Blob;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
|
@ -49,4 +49,4 @@ public class BlobToObject implements Function<Blob, AtmosObject> {
|
|||
object.setAllHeaders(from.getAllHeaders());
|
||||
return object;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -17,12 +17,12 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.blobstore.functions;
|
||||
package org.jclouds.atmos.blobstore.functions;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.FileType;
|
||||
import org.jclouds.atmosonline.saas.domain.SystemMetadata;
|
||||
import org.jclouds.atmos.domain.FileType;
|
||||
import org.jclouds.atmos.domain.SystemMetadata;
|
||||
import org.jclouds.blobstore.domain.BlobMetadata;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
|
@ -38,4 +38,4 @@ public class BlobToSystemMetadata implements Function<BlobMetadata, SystemMetada
|
|||
.getContentMetadata().getContentLength() : 0, FileType.REGULAR, "root");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -17,14 +17,14 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.blobstore.functions;
|
||||
package org.jclouds.atmos.blobstore.functions;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.BoundedSet;
|
||||
import org.jclouds.atmosonline.saas.domain.DirectoryEntry;
|
||||
import org.jclouds.atmosonline.saas.domain.FileType;
|
||||
import org.jclouds.atmos.domain.BoundedSet;
|
||||
import org.jclouds.atmos.domain.DirectoryEntry;
|
||||
import org.jclouds.atmos.domain.FileType;
|
||||
import org.jclouds.blobstore.domain.PageSet;
|
||||
import org.jclouds.blobstore.domain.StorageMetadata;
|
||||
import org.jclouds.blobstore.domain.StorageType;
|
||||
|
@ -70,4 +70,4 @@ public class DirectoryEntryListToResourceMetadataList implements
|
|||
}), from.getToken());
|
||||
|
||||
}
|
||||
}
|
||||
}
|
|
@ -17,14 +17,14 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.blobstore.functions;
|
||||
package org.jclouds.atmos.blobstore.functions;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.AtmosObject;
|
||||
import org.jclouds.atmos.domain.AtmosObject;
|
||||
import org.jclouds.blobstore.domain.Blob;
|
||||
import org.jclouds.blobstore.domain.Blob.Factory;
|
||||
import org.jclouds.http.HttpUtils;
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.blobstore.functions;
|
||||
package org.jclouds.atmos.blobstore.functions;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
@ -26,9 +26,9 @@ import java.util.Map.Entry;
|
|||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.AtmosObject;
|
||||
import org.jclouds.atmosonline.saas.domain.FileType;
|
||||
import org.jclouds.atmosonline.saas.functions.AtmosObjectName;
|
||||
import org.jclouds.atmos.domain.AtmosObject;
|
||||
import org.jclouds.atmos.domain.FileType;
|
||||
import org.jclouds.atmos.functions.AtmosObjectName;
|
||||
import org.jclouds.blobstore.domain.MutableBlobMetadata;
|
||||
import org.jclouds.blobstore.domain.StorageType;
|
||||
import org.jclouds.blobstore.domain.internal.MutableBlobMetadataImpl;
|
||||
|
@ -75,4 +75,4 @@ public class ObjectToBlobMetadata implements Function<AtmosObject, MutableBlobMe
|
|||
to.setUserMetadata(lowerKeyMetadata);
|
||||
return to;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.blobstore.strategy;
|
||||
package org.jclouds.atmos.blobstore.strategy;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static org.jclouds.concurrent.FutureIterables.awaitCompletion;
|
||||
|
@ -36,8 +36,8 @@ import javax.inject.Named;
|
|||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.Constants;
|
||||
import org.jclouds.atmosonline.saas.AtmosStorageAsyncClient;
|
||||
import org.jclouds.atmosonline.saas.domain.AtmosObject;
|
||||
import org.jclouds.atmos.AtmosAsyncClient;
|
||||
import org.jclouds.atmos.domain.AtmosObject;
|
||||
import org.jclouds.blobstore.domain.BlobMetadata;
|
||||
import org.jclouds.blobstore.functions.ObjectMD5;
|
||||
import org.jclouds.blobstore.internal.BlobRuntimeException;
|
||||
|
@ -63,7 +63,7 @@ public class FindMD5InUserMetadata implements ContainsValueInListStrategy {
|
|||
protected Logger logger = Logger.NULL;
|
||||
protected final ObjectMD5 objectMD5;
|
||||
protected final ListBlobsInContainer getAllBlobMetadata;
|
||||
private final AtmosStorageAsyncClient client;
|
||||
private final AtmosAsyncClient client;
|
||||
private final ExecutorService userExecutor;
|
||||
/**
|
||||
* maximum duration of an blob Request
|
||||
|
@ -74,7 +74,7 @@ public class FindMD5InUserMetadata implements ContainsValueInListStrategy {
|
|||
|
||||
@Inject
|
||||
FindMD5InUserMetadata(@Named(Constants.PROPERTY_USER_THREADS) ExecutorService userExecutor, ObjectMD5 objectMD5,
|
||||
ListBlobsInContainer getAllBlobMetadata, AtmosStorageAsyncClient client) {
|
||||
ListBlobsInContainer getAllBlobMetadata, AtmosAsyncClient client) {
|
||||
this.objectMD5 = objectMD5;
|
||||
this.getAllBlobMetadata = getAllBlobMetadata;
|
||||
this.client = client;
|
|
@ -17,10 +17,10 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.config;
|
||||
package org.jclouds.atmos.config;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.AtmosObject;
|
||||
import org.jclouds.atmosonline.saas.domain.MutableContentMetadata;
|
||||
import org.jclouds.atmos.domain.AtmosObject;
|
||||
import org.jclouds.atmos.domain.MutableContentMetadata;
|
||||
import org.jclouds.blobstore.config.BlobStoreObjectModule;
|
||||
|
||||
import com.google.inject.AbstractModule;
|
||||
|
@ -48,4 +48,4 @@ public class AtmosObjectModule extends AbstractModule {
|
|||
return factory.create((MutableContentMetadata) null);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.rackspace.config;
|
||||
package org.jclouds.atmos.config;
|
||||
|
||||
import org.jclouds.json.config.GsonModule.DateAdapter;
|
||||
import org.jclouds.json.config.GsonModule.Iso8601DateAdapter;
|
||||
|
@ -25,14 +25,15 @@ import org.jclouds.json.config.GsonModule.Iso8601DateAdapter;
|
|||
import com.google.inject.AbstractModule;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
public class RackspaceParserModule extends AbstractModule {
|
||||
public class AtmosParserModule extends AbstractModule {
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
bind(DateAdapter.class).to(Iso8601DateAdapter.class);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -17,17 +17,17 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.config;
|
||||
package org.jclouds.atmos.config;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import javax.inject.Named;
|
||||
|
||||
import org.jclouds.Constants;
|
||||
import org.jclouds.atmosonline.saas.AtmosStorageAsyncClient;
|
||||
import org.jclouds.atmosonline.saas.AtmosStorageClient;
|
||||
import org.jclouds.atmosonline.saas.handlers.AtmosStorageClientErrorRetryHandler;
|
||||
import org.jclouds.atmosonline.saas.handlers.ParseAtmosStorageErrorFromXmlContent;
|
||||
import org.jclouds.atmos.AtmosAsyncClient;
|
||||
import org.jclouds.atmos.AtmosClient;
|
||||
import org.jclouds.atmos.handlers.AtmosClientErrorRetryHandler;
|
||||
import org.jclouds.atmos.handlers.ParseAtmosErrorFromXmlContent;
|
||||
import org.jclouds.date.DateService;
|
||||
import org.jclouds.date.TimeStamp;
|
||||
import org.jclouds.http.HttpErrorHandler;
|
||||
|
@ -51,14 +51,14 @@ import com.google.inject.Provides;
|
|||
*/
|
||||
@ConfiguresRestClient
|
||||
@RequiresHttp
|
||||
public class AtmosStorageRestClientModule extends RestClientModule<AtmosStorageClient, AtmosStorageAsyncClient> {
|
||||
public AtmosStorageRestClientModule() {
|
||||
super(AtmosStorageClient.class, AtmosStorageAsyncClient.class);
|
||||
public class AtmosRestClientModule extends RestClientModule<AtmosClient, AtmosAsyncClient> {
|
||||
public AtmosRestClientModule() {
|
||||
super(AtmosClient.class, AtmosAsyncClient.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
install(new AtmosStorageParserModule());
|
||||
install(new AtmosParserModule());
|
||||
install(new AtmosObjectModule());
|
||||
super.configure();
|
||||
}
|
||||
|
@ -85,14 +85,14 @@ public class AtmosStorageRestClientModule extends RestClientModule<AtmosStorageC
|
|||
|
||||
@Override
|
||||
protected void bindErrorHandlers() {
|
||||
bind(HttpErrorHandler.class).annotatedWith(Redirection.class).to(ParseAtmosStorageErrorFromXmlContent.class);
|
||||
bind(HttpErrorHandler.class).annotatedWith(ClientError.class).to(ParseAtmosStorageErrorFromXmlContent.class);
|
||||
bind(HttpErrorHandler.class).annotatedWith(ServerError.class).to(ParseAtmosStorageErrorFromXmlContent.class);
|
||||
bind(HttpErrorHandler.class).annotatedWith(Redirection.class).to(ParseAtmosErrorFromXmlContent.class);
|
||||
bind(HttpErrorHandler.class).annotatedWith(ClientError.class).to(ParseAtmosErrorFromXmlContent.class);
|
||||
bind(HttpErrorHandler.class).annotatedWith(ServerError.class).to(ParseAtmosErrorFromXmlContent.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void bindRetryHandlers() {
|
||||
bind(HttpRetryHandler.class).annotatedWith(ClientError.class).to(AtmosStorageClientErrorRetryHandler.class);
|
||||
bind(HttpRetryHandler.class).annotatedWith(ClientError.class).to(AtmosClientErrorRetryHandler.class);
|
||||
}
|
||||
|
||||
}
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.domain;
|
||||
package org.jclouds.atmos.domain;
|
||||
|
||||
/**
|
||||
* When an Atmos Storage request is in error, the client receives an error response.
|
||||
|
@ -27,18 +27,18 @@ package org.jclouds.atmosonline.saas.domain;
|
|||
* @author Adrian Cole
|
||||
*
|
||||
*/
|
||||
public class AtmosStorageError {
|
||||
public class AtmosError {
|
||||
private final int code;
|
||||
private final String message;
|
||||
private String stringSigned;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "AtmosStorageError [code=" + code + ", message=" + message
|
||||
return "AtmosError [code=" + code + ", message=" + message
|
||||
+ (stringSigned != null ? (", stringSigned=" + stringSigned) : "") + "]";
|
||||
}
|
||||
|
||||
public AtmosStorageError(int code, String message) {
|
||||
public AtmosError(int code, String message) {
|
||||
this.code = code;
|
||||
this.message = message;
|
||||
}
|
|
@ -17,11 +17,11 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.domain;
|
||||
package org.jclouds.atmos.domain;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.internal.AtmosObjectImpl.AtmosObjectFactory;
|
||||
import org.jclouds.atmos.domain.internal.AtmosObjectImpl.AtmosObjectFactory;
|
||||
import org.jclouds.io.PayloadEnclosing;
|
||||
|
||||
import com.google.common.collect.Multimap;
|
||||
|
@ -55,4 +55,4 @@ public interface AtmosObject extends PayloadEnclosing, Comparable<AtmosObject> {
|
|||
Multimap<String, String> getAllHeaders();
|
||||
|
||||
void setAllHeaders(Multimap<String, String> allHeaders);
|
||||
}
|
||||
}
|
|
@ -17,13 +17,13 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.domain;
|
||||
package org.jclouds.atmos.domain;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.internal.BoundedLinkedHashSet;
|
||||
import org.jclouds.atmos.domain.internal.BoundedLinkedHashSet;
|
||||
|
||||
import com.google.inject.ImplementedBy;
|
||||
|
||||
|
@ -38,4 +38,4 @@ public interface BoundedSet<T> extends Set<T> {
|
|||
@Nullable
|
||||
String getToken();
|
||||
|
||||
}
|
||||
}
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.domain;
|
||||
package org.jclouds.atmos.domain;
|
||||
|
||||
/**
|
||||
* Metadata of a Atmos Online object
|
||||
|
@ -95,4 +95,4 @@ public class DirectoryEntry implements Comparable<DirectoryEntry> {
|
|||
return "DirectoryEntry [type=" + type + ", objectid=" + objectid + ", objname=" + objname
|
||||
+ "]";
|
||||
}
|
||||
}
|
||||
}
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.domain;
|
||||
package org.jclouds.atmos.domain;
|
||||
|
||||
public enum FileType {
|
||||
|
|
@ -17,9 +17,9 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.domain;
|
||||
package org.jclouds.atmos.domain;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.internal.DelegatingMutableContentMetadata;
|
||||
import org.jclouds.atmos.domain.internal.DelegatingMutableContentMetadata;
|
||||
|
||||
import com.google.inject.ImplementedBy;
|
||||
|
||||
|
@ -35,4 +35,4 @@ public interface MutableContentMetadata extends org.jclouds.io.MutableContentMet
|
|||
|
||||
public void setName(String name);
|
||||
|
||||
}
|
||||
}
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.domain;
|
||||
package org.jclouds.atmos.domain;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
|
@ -168,4 +168,4 @@ public class SystemMetadata extends DirectoryEntry {
|
|||
return "[type=" + getType() + ", id=" + getObjectID() + ", name=" + getObjectName() + "]";
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.domain;
|
||||
package org.jclouds.atmos.domain;
|
||||
|
||||
import java.net.URI;
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.domain;
|
||||
package org.jclouds.atmos.domain;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
|
@ -118,4 +118,4 @@ public class UserMetadata {
|
|||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.domain.internal;
|
||||
package org.jclouds.atmos.domain.internal;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
|
@ -25,10 +25,10 @@ import javax.inject.Inject;
|
|||
import javax.inject.Provider;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.AtmosObject;
|
||||
import org.jclouds.atmosonline.saas.domain.MutableContentMetadata;
|
||||
import org.jclouds.atmosonline.saas.domain.SystemMetadata;
|
||||
import org.jclouds.atmosonline.saas.domain.UserMetadata;
|
||||
import org.jclouds.atmos.domain.AtmosObject;
|
||||
import org.jclouds.atmos.domain.MutableContentMetadata;
|
||||
import org.jclouds.atmos.domain.SystemMetadata;
|
||||
import org.jclouds.atmos.domain.UserMetadata;
|
||||
import org.jclouds.http.internal.PayloadEnclosingImpl;
|
||||
import org.jclouds.io.Payload;
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.domain.internal;
|
||||
package org.jclouds.atmos.domain.internal;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
|
@ -25,7 +25,7 @@ import java.util.LinkedHashSet;
|
|||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.BoundedSet;
|
||||
import org.jclouds.atmos.domain.BoundedSet;
|
||||
|
||||
import com.google.common.collect.Iterables;
|
||||
|
||||
|
@ -80,4 +80,4 @@ public class BoundedLinkedHashSet<T> extends LinkedHashSet<T> implements Bounded
|
|||
return "[token=" + token + ", contents=" + super.toString() + "]";
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -17,9 +17,9 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.domain.internal;
|
||||
package org.jclouds.atmos.domain.internal;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.MutableContentMetadata;
|
||||
import org.jclouds.atmos.domain.MutableContentMetadata;
|
||||
import org.jclouds.io.payloads.BaseMutableContentMetadata;
|
||||
|
||||
import com.google.common.collect.Multimap;
|
||||
|
@ -157,4 +157,4 @@ public class DelegatingMutableContentMetadata implements MutableContentMetadata
|
|||
delegate.setPropertiesFromHttpHeaders(headers);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.filters;
|
||||
package org.jclouds.atmos.filters;
|
||||
|
||||
import static org.jclouds.Constants.LOGGER_SIGNATURE;
|
||||
import static org.jclouds.Constants.PROPERTY_CREDENTIAL;
|
||||
|
@ -35,7 +35,7 @@ import javax.inject.Provider;
|
|||
import javax.inject.Singleton;
|
||||
import javax.ws.rs.core.HttpHeaders;
|
||||
|
||||
import org.jclouds.atmosonline.saas.reference.AtmosStorageHeaders;
|
||||
import org.jclouds.atmos.reference.AtmosHeaders;
|
||||
import org.jclouds.crypto.Crypto;
|
||||
import org.jclouds.crypto.CryptoStreams;
|
||||
import org.jclouds.date.TimeStamp;
|
||||
|
@ -93,14 +93,14 @@ public class SignRequest implements HttpRequestFilter {
|
|||
@Override
|
||||
public HttpRequest filter(HttpRequest request) throws HttpException {
|
||||
Builder<String, String> builder = ImmutableMap.builder();
|
||||
builder.put(AtmosStorageHeaders.UID, uid);
|
||||
builder.put(AtmosHeaders.UID, uid);
|
||||
String date = timeStampProvider.get();
|
||||
builder.put(HttpHeaders.DATE, date);
|
||||
if (request.getHeaders().containsKey(AtmosStorageHeaders.DATE))
|
||||
builder.put(AtmosStorageHeaders.DATE, date);
|
||||
if (request.getHeaders().containsKey(AtmosHeaders.DATE))
|
||||
builder.put(AtmosHeaders.DATE, date);
|
||||
request = ModifyRequest.replaceHeaders(request, Multimaps.forMap(builder.build()));
|
||||
String signature = calculateSignature(createStringToSign(request));
|
||||
request = ModifyRequest.replaceHeader(request, AtmosStorageHeaders.SIGNATURE, signature);
|
||||
request = ModifyRequest.replaceHeader(request, AtmosHeaders.SIGNATURE, signature);
|
||||
utils.logRequest(signatureLog, request, "<<");
|
||||
return request;
|
||||
}
|
||||
|
@ -144,7 +144,7 @@ public class SignRequest implements HttpRequestFilter {
|
|||
// TreeSet == Sort the headers alphabetically.
|
||||
Set<String> headers = new TreeSet<String>(request.getHeaders().keySet());
|
||||
for (String header : headers) {
|
||||
if (header.startsWith("x-emc-") && !header.equals(AtmosStorageHeaders.SIGNATURE)) {
|
||||
if (header.startsWith("x-emc-") && !header.equals(AtmosHeaders.SIGNATURE)) {
|
||||
// Convert all header names to lowercase.
|
||||
toSign.append(header.toLowerCase()).append(":");
|
||||
// For headers with values that span multiple lines, convert them into one line by
|
||||
|
@ -188,4 +188,4 @@ public class SignRequest implements HttpRequestFilter {
|
|||
toSign.append(request.getEndpoint().getRawPath().toLowerCase()).append("\n");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -17,14 +17,14 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.functions;
|
||||
package org.jclouds.atmos.functions;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.AtmosObject;
|
||||
import org.jclouds.atmos.domain.AtmosObject;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
|
||||
|
@ -44,4 +44,4 @@ public class AtmosObjectName implements Function<Object, String> {
|
|||
: object.getSystemMetadata().getObjectName(), "objectName");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.functions;
|
||||
package org.jclouds.atmos.functions;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
|
@ -25,11 +25,11 @@ import javax.inject.Inject;
|
|||
import javax.inject.Provider;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.BoundedSet;
|
||||
import org.jclouds.atmosonline.saas.domain.DirectoryEntry;
|
||||
import org.jclouds.atmosonline.saas.domain.internal.BoundedLinkedHashSet;
|
||||
import org.jclouds.atmosonline.saas.reference.AtmosStorageHeaders;
|
||||
import org.jclouds.atmosonline.saas.xml.ListDirectoryResponseHandler;
|
||||
import org.jclouds.atmos.domain.BoundedSet;
|
||||
import org.jclouds.atmos.domain.DirectoryEntry;
|
||||
import org.jclouds.atmos.domain.internal.BoundedLinkedHashSet;
|
||||
import org.jclouds.atmos.reference.AtmosHeaders;
|
||||
import org.jclouds.atmos.xml.ListDirectoryResponseHandler;
|
||||
import org.jclouds.http.HttpResponse;
|
||||
import org.jclouds.http.functions.ParseSax;
|
||||
import org.jclouds.http.functions.ParseSax.Factory;
|
||||
|
@ -58,7 +58,7 @@ public class ParseDirectoryListFromContentAndHeaders implements Function<HttpRes
|
|||
*/
|
||||
public BoundedSet<DirectoryEntry> apply(HttpResponse from) {
|
||||
checkNotNull(from, "http response");
|
||||
String token = from.getFirstHeaderOrNull(AtmosStorageHeaders.TOKEN);
|
||||
String token = from.getFirstHeaderOrNull(AtmosHeaders.TOKEN);
|
||||
return new BoundedLinkedHashSet<DirectoryEntry>(factory.create(listHandlerProvider.get()).parse(
|
||||
from.getPayload().getInput()), token);
|
||||
}
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.functions;
|
||||
package org.jclouds.atmos.functions;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static org.jclouds.http.HttpUtils.attemptToParseSizeAndRangeFromHeaders;
|
||||
|
@ -25,7 +25,7 @@ import static org.jclouds.http.HttpUtils.attemptToParseSizeAndRangeFromHeaders;
|
|||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.AtmosObject;
|
||||
import org.jclouds.atmos.domain.AtmosObject;
|
||||
import org.jclouds.blobstore.functions.ParseSystemAndUserMetadataFromHeaders;
|
||||
import org.jclouds.http.HttpResponse;
|
||||
|
||||
|
@ -69,4 +69,4 @@ public class ParseObjectFromHeadersAndHttpContent implements Function<HttpRespon
|
|||
object.getContentMetadata().setContentLength(attemptToParseSizeAndRangeFromHeaders(from));
|
||||
return object;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.functions;
|
||||
package org.jclouds.atmos.functions;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
|
@ -26,9 +26,9 @@ import java.util.Map;
|
|||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.FileType;
|
||||
import org.jclouds.atmosonline.saas.domain.SystemMetadata;
|
||||
import org.jclouds.atmosonline.saas.reference.AtmosStorageHeaders;
|
||||
import org.jclouds.atmos.domain.FileType;
|
||||
import org.jclouds.atmos.domain.SystemMetadata;
|
||||
import org.jclouds.atmos.reference.AtmosHeaders;
|
||||
import org.jclouds.crypto.CryptoStreams;
|
||||
import org.jclouds.date.DateService;
|
||||
import org.jclouds.http.HttpResponse;
|
||||
|
@ -50,7 +50,7 @@ public class ParseSystemMetadataFromHeaders implements Function<HttpResponse, Sy
|
|||
|
||||
public SystemMetadata apply(HttpResponse from) {
|
||||
checkNotNull(from, "http response");
|
||||
String meta = checkNotNull(from.getFirstHeaderOrNull(AtmosStorageHeaders.META), AtmosStorageHeaders.META);
|
||||
String meta = checkNotNull(from.getFirstHeaderOrNull(AtmosHeaders.META), AtmosHeaders.META);
|
||||
Map<String, String> metaMap = Maps.newHashMap();
|
||||
String[] metas = meta.split(", ");
|
||||
for (String entry : metas) {
|
||||
|
@ -68,4 +68,4 @@ public class ParseSystemMetadataFromHeaders implements Function<HttpResponse, Sy
|
|||
"policyname"), Long.parseLong(checkNotNull(metaMap.get("size"), "size")),
|
||||
FileType.fromValue(checkNotNull(metaMap.get("type"), "type")), checkNotNull(metaMap.get("uid"), "uid"));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.functions;
|
||||
package org.jclouds.atmos.functions;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
|
@ -26,8 +26,8 @@ import java.util.Set;
|
|||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.UserMetadata;
|
||||
import org.jclouds.atmosonline.saas.reference.AtmosStorageHeaders;
|
||||
import org.jclouds.atmos.domain.UserMetadata;
|
||||
import org.jclouds.atmos.reference.AtmosHeaders;
|
||||
import org.jclouds.http.HttpResponse;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
|
@ -58,17 +58,17 @@ public class ParseUserMetadataFromHeaders implements Function<HttpResponse, User
|
|||
checkNotNull(from, "http response");
|
||||
|
||||
Map<String, String> meta = Maps.filterKeys(
|
||||
getMetaMap(checkNotNull(from.getFirstHeaderOrNull(AtmosStorageHeaders.META), AtmosStorageHeaders.META)),
|
||||
getMetaMap(checkNotNull(from.getFirstHeaderOrNull(AtmosHeaders.META), AtmosHeaders.META)),
|
||||
filter);
|
||||
|
||||
Map<String, String> listableMeta = (from.getFirstHeaderOrNull(AtmosStorageHeaders.LISTABLE_META) != null) ? getMetaMap(from
|
||||
.getFirstHeaderOrNull(AtmosStorageHeaders.LISTABLE_META)) : ImmutableMap.<String, String> of();
|
||||
Map<String, String> listableMeta = (from.getFirstHeaderOrNull(AtmosHeaders.LISTABLE_META) != null) ? getMetaMap(from
|
||||
.getFirstHeaderOrNull(AtmosHeaders.LISTABLE_META)) : ImmutableMap.<String, String> of();
|
||||
|
||||
Iterable<String> tags = (from.getFirstHeaderOrNull(AtmosStorageHeaders.TAGS) != null) ? Splitter.on(", ").split(
|
||||
from.getFirstHeaderOrNull(AtmosStorageHeaders.TAGS)) : ImmutableSet.<String> of();
|
||||
Iterable<String> tags = (from.getFirstHeaderOrNull(AtmosHeaders.TAGS) != null) ? Splitter.on(", ").split(
|
||||
from.getFirstHeaderOrNull(AtmosHeaders.TAGS)) : ImmutableSet.<String> of();
|
||||
|
||||
Iterable<String> listableTags = (from.getFirstHeaderOrNull(AtmosStorageHeaders.LISTABLE_TAGS) != null) ? Splitter
|
||||
.on(", ").split(from.getFirstHeaderOrNull(AtmosStorageHeaders.LISTABLE_TAGS)) : ImmutableSet.<String> of();
|
||||
Iterable<String> listableTags = (from.getFirstHeaderOrNull(AtmosHeaders.LISTABLE_TAGS) != null) ? Splitter
|
||||
.on(", ").split(from.getFirstHeaderOrNull(AtmosHeaders.LISTABLE_TAGS)) : ImmutableSet.<String> of();
|
||||
|
||||
return new UserMetadata(meta, listableMeta, tags, listableTags);
|
||||
}
|
||||
|
@ -82,4 +82,4 @@ public class ParseUserMetadataFromHeaders implements Function<HttpResponse, User
|
|||
}
|
||||
return metaMap.build();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.functions;
|
||||
package org.jclouds.atmos.functions;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static org.jclouds.util.Throwables2.propagateOrNull;
|
||||
|
@ -60,4 +60,4 @@ public class ReturnEndpointIfAlreadyExists implements Function<Exception, URI>,
|
|||
return this;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -17,14 +17,14 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.handlers;
|
||||
package org.jclouds.atmos.handlers;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.inject.Named;
|
||||
|
||||
import org.jclouds.Constants;
|
||||
import org.jclouds.atmosonline.saas.domain.AtmosStorageError;
|
||||
import org.jclouds.atmosonline.saas.util.AtmosStorageUtils;
|
||||
import org.jclouds.atmos.domain.AtmosError;
|
||||
import org.jclouds.atmos.util.AtmosUtils;
|
||||
import org.jclouds.http.HttpCommand;
|
||||
import org.jclouds.http.HttpException;
|
||||
import org.jclouds.http.HttpResponse;
|
||||
|
@ -40,13 +40,13 @@ import com.google.inject.Inject;
|
|||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
public class AtmosStorageClientErrorRetryHandler implements HttpRetryHandler {
|
||||
private final AtmosStorageUtils utils;
|
||||
public class AtmosClientErrorRetryHandler implements HttpRetryHandler {
|
||||
private final AtmosUtils utils;
|
||||
private final BackoffLimitedRetryHandler backoffHandler;
|
||||
|
||||
@Inject
|
||||
public AtmosStorageClientErrorRetryHandler(BackoffLimitedRetryHandler backoffHandler,
|
||||
AtmosStorageUtils utils) {
|
||||
public AtmosClientErrorRetryHandler(BackoffLimitedRetryHandler backoffHandler,
|
||||
AtmosUtils utils) {
|
||||
this.backoffHandler = backoffHandler;
|
||||
this.utils = utils;
|
||||
}
|
||||
|
@ -68,7 +68,7 @@ public class AtmosStorageClientErrorRetryHandler implements HttpRetryHandler {
|
|||
// Content can be null in the case of HEAD requests
|
||||
if (content != null) {
|
||||
try {
|
||||
AtmosStorageError error = utils.parseAtmosStorageErrorFromContent(command, response,
|
||||
AtmosError error = utils.parseAtmosErrorFromContent(command, response,
|
||||
new String(content));
|
||||
if (error.getCode() == 1016) {
|
||||
return backoffHandler.shouldRetryRequest(command, response);
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.handlers;
|
||||
package org.jclouds.atmos.handlers;
|
||||
|
||||
import static org.jclouds.http.HttpUtils.releasePayload;
|
||||
|
||||
|
@ -30,9 +30,9 @@ import javax.annotation.Resource;
|
|||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.atmosonline.saas.AtmosStorageResponseException;
|
||||
import org.jclouds.atmosonline.saas.domain.AtmosStorageError;
|
||||
import org.jclouds.atmosonline.saas.util.AtmosStorageUtils;
|
||||
import org.jclouds.atmos.AtmosResponseException;
|
||||
import org.jclouds.atmos.domain.AtmosError;
|
||||
import org.jclouds.atmos.util.AtmosUtils;
|
||||
import org.jclouds.blobstore.ContainerNotFoundException;
|
||||
import org.jclouds.blobstore.KeyAlreadyExistsException;
|
||||
import org.jclouds.blobstore.KeyNotFoundException;
|
||||
|
@ -47,19 +47,19 @@ import org.jclouds.util.Strings2;
|
|||
/**
|
||||
* This will parse and set an appropriate exception on the command object.
|
||||
*
|
||||
* @see AtmosStorageError
|
||||
* @see AtmosError
|
||||
* @author Adrian Cole
|
||||
*
|
||||
*/
|
||||
@Singleton
|
||||
public class ParseAtmosStorageErrorFromXmlContent implements HttpErrorHandler {
|
||||
public class ParseAtmosErrorFromXmlContent implements HttpErrorHandler {
|
||||
@Resource
|
||||
protected Logger logger = Logger.NULL;
|
||||
|
||||
private final AtmosStorageUtils utils;
|
||||
private final AtmosUtils utils;
|
||||
|
||||
@Inject
|
||||
public ParseAtmosStorageErrorFromXmlContent(AtmosStorageUtils utils) {
|
||||
public ParseAtmosErrorFromXmlContent(AtmosUtils utils) {
|
||||
this.utils = utils;
|
||||
}
|
||||
|
||||
|
@ -69,12 +69,12 @@ public class ParseAtmosStorageErrorFromXmlContent implements HttpErrorHandler {
|
|||
public void handleError(HttpCommand command, HttpResponse response) {
|
||||
Exception exception = new HttpResponseException(command, response);
|
||||
try {
|
||||
AtmosStorageError error = null;
|
||||
AtmosError error = null;
|
||||
if (response.getPayload() != null) {
|
||||
try {
|
||||
String content = Strings2.toStringAndClose(response.getPayload().getInput());
|
||||
if (content != null && content.indexOf('<') >= 0) {
|
||||
error = utils.parseAtmosStorageErrorFromContent(command, response, Strings2.toInputStream(content));
|
||||
error = utils.parseAtmosErrorFromContent(command, response, Strings2.toInputStream(content));
|
||||
} else {
|
||||
exception = content != null ? new HttpResponseException(command, response, content) : exception;
|
||||
}
|
||||
|
@ -107,7 +107,7 @@ public class ParseAtmosStorageErrorFromXmlContent implements HttpErrorHandler {
|
|||
}
|
||||
break;
|
||||
default:
|
||||
exception = error != null ? new AtmosStorageResponseException(command, response, error)
|
||||
exception = error != null ? new AtmosResponseException(command, response, error)
|
||||
: new HttpResponseException(command, response);
|
||||
|
||||
}
|
||||
|
@ -118,4 +118,4 @@ public class ParseAtmosStorageErrorFromXmlContent implements HttpErrorHandler {
|
|||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.options;
|
||||
package org.jclouds.atmos.options;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
|
@ -17,16 +17,16 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.reference;
|
||||
package org.jclouds.atmos.reference;
|
||||
|
||||
/**
|
||||
* Query parameters common to AtmosStorage apis.
|
||||
* Query parameters common to Atmos apis.
|
||||
*
|
||||
* @see <a href="https://community.emc.com/community/labs/atmos_online" />
|
||||
* @author Adrian Cole
|
||||
*
|
||||
*/
|
||||
public interface AtmosStorageHeaders {
|
||||
public interface AtmosHeaders {
|
||||
|
||||
public static final String SIGNATURE = "x-emc-signature";
|
||||
public static final String LISTABLE_META = "x-emc-listable-meta";
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.util;
|
||||
package org.jclouds.atmos.util;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.InputStream;
|
||||
|
@ -25,11 +25,11 @@ import java.io.InputStream;
|
|||
import javax.inject.Inject;
|
||||
import javax.inject.Provider;
|
||||
|
||||
import org.jclouds.atmosonline.saas.AtmosStorageClient;
|
||||
import org.jclouds.atmosonline.saas.blobstore.functions.BlobToObject;
|
||||
import org.jclouds.atmosonline.saas.domain.AtmosStorageError;
|
||||
import org.jclouds.atmosonline.saas.filters.SignRequest;
|
||||
import org.jclouds.atmosonline.saas.xml.ErrorHandler;
|
||||
import org.jclouds.atmos.AtmosClient;
|
||||
import org.jclouds.atmos.blobstore.functions.BlobToObject;
|
||||
import org.jclouds.atmos.domain.AtmosError;
|
||||
import org.jclouds.atmos.filters.SignRequest;
|
||||
import org.jclouds.atmos.xml.ErrorHandler;
|
||||
import org.jclouds.blobstore.domain.Blob;
|
||||
import org.jclouds.crypto.Crypto;
|
||||
import org.jclouds.http.HttpCommand;
|
||||
|
@ -46,7 +46,7 @@ import com.google.common.base.Supplier;
|
|||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
public class AtmosStorageUtils {
|
||||
public class AtmosUtils {
|
||||
|
||||
@Inject
|
||||
SignRequest signer;
|
||||
|
@ -57,9 +57,9 @@ public class AtmosStorageUtils {
|
|||
@Inject
|
||||
Provider<ErrorHandler> errorHandlerProvider;
|
||||
|
||||
public AtmosStorageError parseAtmosStorageErrorFromContent(HttpCommand command, HttpResponse response,
|
||||
public AtmosError parseAtmosErrorFromContent(HttpCommand command, HttpResponse response,
|
||||
InputStream content) throws HttpException {
|
||||
AtmosStorageError error = (AtmosStorageError) factory.create(errorHandlerProvider.get()).parse(content);
|
||||
AtmosError error = (AtmosError) factory.create(errorHandlerProvider.get()).parse(content);
|
||||
if (error.getCode() == 1032) {
|
||||
error.setStringSigned(signer.createStringToSign(command.getCurrentRequest()));
|
||||
}
|
||||
|
@ -67,7 +67,7 @@ public class AtmosStorageUtils {
|
|||
|
||||
}
|
||||
|
||||
public static String putBlob(final AtmosStorageClient sync, Crypto crypto, BlobToObject blob2Object,
|
||||
public static String putBlob(final AtmosClient sync, Crypto crypto, BlobToObject blob2Object,
|
||||
String container, Blob blob) {
|
||||
final String path = container + "/" + blob.getMetadata().getName();
|
||||
deleteAndEnsureGone(sync, path);
|
||||
|
@ -75,7 +75,7 @@ public class AtmosStorageUtils {
|
|||
return path;
|
||||
}
|
||||
|
||||
public static void deleteAndEnsureGone(final AtmosStorageClient sync, final String path) {
|
||||
public static void deleteAndEnsureGone(final AtmosClient sync, final String path) {
|
||||
try {
|
||||
if (!Assertions.eventuallyTrue(new Supplier<Boolean>() {
|
||||
public Boolean get() {
|
||||
|
@ -90,9 +90,9 @@ public class AtmosStorageUtils {
|
|||
}
|
||||
}
|
||||
|
||||
public AtmosStorageError parseAtmosStorageErrorFromContent(HttpCommand command, HttpResponse response, String content)
|
||||
public AtmosError parseAtmosErrorFromContent(HttpCommand command, HttpResponse response, String content)
|
||||
throws HttpException {
|
||||
return parseAtmosStorageErrorFromContent(command, response, new ByteArrayInputStream(content.getBytes()));
|
||||
return parseAtmosErrorFromContent(command, response, new ByteArrayInputStream(content.getBytes()));
|
||||
}
|
||||
|
||||
public static String adjustContainerIfDirOptionPresent(String container,
|
||||
|
@ -107,4 +107,4 @@ public class AtmosStorageUtils {
|
|||
}
|
||||
return container;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -17,9 +17,9 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.xml;
|
||||
package org.jclouds.atmos.xml;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.AtmosStorageError;
|
||||
import org.jclouds.atmos.domain.AtmosError;
|
||||
import org.jclouds.http.functions.ParseSax;
|
||||
|
||||
/**
|
||||
|
@ -27,14 +27,14 @@ import org.jclouds.http.functions.ParseSax;
|
|||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
public class ErrorHandler extends ParseSax.HandlerWithResult<AtmosStorageError> {
|
||||
public class ErrorHandler extends ParseSax.HandlerWithResult<AtmosError> {
|
||||
|
||||
private StringBuilder currentText = new StringBuilder();
|
||||
private int code;
|
||||
private String message;
|
||||
|
||||
public AtmosStorageError getResult() {
|
||||
return new AtmosStorageError(code, message);
|
||||
public AtmosError getResult() {
|
||||
return new AtmosError(code, message);
|
||||
}
|
||||
|
||||
public void endElement(String uri, String name, String qName) {
|
|
@ -17,12 +17,12 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.xml;
|
||||
package org.jclouds.atmos.xml;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.DirectoryEntry;
|
||||
import org.jclouds.atmosonline.saas.domain.FileType;
|
||||
import org.jclouds.atmos.domain.DirectoryEntry;
|
||||
import org.jclouds.atmos.domain.FileType;
|
||||
import org.jclouds.http.functions.ParseSax;
|
||||
|
||||
import com.google.common.collect.Sets;
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas;
|
||||
package org.jclouds.atmos;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
|
||||
|
@ -28,15 +28,15 @@ import java.util.Properties;
|
|||
|
||||
import javax.ws.rs.core.HttpHeaders;
|
||||
|
||||
import org.jclouds.atmosonline.saas.blobstore.functions.BlobToObject;
|
||||
import org.jclouds.atmosonline.saas.config.AtmosStorageRestClientModule;
|
||||
import org.jclouds.atmosonline.saas.domain.AtmosObject;
|
||||
import org.jclouds.atmosonline.saas.filters.SignRequest;
|
||||
import org.jclouds.atmosonline.saas.functions.ParseDirectoryListFromContentAndHeaders;
|
||||
import org.jclouds.atmosonline.saas.functions.ParseObjectFromHeadersAndHttpContent;
|
||||
import org.jclouds.atmosonline.saas.functions.ParseSystemMetadataFromHeaders;
|
||||
import org.jclouds.atmosonline.saas.functions.ReturnEndpointIfAlreadyExists;
|
||||
import org.jclouds.atmosonline.saas.options.ListOptions;
|
||||
import org.jclouds.atmos.blobstore.functions.BlobToObject;
|
||||
import org.jclouds.atmos.config.AtmosRestClientModule;
|
||||
import org.jclouds.atmos.domain.AtmosObject;
|
||||
import org.jclouds.atmos.filters.SignRequest;
|
||||
import org.jclouds.atmos.functions.ParseDirectoryListFromContentAndHeaders;
|
||||
import org.jclouds.atmos.functions.ParseObjectFromHeadersAndHttpContent;
|
||||
import org.jclouds.atmos.functions.ParseSystemMetadataFromHeaders;
|
||||
import org.jclouds.atmos.functions.ReturnEndpointIfAlreadyExists;
|
||||
import org.jclouds.atmos.options.ListOptions;
|
||||
import org.jclouds.blobstore.binders.BindBlobToMultipartFormTest;
|
||||
import org.jclouds.blobstore.functions.ThrowContainerNotFoundOn404;
|
||||
import org.jclouds.blobstore.functions.ThrowKeyNotFoundOn404;
|
||||
|
@ -61,19 +61,19 @@ import com.google.inject.Module;
|
|||
import com.google.inject.TypeLiteral;
|
||||
|
||||
/**
|
||||
* Tests behavior of {@code AtmosStorageAsyncClient}
|
||||
* Tests behavior of {@code AtmosAsyncClient}
|
||||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
// NOTE:without testName, this will not call @Before* and fail w/NPE during surefire
|
||||
@Test(groups = "unit", testName = "AtmosStorageAsyncClientTest")
|
||||
public class AtmosStorageAsyncClientTest extends RestClientTest<AtmosStorageAsyncClient> {
|
||||
@Test(groups = "unit", testName = "AtmosAsyncClientTest")
|
||||
public class AtmosAsyncClientTest extends RestClientTest<AtmosAsyncClient> {
|
||||
|
||||
private BlobToObject blobToObject;
|
||||
|
||||
public void testListDirectories() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = AtmosStorageAsyncClient.class.getMethod("listDirectories", Array
|
||||
.newInstance(ListOptions.class, 0).getClass());
|
||||
Method method = AtmosAsyncClient.class.getMethod("listDirectories", Array.newInstance(ListOptions.class, 0)
|
||||
.getClass());
|
||||
HttpRequest request = processor.createRequest(method);
|
||||
|
||||
assertRequestLineEquals(request, "GET https://accesspoint.atmosonline.com/rest/namespace HTTP/1.1");
|
||||
|
@ -88,7 +88,7 @@ public class AtmosStorageAsyncClientTest extends RestClientTest<AtmosStorageAsyn
|
|||
}
|
||||
|
||||
public void testListDirectory() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = AtmosStorageAsyncClient.class.getMethod("listDirectory", String.class, Array.newInstance(
|
||||
Method method = AtmosAsyncClient.class.getMethod("listDirectory", String.class, Array.newInstance(
|
||||
ListOptions.class, 0).getClass());
|
||||
HttpRequest request = processor.createRequest(method, "directory");
|
||||
|
||||
|
@ -104,8 +104,8 @@ public class AtmosStorageAsyncClientTest extends RestClientTest<AtmosStorageAsyn
|
|||
}
|
||||
|
||||
public void testListDirectoriesOptions() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = AtmosStorageAsyncClient.class.getMethod("listDirectories", Array
|
||||
.newInstance(ListOptions.class, 0).getClass());
|
||||
Method method = AtmosAsyncClient.class.getMethod("listDirectories", Array.newInstance(ListOptions.class, 0)
|
||||
.getClass());
|
||||
HttpRequest request = processor.createRequest(method, new ListOptions().limit(1).token("asda"));
|
||||
|
||||
assertRequestLineEquals(request, "GET https://accesspoint.atmosonline.com/rest/namespace HTTP/1.1");
|
||||
|
@ -120,7 +120,7 @@ public class AtmosStorageAsyncClientTest extends RestClientTest<AtmosStorageAsyn
|
|||
}
|
||||
|
||||
public void testListDirectoryOptions() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = AtmosStorageAsyncClient.class.getMethod("listDirectory", String.class, Array.newInstance(
|
||||
Method method = AtmosAsyncClient.class.getMethod("listDirectory", String.class, Array.newInstance(
|
||||
ListOptions.class, 0).getClass());
|
||||
HttpRequest request = processor.createRequest(method, "directory", new ListOptions().limit(1).token("asda"));
|
||||
|
||||
|
@ -136,7 +136,7 @@ public class AtmosStorageAsyncClientTest extends RestClientTest<AtmosStorageAsyn
|
|||
}
|
||||
|
||||
public void testCreateDirectory() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = AtmosStorageAsyncClient.class.getMethod("createDirectory", String.class);
|
||||
Method method = AtmosAsyncClient.class.getMethod("createDirectory", String.class);
|
||||
HttpRequest request = processor.createRequest(method, "dir");
|
||||
|
||||
assertRequestLineEquals(request, "POST https://accesspoint.atmosonline.com/rest/namespace/dir/ HTTP/1.1");
|
||||
|
@ -151,7 +151,7 @@ public class AtmosStorageAsyncClientTest extends RestClientTest<AtmosStorageAsyn
|
|||
}
|
||||
|
||||
public void testCreateFile() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = AtmosStorageAsyncClient.class.getMethod("createFile", String.class, AtmosObject.class);
|
||||
Method method = AtmosAsyncClient.class.getMethod("createFile", String.class, AtmosObject.class);
|
||||
HttpRequest request = processor.createRequest(method, "dir", blobToObject
|
||||
.apply(BindBlobToMultipartFormTest.TEST_BLOB));
|
||||
|
||||
|
@ -167,7 +167,7 @@ public class AtmosStorageAsyncClientTest extends RestClientTest<AtmosStorageAsyn
|
|||
}
|
||||
|
||||
public void testUpdateFile() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = AtmosStorageAsyncClient.class.getMethod("updateFile", String.class, AtmosObject.class);
|
||||
Method method = AtmosAsyncClient.class.getMethod("updateFile", String.class, AtmosObject.class);
|
||||
HttpRequest request = processor.createRequest(method, "dir", blobToObject
|
||||
.apply(BindBlobToMultipartFormTest.TEST_BLOB));
|
||||
|
||||
|
@ -183,7 +183,7 @@ public class AtmosStorageAsyncClientTest extends RestClientTest<AtmosStorageAsyn
|
|||
}
|
||||
|
||||
public void testReadFile() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = AtmosStorageAsyncClient.class.getMethod("readFile", String.class, GetOptions[].class);
|
||||
Method method = AtmosAsyncClient.class.getMethod("readFile", String.class, GetOptions[].class);
|
||||
HttpRequest request = processor.createRequest(method, "dir/file");
|
||||
|
||||
assertRequestLineEquals(request, "GET https://accesspoint.atmosonline.com/rest/namespace/dir/file HTTP/1.1");
|
||||
|
@ -198,7 +198,7 @@ public class AtmosStorageAsyncClientTest extends RestClientTest<AtmosStorageAsyn
|
|||
}
|
||||
|
||||
public void testGetSystemMetadata() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = AtmosStorageAsyncClient.class.getMethod("getSystemMetadata", String.class);
|
||||
Method method = AtmosAsyncClient.class.getMethod("getSystemMetadata", String.class);
|
||||
HttpRequest request = processor.createRequest(method, "dir/file");
|
||||
|
||||
assertRequestLineEquals(request, "HEAD https://accesspoint.atmosonline.com/rest/namespace/dir/file HTTP/1.1");
|
||||
|
@ -213,7 +213,7 @@ public class AtmosStorageAsyncClientTest extends RestClientTest<AtmosStorageAsyn
|
|||
}
|
||||
|
||||
public void testDeletePath() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = AtmosStorageAsyncClient.class.getMethod("deletePath", String.class);
|
||||
Method method = AtmosAsyncClient.class.getMethod("deletePath", String.class);
|
||||
HttpRequest request = processor.createRequest(method, "dir/file");
|
||||
|
||||
assertRequestLineEquals(request, "DELETE https://accesspoint.atmosonline.com/rest/namespace/dir/file HTTP/1.1");
|
||||
|
@ -228,7 +228,7 @@ public class AtmosStorageAsyncClientTest extends RestClientTest<AtmosStorageAsyn
|
|||
}
|
||||
|
||||
public void testNewObject() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = AtmosStorageAsyncClient.class.getMethod("newObject");
|
||||
Method method = AtmosAsyncClient.class.getMethod("newObject");
|
||||
assertEquals(method.getReturnType(), AtmosObject.class);
|
||||
}
|
||||
|
||||
|
@ -239,8 +239,8 @@ public class AtmosStorageAsyncClientTest extends RestClientTest<AtmosStorageAsyn
|
|||
}
|
||||
|
||||
@Override
|
||||
protected TypeLiteral<RestAnnotationProcessor<AtmosStorageAsyncClient>> createTypeLiteral() {
|
||||
return new TypeLiteral<RestAnnotationProcessor<AtmosStorageAsyncClient>>() {
|
||||
protected TypeLiteral<RestAnnotationProcessor<AtmosAsyncClient>> createTypeLiteral() {
|
||||
return new TypeLiteral<RestAnnotationProcessor<AtmosAsyncClient>>() {
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -253,12 +253,12 @@ public class AtmosStorageAsyncClientTest extends RestClientTest<AtmosStorageAsyn
|
|||
|
||||
@Override
|
||||
protected Module createModule() {
|
||||
return new TestAtmosStorageRestClientModule();
|
||||
return new TestAtmosRestClientModule();
|
||||
}
|
||||
|
||||
@RequiresHttp
|
||||
@ConfiguresRestClient
|
||||
private static final class TestAtmosStorageRestClientModule extends AtmosStorageRestClientModule {
|
||||
private static final class TestAtmosRestClientModule extends AtmosRestClientModule {
|
||||
@Override
|
||||
protected void configure() {
|
||||
super.configure();
|
||||
|
@ -270,9 +270,13 @@ public class AtmosStorageAsyncClientTest extends RestClientTest<AtmosStorageAsyn
|
|||
}
|
||||
}
|
||||
|
||||
protected String provider = "atmos";
|
||||
|
||||
@Override
|
||||
public RestContextSpec<?, ?> createContextSpec() {
|
||||
return new RestContextFactory().createContextSpec("atmosonline", "identity", "credential", new Properties());
|
||||
Properties props = new Properties();
|
||||
props.setProperty(provider + ".endpoint", "https://accesspoint.atmosonline.com");
|
||||
return new RestContextFactory().createContextSpec(provider, "identity", "credential", props);
|
||||
}
|
||||
|
||||
}
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas;
|
||||
package org.jclouds.atmos;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
|
||||
|
@ -28,12 +28,12 @@ import java.security.SecureRandom;
|
|||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.TimeoutException;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.AtmosObject;
|
||||
import org.jclouds.atmosonline.saas.domain.BoundedSet;
|
||||
import org.jclouds.atmosonline.saas.domain.DirectoryEntry;
|
||||
import org.jclouds.atmosonline.saas.domain.FileType;
|
||||
import org.jclouds.atmosonline.saas.domain.SystemMetadata;
|
||||
import org.jclouds.atmosonline.saas.options.ListOptions;
|
||||
import org.jclouds.atmos.domain.AtmosObject;
|
||||
import org.jclouds.atmos.domain.BoundedSet;
|
||||
import org.jclouds.atmos.domain.DirectoryEntry;
|
||||
import org.jclouds.atmos.domain.FileType;
|
||||
import org.jclouds.atmos.domain.SystemMetadata;
|
||||
import org.jclouds.atmos.options.ListOptions;
|
||||
import org.jclouds.blobstore.KeyAlreadyExistsException;
|
||||
import org.jclouds.blobstore.KeyNotFoundException;
|
||||
import org.jclouds.blobstore.integration.internal.BaseBlobStoreIntegrationTest;
|
||||
|
@ -50,23 +50,23 @@ import com.google.common.collect.Iterables;
|
|||
import com.google.common.collect.Sets;
|
||||
|
||||
/**
|
||||
* Tests behavior of {@code AtmosStorageClient}
|
||||
* Tests behavior of {@code AtmosClient}
|
||||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
@Test(groups = "live", sequential = true)
|
||||
public class AtmosStorageClientLiveTest extends BaseBlobStoreIntegrationTest {
|
||||
public class AtmosClientLiveTest extends BaseBlobStoreIntegrationTest {
|
||||
|
||||
public AtmosStorageClient getApi() {
|
||||
return (AtmosStorageClient) context.getProviderSpecificContext().getApi();
|
||||
public AtmosClient getApi() {
|
||||
return (AtmosClient) context.getProviderSpecificContext().getApi();
|
||||
}
|
||||
|
||||
private static final class HeadMatches implements Runnable {
|
||||
private final AtmosStorageClient connection;
|
||||
private final AtmosClient connection;
|
||||
private final String name;
|
||||
private final String metadataValue;
|
||||
|
||||
private HeadMatches(AtmosStorageClient connection, String name, String metadataValue) {
|
||||
private HeadMatches(AtmosClient connection, String name, String metadataValue) {
|
||||
this.connection = connection;
|
||||
this.name = name;
|
||||
this.metadataValue = metadataValue;
|
||||
|
@ -82,12 +82,12 @@ public class AtmosStorageClientLiveTest extends BaseBlobStoreIntegrationTest {
|
|||
}
|
||||
|
||||
private static final class ObjectMatches implements Runnable {
|
||||
private final AtmosStorageClient connection;
|
||||
private final AtmosClient connection;
|
||||
private final String name;
|
||||
private final String metadataValue;
|
||||
private final String compare;
|
||||
|
||||
private ObjectMatches(AtmosStorageClient connection, String name, String metadataValue, String compare) {
|
||||
private ObjectMatches(AtmosClient connection, String name, String metadataValue, String compare) {
|
||||
this.connection = connection;
|
||||
this.name = name;
|
||||
this.metadataValue = metadataValue;
|
||||
|
@ -237,14 +237,14 @@ public class AtmosStorageClientLiveTest extends BaseBlobStoreIntegrationTest {
|
|||
assertEventually(new HeadMatches(getApi(), privateDirectory + "/" + name, metadataValue));
|
||||
}
|
||||
|
||||
private static void verifyHeadObject(AtmosStorageClient connection, String path, String metadataValue)
|
||||
private static void verifyHeadObject(AtmosClient connection, String path, String metadataValue)
|
||||
throws InterruptedException, ExecutionException, TimeoutException, IOException {
|
||||
AtmosObject getBlob = connection.headFile(path);
|
||||
assertEquals(Strings2.toStringAndClose(getBlob.getPayload().getInput()), "");
|
||||
verifyMetadata(metadataValue, getBlob);
|
||||
}
|
||||
|
||||
private static void verifyObject(AtmosStorageClient connection, String path, String compare, String metadataValue)
|
||||
private static void verifyObject(AtmosClient connection, String path, String compare, String metadataValue)
|
||||
throws InterruptedException, ExecutionException, TimeoutException, IOException {
|
||||
AtmosObject getBlob = connection.readFile(path);
|
||||
assertEquals(Strings2.toStringAndClose(getBlob.getPayload().getInput()), compare);
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.azure.storage;
|
||||
package org.jclouds.atmos;
|
||||
|
||||
import org.jclouds.blobstore.util.BlobStoreUtils;
|
||||
import org.jclouds.rest.Providers;
|
||||
|
@ -36,15 +36,13 @@ public class ProvidersInPropertiesTest {
|
|||
@Test
|
||||
public void testSupportedProviders() {
|
||||
Iterable<String> providers = Providers.getSupportedProviders();
|
||||
assert Iterables.contains(providers, "azurequeue") : providers;
|
||||
assert Iterables.contains(providers, "azureblob") : providers;
|
||||
assert Iterables.contains(providers, "atmos") : providers;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSupportedBlobStoreProviders() {
|
||||
Iterable<String> providers = BlobStoreUtils.getSupportedProviders();
|
||||
assert !Iterables.contains(providers, "azurequeue") : providers;
|
||||
assert Iterables.contains(providers, "azureblob") : providers;
|
||||
assert Iterables.contains(providers, "atmos") : providers;
|
||||
}
|
||||
|
||||
}
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.binders;
|
||||
package org.jclouds.atmos.binders;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
|
||||
|
@ -26,7 +26,7 @@ import java.net.URI;
|
|||
|
||||
import javax.ws.rs.HttpMethod;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.AtmosObject;
|
||||
import org.jclouds.atmos.domain.AtmosObject;
|
||||
import org.jclouds.http.HttpRequest;
|
||||
import org.jclouds.io.Payload;
|
||||
import org.jclouds.io.Payloads;
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.binders;
|
||||
package org.jclouds.atmos.binders;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
|
||||
|
@ -26,7 +26,7 @@ import java.net.URI;
|
|||
|
||||
import javax.ws.rs.HttpMethod;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.UserMetadata;
|
||||
import org.jclouds.atmos.domain.UserMetadata;
|
||||
import org.jclouds.http.HttpRequest;
|
||||
import org.testng.annotations.Test;
|
||||
|
|
@ -17,16 +17,16 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.blobstore;
|
||||
package org.jclouds.atmos.blobstore;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Properties;
|
||||
|
||||
import org.jclouds.atmosonline.saas.AtmosStorageAsyncClient;
|
||||
import org.jclouds.atmosonline.saas.config.AtmosStorageRestClientModule;
|
||||
import org.jclouds.atmosonline.saas.filters.SignRequest;
|
||||
import org.jclouds.atmos.AtmosAsyncClient;
|
||||
import org.jclouds.atmos.config.AtmosRestClientModule;
|
||||
import org.jclouds.atmos.filters.SignRequest;
|
||||
import org.jclouds.blobstore.BlobRequestSigner;
|
||||
import org.jclouds.blobstore.domain.Blob;
|
||||
import org.jclouds.blobstore.domain.Blob.Factory;
|
||||
|
@ -52,7 +52,7 @@ import com.google.inject.TypeLiteral;
|
|||
*/
|
||||
// NOTE:without testName, this will not call @Before* and fail w/NPE during surefire
|
||||
@Test(groups = "unit", testName = "AtmosBlobRequestSignerTest")
|
||||
public class AtmosBlobRequestSignerTest extends RestClientTest<AtmosStorageAsyncClient> {
|
||||
public class AtmosBlobRequestSignerTest extends RestClientTest<AtmosAsyncClient> {
|
||||
|
||||
private BlobRequestSigner signer;
|
||||
private Factory blobFactory;
|
||||
|
@ -120,19 +120,19 @@ public class AtmosBlobRequestSignerTest extends RestClientTest<AtmosStorageAsync
|
|||
}
|
||||
|
||||
@Override
|
||||
protected TypeLiteral<RestAnnotationProcessor<AtmosStorageAsyncClient>> createTypeLiteral() {
|
||||
return new TypeLiteral<RestAnnotationProcessor<AtmosStorageAsyncClient>>() {
|
||||
protected TypeLiteral<RestAnnotationProcessor<AtmosAsyncClient>> createTypeLiteral() {
|
||||
return new TypeLiteral<RestAnnotationProcessor<AtmosAsyncClient>>() {
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Module createModule() {
|
||||
return new TestAtmosStorageRestClientModule();
|
||||
return new TestAtmosRestClientModule();
|
||||
}
|
||||
|
||||
@RequiresHttp
|
||||
@ConfiguresRestClient
|
||||
private static final class TestAtmosStorageRestClientModule extends AtmosStorageRestClientModule {
|
||||
private static final class TestAtmosRestClientModule extends AtmosRestClientModule {
|
||||
@Override
|
||||
protected void configure() {
|
||||
super.configure();
|
||||
|
@ -146,7 +146,7 @@ public class AtmosBlobRequestSignerTest extends RestClientTest<AtmosStorageAsync
|
|||
|
||||
@Override
|
||||
public RestContextSpec<?, ?> createContextSpec() {
|
||||
return new RestContextFactory().createContextSpec("atmosonline", "identity", "credential", new Properties());
|
||||
return new RestContextFactory().createContextSpec("atmos", "identity", "credential", new Properties());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -17,11 +17,11 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.blobstore.config;
|
||||
package org.jclouds.atmos.blobstore.config;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
|
||||
import org.jclouds.atmosonline.saas.blobstore.strategy.FindMD5InUserMetadata;
|
||||
import org.jclouds.atmos.blobstore.strategy.FindMD5InUserMetadata;
|
||||
import org.jclouds.blobstore.BlobStoreContext;
|
||||
import org.jclouds.blobstore.internal.BlobStoreContextImpl;
|
||||
import org.jclouds.blobstore.strategy.ContainsValueInListStrategy;
|
||||
|
@ -41,7 +41,7 @@ import com.google.inject.Module;
|
|||
public class AtmosBlobStoreModuleTest {
|
||||
|
||||
Injector createInjector() {
|
||||
return new RestContextFactory().createContextBuilder("atmosonline", "uid", "key",
|
||||
return new RestContextFactory().createContextBuilder("atmos", "uid", "key",
|
||||
ImmutableSet.<Module> of(new MockModule(), new NullLoggingModule())).buildInjector();
|
||||
}
|
||||
|
||||
|
@ -57,4 +57,4 @@ public class AtmosBlobStoreModuleTest {
|
|||
assertEquals(valueList.getClass(), FindMD5InUserMetadata.class);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.blobstore.functions;
|
||||
package org.jclouds.atmos.blobstore.functions;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
|
@ -30,8 +30,8 @@ import com.google.common.base.Function;
|
|||
*/
|
||||
@Singleton
|
||||
public class ListOptionsToBlobStoreListOptions implements
|
||||
Function<org.jclouds.atmosonline.saas.options.ListOptions[], ListContainerOptions> {
|
||||
public ListContainerOptions apply(org.jclouds.atmosonline.saas.options.ListOptions[] optionsList) {
|
||||
Function<org.jclouds.atmos.options.ListOptions[], ListContainerOptions> {
|
||||
public ListContainerOptions apply(org.jclouds.atmos.options.ListOptions[] optionsList) {
|
||||
ListContainerOptions options = new ListContainerOptions();
|
||||
if (optionsList.length != 0) {
|
||||
if (optionsList[0].getToken() != null) {
|
||||
|
@ -46,4 +46,4 @@ public class ListOptionsToBlobStoreListOptions implements
|
|||
}
|
||||
return options;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -17,7 +17,7 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.blobstore.functions;
|
||||
package org.jclouds.atmos.blobstore.functions;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
|
|
@ -17,14 +17,14 @@
|
|||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.atmosonline.saas.blobstore.functions;
|
||||
package org.jclouds.atmos.blobstore.functions;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.atmosonline.saas.domain.BoundedSet;
|
||||
import org.jclouds.atmosonline.saas.domain.DirectoryEntry;
|
||||
import org.jclouds.atmosonline.saas.domain.FileType;
|
||||
import org.jclouds.atmosonline.saas.domain.internal.BoundedLinkedHashSet;
|
||||
import org.jclouds.atmos.domain.BoundedSet;
|
||||
import org.jclouds.atmos.domain.DirectoryEntry;
|
||||
import org.jclouds.atmos.domain.FileType;
|
||||
import org.jclouds.atmos.domain.internal.BoundedLinkedHashSet;
|
||||
import org.jclouds.blobstore.domain.StorageMetadata;
|
||||
import org.jclouds.blobstore.domain.StorageType;
|
||||
|
||||
|
@ -53,4 +53,4 @@ public class ResourceMetadataListToDirectoryEntryList
|
|||
}), from.getNextMarker());
|
||||
|
||||
}
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue