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);
