Turn gtasks sync v2 provider into a real singleton, and synchronize on the instance for certain methods

pull/14/head
Tim Su 13 years ago
parent 3466094b4b
commit d41ae9e4aa

@ -14,7 +14,7 @@ public class GtasksBackgroundService extends SyncV2BackgroundService {
@Override
protected SyncV2Provider getSyncProvider() {
return new GtasksSyncV2Provider();
return GtasksSyncV2Provider.getInstance();
}
@Override

@ -50,7 +50,7 @@ public class GtasksPreferences extends SyncProviderPreferences {
@Override
public void logOut() {
new GtasksSyncV2Provider().signOut();
GtasksSyncV2Provider.getInstance().signOut();
}
@Override

@ -60,6 +60,18 @@ public class GtasksSyncV2Provider extends SyncV2Provider {
AstridDependencyInjector.initialize();
}
private static GtasksSyncV2Provider instance = null;
protected GtasksSyncV2Provider() {
// prevent multiple sync providers
}
public synchronized static GtasksSyncV2Provider getInstance() {
if(instance == null)
instance = new GtasksSyncV2Provider();
return instance;
}
@Override
public String getName() {
return ContextManager.getString(R.string.gtasks_GPr_header);
@ -122,8 +134,9 @@ public class GtasksSyncV2Provider extends SyncV2Provider {
}).start();
}
private void pushUpdated(GtasksInvoker invoker, SyncResultCallback callback) {
TodorooCursor<Task> queued = taskService.query(Query.select(Task.PROPERTIES).join(Join.left(Metadata.TABLE, Task.ID.eq(Metadata.TASK))).where(
private synchronized void pushUpdated(GtasksInvoker invoker, SyncResultCallback callback) {
TodorooCursor<Task> queued = taskService.query(Query.select(Task.PROPERTIES).
join(Join.left(Metadata.TABLE, Task.ID.eq(Metadata.TASK))).where(
Criterion.or(
Criterion.and(MetadataCriteria.withKey(GtasksMetadata.METADATA_KEY),
Task.MODIFICATION_DATE.gt(GtasksMetadata.LAST_SYNC)),

@ -23,9 +23,9 @@ public class SyncV2Service {
* there is enough interest, the Astrid team could create an interface
* for responding to sync requests through this new API.
*/
private final SyncV2Provider[] providers = new SyncV2Provider[] {
private static final SyncV2Provider[] providers = new SyncV2Provider[] {
new ActFmSyncV2Provider(),
new GtasksSyncV2Provider()
GtasksSyncV2Provider.getInstance()
};
/**

@ -473,7 +473,7 @@ public class GtasksNewSyncTest extends DatabaseTestCase {
//Perform a synchronization
private void whenInvokeSync() {
new GtasksSyncV2Provider().synchronizeActiveTasks(true, new SyncResultCallbackAdapter() {
GtasksSyncV2Provider.getInstance().synchronizeActiveTasks(true, new SyncResultCallbackAdapter() {
@Override
public void finished() {
synchronized(GtasksNewSyncTest.this) {

Loading…
Cancel
Save