Repository: jclouds-labs-google
Updated Branches:
  refs/heads/master 521a0c05f -> 9f60939e8


Adding fix to Project.get fallback. Returns 400 or 404.


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

Branch: refs/heads/master
Commit: 9f60939e8abc56309493971d68395d6dd7844072
Parents: b41b0d0
Author: Daniel Broudy <[email protected]>
Authored: Thu Oct 30 15:03:32 2014 -0700
Committer: Adrian Cole <[email protected]>
Committed: Mon Nov 3 15:20:20 2014 -0800

----------------------------------------------------------------------
 .../GoogleComputeEngineFallbacks.java                | 15 ++++++++++++++-
 .../googlecomputeengine/features/ProjectApi.java     |  4 ++--
 2 files changed, 16 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/9f60939e/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/GoogleComputeEngineFallbacks.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/GoogleComputeEngineFallbacks.java
 
b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/GoogleComputeEngineFallbacks.java
index 8024bd6..573bca0 100644
--- 
a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/GoogleComputeEngineFallbacks.java
+++ 
b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/GoogleComputeEngineFallbacks.java
@@ -16,14 +16,27 @@
  */
 package org.jclouds.googlecomputeengine;
 
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Predicates.in;
+import static com.google.common.base.Throwables.propagate;
+import static com.google.common.primitives.Ints.asList;
 import static org.jclouds.Fallbacks.valOnNotFoundOr404;
+import static org.jclouds.http.HttpUtils.returnValueOnCodeOrNull;
 
 import org.jclouds.Fallback;
 import org.jclouds.googlecomputeengine.domain.ListPage;
 
 public final class GoogleComputeEngineFallbacks {
+   public static class NullOn400or404 implements Fallback<Object> {
+      @Override public Object createOrPropagate(Throwable t) throws Exception {
+         Boolean returnVal = returnValueOnCodeOrNull(checkNotNull(t, 
"throwable"), false, in(asList(400, 404)));
+         if (returnVal != null)
+            return null;
+         throw propagate(t);
+      }
+   }
    public static final class EmptyListPageOnNotFoundOr404 implements 
Fallback<Object> {
-      public ListPage<Object> createOrPropagate(Throwable t) throws Exception {
+      @Override public ListPage<Object> createOrPropagate(Throwable t) throws 
Exception {
          return valOnNotFoundOr404(ListPage.create(null, null, null), t);
       }
    }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/9f60939e/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ProjectApi.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ProjectApi.java
 
b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ProjectApi.java
index effbc83..573aaa5 100644
--- 
a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ProjectApi.java
+++ 
b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ProjectApi.java
@@ -30,7 +30,7 @@ import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 
-import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import 
org.jclouds.googlecomputeengine.GoogleComputeEngineFallbacks.NullOn400or404;
 import org.jclouds.googlecomputeengine.binders.MetadataBinder;
 import org.jclouds.googlecomputeengine.domain.Operation;
 import org.jclouds.googlecomputeengine.domain.Project;
@@ -59,7 +59,7 @@ public interface ProjectApi {
    @GET
    @OAuthScopes(COMPUTE_READONLY_SCOPE)
    @Consumes(MediaType.APPLICATION_JSON)
-   @Fallback(NullOnNotFoundOr404.class)
+   @Fallback(NullOn400or404.class)
    @Path("/projects/{project}")
    Project get(@PathParam("project") String projectName);
 

Reply via email to