From: masensio Date: Fri, 8 Nov 2013 13:41:32 +0000 (+0100) Subject: OC-1868: Remove dependences from accountType and authorities X-Git-Tag: oc-android-1.5.5~123^2~19 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/629f463748764c34580cf2fbeaa535eb535f04a3?ds=inline OC-1868: Remove dependences from accountType and authorities --- diff --git a/oc_framework/res/values/setup.xml b/oc_framework/res/values/setup.xml deleted file mode 100644 index 02fdf08d..00000000 --- a/oc_framework/res/values/setup.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - owncloud - org.owncloud - - diff --git a/oc_framework/src/com/owncloud/android/oc_framework/MainApp.java b/oc_framework/src/com/owncloud/android/oc_framework/MainApp.java deleted file mode 100644 index 8783daff..00000000 --- a/oc_framework/src/com/owncloud/android/oc_framework/MainApp.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.owncloud.android.oc_framework; - -import android.app.Application; -import android.content.Context; - -public class MainApp extends Application { - - private static Context mContext; - - public void onCreate(){ - super.onCreate(); - MainApp.mContext = getApplicationContext(); - } - - public static Context getAppContext() { - return MainApp.mContext; - } - - // Methods to obtain Strings referring app_name - // From AccountAuthenticator - // public static final String ACCOUNT_TYPE = "owncloud"; - public static String getAccountType() { - return getAppContext().getResources().getString(R.string.account_type); - } - - // From AccountAuthenticator - // public static final String AUTHORITY = "org.owncloud"; - public static String getAuthority() { - return getAppContext().getResources().getString(R.string.authority); - } - - // From AccountAuthenticator - // public static final String AUTH_TOKEN_TYPE = "org.owncloud"; - public static String getAuthTokenType() { - return getAppContext().getResources().getString(R.string.authority); - } - - // From AccountAuthenticator - // public static final String AUTH_TOKEN_TYPE_PASSWORD = "owncloud.password"; - public static String getAuthTokenTypePass() { - return getAppContext().getResources().getString(R.string.account_type) + ".password"; - } - - // From AccountAuthenticator - // public static final String AUTH_TOKEN_TYPE_ACCESS_TOKEN = "owncloud.oauth2.access_token"; - public static String getAuthTokenTypeAccessToken() { - return getAppContext().getResources().getString(R.string.account_type) + ".oauth2.access_token"; - } - - // From AccountAuthenticator - // public static final String AUTH_TOKEN_TYPE_REFRESH_TOKEN = "owncloud.oauth2.refresh_token"; - public static String getAuthTokenTypeRefreshToken() { - return getAppContext().getResources().getString(R.string.account_type) + ".oauth2.refresh_token"; - } - - // From AccountAuthenticator - // public static final String AUTH_TOKEN_TYPE_SAML_WEB_SSO_SESSION_COOKIE = "owncloud.saml.web_sso.session_cookie"; - public static String getAuthTokenTypeSamlSessionCookie() { - return getAppContext().getResources().getString(R.string.account_type) + ".saml.web_sso.session_cookie"; - } - -} diff --git a/oc_framework/src/com/owncloud/android/oc_framework/authentication/AccountTypeUtils.java b/oc_framework/src/com/owncloud/android/oc_framework/authentication/AccountTypeUtils.java new file mode 100644 index 00000000..3dbddade --- /dev/null +++ b/oc_framework/src/com/owncloud/android/oc_framework/authentication/AccountTypeUtils.java @@ -0,0 +1,33 @@ +package com.owncloud.android.oc_framework.authentication; + +import android.accounts.Account; + +public class AccountTypeUtils { + + // Methods to obtain Strings referring account_type + public static String getAccountType(Account account) { + return account.type; + } + + + // public static final String AUTH_TOKEN_TYPE_PASSWORD = "owncloud.password"; + public static String getAuthTokenTypePass(Account account) { + return account.type + ".password"; + } + + // public static final String AUTH_TOKEN_TYPE_ACCESS_TOKEN = "owncloud.oauth2.access_token"; + public static String getAuthTokenTypeAccessToken(Account account) { + return account.type + ".oauth2.access_token"; + } + + // public static final String AUTH_TOKEN_TYPE_REFRESH_TOKEN = "owncloud.oauth2.refresh_token"; + public static String getAuthTokenTypeRefreshToken(Account account) { + return account.type + ".oauth2.refresh_token"; + } + + // public static final String AUTH_TOKEN_TYPE_SAML_WEB_SSO_SESSION_COOKIE = "owncloud.saml.web_sso.session_cookie"; + public static String getAuthTokenTypeSamlSessionCookie(Account account) { + return account.type + ".saml.web_sso.session_cookie"; + } + +} diff --git a/oc_framework/src/com/owncloud/android/oc_framework/authentication/AccountUtils.java b/oc_framework/src/com/owncloud/android/oc_framework/authentication/AccountUtils.java index 5fb6505f..b1dcd3a3 100644 --- a/oc_framework/src/com/owncloud/android/oc_framework/authentication/AccountUtils.java +++ b/oc_framework/src/com/owncloud/android/oc_framework/authentication/AccountUtils.java @@ -19,15 +19,12 @@ package com.owncloud.android.oc_framework.authentication; -import com.owncloud.android.oc_framework.MainApp; import com.owncloud.android.oc_framework.OwnCloudVersion; import android.accounts.Account; import android.accounts.AccountManager; import android.accounts.AccountsException; import android.content.Context; -import android.content.SharedPreferences; -import android.preference.PreferenceManager; public class AccountUtils { public static final String WEBDAV_PATH_1_2 = "/webdav/owncloud.php"; @@ -39,93 +36,93 @@ public class AccountUtils { public static final String CARDDAV_PATH_4_0 = "/remote/carddav.php"; public static final String STATUS_PATH = "/status.php"; - /** - * Can be used to get the currently selected ownCloud {@link Account} in the - * application preferences. - * - * @param context The current application {@link Context} - * @return The ownCloud {@link Account} currently saved in preferences, or the first - * {@link Account} available, if valid (still registered in the system as ownCloud - * account). If none is available and valid, returns null. - */ - public static Account getCurrentOwnCloudAccount(Context context) { - Account[] ocAccounts = AccountManager.get(context).getAccountsByType( - MainApp.getAccountType()); - Account defaultAccount = null; - - SharedPreferences appPreferences = PreferenceManager - .getDefaultSharedPreferences(context); - String accountName = appPreferences - .getString("select_oc_account", null); - - // account validation: the saved account MUST be in the list of ownCloud Accounts known by the AccountManager - if (accountName != null) { - for (Account account : ocAccounts) { - if (account.name.equals(accountName)) { - defaultAccount = account; - break; - } - } - } - - if (defaultAccount == null && ocAccounts.length != 0) { - // take first account as fallback - defaultAccount = ocAccounts[0]; - } - - return defaultAccount; - } - - - public static boolean exists(Account account, Context context) { - Account[] ocAccounts = AccountManager.get(context).getAccountsByType( - MainApp.getAccountType()); - - if (account != null && account.name != null) { - for (Account ac : ocAccounts) { - if (ac.name.equals(account.name)) { - return true; - } - } - } - return false; - } - - - /** - * Checks, whether or not there are any ownCloud accounts setup. - * - * @return true, if there is at least one account. - */ - public static boolean accountsAreSetup(Context context) { - AccountManager accMan = AccountManager.get(context); - Account[] accounts = accMan - .getAccountsByType(MainApp.getAccountType()); - return accounts.length > 0; - } - - - public static boolean setCurrentOwnCloudAccount(Context context, String accountName) { - boolean result = false; - if (accountName != null) { - Account[] ocAccounts = AccountManager.get(context).getAccountsByType( - MainApp.getAccountType()); - boolean found = false; - for (Account account : ocAccounts) { - found = (account.name.equals(accountName)); - if (found) { - SharedPreferences.Editor appPrefs = PreferenceManager - .getDefaultSharedPreferences(context).edit(); - appPrefs.putString("select_oc_account", accountName); - - appPrefs.commit(); - result = true; - break; - } - } - } - return result; - } +// /** +// * Can be used to get the currently selected ownCloud {@link Account} in the +// * application preferences. +// * +// * @param context The current application {@link Context} +// * @return The ownCloud {@link Account} currently saved in preferences, or the first +// * {@link Account} available, if valid (still registered in the system as ownCloud +// * account). If none is available and valid, returns null. +// */ +// public static Account getCurrentOwnCloudAccount(Context context) { +// Account[] ocAccounts = AccountManager.get(context).getAccountsByType( +// MainApp.getAccountType()); +// Account defaultAccount = null; +// +// SharedPreferences appPreferences = PreferenceManager +// .getDefaultSharedPreferences(context); +// String accountName = appPreferences +// .getString("select_oc_account", null); +// +// // account validation: the saved account MUST be in the list of ownCloud Accounts known by the AccountManager +// if (accountName != null) { +// for (Account account : ocAccounts) { +// if (account.name.equals(accountName)) { +// defaultAccount = account; +// break; +// } +// } +// } +// +// if (defaultAccount == null && ocAccounts.length != 0) { +// // take first account as fallback +// defaultAccount = ocAccounts[0]; +// } +// +// return defaultAccount; +// } +// +// +// public static boolean exists(Account account, Context context) { +// Account[] ocAccounts = AccountManager.get(context).getAccountsByType( +// MainApp.getAccountType()); +// +// if (account != null && account.name != null) { +// for (Account ac : ocAccounts) { +// if (ac.name.equals(account.name)) { +// return true; +// } +// } +// } +// return false; +// } +// +// +// /** +// * Checks, whether or not there are any ownCloud accounts setup. +// * +// * @return true, if there is at least one account. +// */ +// public static boolean accountsAreSetup(Context context) { +// AccountManager accMan = AccountManager.get(context); +// Account[] accounts = accMan +// .getAccountsByType(MainApp.getAccountType()); +// return accounts.length > 0; +// } +// +// +// public static boolean setCurrentOwnCloudAccount(Context context, String accountName) { +// boolean result = false; +// if (accountName != null) { +// Account[] ocAccounts = AccountManager.get(context).getAccountsByType( +// MainApp.getAccountType()); +// boolean found = false; +// for (Account account : ocAccounts) { +// found = (account.name.equals(accountName)); +// if (found) { +// SharedPreferences.Editor appPrefs = PreferenceManager +// .getDefaultSharedPreferences(context).edit(); +// appPrefs.putString("select_oc_account", accountName); +// +// appPrefs.commit(); +// result = true; +// break; +// } +// } +// } +// return result; +// } /** * @@ -151,32 +148,32 @@ public class AccountUtils { return null; } - /** - * Returns the proper URL path to access the WebDAV interface of an ownCloud server, - * according to its version and the authorization method used. - * - * @param version Version of ownCloud server. - * @param authTokenType Authorization token type, matching some of the AUTH_TOKEN_TYPE_* constants in {@link AccountAuthenticator}. - * @return WebDAV path for given OC version and authorization method, null if OC version is unknown. - */ - public static String getWebdavPath(OwnCloudVersion version, String authTokenType) { - if (version != null) { - if (MainApp.getAuthTokenTypeAccessToken().equals(authTokenType)) { - return ODAV_PATH; - } - if (MainApp.getAuthTokenTypeSamlSessionCookie().equals(authTokenType)) { - return SAML_SSO_PATH; - } - if (version.compareTo(OwnCloudVersion.owncloud_v4) >= 0) - return WEBDAV_PATH_4_0; - if (version.compareTo(OwnCloudVersion.owncloud_v3) >= 0 - || version.compareTo(OwnCloudVersion.owncloud_v2) >= 0) - return WEBDAV_PATH_2_0; - if (version.compareTo(OwnCloudVersion.owncloud_v1) >= 0) - return WEBDAV_PATH_1_2; - } - return null; - } +// /** +// * Returns the proper URL path to access the WebDAV interface of an ownCloud server, +// * according to its version and the authorization method used. +// * +// * @param version Version of ownCloud server. +// * @param authTokenType Authorization token type, matching some of the AUTH_TOKEN_TYPE_* constants in {@link AccountAuthenticator}. +// * @return WebDAV path for given OC version and authorization method, null if OC version is unknown. +// */ +// public static String getWebdavPath(OwnCloudVersion version, String authTokenType) { +// if (version != null) { +// if (MainApp.getAuthTokenTypeAccessToken().equals(authTokenType)) { +// return ODAV_PATH; +// } +// if (MainApp.getAuthTokenTypeSamlSessionCookie().equals(authTokenType)) { +// return SAML_SSO_PATH; +// } +// if (version.compareTo(OwnCloudVersion.owncloud_v4) >= 0) +// return WEBDAV_PATH_4_0; +// if (version.compareTo(OwnCloudVersion.owncloud_v3) >= 0 +// || version.compareTo(OwnCloudVersion.owncloud_v2) >= 0) +// return WEBDAV_PATH_2_0; +// if (version.compareTo(OwnCloudVersion.owncloud_v1) >= 0) +// return WEBDAV_PATH_1_2; +// } +// return null; +// } /** * Constructs full url to host and webdav resource basing on host version diff --git a/oc_framework/src/com/owncloud/android/oc_framework/network/OwnCloudClientUtils.java b/oc_framework/src/com/owncloud/android/oc_framework/network/OwnCloudClientUtils.java index 579a30e6..6c1b856c 100644 --- a/oc_framework/src/com/owncloud/android/oc_framework/network/OwnCloudClientUtils.java +++ b/oc_framework/src/com/owncloud/android/oc_framework/network/OwnCloudClientUtils.java @@ -1,4 +1,3 @@ -package com.owncloud.android.oc_framework.network; /* ownCloud Android client application * Copyright (C) 2012-2013 ownCloud Inc. * @@ -15,7 +14,7 @@ package com.owncloud.android.oc_framework.network; * along with this program. If not, see . * */ - +package com.owncloud.android.oc_framework.network; import java.io.File; import java.io.FileInputStream; @@ -37,12 +36,13 @@ import org.apache.commons.httpclient.protocol.Protocol; import org.apache.http.conn.ssl.BrowserCompatHostnameVerifier; import org.apache.http.conn.ssl.X509HostnameVerifier; -import com.owncloud.android.oc_framework.MainApp; import com.owncloud.android.oc_framework.authentication.AccountAuthenticatorConstants; +import com.owncloud.android.oc_framework.authentication.AccountTypeUtils; import com.owncloud.android.oc_framework.authentication.AccountUtils; import com.owncloud.android.oc_framework.authentication.AccountUtils.AccountNotFoundException; import com.owncloud.android.oc_framework.network.webdav.WebdavClient; + import android.accounts.Account; import android.accounts.AccountManager; import android.accounts.AccountManagerFuture; @@ -87,62 +87,62 @@ public class OwnCloudClientUtils { * @throws IOException If there was some I/O error while getting the authorization token for the account. * @throws AccountNotFoundException If 'account' is unknown for the AccountManager */ - public static WebdavClient createOwnCloudClient (Account account, Context appContext) throws OperationCanceledException, AuthenticatorException, IOException, AccountNotFoundException { + public static WebdavClient createOwnCloudClient (Account account, Context appContext, String authorities) throws OperationCanceledException, AuthenticatorException, IOException, AccountNotFoundException { //Log_OC.d(TAG, "Creating WebdavClient associated to " + account.name); Uri uri = Uri.parse(AccountUtils.constructFullURLForAccount(appContext, account)); AccountManager am = AccountManager.get(appContext); boolean isOauth2 = am.getUserData(account, AccountAuthenticatorConstants.KEY_SUPPORTS_OAUTH2) != null; // TODO avoid calling to getUserData here boolean isSamlSso = am.getUserData(account, AccountAuthenticatorConstants.KEY_SUPPORTS_SAML_WEB_SSO) != null; - WebdavClient client = createOwnCloudClient(uri, appContext, !isSamlSso); + WebdavClient client = createOwnCloudClient(uri, appContext, !isSamlSso, authorities); if (isOauth2) { - String accessToken = am.blockingGetAuthToken(account, MainApp.getAuthTokenTypeAccessToken(), false); - client.setBearerCredentials(accessToken); // TODO not assume that the access token is a bearer token + String accessToken = am.blockingGetAuthToken(account, AccountTypeUtils.getAuthTokenTypeAccessToken(account), false); + client.setBearerCredentials(accessToken, authorities); // TODO not assume that the access token is a bearer token } else if (isSamlSso) { // TODO avoid a call to getUserData here - String accessToken = am.blockingGetAuthToken(account, MainApp.getAuthTokenTypeSamlSessionCookie(), false); - client.setSsoSessionCookie(accessToken); + String accessToken = am.blockingGetAuthToken(account, AccountTypeUtils.getAuthTokenTypeSamlSessionCookie(account), false); + client.setSsoSessionCookie(accessToken, authorities); } else { String username = account.name.substring(0, account.name.lastIndexOf('@')); //String password = am.getPassword(account); - String password = am.blockingGetAuthToken(account, MainApp.getAuthTokenTypePass(), false); - client.setBasicCredentials(username, password); + String password = am.blockingGetAuthToken(account, AccountTypeUtils.getAuthTokenTypePass(account), false); + client.setBasicCredentials(username, password, authorities); } return client; } - public static WebdavClient createOwnCloudClient (Account account, Context appContext, Activity currentActivity) throws OperationCanceledException, AuthenticatorException, IOException, AccountNotFoundException { + public static WebdavClient createOwnCloudClient (Account account, Context appContext, Activity currentActivity, String authorities) throws OperationCanceledException, AuthenticatorException, IOException, AccountNotFoundException { Uri uri = Uri.parse(AccountUtils.constructFullURLForAccount(appContext, account)); AccountManager am = AccountManager.get(appContext); boolean isOauth2 = am.getUserData(account, AccountAuthenticatorConstants.KEY_SUPPORTS_OAUTH2) != null; // TODO avoid calling to getUserData here boolean isSamlSso = am.getUserData(account, AccountAuthenticatorConstants.KEY_SUPPORTS_SAML_WEB_SSO) != null; - WebdavClient client = createOwnCloudClient(uri, appContext, !isSamlSso); + WebdavClient client = createOwnCloudClient(uri, appContext, !isSamlSso, authorities); if (isOauth2) { // TODO avoid a call to getUserData here - AccountManagerFuture future = am.getAuthToken(account, MainApp.getAuthTokenTypeAccessToken(), null, currentActivity, null, null); + AccountManagerFuture future = am.getAuthToken(account, AccountTypeUtils.getAuthTokenTypeAccessToken(account), null, currentActivity, null, null); Bundle result = future.getResult(); String accessToken = result.getString(AccountManager.KEY_AUTHTOKEN); if (accessToken == null) throw new AuthenticatorException("WTF!"); - client.setBearerCredentials(accessToken); // TODO not assume that the access token is a bearer token + client.setBearerCredentials(accessToken, authorities); // TODO not assume that the access token is a bearer token } else if (isSamlSso) { // TODO avoid a call to getUserData here - AccountManagerFuture future = am.getAuthToken(account, MainApp.getAuthTokenTypeSamlSessionCookie(), null, currentActivity, null, null); + AccountManagerFuture future = am.getAuthToken(account, AccountTypeUtils.getAuthTokenTypeSamlSessionCookie(account), null, currentActivity, null, null); Bundle result = future.getResult(); String accessToken = result.getString(AccountManager.KEY_AUTHTOKEN); if (accessToken == null) throw new AuthenticatorException("WTF!"); - client.setSsoSessionCookie(accessToken); + client.setSsoSessionCookie(accessToken, authorities); } else { String username = account.name.substring(0, account.name.lastIndexOf('@')); //String password = am.getPassword(account); //String password = am.blockingGetAuthToken(account, MainApp.getAuthTokenTypePass(), false); - AccountManagerFuture future = am.getAuthToken(account, MainApp.getAuthTokenTypePass(), null, currentActivity, null, null); + AccountManagerFuture future = am.getAuthToken(account, AccountTypeUtils.getAuthTokenTypePass(account), null, currentActivity, null, null); Bundle result = future.getResult(); String password = result.getString(AccountManager.KEY_AUTHTOKEN); - client.setBasicCredentials(username, password); + client.setBasicCredentials(username, password, authorities); } return client; @@ -155,7 +155,7 @@ public class OwnCloudClientUtils { * @param context Android context where the WebdavClient is being created. * @return A WebdavClient object ready to be used */ - public static WebdavClient createOwnCloudClient(Uri uri, Context context, boolean followRedirects) { + public static WebdavClient createOwnCloudClient(Uri uri, Context context, boolean followRedirects, String authoritities) { try { registerAdvancedSslContext(true, context); } catch (GeneralSecurityException e) { @@ -165,7 +165,7 @@ public class OwnCloudClientUtils { Log.e(TAG, "The local server truststore could not be read. Default SSL management in the system will be used for HTTPS connections", e); } - WebdavClient client = new WebdavClient(getMultiThreadedConnManager()); + WebdavClient client = new WebdavClient(getMultiThreadedConnManager(), authoritities); client.setDefaultTimeouts(DEFAULT_DATA_TIMEOUT, DEFAULT_CONNECTION_TIMEOUT); client.setBaseUri(uri); diff --git a/oc_framework/src/com/owncloud/android/oc_framework/network/webdav/WebdavClient.java b/oc_framework/src/com/owncloud/android/oc_framework/network/webdav/WebdavClient.java index 213a28b5..3d798a27 100644 --- a/oc_framework/src/com/owncloud/android/oc_framework/network/webdav/WebdavClient.java +++ b/oc_framework/src/com/owncloud/android/oc_framework/network/webdav/WebdavClient.java @@ -41,7 +41,6 @@ import org.apache.commons.httpclient.params.HttpMethodParams; import org.apache.http.HttpStatus; import org.apache.http.params.CoreProtocolPNames; -import com.owncloud.android.oc_framework.MainApp; import com.owncloud.android.oc_framework.network.BearerAuthScheme; import com.owncloud.android.oc_framework.network.BearerCredentials; @@ -65,17 +64,17 @@ public class WebdavClient extends HttpClient { /** * Constructor */ - public WebdavClient(HttpConnectionManager connectionMgr) { + public WebdavClient(HttpConnectionManager connectionMgr, String authorities) { super(connectionMgr); Log.d(TAG, "Creating WebdavClient"); getParams().setParameter(HttpMethodParams.USER_AGENT, USER_AGENT); getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1); mFollowRedirects = true; mSsoSessionCookie = null; - mAuthTokenType = MainApp.getAuthTokenTypePass(); + mAuthTokenType = authorities; // MainApp.getAuthTokenTypePass(); } - public void setBearerCredentials(String accessToken) { + public void setBearerCredentials(String accessToken, String authorities) { AuthPolicy.registerAuthScheme(BearerAuthScheme.AUTH_POLICY, BearerAuthScheme.class); List authPrefs = new ArrayList(1); @@ -85,10 +84,10 @@ public class WebdavClient extends HttpClient { mCredentials = new BearerCredentials(accessToken); getState().setCredentials(AuthScope.ANY, mCredentials); mSsoSessionCookie = null; - mAuthTokenType = MainApp.getAuthTokenTypeAccessToken(); + mAuthTokenType = authorities;// MainApp.getAuthTokenTypeAccessToken(); } - public void setBasicCredentials(String username, String password) { + public void setBasicCredentials(String username, String password, String authorities) { List authPrefs = new ArrayList(1); authPrefs.add(AuthPolicy.BASIC); getParams().setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY, authPrefs); @@ -97,15 +96,15 @@ public class WebdavClient extends HttpClient { mCredentials = new UsernamePasswordCredentials(username, password); getState().setCredentials(AuthScope.ANY, mCredentials); mSsoSessionCookie = null; - mAuthTokenType = MainApp.getAuthTokenTypePass(); + mAuthTokenType = authorities; //MainApp.getAuthTokenTypePass(); } - public void setSsoSessionCookie(String accessToken) { + public void setSsoSessionCookie(String accessToken, String authorities) { getParams().setAuthenticationPreemptive(false); getParams().setCookiePolicy(CookiePolicy.IGNORE_COOKIES); mSsoSessionCookie = accessToken; mCredentials = null; - mAuthTokenType = MainApp.getAuthTokenTypeSamlSessionCookie(); + mAuthTokenType = authorities; //MainApp.getAuthTokenTypeSamlSessionCookie(); } diff --git a/oc_framework/src/com/owncloud/android/oc_framework/operations/RemoteOperation.java b/oc_framework/src/com/owncloud/android/oc_framework/operations/RemoteOperation.java index 0900819a..aae8e7c6 100644 --- a/oc_framework/src/com/owncloud/android/oc_framework/operations/RemoteOperation.java +++ b/oc_framework/src/com/owncloud/android/oc_framework/operations/RemoteOperation.java @@ -20,7 +20,6 @@ import java.io.IOException; import org.apache.commons.httpclient.Credentials; -import com.owncloud.android.oc_framework.MainApp; import com.owncloud.android.oc_framework.network.BearerCredentials; import com.owncloud.android.oc_framework.network.OwnCloudClientUtils; import com.owncloud.android.oc_framework.network.webdav.WebdavClient; @@ -50,6 +49,9 @@ public abstract class RemoteOperation implements Runnable { /** ownCloud account in the remote ownCloud server to operate */ private Account mAccount = null; + /** Authoritities */ + private String mAuthorities; + /** Android Application context */ private Context mContext = null; @@ -83,7 +85,7 @@ public abstract class RemoteOperation implements Runnable { * @param context Android context for the component calling the method. * @return Result of the operation. */ - public final RemoteOperationResult execute(Account account, Context context) { + public final RemoteOperationResult execute(Account account, Context context, String authorities) { if (account == null) throw new IllegalArgumentException("Trying to execute a remote operation with a NULL Account"); if (context == null) @@ -91,11 +93,12 @@ public abstract class RemoteOperation implements Runnable { mAccount = account; mContext = context.getApplicationContext(); try { - mClient = OwnCloudClientUtils.createOwnCloudClient(mAccount, mContext); + mClient = OwnCloudClientUtils.createOwnCloudClient(mAccount, mContext, authorities); } catch (Exception e) { Log.e(TAG, "Error while trying to access to " + mAccount.name, e); return new RemoteOperationResult(e); } + mAuthorities = authorities; return run(mClient); } @@ -215,9 +218,9 @@ public abstract class RemoteOperation implements Runnable { if (mClient == null) { if (mAccount != null && mContext != null) { if (mCallerActivity != null) { - mClient = OwnCloudClientUtils.createOwnCloudClient(mAccount, mContext, mCallerActivity); + mClient = OwnCloudClientUtils.createOwnCloudClient(mAccount, mContext, mCallerActivity, mAuthorities); } else { - mClient = OwnCloudClientUtils.createOwnCloudClient(mAccount, mContext); + mClient = OwnCloudClientUtils.createOwnCloudClient(mAccount, mContext, mAuthorities); } } else { throw new IllegalStateException("Trying to run a remote operation asynchronously with no client instance or account"); @@ -249,9 +252,9 @@ public abstract class RemoteOperation implements Runnable { boolean bearerAuthorization = (cred != null && cred instanceof BearerCredentials); boolean samlBasedSsoAuthorization = (cred == null && ssoSessionCookie != null); if (bearerAuthorization) { - am.invalidateAuthToken(MainApp.getAccountType(), ((BearerCredentials)cred).getAccessToken()); + am.invalidateAuthToken(mAccount.type, ((BearerCredentials)cred).getAccessToken()); } else if (samlBasedSsoAuthorization ) { - am.invalidateAuthToken(MainApp.getAccountType(), ssoSessionCookie); + am.invalidateAuthToken(mAccount.type, ssoSessionCookie); } else { am.clearPassword(mAccount); }