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

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

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

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

@ -60,6 +60,18 @@ public class GtasksSyncV2Provider extends SyncV2Provider {
AstridDependencyInjector.initialize(); 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 @Override
public String getName() { public String getName() {
return ContextManager.getString(R.string.gtasks_GPr_header); return ContextManager.getString(R.string.gtasks_GPr_header);
@ -122,8 +134,9 @@ public class GtasksSyncV2Provider extends SyncV2Provider {
}).start(); }).start();
} }
private void pushUpdated(GtasksInvoker invoker, SyncResultCallback callback) { 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( TodorooCursor<Task> queued = taskService.query(Query.select(Task.PROPERTIES).
join(Join.left(Metadata.TABLE, Task.ID.eq(Metadata.TASK))).where(
Criterion.or( Criterion.or(
Criterion.and(MetadataCriteria.withKey(GtasksMetadata.METADATA_KEY), Criterion.and(MetadataCriteria.withKey(GtasksMetadata.METADATA_KEY),
Task.MODIFICATION_DATE.gt(GtasksMetadata.LAST_SYNC)), 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 * there is enough interest, the Astrid team could create an interface
* for responding to sync requests through this new API. * 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 ActFmSyncV2Provider(),
new GtasksSyncV2Provider() GtasksSyncV2Provider.getInstance()
}; };
/** /**

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

Loading…
Cancel
Save