From caceb7636dcd62547462d3d406366a71c5442db7 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Sat, 28 Jun 2014 03:02:32 -0500 Subject: [PATCH] Inject more objects into root object graph --- astrid/src/main/java/org/tasks/Tasks.java | 45 ++++++++++++++++++- .../org/tasks/injection/ActivityModule.java | 11 +---- .../org/tasks/injection/BroadcastModule.java | 21 +-------- .../injection/ContentProviderModule.java | 20 +-------- .../main/java/org/tasks/injection/Dagger.java | 16 +++++++ .../org/tasks/injection/FragmentModule.java | 10 +---- .../injection/InjectingAppWidgetProvider.java | 2 +- .../tasks/injection/InjectingApplication.java | 4 +- .../injection/InjectingBroadcastReceiver.java | 2 +- .../injection/InjectingContentProvider.java | 6 +-- .../InjectingRemoteViewsService.java | 2 +- .../org/tasks/injection/InjectingService.java | 2 +- .../org/tasks/injection/ServiceModule.java | 22 +-------- .../java/org/tasks/injection/TasksModule.java | 17 +++++++ 14 files changed, 96 insertions(+), 84 deletions(-) create mode 100644 astrid/src/main/java/org/tasks/injection/Dagger.java diff --git a/astrid/src/main/java/org/tasks/Tasks.java b/astrid/src/main/java/org/tasks/Tasks.java index beb2e0207..2715df85c 100644 --- a/astrid/src/main/java/org/tasks/Tasks.java +++ b/astrid/src/main/java/org/tasks/Tasks.java @@ -2,15 +2,58 @@ package org.tasks; import com.todoroo.andlib.service.ContextManager; import com.todoroo.astrid.dao.Database; +import com.todoroo.astrid.dao.MetadataDao; +import com.todoroo.astrid.dao.StoreObjectDao; +import com.todoroo.astrid.dao.TagDataDao; +import com.todoroo.astrid.dao.TagMetadataDao; +import com.todoroo.astrid.dao.TaskAttachmentDao; +import com.todoroo.astrid.dao.TaskDao; +import com.todoroo.astrid.dao.TaskListMetadataDao; +import com.todoroo.astrid.dao.UserActivityDao; +import com.todoroo.astrid.gtasks.GtasksListService; +import com.todoroo.astrid.gtasks.GtasksMetadataService; +import com.todoroo.astrid.gtasks.GtasksPreferenceService; +import com.todoroo.astrid.gtasks.GtasksTaskListUpdater; +import com.todoroo.astrid.gtasks.sync.GtasksSyncService; +import com.todoroo.astrid.service.MetadataService; +import com.todoroo.astrid.service.SyncV2Service; +import com.todoroo.astrid.service.TagDataService; +import com.todoroo.astrid.service.TaskService; +import com.todoroo.astrid.service.UpgradeService; +import com.todoroo.astrid.tags.TagService; +import org.tasks.filters.FilterCounter; import org.tasks.injection.InjectingApplication; +import org.tasks.scheduling.RefreshScheduler; import javax.inject.Inject; +@SuppressWarnings("UnusedDeclaration") public class Tasks extends InjectingApplication { - @SuppressWarnings("UnusedDeclaration") @Inject Database database; + @Inject TaskDao taskDao; + @Inject MetadataDao metadataDao; + @Inject TagMetadataDao tagMetadataDao; + @Inject TagDataDao tagDataDao; + @Inject StoreObjectDao storeObjectDao; + @Inject UserActivityDao userActivityDao; + @Inject TaskAttachmentDao taskAttachmentDao; + @Inject TaskListMetadataDao taskListMetadataDao; + @Inject TaskService taskService; + @Inject MetadataService metadataService; + @Inject TagDataService tagDataService; + @Inject UpgradeService upgradeService; + @Inject SyncV2Service syncV2Service; + @Inject GtasksPreferenceService gtasksPreferenceService; + @Inject GtasksListService gtasksListService; + @Inject GtasksMetadataService gtasksMetadataService; + @Inject GtasksTaskListUpdater gtasksTaskListUpdater; + @Inject GtasksSyncService gtasksSyncService; + @Inject TagService tagService; + @Inject Broadcaster broadcaster; + @Inject FilterCounter filterCounter; + @Inject RefreshScheduler refreshScheduler; @Override public void onCreate() { diff --git a/astrid/src/main/java/org/tasks/injection/ActivityModule.java b/astrid/src/main/java/org/tasks/injection/ActivityModule.java index a10a63d79..dff39e298 100644 --- a/astrid/src/main/java/org/tasks/injection/ActivityModule.java +++ b/astrid/src/main/java/org/tasks/injection/ActivityModule.java @@ -1,7 +1,6 @@ package org.tasks.injection; import android.app.Activity; -import android.content.Context; import com.todoroo.astrid.actfm.TagSettingsActivity; import com.todoroo.astrid.actfm.TagSettingsActivityTablet; @@ -38,7 +37,8 @@ import javax.inject.Singleton; import dagger.Module; import dagger.Provides; -@Module(injects = { +@Module(addsTo = TasksModule.class, + injects = { TaskListActivity.class, TaskEditActivity.class, ShareLinkActivity.class, @@ -85,13 +85,6 @@ public class ActivityModule { return injector; } - @Singleton - @Provides - @ForApplication - public Context getApplicationContext() { - return activity.getApplicationContext(); - } - @Singleton @Provides public Activity getActivity() { diff --git a/astrid/src/main/java/org/tasks/injection/BroadcastModule.java b/astrid/src/main/java/org/tasks/injection/BroadcastModule.java index d19b8ad4d..9a8d0d7f1 100644 --- a/astrid/src/main/java/org/tasks/injection/BroadcastModule.java +++ b/astrid/src/main/java/org/tasks/injection/BroadcastModule.java @@ -1,7 +1,5 @@ package org.tasks.injection; -import android.content.Context; - import com.todoroo.astrid.alarms.AlarmDetailExposer; import com.todoroo.astrid.alarms.AlarmTaskRepeatListener; import com.todoroo.astrid.backup.BackupStartupReceiver; @@ -30,12 +28,10 @@ import com.todoroo.astrid.widget.TasksWidget; import org.tasks.scheduling.RefreshBroadcastReceiver; -import javax.inject.Singleton; - import dagger.Module; -import dagger.Provides; -@Module(injects = { +@Module(addsTo = TasksModule.class, + injects = { RefreshBroadcastReceiver.class, TasksWidget.class, Notifications.class, @@ -64,17 +60,4 @@ import dagger.Provides; CalendarStartupReceiver.class }) public class BroadcastModule { - - private final Context context; - - public BroadcastModule(Context context) { - this.context = context; - } - - @Singleton - @Provides - @ForApplication - public Context getContext() { - return context.getApplicationContext(); - } } diff --git a/astrid/src/main/java/org/tasks/injection/ContentProviderModule.java b/astrid/src/main/java/org/tasks/injection/ContentProviderModule.java index 33ec85cb0..525a16599 100644 --- a/astrid/src/main/java/org/tasks/injection/ContentProviderModule.java +++ b/astrid/src/main/java/org/tasks/injection/ContentProviderModule.java @@ -1,32 +1,16 @@ package org.tasks.injection; -import android.content.Context; - import com.todoroo.astrid.provider.Astrid2TaskProvider; import com.todoroo.astrid.provider.Astrid3ContentProvider; import com.todoroo.astrid.provider.SqlContentProvider; -import javax.inject.Singleton; - import dagger.Module; -import dagger.Provides; -@Module(injects = { +@Module(addsTo = TasksModule.class, + injects = { Astrid2TaskProvider.class, Astrid3ContentProvider.class, SqlContentProvider.class }) public class ContentProviderModule { - private final Context context; - - public ContentProviderModule(Context context) { - this.context = context; - } - - @Singleton - @Provides - @ForApplication - public Context getContext() { - return context; - } } diff --git a/astrid/src/main/java/org/tasks/injection/Dagger.java b/astrid/src/main/java/org/tasks/injection/Dagger.java new file mode 100644 index 000000000..ea860f9d4 --- /dev/null +++ b/astrid/src/main/java/org/tasks/injection/Dagger.java @@ -0,0 +1,16 @@ +package org.tasks.injection; + +import android.content.Context; + +import dagger.ObjectGraph; + +public final class Dagger { + private static ObjectGraph objectGraph; + + static ObjectGraph getObjectGraph(Context context) { + if (objectGraph == null) { + objectGraph = ObjectGraph.create(new TasksModule(context)); + } + return objectGraph; + } +} diff --git a/astrid/src/main/java/org/tasks/injection/FragmentModule.java b/astrid/src/main/java/org/tasks/injection/FragmentModule.java index 3e1dea331..ca5c84d3c 100644 --- a/astrid/src/main/java/org/tasks/injection/FragmentModule.java +++ b/astrid/src/main/java/org/tasks/injection/FragmentModule.java @@ -23,7 +23,8 @@ import javax.inject.Singleton; import dagger.Module; import dagger.Provides; -@Module(injects = { +@Module(addsTo = TasksModule.class, + injects = { TaskListFragment.class, GtasksListFragment.class, NotificationFragment.class, @@ -55,13 +56,6 @@ public class FragmentModule { return injector; } - @Singleton - @Provides - @ForApplication - public Context getApplicationContext() { - return activity.getApplicationContext(); - } - @Singleton @Provides @ForActivity diff --git a/astrid/src/main/java/org/tasks/injection/InjectingAppWidgetProvider.java b/astrid/src/main/java/org/tasks/injection/InjectingAppWidgetProvider.java index 3339d5bcc..ec584c606 100644 --- a/astrid/src/main/java/org/tasks/injection/InjectingAppWidgetProvider.java +++ b/astrid/src/main/java/org/tasks/injection/InjectingAppWidgetProvider.java @@ -9,7 +9,7 @@ public class InjectingAppWidgetProvider extends AppWidgetProvider { public void onReceive(Context context, Intent intent) { ((Injector) context.getApplicationContext()) .getObjectGraph() - .plus(new BroadcastModule(context)) + .plus(new BroadcastModule()) .inject(this); super.onReceive(context, intent); diff --git a/astrid/src/main/java/org/tasks/injection/InjectingApplication.java b/astrid/src/main/java/org/tasks/injection/InjectingApplication.java index 5ee5faeff..f0f6f7590 100644 --- a/astrid/src/main/java/org/tasks/injection/InjectingApplication.java +++ b/astrid/src/main/java/org/tasks/injection/InjectingApplication.java @@ -6,12 +6,14 @@ import dagger.ObjectGraph; public class InjectingApplication extends Application implements Injector { - private final ObjectGraph objectGraph = ObjectGraph.create(new TasksModule()); + private ObjectGraph objectGraph; @Override public void onCreate() { super.onCreate(); + objectGraph = Dagger.getObjectGraph(this); + inject(this); } diff --git a/astrid/src/main/java/org/tasks/injection/InjectingBroadcastReceiver.java b/astrid/src/main/java/org/tasks/injection/InjectingBroadcastReceiver.java index 13dc7c610..f8f03ee82 100644 --- a/astrid/src/main/java/org/tasks/injection/InjectingBroadcastReceiver.java +++ b/astrid/src/main/java/org/tasks/injection/InjectingBroadcastReceiver.java @@ -9,7 +9,7 @@ public class InjectingBroadcastReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { ((Injector) context.getApplicationContext()) .getObjectGraph() - .plus(new BroadcastModule(context)) + .plus(new BroadcastModule()) .inject(this); } } diff --git a/astrid/src/main/java/org/tasks/injection/InjectingContentProvider.java b/astrid/src/main/java/org/tasks/injection/InjectingContentProvider.java index c3a2636ad..9f5de9b65 100644 --- a/astrid/src/main/java/org/tasks/injection/InjectingContentProvider.java +++ b/astrid/src/main/java/org/tasks/injection/InjectingContentProvider.java @@ -7,11 +7,9 @@ public abstract class InjectingContentProvider extends ContentProvider { @Override public boolean onCreate() { Context context = getContext(); - ((Injector) context.getApplicationContext()) - .getObjectGraph() - .plus(new ContentProviderModule(context)) + Dagger.getObjectGraph(context) + .plus(new ContentProviderModule()) .inject(this); - return true; } } diff --git a/astrid/src/main/java/org/tasks/injection/InjectingRemoteViewsService.java b/astrid/src/main/java/org/tasks/injection/InjectingRemoteViewsService.java index 75b569d29..5fb41f885 100644 --- a/astrid/src/main/java/org/tasks/injection/InjectingRemoteViewsService.java +++ b/astrid/src/main/java/org/tasks/injection/InjectingRemoteViewsService.java @@ -12,7 +12,7 @@ public abstract class InjectingRemoteViewsService extends RemoteViewsService { ((Injector) getApplication()) .getObjectGraph() - .plus(new ServiceModule(this)) + .plus(new ServiceModule()) .inject(this); } } diff --git a/astrid/src/main/java/org/tasks/injection/InjectingService.java b/astrid/src/main/java/org/tasks/injection/InjectingService.java index 4a60756e4..02488093f 100644 --- a/astrid/src/main/java/org/tasks/injection/InjectingService.java +++ b/astrid/src/main/java/org/tasks/injection/InjectingService.java @@ -9,7 +9,7 @@ public abstract class InjectingService extends Service { ((Injector) getApplication()) .getObjectGraph() - .plus(new ServiceModule(this)) + .plus(new ServiceModule()) .inject(this); } } diff --git a/astrid/src/main/java/org/tasks/injection/ServiceModule.java b/astrid/src/main/java/org/tasks/injection/ServiceModule.java index 040b1f814..7d160c585 100644 --- a/astrid/src/main/java/org/tasks/injection/ServiceModule.java +++ b/astrid/src/main/java/org/tasks/injection/ServiceModule.java @@ -1,8 +1,5 @@ package org.tasks.injection; -import android.app.Service; -import android.content.Context; - import com.todoroo.astrid.backup.BackupService; import com.todoroo.astrid.gtasks.GtasksBackgroundService; import com.todoroo.astrid.reminders.ReminderSchedulingService; @@ -10,12 +7,10 @@ import com.todoroo.astrid.widget.WidgetUpdateService; import org.tasks.widget.ScrollableWidgetUpdateService; -import javax.inject.Singleton; - import dagger.Module; -import dagger.Provides; -@Module(injects = { +@Module(addsTo = TasksModule.class, + injects = { GtasksBackgroundService.class, ReminderSchedulingService.class, ScrollableWidgetUpdateService.class, @@ -23,17 +18,4 @@ import dagger.Provides; BackupService.class }) public class ServiceModule { - - private final Context context; - - public ServiceModule(Service service) { - context = service.getApplicationContext(); - } - - @Singleton - @Provides - @ForApplication - public Context getContext() { - return context; - } } diff --git a/astrid/src/main/java/org/tasks/injection/TasksModule.java b/astrid/src/main/java/org/tasks/injection/TasksModule.java index 4cdfb14a2..c210f7ecf 100644 --- a/astrid/src/main/java/org/tasks/injection/TasksModule.java +++ b/astrid/src/main/java/org/tasks/injection/TasksModule.java @@ -1,9 +1,26 @@ package org.tasks.injection; +import android.content.Context; + import org.tasks.Tasks; +import javax.inject.Singleton; + import dagger.Module; +import dagger.Provides; @Module(injects = { Tasks.class }) public class TasksModule { + private Context context; + + public TasksModule(Context context) { + this.context = context; + } + + @Singleton + @Provides + @ForApplication + public Context getApplicationContext() { + return context.getApplicationContext(); + } }