X-Git-Url: http://www.average.org/gitweb/?p=WhereAmI.git;a=blobdiff_plain;f=src%2Forg%2Faverage%2Fwhereami%2FOracle.java;h=405e2ddd97157eb38fc7fd7b4befcacf4b4ea1a1;hp=ab4431c8957f36ed53073576475332b43e7422c6;hb=120d31cd84be5054cd2a1b9eca7aa781b29d317a;hpb=60cf5624803270a4d6b3b084a3a62b1a09f12936 diff --git a/src/org/average/whereami/Oracle.java b/src/org/average/whereami/Oracle.java index ab4431c..405e2dd 100644 --- a/src/org/average/whereami/Oracle.java +++ b/src/org/average/whereami/Oracle.java @@ -2,6 +2,8 @@ package org.average.whereami; import org.average.whereami.PersistentStore; +import java.io.IOException; + import com.google.api.client.extensions.android2.AndroidHttp; import com.google.api.client.auth.oauth2.draft10.AccessTokenResponse; import com.google.api.client.googleapis.auth.oauth2.draft10.GoogleAccessProtectedResource; @@ -18,40 +20,59 @@ abstract public class Oracle { final String TAG = getClass().getName(); - public HttpTransport httpTransport; - public JsonFactory jsonFactory; - - public GoogleAccessProtectedResource accessProtectedResource; - - public String authErrorMessage; + static public PersistentStore store; + static public HttpTransport httpTransport = + AndroidHttp.newCompatibleTransport(); + static public JsonFactory jsonFactory = new JacksonFactory(); + static public String authErrorMessage; public Oracle(final Resources res, final PersistentStore store) { authErrorMessage = res.getString(R.string.autherror); + this.store = store; + } + + private class MyAccessProtectedResource + extends GoogleAccessProtectedResource { + + public MyAccessProtectedResource( + String accessToken, + HttpTransport transport, + JsonFactory jsonFactory, + String clientId, + String clientSecret, + String refreshToken) { + super(accessToken, transport, jsonFactory, + clientId, clientSecret, refreshToken); + } + + @Override + public void onAccessToken(String accessToken) { + Log.v(TAG, "Update access token to \"" + + accessToken + "\""); + store.updateAccessToken( accessToken); + } + + @Override + protected boolean executeRefreshToken() throws IOException { + Log.v(TAG, "executeRefreshToken was called"); + return super.executeRefreshToken(); + } + } - httpTransport = AndroidHttp.newCompatibleTransport(); - jsonFactory = new JacksonFactory(); + public MyAccessProtectedResource + newMyAccessProtectedResource() { AccessTokenResponse token = store.readTokens(); Log.v(TAG, "tokens - access: \"" + token.accessToken + "\", refresh: \"" + token.refreshToken + "\", client_id: \"" + ClientCredentials.CLIENT_ID + "\", client_secret: \"" + - ClientCredentials.CLIENT_SECRET + + ClientCredentials.CLIENT_SECRET + "\""); - accessProtectedResource = new GoogleAccessProtectedResource( + return new MyAccessProtectedResource( token.accessToken, httpTransport, jsonFactory, ClientCredentials.CLIENT_ID, ClientCredentials.CLIENT_SECRET, - token.refreshToken) - { - @Override - public void onAccessToken( - String accessToken) { - Log.v(TAG, "Update access token to \"" - + accessToken + "\""); - store.updateAccessToken( - accessToken); - } - }; + token.refreshToken); } abstract public String getResult();