You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ad...@apache.org on 2014/10/08 07:06:18 UTC
[3/5] git commit: JCLOUDS-641 fix return code for deleteIfEmpty
JCLOUDS-641 fix return code for deleteIfEmpty
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/cc00dee9
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/tree/cc00dee9
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/diff/cc00dee9
Branch: refs/heads/master
Commit: cc00dee92a3075fa26b4fef307d79f571ad9de73
Parents: 389a3d8
Author: Adrian Cole <ad...@gmail.com>
Authored: Tue Oct 7 21:33:21 2014 -0700
Committer: Adrian Cole <ad...@apache.org>
Committed: Tue Oct 7 22:05:58 2014 -0700
----------------------------------------------------------------------
.../openstack/swift/v1/SwiftFallbacks.java | 43 ++++++++++++++++++++
.../swift/v1/features/ContainerApi.java | 4 +-
.../swift/v1/features/ContainerApiMockTest.java | 3 +-
3 files changed, 46 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/cc00dee9/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
new file mode 100644
index 0000000..c875707
--- /dev/null
+++ b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/SwiftFallbacks.java
@@ -0,0 +1,43 @@
+/*
+ * 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/cc00dee9/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/ContainerApi.java
----------------------------------------------------------------------
diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/ContainerApi.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/ContainerApi.java
index 1eb7ddf..4cbac0d 100644
--- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/ContainerApi.java
+++ b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/ContainerApi.java
@@ -17,6 +17,7 @@
package org.jclouds.openstack.swift.v1.features;
import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
+import static org.jclouds.openstack.swift.v1.SwiftFallbacks.TrueOn404FalseOn409;
import java.util.Map;
@@ -33,7 +34,6 @@ import javax.ws.rs.PathParam;
import org.jclouds.Fallbacks.EmptyFluentIterableOnNotFoundOr404;
import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
import org.jclouds.Fallbacks.NullOnNotFoundOr404;
-import org.jclouds.Fallbacks.TrueOnNotFoundOr404;
import org.jclouds.javax.annotation.Nullable;
import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
import org.jclouds.openstack.swift.v1.binders.BindMetadataToHeaders.BindContainerMetadataToHeaders;
@@ -209,7 +209,7 @@ public interface ContainerApi {
@Named("container:deleteIfEmpty")
@DELETE
@Path("/{containerName}")
- @Fallback(TrueOnNotFoundOr404.class)
+ @Fallback(TrueOn404FalseOn409.class)
boolean deleteIfEmpty(@PathParam("containerName") String containerName) throws IllegalStateException;
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/cc00dee9/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/features/ContainerApiMockTest.java
----------------------------------------------------------------------
diff --git a/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/features/ContainerApiMockTest.java b/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/features/ContainerApiMockTest.java
index 64c5993..6b3ef66 100644
--- a/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/features/ContainerApiMockTest.java
+++ b/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/features/ContainerApiMockTest.java
@@ -334,7 +334,6 @@ public class ContainerApiMockTest extends BaseOpenStackMockTest<SwiftApi> {
}
}
- @Test(expectedExceptions = IllegalStateException.class)
public void testDeleteWhenNotEmpty() throws Exception {
MockWebServer server = mockOpenStackServer();
server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -342,7 +341,7 @@ public class ContainerApiMockTest extends BaseOpenStackMockTest<SwiftApi> {
try {
SwiftApi api = api(server.getUrl("/").toString(), "openstack-swift");
- api.getContainerApi("DFW").deleteIfEmpty("myContainer");
+ assertFalse(api.getContainerApi("DFW").deleteIfEmpty("myContainer"));
} finally {
assertEquals(server.getRequestCount(), 2);