You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by an...@apache.org on 2014/10/09 01:35:58 UTC

[5/5] git commit: Swift is now out of labs.

Swift is now out of labs.


Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/commit/9b19cded
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/tree/9b19cded
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/diff/9b19cded

Branch: refs/heads/master
Commit: 9b19cdedea982a0b954e8bef0aaa5b3d5d92ad37
Parents: 5ca24a8
Author: Adrian Cole <ac...@twitter.com>
Authored: Wed Oct 8 13:10:32 2014 -0700
Committer: Andrew Phillips <an...@apache.org>
Committed: Wed Oct 8 19:34:45 2014 -0400

----------------------------------------------------------------------
 README.md                                       |   1 -
 openstack-swift/README.md                       |  10 -
 openstack-swift/pom.xml                         | 156 ------
 .../openstack/swift/v1/CopyObjectException.java |  48 --
 .../jclouds/openstack/swift/v1/SwiftApi.java    |  70 ---
 .../openstack/swift/v1/SwiftApiMetadata.java    |  99 ----
 .../openstack/swift/v1/SwiftFallbacks.java      |  43 --
 .../openstack/swift/v1/TemporaryUrlSigner.java  |  89 ----
 .../swift/v1/binders/BindMetadataToHeaders.java | 141 -----
 .../openstack/swift/v1/binders/SetPayload.java  |  72 ---
 .../blobstore/RegionScopedBlobStoreContext.java | 154 ------
 .../blobstore/RegionScopedSwiftBlobStore.java   | 312 -----------
 .../RegionScopedTemporaryUrlBlobSigner.java     | 109 ----
 .../config/SignUsingTemporaryUrls.java          |  67 ---
 .../config/SwiftBlobStoreContextModule.java     |  65 ---
 .../v1/blobstore/functions/ToBlobMetadata.java  |  71 ---
 .../functions/ToListContainerOptions.java       |  52 --
 .../blobstore/functions/ToResourceMetadata.java |  44 --
 .../swift/v1/config/BaseSwiftHttpApiModule.java |  46 --
 .../swift/v1/config/SwiftHttpApiModule.java     |  32 --
 .../swift/v1/config/SwiftTypeAdapters.java      | 119 -----
 .../openstack/swift/v1/domain/Account.java      | 219 --------
 .../swift/v1/domain/BulkDeleteResponse.java     | 101 ----
 .../openstack/swift/v1/domain/Container.java    | 237 ---------
 .../swift/v1/domain/ExtractArchiveResponse.java |  90 ----
 .../openstack/swift/v1/domain/ObjectList.java   |  57 --
 .../openstack/swift/v1/domain/Segment.java      | 136 -----
 .../openstack/swift/v1/domain/SwiftObject.java  | 267 ----------
 .../openstack/swift/v1/features/AccountApi.java | 111 ----
 .../openstack/swift/v1/features/BulkApi.java    | 105 ----
 .../swift/v1/features/ContainerApi.java         | 215 --------
 .../openstack/swift/v1/features/ObjectApi.java  | 265 ----------
 .../swift/v1/features/StaticLargeObjectApi.java |  90 ----
 .../swift/v1/functions/ETagHeader.java          |  32 --
 .../v1/functions/EntriesWithoutMetaPrefix.java  |  48 --
 .../swift/v1/functions/FalseOnAccepted.java     |  30 --
 .../swift/v1/functions/MetadataFromHeaders.java |  31 --
 .../v1/functions/ParseAccountFromHeaders.java   |  38 --
 .../v1/functions/ParseContainerFromHeaders.java |  54 --
 .../v1/functions/ParseObjectFromResponse.java   |  87 ----
 .../functions/ParseObjectListFromResponse.java  | 113 ----
 .../swift/v1/handlers/SwiftErrorHandler.java    |  91 ----
 .../v1/options/CreateContainerOptions.java      | 108 ----
 .../swift/v1/options/ListContainerOptions.java  | 132 -----
 .../openstack/swift/v1/options/PutOptions.java  |  71 ---
 .../v1/options/UpdateContainerOptions.java      | 107 ----
 .../swift/v1/reference/SwiftHeaders.java        |  92 ----
 .../services/org.jclouds.apis.ApiMetadata       |  18 -
 .../swift/v1/AuthenticationMockTest.java        |  71 ---
 .../swift/v1/SwiftApiMetadataTest.java          |  32 --
 .../swift/v1/SwiftErrorHandlerTest.java         | 117 -----
 .../swift/v1/TemporaryUrlSignerLiveTest.java    |  90 ----
 .../swift/v1/TemporaryUrlSignerMockTest.java    |  76 ---
 .../RegionScopedBlobStoreContextLiveTest.java   | 159 ------
 .../SwiftBlobIntegrationLiveTest.java           |  76 ---
 .../integration/SwiftBlobLiveTest.java          |  39 --
 .../integration/SwiftBlobSignerLiveTest.java    |  39 --
 .../SwiftContainerIntegrationLiveTest.java      |  54 --
 .../integration/SwiftContainerLiveTest.java     |  39 --
 .../SwiftServiceIntegrationLiveTest.java        |  39 --
 .../swift/v1/config/SwiftTypeAdaptersTest.java  |  90 ----
 .../swift/v1/features/AccountApiLiveTest.java   |  87 ----
 .../swift/v1/features/AccountApiMockTest.java   | 145 ------
 .../swift/v1/features/BulkApiLiveTest.java      | 125 -----
 .../swift/v1/features/BulkApiMockTest.java      |  72 ---
 .../swift/v1/features/ContainerApiLiveTest.java | 197 -------
 .../swift/v1/features/ContainerApiMockTest.java | 363 -------------
 .../features/CreatePublicContainerLiveTest.java |  47 --
 .../swift/v1/features/ObjectApiLiveTest.java    | 286 ----------
 .../swift/v1/features/ObjectApiMockTest.java    | 515 -------------------
 .../features/StaticLargeObjectApiLiveTest.java  | 129 -----
 .../features/StaticLargeObjectApiMockTest.java  | 107 ----
 .../features/UrlEncodeAndJoinOnNewlineTest.java |  44 --
 .../swift/v1/internal/BaseSwiftApiLiveTest.java |  88 ----
 .../v1/options/CreateContainerOptionsTest.java  |  69 ---
 .../swift/v1/options/PutOptionsTest.java        |  48 --
 .../v1/options/UpdateContainerOptionsTest.java  | 122 -----
 openstack-swift/src/test/resources/access.json  | 249 ---------
 .../src/test/resources/container_list.json      |  12 -
 openstack-swift/src/test/resources/logback.xml  |  71 ---
 .../src/test/resources/object_list.json         |  23 -
 pom.xml                                         |   1 -
 rackspace-cloudfiles-uk/pom.xml                 |   4 +-
 rackspace-cloudfiles-us/pom.xml                 |   4 +-
 rackspace-cloudfiles/pom.xml                    |   4 +-
 85 files changed, 6 insertions(+), 8472 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/9b19cded/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index 8304294..2913b79 100644
--- a/README.md
+++ b/README.md
@@ -12,7 +12,6 @@ Although this is a "labs" repository, some of the providers and APIs here are pr
 | openstack-glance | API | No |
 | openstack-marconi | API | No |
 | openstack-neutron | API | Yes |
-| openstack-swift | API | Beta |
 | rackspace-autoscale | API | No |
 | rackspace-cloudfiles | API | No |
 | rackspace-autoscale-us | Provider | No |

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/9b19cded/openstack-swift/README.md
----------------------------------------------------------------------
diff --git a/openstack-swift/README.md b/openstack-swift/README.md
deleted file mode 100644
index 59bd846..0000000
--- a/openstack-swift/README.md
+++ /dev/null
@@ -1,10 +0,0 @@
-OpenStack Swift
-===============
-
-Swift is a distributed object storage system designed to scale from a single machine to thousands of servers. 
-
-Production ready?
-Beta
-
-This API is new to jclouds and hence is in Beta. That means we need people to use it and give us feedback. Based on that feedback, minor changes to the interfaces may happen. This code will replace org.jclouds.openstack.swift.SwiftClient in jclouds 2.0 and it is recommended you adopt it sooner than later.
-

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/9b19cded/openstack-swift/pom.xml
----------------------------------------------------------------------
diff --git a/openstack-swift/pom.xml b/openstack-swift/pom.xml
deleted file mode 100644
index 30d1dba..0000000
--- a/openstack-swift/pom.xml
+++ /dev/null
@@ -1,156 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-        http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<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">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.jclouds</groupId>
-    <artifactId>jclouds-project</artifactId>
-    <version>2.0.0-SNAPSHOT</version>
-    <relativePath />
-  </parent>
-
-  <!-- TODO: when out of labs, switch to org.jclouds.api -->
-  <groupId>org.apache.jclouds.labs</groupId>
-  <artifactId>openstack-swift</artifactId>
-  <version>2.0.0-SNAPSHOT</version>
-  <name>jclouds openstack-swift api</name>
-  <description>jclouds components to access an implementation of OpenStack Swift</description>
-  <packaging>bundle</packaging>
-
-  <properties>
-    <!-- keystone endpoint -->
-    <test.openstack-swift.endpoint>http://localhost:5000/v2.0/</test.openstack-swift.endpoint>
-    <test.openstack-swift.api-version>1.0</test.openstack-swift.api-version>
-    <test.openstack-swift.build-version />
-    <test.openstack-swift.identity>FIXME_IDENTITY</test.openstack-swift.identity>
-    <test.openstack-swift.credential>FIXME_CREDENTIALS</test.openstack-swift.credential>
-    <test.jclouds.keystone.credential-type>passwordCredentials</test.jclouds.keystone.credential-type>
-    <jclouds.blobstore.httpstream.url>http://archive.apache.org/dist/commons/logging/binaries/commons-logging-1.1.1-bin.tar.gz</jclouds.blobstore.httpstream.url>
-    <jclouds.blobstore.httpstream.md5>e5de09672af9b386c30a311654d8541a</jclouds.blobstore.httpstream.md5>
-    <jclouds.osgi.export>org.jclouds.openstack.swift.v1*;version="${project.version}"</jclouds.osgi.export>
-    <jclouds.osgi.import>org.jclouds*;version="${project.version}",*</jclouds.osgi.import>
-  </properties>
-
-  <repositories>
-    <repository>
-      <id>apache-snapshots</id>
-      <url>https://repository.apache.org/content/repositories/snapshots</url>
-      <releases>
-        <enabled>false</enabled>
-      </releases>
-      <snapshots>
-        <enabled>true</enabled>
-      </snapshots>
-    </repository>
-  </repositories>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.jclouds.api</groupId>
-      <artifactId>openstack-keystone</artifactId>
-      <version>${project.parent.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.jclouds</groupId>
-      <artifactId>jclouds-blobstore</artifactId>
-      <version>${project.parent.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.jclouds</groupId>
-      <artifactId>jclouds-core</artifactId>
-      <version>${project.parent.version}</version>
-      <type>test-jar</type>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.jclouds.api</groupId>
-      <artifactId>openstack-keystone</artifactId>
-      <version>${project.parent.version}</version>
-      <type>test-jar</type>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.jclouds</groupId>
-      <artifactId>jclouds-blobstore</artifactId>
-      <version>${project.parent.version}</version>
-      <type>test-jar</type>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.jboss.shrinkwrap</groupId>
-      <artifactId>shrinkwrap-depchain</artifactId>
-      <version>1.2.0</version>
-      <type>pom</type>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.jclouds.driver</groupId>
-      <artifactId>jclouds-slf4j</artifactId>
-      <version>${project.parent.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>ch.qos.logback</groupId>
-      <artifactId>logback-classic</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.squareup.okhttp</groupId>
-      <artifactId>mockwebserver</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-
-  <profiles>
-    <profile>
-      <id>live</id>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-surefire-plugin</artifactId>
-            <executions>
-              <execution>
-                <id>integration</id>
-                <phase>integration-test</phase>
-                <goals>
-                  <goal>test</goal>
-                </goals>
-                <configuration>
-                  <systemPropertyVariables>
-                    <test.openstack-swift.endpoint>${test.openstack-swift.endpoint}</test.openstack-swift.endpoint>
-                    <test.openstack-swift.api-version>${test.openstack-swift.api-version}</test.openstack-swift.api-version>
-                    <test.openstack-swift.build-version>${test.openstack-swift.build-version}</test.openstack-swift.build-version>
-                    <test.openstack-swift.identity>${test.openstack-swift.identity}</test.openstack-swift.identity>
-                    <test.openstack-swift.credential>${test.openstack-swift.credential}</test.openstack-swift.credential>
-                    <test.jclouds.keystone.credential-type>${test.jclouds.keystone.credential-type}</test.jclouds.keystone.credential-type>
-                    <jclouds.blobstore.httpstream.url>${jclouds.blobstore.httpstream.url}</jclouds.blobstore.httpstream.url>
-                    <jclouds.blobstore.httpstream.md5>${jclouds.blobstore.httpstream.md5}</jclouds.blobstore.httpstream.md5>
-                  </systemPropertyVariables>
-                </configuration>
-              </execution>
-            </executions>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-  </profiles>
-
-</project>

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/9b19cded/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/CopyObjectException.java
----------------------------------------------------------------------
diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/CopyObjectException.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/CopyObjectException.java
deleted file mode 100644
index a7fd09d..0000000
--- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/CopyObjectException.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.openstack.swift.v1;
-
-import org.jclouds.rest.ResourceNotFoundException;
-
-/**
- * Thrown when an object cannot be copied.
- *
- *
- * @see {@link SwiftErrorHandler#handleError(HttpCommand, HttpResponse)}
- */
-@SuppressWarnings("serial")
-public class CopyObjectException extends ResourceNotFoundException {
-
-   private String sourcePath;
-   private String destinationPath;
-
-   public CopyObjectException(String sourcePath, String destinationPath, String message) {
-      super(String.format("Either the source path '%s' or the destination path '%s' was not found. " +
-      		"(message: %s)", sourcePath, destinationPath, message));
-      this.sourcePath = sourcePath;
-      this.destinationPath = destinationPath;
-   }
-
-   public String getSourcePath() {
-      return sourcePath;
-   }
-
-   public String getDestinationPath() {
-      return destinationPath;
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/9b19cded/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/SwiftApi.java
----------------------------------------------------------------------
diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/SwiftApi.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/SwiftApi.java
deleted file mode 100644
index 1d4d1d0..0000000
--- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/SwiftApi.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.openstack.swift.v1;
-
-import java.io.Closeable;
-import java.util.Set;
-
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-
-import org.jclouds.location.Region;
-import org.jclouds.location.functions.RegionToEndpoint;
-import org.jclouds.openstack.swift.v1.features.AccountApi;
-import org.jclouds.openstack.swift.v1.features.BulkApi;
-import org.jclouds.openstack.swift.v1.features.ContainerApi;
-import org.jclouds.openstack.swift.v1.features.ObjectApi;
-import org.jclouds.openstack.swift.v1.features.StaticLargeObjectApi;
-import org.jclouds.rest.annotations.Delegate;
-import org.jclouds.rest.annotations.EndpointParam;
-
-import com.google.common.annotations.Beta;
-import com.google.inject.Provides;
-
-/**
- * Provides access to the OpenStack Object Storage (Swift) API.
- * <p/>
- * OpenStack Object Storage is an object-based storage system that stores content and metadata
- * as objects. You create, modify, and get objects and metadata using this API.
- * <p/>
- */
-@Beta
-public interface SwiftApi extends Closeable {
-
-   @Provides
-   @Region
-   Set<String> getConfiguredRegions();
-
-   @Delegate
-   AccountApi getAccountApi(@EndpointParam(parser = RegionToEndpoint.class) String region);
-
-   @Delegate
-   BulkApi getBulkApi(@EndpointParam(parser = RegionToEndpoint.class) String region);
-
-   @Delegate
-   ContainerApi getContainerApi(@EndpointParam(parser = RegionToEndpoint.class) String region);
-
-   @Delegate
-   @Path("/{containerName}")
-   ObjectApi getObjectApi(@EndpointParam(parser = RegionToEndpoint.class) String region,
-         @PathParam("containerName") String containerName);
-
-   @Delegate
-   @Path("/{containerName}")
-   StaticLargeObjectApi getStaticLargeObjectApi(@EndpointParam(parser = RegionToEndpoint.class) String region,
-         @PathParam("containerName") String containerName);
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/9b19cded/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/SwiftApiMetadata.java
----------------------------------------------------------------------
diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/SwiftApiMetadata.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/SwiftApiMetadata.java
deleted file mode 100644
index 8d77bb0..0000000
--- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/SwiftApiMetadata.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.openstack.swift.v1;
-
-import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
-import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.SERVICE_TYPE;
-import static org.jclouds.reflect.Reflection2.typeToken;
-
-import java.net.URI;
-import java.util.Properties;
-
-import org.jclouds.openstack.keystone.v2_0.config.AuthenticationApiModule;
-import org.jclouds.openstack.keystone.v2_0.config.CredentialTypes;
-import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule;
-import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.RegionModule;
-import org.jclouds.openstack.swift.v1.blobstore.RegionScopedBlobStoreContext;
-import org.jclouds.openstack.swift.v1.blobstore.config.SignUsingTemporaryUrls;
-import org.jclouds.openstack.swift.v1.blobstore.config.SwiftBlobStoreContextModule;
-import org.jclouds.openstack.swift.v1.config.SwiftHttpApiModule;
-import org.jclouds.openstack.swift.v1.config.SwiftTypeAdapters;
-import org.jclouds.openstack.v2_0.ServiceType;
-import org.jclouds.rest.internal.BaseHttpApiMetadata;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.inject.Module;
-
-/**
- * Implementation of {@link ApiMetadata} for the Swift API.
- */
-public class SwiftApiMetadata extends BaseHttpApiMetadata<SwiftApi> {
-
-   @Override
-   public Builder toBuilder() {
-      return new Builder().fromApiMetadata(this);
-   }
-
-   public SwiftApiMetadata() {
-      this(new Builder());
-   }
-
-   protected SwiftApiMetadata(Builder builder) {
-      super(builder);
-   }
-
-   public static Properties defaultProperties() {
-      Properties properties = BaseHttpApiMetadata.defaultProperties();
-      properties.setProperty(SERVICE_TYPE, ServiceType.OBJECT_STORE);
-      properties.setProperty(CREDENTIAL_TYPE, CredentialTypes.PASSWORD_CREDENTIALS);
-      return properties;
-   }
-
-   public static class Builder extends BaseHttpApiMetadata.Builder<SwiftApi, Builder> {
-
-      protected Builder() {
-          id("openstack-swift")
-         .name("OpenStack Swift API")
-         .identityName("${tenantName}:${userName} or ${userName}, if your keystone supports a default tenant")
-         .credentialName("${password}")
-         .documentation(URI.create("http://docs.openstack.org/api/openstack-object-storage/1.0/content/ch_object-storage-dev-overview.html"))
-         .version("1")
-         .endpointName("Keystone base url ending in /v2.0/")
-         .defaultEndpoint("http://localhost:5000/v2.0/")
-         .defaultProperties(SwiftApiMetadata.defaultProperties())
-         .view(typeToken(RegionScopedBlobStoreContext.class))
-         .defaultModules(ImmutableSet.<Class<? extends Module>>builder()
-                                     .add(AuthenticationApiModule.class)
-                                     .add(KeystoneAuthenticationModule.class)
-                                     .add(RegionModule.class)
-                                     .add(SwiftTypeAdapters.class)
-                                     .add(SwiftHttpApiModule.class)
-                                     .add(SwiftBlobStoreContextModule.class)
-                                     .add(SignUsingTemporaryUrls.class).build());
-      }
-
-      @Override
-      public SwiftApiMetadata build() {
-         return new SwiftApiMetadata(this);
-      }
-
-      @Override
-      protected Builder self() {
-         return this;
-      }
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/9b19cded/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/SwiftFallbacks.java
----------------------------------------------------------------------
diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/SwiftFallbacks.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/SwiftFallbacks.java
deleted file mode 100644
index c875707..0000000
--- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/SwiftFallbacks.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.openstack.swift.v1;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Predicates.equalTo;
-import static com.google.common.base.Throwables.propagate;
-import static org.jclouds.http.HttpUtils.contains404;
-import static org.jclouds.http.HttpUtils.returnValueOnCodeOrNull;
-
-import org.jclouds.Fallback;
-
-public final class SwiftFallbacks {
-
-   public static final class TrueOn404FalseOn409 implements Fallback<Boolean> {
-      @Override
-      public Boolean createOrPropagate(Throwable t) throws Exception {
-         if (contains404(checkNotNull(t, "throwable")))
-            return true;
-         if (returnValueOnCodeOrNull(t, false, equalTo(409)) != null)
-            return false;
-         throw propagate(t);
-      }
-   }
-
-   private SwiftFallbacks() {
-      throw new AssertionError("intentionally unimplemented");
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/9b19cded/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/TemporaryUrlSigner.java
----------------------------------------------------------------------
diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/TemporaryUrlSigner.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/TemporaryUrlSigner.java
deleted file mode 100644
index c6d6030..0000000
--- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/TemporaryUrlSigner.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.openstack.swift.v1;
-
-import static com.google.common.base.Charsets.UTF_8;
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Preconditions.checkState;
-import static com.google.common.base.Suppliers.memoizeWithExpiration;
-import static com.google.common.base.Throwables.propagate;
-import static com.google.common.io.BaseEncoding.base16;
-import static java.lang.String.format;
-import static java.util.concurrent.TimeUnit.SECONDS;
-
-import javax.crypto.Mac;
-import javax.crypto.spec.SecretKeySpec;
-
-import org.jclouds.openstack.swift.v1.features.AccountApi;
-
-import com.google.common.base.Supplier;
-
-/**
- * Use this utility to create temporary urls.
- */
-public class TemporaryUrlSigner {
-
-   public static TemporaryUrlSigner checkApiEvery(final AccountApi api, long seconds) {
-      Supplier<String> keySupplier = memoizeWithExpiration(new TemporaryUrlKeyFromAccount(api), seconds, SECONDS);
-      return new TemporaryUrlSigner(keySupplier);
-   }
-
-   private final Supplier<String> keySupplier;
-
-   TemporaryUrlSigner(Supplier<String> keySupplier) {
-      this.keySupplier = keySupplier;
-   }
-
-   public String sign(String method, String path, long expirationTimestampSeconds) {
-      checkNotNull(method, "method");
-      checkNotNull(path, "path");
-      checkArgument(expirationTimestampSeconds > 0, "expirationTimestamp must be a unix epoch timestamp");
-      String hmacBody = format("%s\n%s\n%s", method, expirationTimestampSeconds, path);
-      return base16().lowerCase().encode(hmacSHA1(hmacBody));
-   }
-
-   byte[] hmacSHA1(String data) {
-      try {
-         String key = keySupplier.get();
-         checkState(key != null, "%s returned a null temporaryUrlKey!", keySupplier);
-         Mac mac = Mac.getInstance("HmacSHA1");
-         mac.init(new SecretKeySpec(key.getBytes(UTF_8), "HmacSHA1"));
-         return mac.doFinal(data.getBytes(UTF_8));
-      } catch (Exception e) {
-         throw propagate(e);
-      }
-   }
-
-   static class TemporaryUrlKeyFromAccount implements Supplier<String> {
-      private final AccountApi api;
-
-      private TemporaryUrlKeyFromAccount(AccountApi api) {
-         this.api = checkNotNull(api, "accountApi");
-      }
-
-      @Override
-      public String get() {
-         return api.get().getTemporaryUrlKey().orNull();
-      }
-
-      @Override
-      public String toString() {
-         return format("get().getTemporaryUrlKey() using %s", api);
-      }
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/9b19cded/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/binders/BindMetadataToHeaders.java
----------------------------------------------------------------------
diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/binders/BindMetadataToHeaders.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/binders/BindMetadataToHeaders.java
deleted file mode 100644
index 4dabc68..0000000
--- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/binders/BindMetadataToHeaders.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.openstack.swift.v1.binders;
-
-import static org.jclouds.openstack.swift.v1.reference.SwiftHeaders.ACCOUNT_METADATA_PREFIX;
-import static org.jclouds.openstack.swift.v1.reference.SwiftHeaders.CONTAINER_METADATA_PREFIX;
-import static org.jclouds.openstack.swift.v1.reference.SwiftHeaders.OBJECT_METADATA_PREFIX;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Map;
-import java.util.Map.Entry;
-
-import org.jclouds.http.HttpRequest;
-import org.jclouds.rest.Binder;
-
-import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.ImmutableMultimap.Builder;
-
-/**
- * Will lower-case header keys due to a swift implementation to return headers
- * in a different case than sent. ex.
- * 
- * <pre>
- * >> X-Account-Meta-MyDelete1: foo
- * >> X-Account-Meta-MyDelete2: bar
- * </pre>
- * 
- * results in:
- * 
- * <pre>
- * << X-Account-Meta-Mydelete1: foo
- * << X-Account-Meta-Mydelete2: bar
- * </pre>
- * 
- * <h4>Note</h4> <br/>
- * HTTP response headers keys are known to be case-insensitive, but this
- * practice of mixing up case will prevent metadata keys such as those in
- * Turkish from working.
- */
-public class BindMetadataToHeaders implements Binder {
-
-   public static class BindAccountMetadataToHeaders extends BindMetadataToHeaders {
-      BindAccountMetadataToHeaders() {
-         super(ACCOUNT_METADATA_PREFIX);
-      }
-   }
-
-   public static class BindRemoveAccountMetadataToHeaders extends BindMetadataToHeaders.ForRemoval {
-      BindRemoveAccountMetadataToHeaders() {
-         super(ACCOUNT_METADATA_PREFIX);
-      }
-   }
-
-   public static class BindContainerMetadataToHeaders extends BindMetadataToHeaders {
-      BindContainerMetadataToHeaders() {
-         super(CONTAINER_METADATA_PREFIX);
-      }
-   }
-
-   public static class BindRemoveContainerMetadataToHeaders extends BindMetadataToHeaders.ForRemoval {
-      BindRemoveContainerMetadataToHeaders() {
-         super(CONTAINER_METADATA_PREFIX);
-      }
-   }
-
-   public static class BindObjectMetadataToHeaders extends BindMetadataToHeaders {
-      BindObjectMetadataToHeaders() {
-         super(OBJECT_METADATA_PREFIX);
-      }
-   }
-
-   public static class BindRemoveObjectMetadataToHeaders extends BindMetadataToHeaders.ForRemoval {
-      BindRemoveObjectMetadataToHeaders() {
-         super(OBJECT_METADATA_PREFIX);
-      }
-   }
-
-   /**
-    * @see <a
-    *      href="http://docs.openstack.org/api/openstack-object-storage/1.0/content/delete-account-metadata.html">documentation</a>
-    */
-   public abstract static class ForRemoval extends BindMetadataToHeaders {
-      ForRemoval(String metadataPrefix) {
-         super(metadataPrefix);
-      }
-
-      @Override
-      protected void putMetadata(Builder<String, String> headers, String key, String value) {
-         headers.put(String.format("x-remove%s", key.substring(1)), "ignored");
-      }
-   }
-
-   private final String metadataPrefix;
-
-   public BindMetadataToHeaders(String metadataPrefix) {
-      this.metadataPrefix = checkNotNull(metadataPrefix, "metadataPrefix");
-   }
-
-   @SuppressWarnings("unchecked")
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      checkNotNull(request, "request");
-      checkArgument(input instanceof Map<?, ?>, "input must be a non-null java.util.Map!");
-      Map<String, String> metadata = Map.class.cast(input);
-      ImmutableMultimap<String, String> headers = toHeaders(metadata);
-      return (R) request.toBuilder().replaceHeaders(headers).build();
-   }
-
-   protected void putMetadata(Builder<String, String> headers, String key, String value) {
-      headers.put(key, value);
-   }
-
-   public ImmutableMultimap<String, String> toHeaders(Map<String, String> metadata) {
-      Builder<String, String> builder = ImmutableMultimap.<String, String> builder();
-      for (Entry<String, String> keyVal : metadata.entrySet()) {
-         String keyInLowercase = keyVal.getKey().toLowerCase();
-         if (keyVal.getKey().startsWith(metadataPrefix)) {
-            putMetadata(builder, keyInLowercase, keyVal.getValue());
-         } else {
-            putMetadata(builder, String.format("%s%s", metadataPrefix, keyInLowercase), keyVal.getValue());
-         }
-      }
-      return builder.build();
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/9b19cded/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/binders/SetPayload.java
----------------------------------------------------------------------
diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/binders/SetPayload.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/binders/SetPayload.java
deleted file mode 100644
index f24a3ad..0000000
--- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/binders/SetPayload.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.openstack.swift.v1.binders;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.io.BaseEncoding.base16;
-import static com.google.common.net.HttpHeaders.ETAG;
-import static com.google.common.net.HttpHeaders.TRANSFER_ENCODING;
-import static java.util.concurrent.TimeUnit.MILLISECONDS;
-import static org.jclouds.openstack.swift.v1.reference.SwiftHeaders.OBJECT_DELETE_AT;
-
-import java.util.Date;
-
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.http.HttpRequest;
-import org.jclouds.http.HttpRequest.Builder;
-import org.jclouds.io.Payload;
-import org.jclouds.rest.Binder;
-
-import com.google.common.hash.HashCode;
-
-public class SetPayload implements Binder {
-
-   @SuppressWarnings("unchecked")
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      Builder<?> builder = request.toBuilder();
-      Payload payload = Payload.class.cast(input);
-
-      if (payload.getContentMetadata().getContentType() == null) {
-         // TODO: use `X-Detect-Content-Type` here. Should be configurable via a property.
-         payload.getContentMetadata().setContentType(MediaType.APPLICATION_OCTET_STREAM);
-      }
-
-      Long contentLength = payload.getContentMetadata().getContentLength();
-      if (contentLength != null && contentLength >= 0) {
-         checkArgument(contentLength <= 5l * 1024 * 1024 * 1024, "maximum size for put object is 5GB, %s",
-               contentLength);
-      } else {
-         builder.replaceHeader(TRANSFER_ENCODING, "chunked").build();
-      }
-
-      HashCode md5 = payload.getContentMetadata().getContentMD5AsHashCode();
-      if (md5 != null) {
-         // Swift will validate the md5, if placed as an ETag header
-         builder.replaceHeader(ETAG, base16().lowerCase().encode(md5.asBytes()));
-      }
-
-      Date expires = payload.getContentMetadata().getExpires();
-      if (expires != null) {
-         builder.addHeader(OBJECT_DELETE_AT,
-               String.valueOf(MILLISECONDS.toSeconds(expires.getTime()))).build();
-      }
-
-      return (R) builder.payload(payload).build();
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/9b19cded/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedBlobStoreContext.java
----------------------------------------------------------------------
diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedBlobStoreContext.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedBlobStoreContext.java
deleted file mode 100644
index e58df89..0000000
--- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedBlobStoreContext.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.openstack.swift.v1.blobstore;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Set;
-
-import javax.inject.Inject;
-
-import org.jclouds.Context;
-import org.jclouds.blobstore.BlobRequestSigner;
-import org.jclouds.blobstore.BlobStore;
-import org.jclouds.blobstore.BlobStoreContext;
-import org.jclouds.blobstore.attr.ConsistencyModel;
-import org.jclouds.internal.BaseView;
-import org.jclouds.location.Provider;
-import org.jclouds.location.Region;
-import org.jclouds.rest.Utils;
-
-import com.google.common.base.Function;
-import com.google.common.base.Supplier;
-import com.google.common.reflect.TypeToken;
-
-/**
- * Implementation of {@link BlobStoreContext} which allows you to employ
- * multiple regions.
- *
- * Example.
- *
- * <pre>
- * ctx = contextBuilder.buildView(RegionScopedBlobStoreContext.class);
- *
- * Set&lt;String&gt; regionIds = ctx.getConfiguredRegions();
- *
- * // isolated to a specific region
- * BlobStore texasBlobStore = ctx.getBlobStore(&quot;US-TX&quot;);
- * BlobStore virginiaBlobStore = ctx.getBlobStore(&quot;US-VA&quot;);
- * </pre>
- */
-public class RegionScopedBlobStoreContext extends BaseView implements BlobStoreContext {
-
-   /**
-    * @return regions supported in this context.
-    */
-   public Set<String> getConfiguredRegions() {
-      return regionIds.get();
-   }
-
-   /**
-    * @param regionId
-    *           valid region id from {@link #getConfiguredRegions()}
-    * @throws IllegalArgumentException
-    *            if {@code regionId} was invalid.
-    */
-   public BlobStore getBlobStore(String regionId) {
-      checkRegionId(regionId);
-      return blobStore.apply(regionId);
-   }
-
-   /**
-    * @param regionId
-    *           valid region id from {@link #getConfiguredRegions()}
-    * @throws IllegalArgumentException
-    *            if {@code regionId} was invalid.
-    */
-   public BlobRequestSigner getSigner(String regionId) {
-      checkRegionId(regionId);
-      return blobRequestSigner.apply(regionId);
-   }
-
-   protected void checkRegionId(String regionId) {
-      checkArgument(getConfiguredRegions().contains(checkNotNull(regionId, "regionId was null")), "region %s not in %s",
-            regionId, getConfiguredRegions());
-   }
-
-   private final Supplier<Set<String>> regionIds;
-   private final Supplier<String> implicitRegionId;
-   // factory functions are decoupled so that you can exchange how requests are
-   // signed or decorate without a class hierarchy dependency
-   private final Function<String, BlobStore> blobStore;
-   private final Function<String, BlobRequestSigner> blobRequestSigner;
-   private final Utils utils;
-   private final ConsistencyModel consistencyModel;
-
-   @Inject
-   public RegionScopedBlobStoreContext(@Provider Context backend, @Provider TypeToken<? extends Context> backendType,
-         @Region Supplier<Set<String>> regionIds, @Region Supplier<String> implicitRegionId,
-         Function<String, BlobStore> blobStore, Function<String, BlobRequestSigner> blobRequestSigner, Utils utils,
-         ConsistencyModel consistencyModel) {
-      super(backend, backendType);
-      this.regionIds = checkNotNull(regionIds, "regionIds");
-      this.implicitRegionId = checkNotNull(implicitRegionId, "implicitRegionId");
-      this.blobStore = checkNotNull(blobStore, "blobStore");
-      this.blobRequestSigner = checkNotNull(blobRequestSigner, "blobRequestSigner");
-      this.utils = checkNotNull(utils, "utils");
-      this.consistencyModel = checkNotNull(consistencyModel, "consistencyModel");
-   }
-
-   @Override
-   public ConsistencyModel getConsistencyModel() {
-      return consistencyModel;
-   }
-
-   @Override
-   public BlobStore getBlobStore() {
-      return getBlobStore(implicitRegionId.get());
-   }
-
-   @Override
-   public BlobRequestSigner getSigner() {
-      return getSigner(implicitRegionId.get());
-   }
-
-   @Override
-   public Utils utils() {
-      return utils;
-   }
-
-   @Override
-   public void close() {
-      delegate().close();
-   }
-
-   public int hashCode() {
-      return delegate().hashCode();
-   }
-
-   @Override
-   public String toString() {
-      return delegate().toString();
-   }
-
-   @Override
-   public boolean equals(Object obj) {
-      return delegate().equals(obj);
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/9b19cded/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedSwiftBlobStore.java
----------------------------------------------------------------------
diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedSwiftBlobStore.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedSwiftBlobStore.java
deleted file mode 100644
index c0f65c5..0000000
--- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedSwiftBlobStore.java
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.openstack.swift.v1.blobstore;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.collect.Iterables.tryFind;
-import static com.google.common.collect.Lists.transform;
-import static org.jclouds.blobstore.options.ListContainerOptions.Builder.recursive;
-import static org.jclouds.location.predicates.LocationPredicates.idEquals;
-import static org.jclouds.openstack.swift.v1.options.PutOptions.Builder.metadata;
-
-import java.util.List;
-import java.util.Set;
-
-import javax.inject.Inject;
-
-import org.jclouds.blobstore.BlobStore;
-import org.jclouds.blobstore.BlobStoreContext;
-import org.jclouds.blobstore.domain.Blob;
-import org.jclouds.blobstore.domain.BlobBuilder;
-import org.jclouds.blobstore.domain.BlobMetadata;
-import org.jclouds.blobstore.domain.MutableBlobMetadata;
-import org.jclouds.blobstore.domain.PageSet;
-import org.jclouds.blobstore.domain.StorageMetadata;
-import org.jclouds.blobstore.domain.StorageType;
-import org.jclouds.blobstore.domain.internal.BlobBuilderImpl;
-import org.jclouds.blobstore.domain.internal.BlobImpl;
-import org.jclouds.blobstore.domain.internal.PageSetImpl;
-import org.jclouds.blobstore.functions.BlobToHttpGetOptions;
-import org.jclouds.blobstore.options.CreateContainerOptions;
-import org.jclouds.blobstore.options.GetOptions;
-import org.jclouds.blobstore.options.ListContainerOptions;
-import org.jclouds.blobstore.options.PutOptions;
-import org.jclouds.blobstore.strategy.ClearListStrategy;
-import org.jclouds.collect.Memoized;
-import org.jclouds.domain.Location;
-import org.jclouds.io.Payload;
-import org.jclouds.io.payloads.ByteSourcePayload;
-import org.jclouds.openstack.swift.v1.SwiftApi;
-import org.jclouds.openstack.swift.v1.blobstore.functions.ToBlobMetadata;
-import org.jclouds.openstack.swift.v1.blobstore.functions.ToListContainerOptions;
-import org.jclouds.openstack.swift.v1.blobstore.functions.ToResourceMetadata;
-import org.jclouds.openstack.swift.v1.domain.Container;
-import org.jclouds.openstack.swift.v1.domain.ObjectList;
-import org.jclouds.openstack.swift.v1.domain.SwiftObject;
-import org.jclouds.openstack.swift.v1.features.ObjectApi;
-
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import com.google.common.base.Supplier;
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.io.ByteSource;
-import com.google.inject.AbstractModule;
-import com.google.inject.Injector;
-import com.google.inject.assistedinject.Assisted;
-
-public class RegionScopedSwiftBlobStore implements BlobStore {
-
-   @Inject
-   protected RegionScopedSwiftBlobStore(Injector baseGraph, BlobStoreContext context, SwiftApi api,
-         @Memoized Supplier<Set<? extends Location>> locations, @Assisted String regionId) {
-      checkNotNull(regionId, "regionId");
-      Optional<? extends Location> found = tryFind(locations.get(), idEquals(regionId));
-      checkArgument(found.isPresent(), "region %s not in %s", regionId, locations.get());
-      this.region = found.get();
-      this.regionId = regionId;
-      this.toResourceMetadata = new ToResourceMetadata(found.get());
-      this.context = context;
-      this.api = api;
-      // until we parameterize ClearListStrategy with a factory
-      this.clearList = baseGraph.createChildInjector(new AbstractModule() {
-         @Override
-         protected void configure() {
-            bind(BlobStore.class).toInstance(RegionScopedSwiftBlobStore.this);
-         }
-      }).getInstance(ClearListStrategy.class);
-   }
-
-   private final BlobStoreContext context;
-   private final ClearListStrategy clearList;
-   private final SwiftApi api;
-   private final Location region;
-   private final String regionId;
-   private final BlobToHttpGetOptions toGetOptions = new BlobToHttpGetOptions();
-   private final ToListContainerOptions toListContainerOptions = new ToListContainerOptions();
-   private final ToResourceMetadata toResourceMetadata;
-
-   @Override
-   public Set<? extends Location> listAssignableLocations() {
-      return ImmutableSet.of(region);
-   }
-
-   @Override
-   public PageSet<? extends StorageMetadata> list() {
-      // TODO: there may eventually be >10k containers..
-      FluentIterable<StorageMetadata> containers = api.getContainerApi(regionId).list()
-            .transform(toResourceMetadata);
-      return new PageSetImpl<StorageMetadata>(containers, null);
-   }
-
-   @Override
-   public boolean containerExists(String container) {
-      Container val = api.getContainerApi(regionId).get(container);
-      containerCache.put(container, Optional.fromNullable(val));
-      return val != null;
-   }
-
-   @Override
-   public boolean createContainerInLocation(Location location, String container) {
-      return createContainerInLocation(location, container, CreateContainerOptions.NONE);
-   }
-
-   @Override
-   public boolean createContainerInLocation(Location location, String container, CreateContainerOptions options) {
-      checkArgument(location == null || location.equals(region), "location must be null or %s", region);
-      if (options.isPublicRead()) {
-         return api.getContainerApi(regionId).create(container, ANYBODY_READ);
-      }
-      return api.getContainerApi(regionId).create(container, BASIC_CONTAINER);
-   }
-
-   private static final org.jclouds.openstack.swift.v1.options.CreateContainerOptions BASIC_CONTAINER = new org.jclouds.openstack.swift.v1.options.CreateContainerOptions();
-   private static final org.jclouds.openstack.swift.v1.options.CreateContainerOptions ANYBODY_READ = new org.jclouds.openstack.swift.v1.options.CreateContainerOptions()
-         .anybodyRead();
-
-   @Override
-   public PageSet<? extends StorageMetadata> list(String container) {
-      return list(container, ListContainerOptions.NONE);
-   }
-
-   @Override
-   public PageSet<? extends StorageMetadata> list(final String container, ListContainerOptions options) {
-      ObjectApi objectApi = api.getObjectApi(regionId, container);
-      ObjectList objects = objectApi.list(toListContainerOptions.apply(options));
-      if (objects == null) {
-         containerCache.put(container, Optional.<Container> absent());
-         return new PageSetImpl<StorageMetadata>(ImmutableList.<StorageMetadata> of(), null);
-      } else {
-         containerCache.put(container, Optional.of(objects.getContainer()));
-         List<? extends StorageMetadata> list = transform(objects, toBlobMetadata(container));
-         int limit = Optional.fromNullable(options.getMaxResults()).or(10000);
-         String marker = list.size() == limit ? list.get(limit - 1).getName() : null;
-         // TODO: we should probably deprecate this option
-         if (options.isDetailed()) {
-            list = transform(list, new Function<StorageMetadata, StorageMetadata>() {
-               @Override
-               public StorageMetadata apply(StorageMetadata input) {
-                  if (input.getType() != StorageType.BLOB) {
-                     return input;
-                  }
-                  return blobMetadata(container, input.getName());
-               }
-            });
-         }
-         return new PageSetImpl<StorageMetadata>(list, marker);
-      }
-   }
-
-   @Override
-   public boolean blobExists(String container, String name) {
-      return blobMetadata(container, name) != null;
-   }
-
-   @Override
-   public String putBlob(String container, Blob blob) {
-      return putBlob(container, blob, PutOptions.NONE);
-   }
-
-   @Override
-   public String putBlob(String container, Blob blob, PutOptions options) {
-      if (options.isMultipart()) {
-         throw new UnsupportedOperationException();
-      }
-      ObjectApi objectApi = api.getObjectApi(regionId, container);
-      return objectApi.put(blob.getMetadata().getName(), blob.getPayload(), metadata(blob.getMetadata().getUserMetadata()));
-   }
-
-   @Override
-   public BlobMetadata blobMetadata(String container, String name) {
-      SwiftObject object = api.getObjectApi(regionId, container).get(name);
-      if (object == null) {
-         return null;
-      }
-      return toBlobMetadata(container).apply(object);
-   }
-
-   @Override
-   public Blob getBlob(String container, String key) {
-      return getBlob(container, key, GetOptions.NONE);
-   }
-
-   @Override
-   public Blob getBlob(String container, String name, GetOptions options) {
-      ObjectApi objectApi = api.getObjectApi(regionId, container);
-      SwiftObject object = objectApi.get(name, toGetOptions.apply(options));
-      if (object == null) {
-         return null;
-      }
-      Blob blob = new BlobImpl(toBlobMetadata(container).apply(object));
-      blob.setPayload(object.getPayload());
-      blob.setAllHeaders(object.getHeaders());
-      return blob;
-   }
-
-   @Override
-   public void removeBlob(String container, String name) {
-      api.getObjectApi(regionId, container).delete(name);
-   }
-
-   @Override
-   public BlobStoreContext getContext() {
-      return context;
-   }
-
-   @Override
-   public BlobBuilder blobBuilder(String name) {
-      return new BlobBuilderImpl().name(name);
-   }
-
-   @Override
-   public boolean directoryExists(String containerName, String directory) {
-      return api.getObjectApi(regionId, containerName)
-            .get(directory) != null;
-   }
-
-   @Override
-   public void createDirectory(String containerName, String directory) {
-      api.getObjectApi(regionId, containerName)
-            .put(directory, directoryPayload);
-   }
-
-   private final Payload directoryPayload = new ByteSourcePayload(ByteSource.wrap(new byte[] {})) {
-      {
-         getContentMetadata().setContentType("application/directory");
-      }
-   };
-
-   @Override
-   public void deleteDirectory(String containerName, String directory) {
-      api.getObjectApi(regionId, containerName).delete(directory);
-   }
-
-   @Override
-   public long countBlobs(String containerName) {
-      Container container = api.getContainerApi(regionId).get(containerName);
-      // undefined if container doesn't exist, so default to zero
-      return container != null ? container.getObjectCount() : 0;
-   }
-
-   @Override
-   public void clearContainer(String containerName) {
-      clearContainer(containerName, recursive());
-   }
-
-   @Override
-   public void clearContainer(String containerName, ListContainerOptions options) {
-      // this could be implemented to use bulk delete
-      clearList.execute(containerName, options);
-   }
-
-   @Override
-   public void deleteContainer(String container) {
-      clearContainer(container, recursive());
-      api.getContainerApi(regionId).deleteIfEmpty(container);
-      containerCache.invalidate(container);
-   }
-
-   @Override
-   public boolean deleteContainerIfEmpty(String container) {
-      boolean deleted = api.getContainerApi(regionId).deleteIfEmpty(container);
-      if (deleted) {
-         containerCache.invalidate(container);
-      }
-      return deleted;
-   }
-
-   protected final LoadingCache<String, Optional<Container>> containerCache = CacheBuilder.newBuilder().build(
-         new CacheLoader<String, Optional<Container>>() {
-            public Optional<Container> load(String container) {
-               return Optional.fromNullable(api.getContainerApi(regionId).get(container));
-            }
-         });
-
-   protected Function<SwiftObject, MutableBlobMetadata> toBlobMetadata(String container) {
-      return new ToBlobMetadata(containerCache.getUnchecked(container).get());
-   }
-
-   @Override
-   public long countBlobs(String containerName, ListContainerOptions options) {
-      throw new UnsupportedOperationException();
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/9b19cded/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedTemporaryUrlBlobSigner.java
----------------------------------------------------------------------
diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedTemporaryUrlBlobSigner.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedTemporaryUrlBlobSigner.java
deleted file mode 100644
index 5134efa..0000000
--- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedTemporaryUrlBlobSigner.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.openstack.swift.v1.blobstore;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.jclouds.Constants.PROPERTY_SESSION_INTERVAL;
-
-import java.net.URI;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-
-import javax.inject.Provider;
-
-import org.jclouds.blobstore.BlobRequestSigner;
-import org.jclouds.blobstore.domain.Blob;
-import org.jclouds.blobstore.functions.BlobToHttpGetOptions;
-import org.jclouds.date.TimeStamp;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.http.Uris;
-import org.jclouds.http.options.GetOptions;
-import org.jclouds.location.Region;
-import org.jclouds.openstack.swift.v1.SwiftApi;
-import org.jclouds.openstack.swift.v1.TemporaryUrlSigner;
-
-import com.google.common.base.Supplier;
-import com.google.inject.Inject;
-import com.google.inject.assistedinject.Assisted;
-import com.google.inject.name.Named;
-
-/**
- * Uses {@link TemporaryUrlSigner} to sign requests for access to blobs. If no
- * interval is supplied, it defaults to a year.
- */
-public class RegionScopedTemporaryUrlBlobSigner implements BlobRequestSigner {
-
-   @Inject
-   protected RegionScopedTemporaryUrlBlobSigner(@Region Supplier<Map<String, Supplier<URI>>> regionToUris,
-         @Named(PROPERTY_SESSION_INTERVAL) long seconds, @TimeStamp Provider<Long> timestamp, SwiftApi api,
-         @Assisted String regionId) {
-      checkNotNull(regionId, "regionId");
-      this.timestamp = timestamp;
-      this.signer = TemporaryUrlSigner.checkApiEvery(api.getAccountApi(regionId), seconds);
-      this.storageUrl = regionToUris.get().get(regionId).get();
-   }
-
-   private static final long YEAR = TimeUnit.DAYS.toSeconds(365);
-   private final BlobToHttpGetOptions toGetOptions = new BlobToHttpGetOptions();
-   private final Provider<Long> timestamp;
-   private final TemporaryUrlSigner signer;
-   private final URI storageUrl;
-
-   @Override
-   public HttpRequest signGetBlob(String container, String name) {
-      return signGetBlob(container, name, YEAR);
-   }
-
-   @Override
-   public HttpRequest signGetBlob(String container, String name, long timeInSeconds) {
-      return sign("GET", container, name, GetOptions.NONE, timestamp.get() + timeInSeconds);
-   }
-
-   @Override
-   public HttpRequest signGetBlob(String container, String name, org.jclouds.blobstore.options.GetOptions options) {
-      return sign("GET", container, name, toGetOptions.apply(options), timestamp.get() + YEAR);
-   }
-
-   @Override
-   public HttpRequest signPutBlob(String container, Blob blob) {
-      return signPutBlob(container, blob, YEAR);
-   }
-
-   @Override
-   public HttpRequest signPutBlob(String container, Blob blob, long timeInSeconds) {
-      return sign("PUT", container, blob.getMetadata().getName(), GetOptions.NONE, timestamp.get() + timeInSeconds);
-   }
-
-   @Override
-   public HttpRequest signRemoveBlob(String container, String name) {
-      return sign("DELETE", container, name, GetOptions.NONE, timestamp.get() + YEAR);
-   }
-
-   private HttpRequest sign(String method, String container, String name, GetOptions options, long expires) {
-      checkNotNull(container, "container");
-      checkNotNull(name, "name");
-      URI url = Uris.uriBuilder(storageUrl).appendPath(container).appendPath(name).build();
-      String signature = signer.sign(method, url.getPath(), expires);
-      return HttpRequest.builder()
-                        .method(method)
-                        .endpoint(url)
-                        .addQueryParams(options.buildQueryParameters())
-                        .addQueryParam("temp_url_sig", signature)
-                        .addQueryParam("temp_url_expires", String.valueOf(expires))
-                        .headers(options.buildRequestHeaders()).build();
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/9b19cded/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/config/SignUsingTemporaryUrls.java
----------------------------------------------------------------------
diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/config/SignUsingTemporaryUrls.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/config/SignUsingTemporaryUrls.java
deleted file mode 100644
index 43a876d..0000000
--- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/config/SignUsingTemporaryUrls.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.openstack.swift.v1.blobstore.config;
-
-import javax.inject.Inject;
-
-import org.jclouds.blobstore.BlobRequestSigner;
-import org.jclouds.date.TimeStamp;
-import org.jclouds.openstack.swift.v1.blobstore.RegionScopedTemporaryUrlBlobSigner;
-
-import com.google.common.base.Function;
-import com.google.common.collect.ForwardingObject;
-import com.google.inject.AbstractModule;
-import com.google.inject.Provides;
-import com.google.inject.assistedinject.FactoryModuleBuilder;
-
-public class SignUsingTemporaryUrls extends AbstractModule {
-
-   @Override
-   protected void configure() {
-      install(new FactoryModuleBuilder().build(Factory.class));
-   }
-
-   interface Factory {
-      RegionScopedTemporaryUrlBlobSigner create(String in);
-   }
-
-   @Provides
-   Function<String, BlobRequestSigner> blobRequestSigner(FactoryFunction in) {
-      return in;
-   }
-
-   static class FactoryFunction extends ForwardingObject implements Function<String, BlobRequestSigner> {
-      @Inject
-      Factory delegate;
-
-      @Override
-      protected Factory delegate() {
-         return delegate;
-      }
-
-      @Override
-      public BlobRequestSigner apply(String in) {
-         return delegate.create(in);
-      }
-   }
-
-   @Provides
-   @TimeStamp
-   protected Long unixEpochTimestamp() {
-      return System.currentTimeMillis() / 1000;
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/9b19cded/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/config/SwiftBlobStoreContextModule.java
----------------------------------------------------------------------
diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/config/SwiftBlobStoreContextModule.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/config/SwiftBlobStoreContextModule.java
deleted file mode 100644
index c3b0a82..0000000
--- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/config/SwiftBlobStoreContextModule.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.openstack.swift.v1.blobstore.config;
-
-import javax.inject.Inject;
-
-import org.jclouds.blobstore.BlobStore;
-import org.jclouds.blobstore.BlobStoreContext;
-import org.jclouds.blobstore.attr.ConsistencyModel;
-import org.jclouds.openstack.swift.v1.blobstore.RegionScopedBlobStoreContext;
-import org.jclouds.openstack.swift.v1.blobstore.RegionScopedSwiftBlobStore;
-
-import com.google.common.base.Function;
-import com.google.common.collect.ForwardingObject;
-import com.google.inject.AbstractModule;
-import com.google.inject.Provides;
-import com.google.inject.assistedinject.FactoryModuleBuilder;
-
-public class SwiftBlobStoreContextModule extends AbstractModule {
-
-   @Override
-   protected void configure() {
-      bind(ConsistencyModel.class).toInstance(ConsistencyModel.EVENTUAL);
-      bind(BlobStoreContext.class).to(RegionScopedBlobStoreContext.class);
-      install(new FactoryModuleBuilder().build(Factory.class));
-   }
-
-   interface Factory {
-      RegionScopedSwiftBlobStore create(String in);
-   }
-
-   @Provides
-   Function<String, BlobStore> blobStore(FactoryFunction in) {
-      return in;
-   }
-
-   static class FactoryFunction extends ForwardingObject implements Function<String, BlobStore> {
-      @Inject
-      Factory delegate;
-
-      @Override
-      protected Factory delegate() {
-         return delegate;
-      }
-
-      @Override
-      public BlobStore apply(String in) {
-         return delegate.create(in);
-      }
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/9b19cded/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/functions/ToBlobMetadata.java
----------------------------------------------------------------------
diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/functions/ToBlobMetadata.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/functions/ToBlobMetadata.java
deleted file mode 100644
index 6a1b8c5..0000000
--- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/functions/ToBlobMetadata.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.openstack.swift.v1.blobstore.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import org.jclouds.blobstore.domain.MutableBlobMetadata;
-import org.jclouds.blobstore.domain.StorageType;
-import org.jclouds.blobstore.domain.internal.MutableBlobMetadataImpl;
-import org.jclouds.blobstore.strategy.IfDirectoryReturnNameStrategy;
-import org.jclouds.blobstore.strategy.internal.MarkersIfDirectoryReturnNameStrategy;
-import org.jclouds.openstack.swift.v1.domain.Container;
-import org.jclouds.openstack.swift.v1.domain.SwiftObject;
-
-import com.google.common.base.Function;
-
-public class ToBlobMetadata implements Function<SwiftObject, MutableBlobMetadata> {
-
-   private final IfDirectoryReturnNameStrategy ifDirectoryReturnName = new MarkersIfDirectoryReturnNameStrategy();
-   private final Container container;
-
-   public ToBlobMetadata(Container container) {
-      this.container = checkNotNull(container, "container");
-   }
-
-   @Override
-   public MutableBlobMetadata apply(SwiftObject from) {
-      if (from == null)
-         return null;
-      MutableBlobMetadata to = new MutableBlobMetadataImpl();
-      to.setContainer(container.getName());
-      if (container.getAnybodyRead().isPresent()) {
-         to.setPublicUri(from.getUri());
-      }
-      to.setUri(from.getUri());
-      to.setETag(from.getETag());
-      to.setName(from.getName());
-      to.setLastModified(from.getLastModified());
-      to.setContentMetadata(from.getPayload().getContentMetadata());
-      to.getContentMetadata().setContentMD5(from.getPayload().getContentMetadata().getContentMD5AsHashCode());
-      to.getContentMetadata().setExpires(from.getPayload().getContentMetadata().getExpires());
-      to.setUserMetadata(from.getMetadata());
-      String directoryName = ifDirectoryReturnName.execute(to);
-      if (directoryName != null) {
-         to.setName(directoryName);
-         to.setType(StorageType.RELATIVE_PATH);
-      } else {
-         to.setType(StorageType.BLOB);
-      }
-      return to;
-   }
-
-   @Override
-   public String toString() {
-      return "ObjectToBlobMetadata(" + container + ")";
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/9b19cded/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/functions/ToListContainerOptions.java
----------------------------------------------------------------------
diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/functions/ToListContainerOptions.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/functions/ToListContainerOptions.java
deleted file mode 100644
index 2650f5b..0000000
--- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/functions/ToListContainerOptions.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.openstack.swift.v1.blobstore.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import org.jclouds.blobstore.options.ListContainerOptions;
-
-import com.google.common.base.Function;
-
-public class ToListContainerOptions implements
-      Function<ListContainerOptions, org.jclouds.openstack.swift.v1.options.ListContainerOptions> {
-
-   @Override
-   public org.jclouds.openstack.swift.v1.options.ListContainerOptions apply(ListContainerOptions from) {
-      checkNotNull(from, "set options to instance NONE instead of passing null");
-      org.jclouds.openstack.swift.v1.options.ListContainerOptions options = new org.jclouds.openstack.swift.v1.options.ListContainerOptions();
-      if ((from.getDir() == null) && (from.isRecursive())) {
-         options.prefix("");
-      }
-      if ((from.getDir() == null) && (!from.isRecursive())) {
-         options.path("");
-      }
-      if ((from.getDir() != null) && (from.isRecursive())) {
-         options.prefix(from.getDir().endsWith("/") ? from.getDir() : from.getDir() + "/");
-      }
-      if ((from.getDir() != null) && (!from.isRecursive())) {
-         options.path(from.getDir());
-      }
-      if (from.getMarker() != null) {
-         options.marker(from.getMarker());
-      }
-      if (from.getMaxResults() != null) {
-         options.limit(from.getMaxResults());
-      }
-      return options;
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/9b19cded/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/functions/ToResourceMetadata.java
----------------------------------------------------------------------
diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/functions/ToResourceMetadata.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/functions/ToResourceMetadata.java
deleted file mode 100644
index bc5e186..0000000
--- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/functions/ToResourceMetadata.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.openstack.swift.v1.blobstore.functions;
-
-import org.jclouds.blobstore.domain.MutableStorageMetadata;
-import org.jclouds.blobstore.domain.StorageMetadata;
-import org.jclouds.blobstore.domain.StorageType;
-import org.jclouds.blobstore.domain.internal.MutableStorageMetadataImpl;
-import org.jclouds.domain.Location;
-import org.jclouds.openstack.swift.v1.domain.Container;
-
-import com.google.common.base.Function;
-
-public class ToResourceMetadata implements Function<Container, StorageMetadata> {
-   private Location region;
-
-   public ToResourceMetadata(Location region) {
-      this.region = region;
-   }
-
-   @Override
-   public StorageMetadata apply(Container from) {
-      MutableStorageMetadata to = new MutableStorageMetadataImpl();
-      to.setName(from.getName());
-      to.setLocation(region);
-      to.setType(StorageType.CONTAINER);
-      to.setUserMetadata(from.getMetadata());
-      return to;
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/9b19cded/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/config/BaseSwiftHttpApiModule.java
----------------------------------------------------------------------
diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/config/BaseSwiftHttpApiModule.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/config/BaseSwiftHttpApiModule.java
deleted file mode 100644
index d6d8b6a..0000000
--- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/config/BaseSwiftHttpApiModule.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.openstack.swift.v1.config;
-
-import org.jclouds.http.HttpErrorHandler;
-import org.jclouds.http.annotation.ClientError;
-import org.jclouds.http.annotation.Redirection;
-import org.jclouds.http.annotation.ServerError;
-import org.jclouds.openstack.swift.v1.SwiftApi;
-import org.jclouds.openstack.swift.v1.handlers.SwiftErrorHandler;
-import org.jclouds.rest.ConfiguresHttpApi;
-import org.jclouds.rest.config.HttpApiModule;
-
-@ConfiguresHttpApi
-public abstract class BaseSwiftHttpApiModule<A extends SwiftApi> extends HttpApiModule<A> {
-
-   protected BaseSwiftHttpApiModule(Class<A> api) {
-      super(api);
-   }
-
-   @Override
-   protected void configure() {
-      super.configure();
-   }
-
-   @Override
-   protected void bindErrorHandlers() {
-      bind(HttpErrorHandler.class).annotatedWith(Redirection.class).to(SwiftErrorHandler.class);
-      bind(HttpErrorHandler.class).annotatedWith(ClientError.class).to(SwiftErrorHandler.class);
-      bind(HttpErrorHandler.class).annotatedWith(ServerError.class).to(SwiftErrorHandler.class);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/9b19cded/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/config/SwiftHttpApiModule.java
----------------------------------------------------------------------
diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/config/SwiftHttpApiModule.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/config/SwiftHttpApiModule.java
deleted file mode 100644
index cb93760..0000000
--- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/config/SwiftHttpApiModule.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.openstack.swift.v1.config;
-import org.jclouds.openstack.swift.v1.SwiftApi;
-import org.jclouds.rest.ConfiguresHttpApi;
-
-@ConfiguresHttpApi
-public class SwiftHttpApiModule extends BaseSwiftHttpApiModule<SwiftApi> {
-
-   public SwiftHttpApiModule() {
-      super(SwiftApi.class);
-   }
-
-   @Override
-   protected void configure() {
-      super.configure();
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/9b19cded/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/config/SwiftTypeAdapters.java
----------------------------------------------------------------------
diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/config/SwiftTypeAdapters.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/config/SwiftTypeAdapters.java
deleted file mode 100644
index 4eafdb6..0000000
--- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/config/SwiftTypeAdapters.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.openstack.swift.v1.config;
-
-import java.io.IOException;
-import java.lang.reflect.Type;
-import java.net.URI;
-import java.util.Map;
-
-import org.jclouds.json.config.GsonModule.DateAdapter;
-import org.jclouds.json.config.GsonModule.Iso8601DateAdapter;
-import org.jclouds.openstack.swift.v1.domain.BulkDeleteResponse;
-import org.jclouds.openstack.swift.v1.domain.ExtractArchiveResponse;
-
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMap.Builder;
-import com.google.gson.TypeAdapter;
-import com.google.gson.stream.JsonReader;
-import com.google.gson.stream.JsonWriter;
-import com.google.inject.AbstractModule;
-import com.google.inject.Provides;
-
-public class SwiftTypeAdapters extends AbstractModule {
-
-   @Override
-   protected void configure() {
-      bind(DateAdapter.class).to(Iso8601DateAdapter.class);
-   }
-
-   @Provides
-   public Map<Type, Object> provideCustomAdapterBindings() {
-      return ImmutableMap.<Type, Object> builder()
-            .put(ExtractArchiveResponse.class, new ExtractArchiveResponseAdapter())
-            .put(BulkDeleteResponse.class, new BulkDeleteResponseAdapter()).build();
-   }
-
-   static class ExtractArchiveResponseAdapter extends TypeAdapter<ExtractArchiveResponse> {
-
-      @Override
-      public ExtractArchiveResponse read(JsonReader reader) throws IOException {
-         int created = 0;
-         Builder<String, String> errors = ImmutableMap.<String, String> builder();
-         reader.beginObject();
-         while (reader.hasNext()) {
-            String key = reader.nextName();
-            if (key.equals("Number Files Created")) {
-               created = reader.nextInt();
-            } else if (key.equals("Errors")) {
-               readErrors(reader, errors);
-            } else {
-               reader.skipValue();
-            }
-         }
-         reader.endObject();
-         return ExtractArchiveResponse.create(created, errors.build());
-      }
-
-      @Override
-      public void write(JsonWriter arg0, ExtractArchiveResponse arg1) throws IOException {
-         throw new UnsupportedOperationException();
-      }
-   }
-
-   static class BulkDeleteResponseAdapter extends TypeAdapter<BulkDeleteResponse> {
-
-      @Override
-      public BulkDeleteResponse read(JsonReader reader) throws IOException {
-         int deleted = 0;
-         int notFound = 0;
-         Builder<String, String> errors = ImmutableMap.<String, String> builder();
-         reader.beginObject();
-         while (reader.hasNext()) {
-            String key = reader.nextName();
-            if (key.equals("Number Deleted")) {
-               deleted = reader.nextInt();
-            } else if (key.equals("Number Not Found")) {
-               notFound = reader.nextInt();
-            } else if (key.equals("Errors")) {
-               readErrors(reader, errors);
-            } else {
-               reader.skipValue();
-            }
-         }
-         reader.endObject();
-         return BulkDeleteResponse.create(deleted, notFound, errors.build());
-      }
-
-      @Override
-      public void write(JsonWriter arg0, BulkDeleteResponse arg1) throws IOException {
-         throw new UnsupportedOperationException();
-      }
-   }
-
-   static void readErrors(JsonReader reader, Builder<String, String> errors) throws IOException {
-      reader.beginArray();
-      while (reader.hasNext()) {
-         reader.beginArray();
-         String decodedPath = URI.create(reader.nextString()).getPath();
-         errors.put(decodedPath, reader.nextString());
-         reader.endArray();
-      }
-      reader.endArray();
-   }
-
-}