You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by cc...@apache.org on 2014/08/14 00:35:43 UTC

git commit: JCLOUDS-633: Support passing bearer token directly for OAuth2

Repository: jclouds-labs-google
Updated Branches:
  refs/heads/master a0d0c4c7e -> 2717e8e82


JCLOUDS-633: Support passing bearer token directly for OAuth2


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/2717e8e8
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/tree/2717e8e8
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/diff/2717e8e8

Branch: refs/heads/master
Commit: 2717e8e8258af343869a4f8ce798bac176e1ee6f
Parents: a0d0c4c
Author: Chris Custine <cc...@apache.org>
Authored: Fri Jul 18 12:53:48 2014 -0600
Committer: Chris Custine <cc...@apache.org>
Committed: Wed Aug 13 16:11:44 2014 -0600

----------------------------------------------------------------------
 .../config/OAuthModuleWithoutTypeAdapters.java  |  2 +
 .../features/BucketAccessControlsApi.java       |  4 +-
 .../googlecloudstorage/features/BucketApi.java  |  4 +-
 .../DefaultObjectAccessControlsApi.java         |  4 +-
 .../config/OAuthModuleWithoutTypeAdapters.java  |  2 +
 .../features/AddressApi.java                    |  4 +-
 .../googlecomputeengine/features/DiskApi.java   |  4 +-
 .../features/FirewallApi.java                   |  4 +-
 .../features/GlobalOperationApi.java            |  4 +-
 .../googlecomputeengine/features/ImageApi.java  |  4 +-
 .../features/InstanceApi.java                   |  4 +-
 .../features/MachineTypeApi.java                |  4 +-
 .../features/NetworkApi.java                    |  4 +-
 .../features/ProjectApi.java                    |  4 +-
 .../googlecomputeengine/features/RegionApi.java |  4 +-
 .../features/RegionOperationApi.java            |  4 +-
 .../googlecomputeengine/features/RouteApi.java  |  4 +-
 .../features/SnapshotApi.java                   |  4 +-
 .../googlecomputeengine/features/ZoneApi.java   |  4 +-
 .../features/ZoneOperationApi.java              |  4 +-
 .../GoogleComputeEngineServiceLiveTest.java     |  5 +++
 .../jclouds/oauth/v2/config/CredentialType.java | 42 ++++++++++++++++++++
 .../jclouds/oauth/v2/config/OAuthModule.java    | 41 +++++++++++++++++--
 .../oauth/v2/config/OAuthProperties.java        |  8 ++++
 .../v2/filters/BearerTokenAuthenticator.java    | 41 +++++++++++++++++++
 .../v2/filters/OAuthAuthenticationFilter.java   | 27 +++++++++++++
 .../oauth/v2/filters/OAuthAuthenticator.java    |  3 +-
 .../org/jclouds/oauth/v2/OAuthTestUtils.java    | 12 ++++++
 28 files changed, 213 insertions(+), 42 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/config/OAuthModuleWithoutTypeAdapters.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/config/OAuthModuleWithoutTypeAdapters.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/config/OAuthModuleWithoutTypeAdapters.java
index ae1b417..b9292a1 100644
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/config/OAuthModuleWithoutTypeAdapters.java
+++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/config/OAuthModuleWithoutTypeAdapters.java
@@ -16,6 +16,7 @@
  */
 package org.jclouds.googlecloudstorage.config;
 
+import org.jclouds.oauth.v2.config.CredentialType;
 import org.jclouds.oauth.v2.config.OAuthModule;
 import org.jclouds.oauth.v2.domain.OAuthCredentials;
 import org.jclouds.oauth.v2.domain.Token;
@@ -45,5 +46,6 @@ public class OAuthModuleWithoutTypeAdapters extends OAuthModule {
       }).to(BuildTokenRequest.class);
       bind(new TypeLiteral<Function<TokenRequest, Token>>() {
       }).to(FetchToken.class);
+      bind(CredentialType.class).toProvider(OAuthModule.CredentialTypeFromPropertyOrDefault.class);
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/BucketAccessControlsApi.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/BucketAccessControlsApi.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/BucketAccessControlsApi.java
index cc2cad7..2d56cae 100644
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/BucketAccessControlsApi.java
+++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/BucketAccessControlsApi.java
@@ -36,7 +36,7 @@ import org.jclouds.googlecloudstorage.handlers.BucketAccessControlsBinder;
 import org.jclouds.http.HttpResponse;
 import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.oauth.v2.config.OAuthScopes;
-import org.jclouds.oauth.v2.filters.OAuthAuthenticator;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
 import org.jclouds.rest.annotations.BinderParam;
 import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.MapBinder;
@@ -53,7 +53,7 @@ import org.jclouds.rest.binders.BindToJsonPayload;
  */
 
 @SkipEncoding({ '/', '=' })
-@RequestFilters(OAuthAuthenticator.class)
+@RequestFilters(OAuthAuthenticationFilter.class)
 public interface BucketAccessControlsApi {
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/BucketApi.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/BucketApi.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/BucketApi.java
index d1f05a5..4b00b20 100644
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/BucketApi.java
+++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/BucketApi.java
@@ -43,7 +43,7 @@ import org.jclouds.googlecloudstorage.options.ListOptions;
 import org.jclouds.googlecloudstorage.options.UpdateBucketOptions;
 import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.oauth.v2.config.OAuthScopes;
-import org.jclouds.oauth.v2.filters.OAuthAuthenticator;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
 import org.jclouds.rest.annotations.BinderParam;
 import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.MapBinder;
@@ -60,7 +60,7 @@ import org.jclouds.rest.binders.BindToJsonPayload;
  */
 
 @SkipEncoding({ '/', '=' })
-@RequestFilters(OAuthAuthenticator.class)
+@RequestFilters(OAuthAuthenticationFilter.class)
 public interface BucketApi {
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/DefaultObjectAccessControlsApi.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/DefaultObjectAccessControlsApi.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/DefaultObjectAccessControlsApi.java
index 27b9505..91d1f52 100644
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/DefaultObjectAccessControlsApi.java
+++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/DefaultObjectAccessControlsApi.java
@@ -39,7 +39,7 @@ import org.jclouds.googlecloudstorage.handlers.DefaultObjectAccessControlsBinder
 import org.jclouds.http.HttpResponse;
 import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.oauth.v2.config.OAuthScopes;
-import org.jclouds.oauth.v2.filters.OAuthAuthenticator;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
 import org.jclouds.rest.annotations.BinderParam;
 import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.MapBinder;
@@ -56,7 +56,7 @@ import org.jclouds.rest.binders.BindToJsonPayload;
  */
 
 @SkipEncoding({ '/', '=' })
-@RequestFilters(OAuthAuthenticator.class)
+@RequestFilters(OAuthAuthenticationFilter.class)
 public interface DefaultObjectAccessControlsApi {
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/config/OAuthModuleWithoutTypeAdapters.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/config/OAuthModuleWithoutTypeAdapters.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/config/OAuthModuleWithoutTypeAdapters.java
index 157dd9b..03f2f46 100644
--- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/config/OAuthModuleWithoutTypeAdapters.java
+++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/config/OAuthModuleWithoutTypeAdapters.java
@@ -16,6 +16,7 @@
  */
 package org.jclouds.googlecomputeengine.config;
 
+import org.jclouds.oauth.v2.config.CredentialType;
 import org.jclouds.oauth.v2.config.OAuthModule;
 import org.jclouds.oauth.v2.domain.OAuthCredentials;
 import org.jclouds.oauth.v2.domain.Token;
@@ -47,5 +48,6 @@ public class OAuthModuleWithoutTypeAdapters extends OAuthModule {
       }).to(BuildTokenRequest.class);
       bind(new TypeLiteral<Function<TokenRequest, Token>>() {
       }).to(FetchToken.class);
+      bind(CredentialType.class).toProvider(OAuthModule.CredentialTypeFromPropertyOrDefault.class);
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/AddressApi.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/AddressApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/AddressApi.java
index 40ec7dc..d363715 100644
--- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/AddressApi.java
+++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/AddressApi.java
@@ -41,7 +41,7 @@ import org.jclouds.googlecomputeengine.functions.internal.ParseAddresses;
 import org.jclouds.googlecomputeengine.options.ListOptions;
 import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.oauth.v2.config.OAuthScopes;
-import org.jclouds.oauth.v2.filters.OAuthAuthenticator;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
 import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.MapBinder;
 import org.jclouds.rest.annotations.PayloadParam;
@@ -57,7 +57,7 @@ import org.jclouds.rest.binders.BindToJsonPayload;
  * @see <a href="https://developers.google.com/compute/docs/reference/v1/addresses"/>
  */
 @SkipEncoding({'/', '='})
-@RequestFilters(OAuthAuthenticator.class)
+@RequestFilters(OAuthAuthenticationFilter.class)
 public interface AddressApi {
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/DiskApi.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/DiskApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/DiskApi.java
index fa26c25..dcb1942 100644
--- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/DiskApi.java
+++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/DiskApi.java
@@ -41,7 +41,7 @@ import org.jclouds.googlecomputeengine.functions.internal.ParseDisks;
 import org.jclouds.googlecomputeengine.options.ListOptions;
 import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.oauth.v2.config.OAuthScopes;
-import org.jclouds.oauth.v2.filters.OAuthAuthenticator;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
 import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.MapBinder;
 import org.jclouds.rest.annotations.PayloadParam;
@@ -57,7 +57,7 @@ import org.jclouds.rest.binders.BindToJsonPayload;
  * @see <a href="https://developers.google.com/compute/docs/reference/v1/disks"/>
  */
 @SkipEncoding({'/', '='})
-@RequestFilters(OAuthAuthenticator.class)
+@RequestFilters(OAuthAuthenticationFilter.class)
 public interface DiskApi {
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/FirewallApi.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/FirewallApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/FirewallApi.java
index 677b56a..79b2ec0 100644
--- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/FirewallApi.java
+++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/FirewallApi.java
@@ -47,7 +47,7 @@ import org.jclouds.googlecomputeengine.options.FirewallOptions;
 import org.jclouds.googlecomputeengine.options.ListOptions;
 import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.oauth.v2.config.OAuthScopes;
-import org.jclouds.oauth.v2.filters.OAuthAuthenticator;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
 import org.jclouds.rest.annotations.BinderParam;
 import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.MapBinder;
@@ -65,7 +65,7 @@ import org.jclouds.rest.binders.BindToJsonPayload;
  * @see <a href="https://developers.google.com/compute/docs/reference/v1/firewalls"/>
  */
 @SkipEncoding({'/', '='})
-@RequestFilters(OAuthAuthenticator.class)
+@RequestFilters(OAuthAuthenticationFilter.class)
 public interface FirewallApi {
    /**
     * Returns the specified image resource.

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/GlobalOperationApi.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/GlobalOperationApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/GlobalOperationApi.java
index af3221c..818ae86 100644
--- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/GlobalOperationApi.java
+++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/GlobalOperationApi.java
@@ -38,7 +38,7 @@ import org.jclouds.googlecomputeengine.functions.internal.ParseGlobalOperations;
 import org.jclouds.googlecomputeengine.options.ListOptions;
 import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.oauth.v2.config.OAuthScopes;
-import org.jclouds.oauth.v2.filters.OAuthAuthenticator;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
 import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.RequestFilters;
 import org.jclouds.rest.annotations.ResponseParser;
@@ -51,7 +51,7 @@ import org.jclouds.rest.annotations.Transform;
  * @see <a href="https://developers.google.com/compute/docs/reference/v1/globalOperations"/>
  */
 @SkipEncoding({'/', '='})
-@RequestFilters(OAuthAuthenticator.class)
+@RequestFilters(OAuthAuthenticationFilter.class)
 public interface GlobalOperationApi {
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ImageApi.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ImageApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ImageApi.java
index cbac67e..d5755f2 100644
--- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ImageApi.java
+++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ImageApi.java
@@ -39,7 +39,7 @@ import org.jclouds.googlecomputeengine.functions.internal.ParseImages;
 import org.jclouds.googlecomputeengine.options.ListOptions;
 import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.oauth.v2.config.OAuthScopes;
-import org.jclouds.oauth.v2.filters.OAuthAuthenticator;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
 import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.RequestFilters;
 import org.jclouds.rest.annotations.ResponseParser;
@@ -53,7 +53,7 @@ import org.jclouds.rest.annotations.Transform;
  * @see <a href="https://developers.google.com/compute/docs/reference/v1/images"/>
  */
 @SkipEncoding({'/', '='})
-@RequestFilters(OAuthAuthenticator.class)
+@RequestFilters(OAuthAuthenticationFilter.class)
 public interface ImageApi {
    /**
     * Returns the specified image resource.

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/InstanceApi.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/InstanceApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/InstanceApi.java
index ab80fb5..2a88a79 100644
--- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/InstanceApi.java
+++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/InstanceApi.java
@@ -48,7 +48,7 @@ import org.jclouds.googlecomputeengine.options.AttachDiskOptions;
 import org.jclouds.googlecomputeengine.options.ListOptions;
 import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.oauth.v2.config.OAuthScopes;
-import org.jclouds.oauth.v2.filters.OAuthAuthenticator;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
 import org.jclouds.rest.annotations.BinderParam;
 import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.MapBinder;
@@ -66,7 +66,7 @@ import org.jclouds.rest.binders.BindToJsonPayload;
  * @see InstanceApi
  */
 @SkipEncoding({'/', '='})
-@RequestFilters(OAuthAuthenticator.class)
+@RequestFilters(OAuthAuthenticationFilter.class)
 public interface InstanceApi {
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/MachineTypeApi.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/MachineTypeApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/MachineTypeApi.java
index e88362b..9c0e411 100644
--- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/MachineTypeApi.java
+++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/MachineTypeApi.java
@@ -36,7 +36,7 @@ import org.jclouds.googlecomputeengine.functions.internal.ParseMachineTypes;
 import org.jclouds.googlecomputeengine.options.ListOptions;
 import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.oauth.v2.config.OAuthScopes;
-import org.jclouds.oauth.v2.filters.OAuthAuthenticator;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
 import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.RequestFilters;
 import org.jclouds.rest.annotations.ResponseParser;
@@ -49,7 +49,7 @@ import org.jclouds.rest.annotations.Transform;
  * @see <a href="https://developers.google.com/compute/docs/reference/v1/machineTypes"/>
  */
 @SkipEncoding({'/', '='})
-@RequestFilters(OAuthAuthenticator.class)
+@RequestFilters(OAuthAuthenticationFilter.class)
 @Consumes(MediaType.APPLICATION_JSON)
 public interface MachineTypeApi {
 

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/NetworkApi.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/NetworkApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/NetworkApi.java
index 82fe8e2..8f21287 100644
--- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/NetworkApi.java
+++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/NetworkApi.java
@@ -41,7 +41,7 @@ import org.jclouds.googlecomputeengine.functions.internal.ParseNetworks;
 import org.jclouds.googlecomputeengine.options.ListOptions;
 import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.oauth.v2.config.OAuthScopes;
-import org.jclouds.oauth.v2.filters.OAuthAuthenticator;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
 import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.MapBinder;
 import org.jclouds.rest.annotations.PayloadParam;
@@ -57,7 +57,7 @@ import org.jclouds.rest.binders.BindToJsonPayload;
  * @see <a href="https://developers.google.com/compute/docs/reference/v1/networks"/>
  */
 @SkipEncoding({'/', '='})
-@RequestFilters(OAuthAuthenticator.class)
+@RequestFilters(OAuthAuthenticationFilter.class)
 public interface NetworkApi {
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/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 94cfe05..8871593 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
@@ -35,7 +35,7 @@ import org.jclouds.googlecomputeengine.domain.Operation;
 import org.jclouds.googlecomputeengine.domain.Project;
 import org.jclouds.googlecomputeengine.handlers.MetadataBinder;
 import org.jclouds.oauth.v2.config.OAuthScopes;
-import org.jclouds.oauth.v2.filters.OAuthAuthenticator;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
 import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.MapBinder;
 import org.jclouds.rest.annotations.PayloadParam;
@@ -48,7 +48,7 @@ import org.jclouds.rest.annotations.SkipEncoding;
  * @see <a href="https://developers.google.com/compute/docs/reference/v1/projects"/>
  */
 @SkipEncoding({'/', '='})
-@RequestFilters(OAuthAuthenticator.class)
+@RequestFilters(OAuthAuthenticationFilter.class)
 public interface ProjectApi {
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RegionApi.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RegionApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RegionApi.java
index 872918d..608a614 100644
--- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RegionApi.java
+++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RegionApi.java
@@ -34,7 +34,7 @@ import org.jclouds.googlecomputeengine.domain.Region;
 import org.jclouds.googlecomputeengine.functions.internal.ParseRegions;
 import org.jclouds.googlecomputeengine.options.ListOptions;
 import org.jclouds.oauth.v2.config.OAuthScopes;
-import org.jclouds.oauth.v2.filters.OAuthAuthenticator;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
 import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.RequestFilters;
 import org.jclouds.rest.annotations.ResponseParser;
@@ -47,7 +47,7 @@ import org.jclouds.rest.annotations.Transform;
  * @see <a href="https://developers.google.com/compute/docs/reference/v1/regions"/>
  */
 @SkipEncoding({'/', '='})
-@RequestFilters(OAuthAuthenticator.class)
+@RequestFilters(OAuthAuthenticationFilter.class)
 @Consumes(MediaType.APPLICATION_JSON)
 public interface RegionApi {
 

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RegionOperationApi.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RegionOperationApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RegionOperationApi.java
index 9f5c48d..4afab63 100644
--- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RegionOperationApi.java
+++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RegionOperationApi.java
@@ -38,7 +38,7 @@ import org.jclouds.googlecomputeengine.functions.internal.ParseRegionOperations;
 import org.jclouds.googlecomputeengine.options.ListOptions;
 import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.oauth.v2.config.OAuthScopes;
-import org.jclouds.oauth.v2.filters.OAuthAuthenticator;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
 import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.RequestFilters;
 import org.jclouds.rest.annotations.ResponseParser;
@@ -51,7 +51,7 @@ import org.jclouds.rest.annotations.Transform;
  * @see <a href="https://developers.google.com/compute/docs/reference/v1/operations"/>
  */
 @SkipEncoding({'/', '='})
-@RequestFilters(OAuthAuthenticator.class)
+@RequestFilters(OAuthAuthenticationFilter.class)
 public interface RegionOperationApi {
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RouteApi.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RouteApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RouteApi.java
index 5405181..3d208af 100644
--- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RouteApi.java
+++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/RouteApi.java
@@ -44,7 +44,7 @@ import org.jclouds.googlecomputeengine.options.ListOptions;
 import org.jclouds.googlecomputeengine.options.RouteOptions;
 import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.oauth.v2.config.OAuthScopes;
-import org.jclouds.oauth.v2.filters.OAuthAuthenticator;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
 import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.MapBinder;
 import org.jclouds.rest.annotations.PayloadParam;
@@ -59,7 +59,7 @@ import org.jclouds.rest.annotations.Transform;
  * @see <a href="https://developers.google.com/compute/docs/reference/v1/routess"/>
  */
 @SkipEncoding({'/', '='})
-@RequestFilters(OAuthAuthenticator.class)
+@RequestFilters(OAuthAuthenticationFilter.class)
 @Consumes(MediaType.APPLICATION_JSON)
 public interface RouteApi {
 

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/SnapshotApi.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/SnapshotApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/SnapshotApi.java
index 89fe8d5..e0ac384 100644
--- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/SnapshotApi.java
+++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/SnapshotApi.java
@@ -39,7 +39,7 @@ import org.jclouds.googlecomputeengine.functions.internal.ParseSnapshots;
 import org.jclouds.googlecomputeengine.options.ListOptions;
 import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.oauth.v2.config.OAuthScopes;
-import org.jclouds.oauth.v2.filters.OAuthAuthenticator;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
 import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.RequestFilters;
 import org.jclouds.rest.annotations.ResponseParser;
@@ -52,7 +52,7 @@ import org.jclouds.rest.annotations.Transform;
  * @see <a href="https://developers.google.com/compute/docs/reference/v1/snapshots"/>
  */
 @SkipEncoding({'/', '='})
-@RequestFilters(OAuthAuthenticator.class)
+@RequestFilters(OAuthAuthenticationFilter.class)
 public interface SnapshotApi {
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ZoneApi.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ZoneApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ZoneApi.java
index 246c66d..26d10a6 100644
--- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ZoneApi.java
+++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ZoneApi.java
@@ -34,7 +34,7 @@ import org.jclouds.googlecomputeengine.domain.Zone;
 import org.jclouds.googlecomputeengine.functions.internal.ParseZones;
 import org.jclouds.googlecomputeengine.options.ListOptions;
 import org.jclouds.oauth.v2.config.OAuthScopes;
-import org.jclouds.oauth.v2.filters.OAuthAuthenticator;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
 import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.RequestFilters;
 import org.jclouds.rest.annotations.ResponseParser;
@@ -47,7 +47,7 @@ import org.jclouds.rest.annotations.Transform;
  * @see <a href="https://developers.google.com/compute/docs/reference/v1/zones"/>
  */
 @SkipEncoding({'/', '='})
-@RequestFilters(OAuthAuthenticator.class)
+@RequestFilters(OAuthAuthenticationFilter.class)
 @Consumes(MediaType.APPLICATION_JSON)
 public interface ZoneApi {
 

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ZoneOperationApi.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ZoneOperationApi.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ZoneOperationApi.java
index 37cd2c9..3dd69e1 100644
--- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ZoneOperationApi.java
+++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/ZoneOperationApi.java
@@ -38,7 +38,7 @@ import org.jclouds.googlecomputeengine.functions.internal.ParseZoneOperations;
 import org.jclouds.googlecomputeengine.options.ListOptions;
 import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.oauth.v2.config.OAuthScopes;
-import org.jclouds.oauth.v2.filters.OAuthAuthenticator;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
 import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.RequestFilters;
 import org.jclouds.rest.annotations.ResponseParser;
@@ -51,7 +51,7 @@ import org.jclouds.rest.annotations.Transform;
  * @see <a href="https://developers.google.com/compute/docs/reference/v1/operations"/>
  */
 @SkipEncoding({'/', '='})
-@RequestFilters(OAuthAuthenticator.class)
+@RequestFilters(OAuthAuthenticationFilter.class)
 public interface ZoneOperationApi {
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceLiveTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceLiveTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceLiveTest.java
index 4afa667..af3126f 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceLiveTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceLiveTest.java
@@ -29,6 +29,8 @@ import org.jclouds.compute.internal.BaseComputeServiceLiveTest;
 import org.jclouds.googlecomputeengine.GoogleComputeEngineApi;
 import org.jclouds.googlecomputeengine.config.UserProject;
 import org.jclouds.googlecomputeengine.domain.MachineType;
+import org.jclouds.oauth.v2.config.CredentialType;
+import org.jclouds.oauth.v2.config.OAuthProperties;
 import org.jclouds.sshj.config.SshjSshClientModule;
 import org.testng.annotations.Test;
 
@@ -51,7 +53,10 @@ public class GoogleComputeEngineServiceLiveTest extends BaseComputeServiceLiveTe
    @Override
    protected Properties setupProperties() {
       Properties props = super.setupProperties();
+      if(!System.getProperty(OAuthProperties.CREDENTIAL_TYPE, "")
+            .equalsIgnoreCase(CredentialType.BEARER_TOKEN_CREDENTIALS.toString())) {
       setCredential(props, provider + ".credential");
+      }
       return props;
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/oauth/src/main/java/org/jclouds/oauth/v2/config/CredentialType.java
----------------------------------------------------------------------
diff --git a/oauth/src/main/java/org/jclouds/oauth/v2/config/CredentialType.java b/oauth/src/main/java/org/jclouds/oauth/v2/config/CredentialType.java
new file mode 100644
index 0000000..24a658b
--- /dev/null
+++ b/oauth/src/main/java/org/jclouds/oauth/v2/config/CredentialType.java
@@ -0,0 +1,42 @@
+/*
+ * 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.oauth.v2.config;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import com.google.common.base.CaseFormat;
+
+/**
+ * Decides what type of credentials createContext is supplied with.
+ */
+public enum CredentialType {
+
+   BEARER_TOKEN_CREDENTIALS,
+
+   SERVICE_ACCOUNT_CREDENTIALS;
+
+   @Override
+   public String toString() {
+      return CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, name());
+   }
+
+   public static CredentialType fromValue(String credentialType) {
+      return valueOf(CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, checkNotNull(credentialType,
+            "credentialType")));
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/oauth/src/main/java/org/jclouds/oauth/v2/config/OAuthModule.java
----------------------------------------------------------------------
diff --git a/oauth/src/main/java/org/jclouds/oauth/v2/config/OAuthModule.java b/oauth/src/main/java/org/jclouds/oauth/v2/config/OAuthModule.java
index 11fca2f..1041c07 100644
--- a/oauth/src/main/java/org/jclouds/oauth/v2/config/OAuthModule.java
+++ b/oauth/src/main/java/org/jclouds/oauth/v2/config/OAuthModule.java
@@ -23,13 +23,20 @@ import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
 import com.google.common.collect.ImmutableMap;
 import com.google.inject.AbstractModule;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
 import com.google.inject.Provides;
+import com.google.inject.Singleton;
 import com.google.inject.TypeLiteral;
+import com.google.inject.name.Named;
 import org.jclouds.oauth.v2.domain.ClaimSet;
 import org.jclouds.oauth.v2.domain.Header;
 import org.jclouds.oauth.v2.domain.OAuthCredentials;
 import org.jclouds.oauth.v2.domain.Token;
 import org.jclouds.oauth.v2.domain.TokenRequest;
+import org.jclouds.oauth.v2.filters.BearerTokenAuthenticator;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticator;
 import org.jclouds.oauth.v2.functions.BuildTokenRequest;
 import org.jclouds.oauth.v2.functions.FetchToken;
 import org.jclouds.oauth.v2.functions.OAuthCredentialsSupplier;
@@ -38,8 +45,6 @@ import org.jclouds.oauth.v2.json.ClaimSetTypeAdapter;
 import org.jclouds.oauth.v2.json.HeaderTypeAdapter;
 import org.jclouds.rest.internal.GeneratedHttpRequest;
 
-import javax.inject.Named;
-import javax.inject.Singleton;
 import java.lang.reflect.Type;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
@@ -56,8 +61,9 @@ public class OAuthModule extends AbstractModule {
    protected void configure() {
       bind(new TypeLiteral<Function<byte[], byte[]>>() {}).to(SignOrProduceMacForToken.class);
       bind(new TypeLiteral<Map<Type, Object>>() {}).toInstance(ImmutableMap.<Type, Object>of(
-              Header.class, new HeaderTypeAdapter(),
-              ClaimSet.class, new ClaimSetTypeAdapter()));
+            Header.class, new HeaderTypeAdapter(),
+            ClaimSet.class, new ClaimSetTypeAdapter()));
+      bind(CredentialType.class).toProvider(CredentialTypeFromPropertyOrDefault.class);
       bind(new TypeLiteral<Supplier<OAuthCredentials>>() {}).to(OAuthCredentialsSupplier.class);
       bind(new TypeLiteral<Function<GeneratedHttpRequest, TokenRequest>>() {}).to(BuildTokenRequest.class);
       bind(new TypeLiteral<Function<TokenRequest, Token>>() {}).to(FetchToken.class);
@@ -83,4 +89,31 @@ public class OAuthModule extends AbstractModule {
               .from(getAccess));
    }
 
+   @Singleton
+   public static class CredentialTypeFromPropertyOrDefault implements Provider<CredentialType> {
+      @Inject(optional = true)
+      @Named(OAuthProperties.CREDENTIAL_TYPE)
+      String credentialType = CredentialType.SERVICE_ACCOUNT_CREDENTIALS.toString();
+
+      @Override
+      public CredentialType get() {
+         return CredentialType.fromValue(credentialType);
+      }
+   }
+
+   @Provides
+   @Singleton
+   protected OAuthAuthenticationFilter authenticationFilterForCredentialType(CredentialType credentialType,
+                                                                             OAuthAuthenticator serviceAccountAuth,
+                                                                             BearerTokenAuthenticator bearerTokenAuth) {
+      switch (credentialType) {
+         case SERVICE_ACCOUNT_CREDENTIALS:
+            return serviceAccountAuth;
+         case BEARER_TOKEN_CREDENTIALS:
+            return bearerTokenAuth;
+         default:
+            throw new IllegalArgumentException("Unsupported credential type: " + credentialType);
+      }
+   }
+
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/oauth/src/main/java/org/jclouds/oauth/v2/config/OAuthProperties.java
----------------------------------------------------------------------
diff --git a/oauth/src/main/java/org/jclouds/oauth/v2/config/OAuthProperties.java b/oauth/src/main/java/org/jclouds/oauth/v2/config/OAuthProperties.java
index 7b1bf17..9394cad 100644
--- a/oauth/src/main/java/org/jclouds/oauth/v2/config/OAuthProperties.java
+++ b/oauth/src/main/java/org/jclouds/oauth/v2/config/OAuthProperties.java
@@ -40,4 +40,12 @@ public class OAuthProperties {
     * Optional list of comma-separated scopes to use when no OAuthScopes annotation is present.
     */
    public static final String SCOPES = "jclouds.oauth.scopes";
+
+   /**
+    * Specify if credentials are id + private key or if you are reusing an oauth2 token.
+    *
+    * @see org.jclouds.oauth.v2.config.CredentialType
+    */
+   public static final String CREDENTIAL_TYPE = "jclouds.oauth.credential-type";
+
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/oauth/src/main/java/org/jclouds/oauth/v2/filters/BearerTokenAuthenticator.java
----------------------------------------------------------------------
diff --git a/oauth/src/main/java/org/jclouds/oauth/v2/filters/BearerTokenAuthenticator.java b/oauth/src/main/java/org/jclouds/oauth/v2/filters/BearerTokenAuthenticator.java
new file mode 100644
index 0000000..779ba44
--- /dev/null
+++ b/oauth/src/main/java/org/jclouds/oauth/v2/filters/BearerTokenAuthenticator.java
@@ -0,0 +1,41 @@
+/*
+ * 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.oauth.v2.filters;
+
+import com.google.common.base.Supplier;
+import org.jclouds.http.HttpException;
+import org.jclouds.http.HttpRequest;
+import org.jclouds.oauth.v2.domain.OAuthCredentials;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+@Singleton
+public class BearerTokenAuthenticator implements OAuthAuthenticationFilter {
+   private final Supplier<OAuthCredentials> creds;
+
+   @Inject
+   BearerTokenAuthenticator(final Supplier<OAuthCredentials> creds) {
+      this.creds = creds;
+   }
+
+   @Override
+   public HttpRequest filter(HttpRequest request) throws HttpException {
+      return request.toBuilder().addHeader("Authorization", String.format("%s %s",
+            "Bearer ", creds.get().credential)).build();
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/oauth/src/main/java/org/jclouds/oauth/v2/filters/OAuthAuthenticationFilter.java
----------------------------------------------------------------------
diff --git a/oauth/src/main/java/org/jclouds/oauth/v2/filters/OAuthAuthenticationFilter.java b/oauth/src/main/java/org/jclouds/oauth/v2/filters/OAuthAuthenticationFilter.java
new file mode 100644
index 0000000..e6e5714
--- /dev/null
+++ b/oauth/src/main/java/org/jclouds/oauth/v2/filters/OAuthAuthenticationFilter.java
@@ -0,0 +1,27 @@
+/*
+ * 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.oauth.v2.filters;
+
+import org.jclouds.http.HttpRequestFilter;
+
+/**
+ * Marker interface to specify auth mechanism (credentials or bearer token)
+ *
+ */
+public interface OAuthAuthenticationFilter extends HttpRequestFilter {
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/oauth/src/main/java/org/jclouds/oauth/v2/filters/OAuthAuthenticator.java
----------------------------------------------------------------------
diff --git a/oauth/src/main/java/org/jclouds/oauth/v2/filters/OAuthAuthenticator.java b/oauth/src/main/java/org/jclouds/oauth/v2/filters/OAuthAuthenticator.java
index e25bc20..c5c7b6f 100644
--- a/oauth/src/main/java/org/jclouds/oauth/v2/filters/OAuthAuthenticator.java
+++ b/oauth/src/main/java/org/jclouds/oauth/v2/filters/OAuthAuthenticator.java
@@ -20,7 +20,6 @@ import com.google.common.base.Function;
 import com.google.common.cache.LoadingCache;
 import org.jclouds.http.HttpException;
 import org.jclouds.http.HttpRequest;
-import org.jclouds.http.HttpRequestFilter;
 import org.jclouds.oauth.v2.domain.Token;
 import org.jclouds.oauth.v2.domain.TokenRequest;
 import org.jclouds.rest.internal.GeneratedHttpRequest;
@@ -36,7 +35,7 @@ import static com.google.common.base.Preconditions.checkState;
  * TODO when we're able to use the OAuthAuthentication an this should be used automatically
  */
 @Singleton
-public class OAuthAuthenticator implements HttpRequestFilter {
+public class OAuthAuthenticator implements OAuthAuthenticationFilter {
 
    private Function<GeneratedHttpRequest, TokenRequest> tokenRequestBuilder;
    private Function<TokenRequest, Token> tokenFetcher;

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/2717e8e8/oauth/src/test/java/org/jclouds/oauth/v2/OAuthTestUtils.java
----------------------------------------------------------------------
diff --git a/oauth/src/test/java/org/jclouds/oauth/v2/OAuthTestUtils.java b/oauth/src/test/java/org/jclouds/oauth/v2/OAuthTestUtils.java
index 7e27844..901cdfe 100644
--- a/oauth/src/test/java/org/jclouds/oauth/v2/OAuthTestUtils.java
+++ b/oauth/src/test/java/org/jclouds/oauth/v2/OAuthTestUtils.java
@@ -19,6 +19,8 @@ package org.jclouds.oauth.v2;
 import com.google.common.base.Charsets;
 import com.google.common.base.Throwables;
 import com.google.common.io.Files;
+import org.jclouds.oauth.v2.config.CredentialType;
+import org.jclouds.oauth.v2.config.OAuthProperties;
 
 import java.io.File;
 import java.io.IOException;
@@ -46,6 +48,16 @@ public class OAuthTestUtils {
       }
    }
 
+   public static Properties bearerTokenAuthProperties(Properties properties) {
+      properties = properties == null ? new Properties() : properties;
+      properties.put("oauth.identity", "761326798069-r5mljlln1rd4lrbhg75efgigp36m78j5@developer.gserviceaccount.com");
+      properties.put("oauth.credential", "1/8xbJqaOZXSUZbHLl5EOtu1pxz3fmmetKx9W8CV4t79M");
+      properties.put("oauth.endpoint", "http://localhost:5000/o/oauth2/token");
+      properties.put(AUDIENCE, "https://accounts.google.com/o/oauth2/token");
+      properties.put(OAuthProperties.CREDENTIAL_TYPE, CredentialType.BEARER_TOKEN_CREDENTIALS.toString());
+      return properties;
+   }
+
    public static String setCredential(Properties overrides, String key) {
       String val = null;
       String credentialFromFile = null;