\r
import android.accounts.Account;\r
import android.accounts.AccountManager;\r
+import android.accounts.AccountsException;\r
import android.content.Context;\r
import android.content.SharedPreferences;\r
import android.preference.PreferenceManager;\r
* @param context\r
* @param account\r
* @return url or null on failure\r
+ * @throws AccountNotFoundException When 'account' is unknown for the AccountManager\r
*/\r
- public static String constructFullURLForAccount(Context context, Account account) {\r
- try {\r
- AccountManager ama = AccountManager.get(context);\r
- String baseurl = ama.getUserData(account, AccountAuthenticator.KEY_OC_BASE_URL);\r
- String strver = ama.getUserData(account, AccountAuthenticator.KEY_OC_VERSION);\r
- boolean supportsOAuth = (ama.getUserData(account, AccountAuthenticator.KEY_SUPPORTS_OAUTH2) != null);\r
- OwnCloudVersion ver = new OwnCloudVersion(strver);\r
- String webdavpath = getWebdavPath(ver, supportsOAuth);\r
+ public static String constructFullURLForAccount(Context context, Account account) throws AccountNotFoundException {\r
+ AccountManager ama = AccountManager.get(context);\r
+ String baseurl = ama.getUserData(account, AccountAuthenticator.KEY_OC_BASE_URL);\r
+ String strver = ama.getUserData(account, AccountAuthenticator.KEY_OC_VERSION);\r
+ boolean supportsOAuth = (ama.getUserData(account, AccountAuthenticator.KEY_SUPPORTS_OAUTH2) != null);\r
+ OwnCloudVersion ver = new OwnCloudVersion(strver);\r
+ String webdavpath = getWebdavPath(ver, supportsOAuth);\r
\r
- if (webdavpath == null) return null;\r
- return baseurl + webdavpath;\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- return null;\r
+ if (baseurl == null || webdavpath == null) \r
+ throw new AccountNotFoundException(account, "Account not found", null);\r
+ \r
+ return baseurl + webdavpath;\r
+ }\r
+ \r
+ \r
+ public static class AccountNotFoundException extends AccountsException {\r
+ \r
+ /** Generated - should be refreshed every time the class changes!! */\r
+ private static final long serialVersionUID = -9013287181793186830L;\r
+ \r
+ private Account mFailedAccount; \r
+ \r
+ public AccountNotFoundException(Account failedAccount, String message, Throwable cause) {\r
+ super(message, cause);\r
+ mFailedAccount = failedAccount;\r
+ }\r
+ \r
+ public Account getFailedAccount() {\r
+ return mFailedAccount;\r
}\r
}\r
\r