mirror of
https://github.com/owncloud/android-library.git
synced 2025-06-07 16:06:08 +00:00
Default policy for singleton available in OwnCloudManagerFactory made configurable
This commit is contained in:
parent
9be1323745
commit
7e2ec10442
@ -57,6 +57,9 @@ public class OwnCloudAccount {
|
|||||||
mSavedAccountName = savedAccount.name;
|
mSavedAccountName = savedAccount.name;
|
||||||
mBaseUri = Uri.parse(AccountUtils.getBaseUrlForAccount(context, savedAccount));
|
mBaseUri = Uri.parse(AccountUtils.getBaseUrlForAccount(context, savedAccount));
|
||||||
mCredentials = AccountUtils.getCredentialsForAccount(context, savedAccount);
|
mCredentials = AccountUtils.getCredentialsForAccount(context, savedAccount);
|
||||||
|
if (mCredentials == null) {
|
||||||
|
mCredentials = OwnCloudCredentialsFactory.getAnonymousCredentials();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,12 +7,12 @@ public class OwnCloudClientManagerFactory {
|
|||||||
SINGLE_SESSION_PER_ACCOUNT
|
SINGLE_SESSION_PER_ACCOUNT
|
||||||
}
|
}
|
||||||
|
|
||||||
public final static Policy DEFAULT_POLICY = Policy.ALWAYS_NEW_CLIENT;
|
public static Policy sDefaultPolicy = Policy.ALWAYS_NEW_CLIENT;
|
||||||
|
|
||||||
private static OwnCloudClientManager mDefaultSingleton;
|
private static OwnCloudClientManager sDefaultSingleton;
|
||||||
|
|
||||||
public static OwnCloudClientManager newDefaultOwnCloudClientManager() {
|
public static OwnCloudClientManager newDefaultOwnCloudClientManager() {
|
||||||
return newOwnCloudClientManager(DEFAULT_POLICY);
|
return newOwnCloudClientManager(sDefaultPolicy);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static OwnCloudClientManager newOwnCloudClientManager(Policy policy) {
|
public static OwnCloudClientManager newOwnCloudClientManager(Policy policy) {
|
||||||
@ -29,10 +29,32 @@ public class OwnCloudClientManagerFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static OwnCloudClientManager getDefaultSingleton() {
|
public static OwnCloudClientManager getDefaultSingleton() {
|
||||||
if (mDefaultSingleton == null) {
|
if (sDefaultSingleton == null) {
|
||||||
mDefaultSingleton = newDefaultOwnCloudClientManager();
|
sDefaultSingleton = newDefaultOwnCloudClientManager();
|
||||||
}
|
}
|
||||||
return mDefaultSingleton;
|
return sDefaultSingleton;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setDefaultPolicy(Policy policy) {
|
||||||
|
if (defaultSingletonMustBeUpdated(policy)) {
|
||||||
|
sDefaultSingleton = null;
|
||||||
|
}
|
||||||
|
sDefaultPolicy = policy;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean defaultSingletonMustBeUpdated(Policy policy) {
|
||||||
|
if (sDefaultSingleton == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (policy == Policy.ALWAYS_NEW_CLIENT &&
|
||||||
|
!(sDefaultSingleton instanceof SimpleFactoryManager)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (policy == Policy.SINGLE_SESSION_PER_ACCOUNT &&
|
||||||
|
!(sDefaultSingleton instanceof SingleSessionManager)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -99,6 +99,7 @@ public class SingleSessionManager implements OwnCloudClientManager {
|
|||||||
} else {
|
} else {
|
||||||
Log.d(TAG, " reusing client {" + accountName + ", " + client.hashCode() + "}");
|
Log.d(TAG, " reusing client {" + accountName + ", " + client.hashCode() + "}");
|
||||||
reusingKnown = true;
|
reusingKnown = true;
|
||||||
|
keepCredentialsUpdated(account, client);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (client == null) {
|
if (client == null) {
|
||||||
@ -191,6 +192,15 @@ public class SingleSessionManager implements OwnCloudClientManager {
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
private void keepCredentialsUpdated(OwnCloudAccount account, OwnCloudClient reusedClient) {
|
||||||
|
OwnCloudCredentials recentCredentials = account.getCredentials();
|
||||||
|
if (!recentCredentials.getAuthToken().equals(
|
||||||
|
reusedClient.getCredentials().getAuthToken())) {
|
||||||
|
reusedClient.setCredentials(recentCredentials);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized OwnCloudClient removeClientFor(Account savedAccount, Context context)
|
public synchronized OwnCloudClient removeClientFor(Account savedAccount, Context context)
|
||||||
throws AccountNotFoundException, OperationCanceledException, AuthenticatorException, IOException {
|
throws AccountNotFoundException, OperationCanceledException, AuthenticatorException, IOException {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user