X-Git-Url: http://www.average.org/gitweb/?p=WhereAmI.git;a=blobdiff_plain;f=src%2Forg%2Faverage%2Fwhereami%2FOracle.java;h=1de3879b7db2b24b53d768f13a5bf74b09441312;hp=157c988a3f3df4c3ea77e8b349d2713c0c653bf4;hb=015cb569bd35a081666ac4849c661cd525d9b1d5;hpb=0d57ad853b17a0cf6f4a3e2c7372ba6580f3c379 diff --git a/src/org/average/whereami/Oracle.java b/src/org/average/whereami/Oracle.java index 157c988..1de3879 100644 --- a/src/org/average/whereami/Oracle.java +++ b/src/org/average/whereami/Oracle.java @@ -1,6 +1,8 @@ package org.average.whereami; -import org.average.whereami.CredentialStore; +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; @@ -14,47 +16,66 @@ import com.google.api.client.json.jackson.JacksonFactory; import android.content.res.Resources; import android.util.Log; -public class Oracle { +abstract public class Oracle { final String TAG = getClass().getName(); public HttpTransport httpTransport; public JsonFactory jsonFactory; - - public GoogleAccessProtectedResource accessProtectedResource; - + public PersistentStore store; public String authErrorMessage; - public Oracle(final Resources res, final CredentialStore store) { + public Oracle(final Resources res, final PersistentStore store) { authErrorMessage = res.getString(R.string.autherror); + this.store = store; httpTransport = AndroidHttp.newCompatibleTransport(); jsonFactory = new JacksonFactory(); - AccessTokenResponse token = store.read(); + } + + private class MyAccessProtectedResource + extends GoogleAccessProtectedResource { + + // Why on earth contructors are not inherited?!?! + 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(); + } + } + + public MyAccessProtectedResource accessProtectedResource() { + AccessTokenResponse token = store.readTokens(); Log.v(TAG, "tokens - access: \"" + token.accessToken + "\", refresh: \"" + token.refreshToken + "\", client_id: \"" + ClientCredentials.CLIENT_ID + "\", 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); } - public String getResult() { - return ""; - } + abstract public String getResult(); }