X-Git-Url: http://www.average.org/gitweb/?p=WhereAmI.git;a=blobdiff_plain;f=src%2Forg%2Faverage%2Fwhereami%2FOracle.java;h=1de3879b7db2b24b53d768f13a5bf74b09441312;hp=ed3f93f5017af32841b45c53ae66c7d2679ae5eb;hb=015cb569bd35a081666ac4849c661cd525d9b1d5;hpb=934cdd85cd8722dfab9e34f67d9a7a74e00e9876 diff --git a/src/org/average/whereami/Oracle.java b/src/org/average/whereami/Oracle.java index ed3f93f..1de3879 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; @@ -14,22 +16,53 @@ 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 PersistentStore store) { authErrorMessage = res.getString(R.string.autherror); + this.store = store; httpTransport = AndroidHttp.newCompatibleTransport(); jsonFactory = new JacksonFactory(); + } + + 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 + @@ -37,24 +70,12 @@ public class Oracle { "\", 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(); }