From 9af3ce123a94bce69632cdeaaafde8780adf64a7 Mon Sep 17 00:00:00 2001 From: Ernir Erlingsson <ernir@ymirmobile.com> Date: Tue, 8 Mar 2016 22:35:42 +0100 Subject: [PATCH] Added eager singletons and made some fixes --- .../android/AndroidComponent.java | 2 ++ .../briarproject/android/AndroidModule.java | 27 ++++++++++++++++--- .../android/BriarApplication.java | 8 +++++- .../android/SplashScreenActivity.java | 3 +++ .../invitation/ChooseIdentityView.java | 6 ----- .../briarproject/clients/ClientsModule.java | 4 +++ .../briarproject/contact/ContactModule.java | 2 ++ .../org/briarproject/crypto/CryptoModule.java | 1 + .../org/briarproject/db/DatabaseModule.java | 4 +++ .../org/briarproject/forum/ForumModule.java | 5 ++++ .../briarproject/identity/IdentityModule.java | 3 +++ .../lifecycle/LifecycleModule.java | 1 + .../messaging/MessagingModule.java | 3 +++ .../properties/PropertiesModule.java | 3 +++ .../briarproject/settings/SettingsModule.java | 1 + .../src/org/briarproject/sync/SyncModule.java | 5 ++++ .../transport/TransportModule.java | 2 ++ 17 files changed, 70 insertions(+), 10 deletions(-) diff --git a/briar-android/src/org/briarproject/android/AndroidComponent.java b/briar-android/src/org/briarproject/android/AndroidComponent.java index caf43416ae..5be1919a35 100644 --- a/briar-android/src/org/briarproject/android/AndroidComponent.java +++ b/briar-android/src/org/briarproject/android/AndroidComponent.java @@ -67,5 +67,7 @@ public interface AndroidComponent { void inject(ContactListFragment fragment); void inject(SettingsFragment fragment); void inject(ForumListFragment fragment); + // Eager singleton load + void inject(AndroidModule.EagerSingletons init); } diff --git a/briar-android/src/org/briarproject/android/AndroidModule.java b/briar-android/src/org/briarproject/android/AndroidModule.java index 427b884b5a..b258be889a 100644 --- a/briar-android/src/org/briarproject/android/AndroidModule.java +++ b/briar-android/src/org/briarproject/android/AndroidModule.java @@ -1,20 +1,24 @@ package org.briarproject.android; import android.app.Application; -import android.content.SharedPreferences; -import android.support.v7.preference.PreferenceManager; import org.briarproject.api.android.AndroidExecutor; import org.briarproject.api.android.AndroidNotificationManager; import org.briarproject.api.android.ReferenceManager; +import org.briarproject.api.contact.ContactManager; import org.briarproject.api.crypto.SecretKey; import org.briarproject.api.db.DatabaseConfig; import org.briarproject.api.event.EventBus; import org.briarproject.api.lifecycle.LifecycleManager; +import org.briarproject.api.plugins.PluginManager; +import org.briarproject.api.properties.TransportPropertyManager; +import org.briarproject.api.sync.ValidationManager; +import org.briarproject.api.transport.KeyManager; import org.briarproject.api.ui.UiCallback; import java.io.File; +import javax.inject.Inject; import javax.inject.Singleton; import dagger.Module; @@ -25,6 +29,24 @@ import static android.content.Context.MODE_PRIVATE; @Module public class AndroidModule { + static class EagerSingletons { + // Load all relevant eager singletons and their references + @Inject + KeyManager keyManager; + @Inject + ValidationManager validationManager; + @Inject + PluginManager pluginManager; + @Inject + AndroidNotificationManager androidNotificationManager; + @Inject + TransportPropertyManager transportPropertyManager; + } + + static void injectEager(AndroidComponent c) { + c.inject(new EagerSingletons()); + } + private final UiCallback uiCallback; public AndroidModule() { @@ -93,7 +115,6 @@ public class AndroidModule { }; } - @Provides @Singleton AndroidNotificationManager provideAndroidNotificationManager( diff --git a/briar-android/src/org/briarproject/android/BriarApplication.java b/briar-android/src/org/briarproject/android/BriarApplication.java index 1478b6e2d5..e56688e697 100644 --- a/briar-android/src/org/briarproject/android/BriarApplication.java +++ b/briar-android/src/org/briarproject/android/BriarApplication.java @@ -6,6 +6,8 @@ import java.util.logging.Logger; import android.app.Application; import android.content.Context; +import org.briarproject.event.EventModule; + public class BriarApplication extends Application { private static final Logger LOG = @@ -16,7 +18,7 @@ public class BriarApplication extends Application { @Override public void onCreate() { super.onCreate(); - LOG.info("Created"); + LOG.info("Application Created"); UncaughtExceptionHandler oldHandler = Thread.getDefaultUncaughtExceptionHandler(); Context ctx = getApplicationContext(); @@ -27,6 +29,10 @@ public class BriarApplication extends Application { .appModule(new AppModule(this)) .androidModule(new AndroidModule()) .build(); + // We need to load the eager singletons directly after making the + // dependency graph + AndroidModule.injectEager(applicationComponent); + } public AndroidComponent getApplicationComponent() { diff --git a/briar-android/src/org/briarproject/android/SplashScreenActivity.java b/briar-android/src/org/briarproject/android/SplashScreenActivity.java index ef374c1130..acc0652af6 100644 --- a/briar-android/src/org/briarproject/android/SplashScreenActivity.java +++ b/briar-android/src/org/briarproject/android/SplashScreenActivity.java @@ -8,6 +8,7 @@ import android.os.StrictMode; import android.os.StrictMode.ThreadPolicy; import android.os.StrictMode.VmPolicy; import android.support.v7.preference.PreferenceManager; +import android.util.Log; import android.widget.ImageView; import android.widget.LinearLayout; @@ -38,6 +39,8 @@ public class SplashScreenActivity extends BaseActivity { @Inject DatabaseConfig dbConfig; + + public SplashScreenActivity() { Logger.getLogger("").setLevel(DEFAULT_LOG_LEVEL); enableStrictMode(); diff --git a/briar-android/src/org/briarproject/android/invitation/ChooseIdentityView.java b/briar-android/src/org/briarproject/android/invitation/ChooseIdentityView.java index e4baf6e137..940de7e759 100644 --- a/briar-android/src/org/briarproject/android/invitation/ChooseIdentityView.java +++ b/briar-android/src/org/briarproject/android/invitation/ChooseIdentityView.java @@ -16,14 +16,11 @@ import org.briarproject.android.identity.CreateIdentityActivity; import org.briarproject.android.identity.LocalAuthorItem; import org.briarproject.android.identity.LocalAuthorItemComparator; import org.briarproject.android.identity.LocalAuthorSpinnerAdapter; -import org.briarproject.api.crypto.CryptoComponent; import org.briarproject.api.identity.AuthorId; import org.briarproject.api.identity.LocalAuthor; import java.util.Collection; -import javax.inject.Inject; - import static android.bluetooth.BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE; import static android.bluetooth.BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION; import static org.briarproject.android.identity.LocalAuthorItem.NEW; @@ -33,7 +30,6 @@ import static org.briarproject.android.invitation.AddContactActivity.REQUEST_CRE class ChooseIdentityView extends AddContactView implements OnItemSelectedListener, OnClickListener { - @Inject protected CryptoComponent crypto; private LocalAuthorSpinnerAdapter adapter = null; private Spinner spinner = null; @@ -44,8 +40,6 @@ implements OnItemSelectedListener, OnClickListener { void populate() { removeAllViews(); Context ctx = getContext(); - // TODO -// RoboGuice.injectMembers(ctx, this); LayoutInflater inflater = (LayoutInflater) ctx.getSystemService (Context.LAYOUT_INFLATER_SERVICE); diff --git a/briar-core/src/org/briarproject/clients/ClientsModule.java b/briar-core/src/org/briarproject/clients/ClientsModule.java index 10bcbc3c71..055143d43b 100644 --- a/briar-core/src/org/briarproject/clients/ClientsModule.java +++ b/briar-core/src/org/briarproject/clients/ClientsModule.java @@ -9,6 +9,10 @@ import org.briarproject.api.data.MetadataParser; import org.briarproject.api.db.DatabaseComponent; import org.briarproject.api.sync.GroupFactory; import org.briarproject.api.sync.MessageFactory; +import org.briarproject.data.DataModule; +import org.briarproject.db.DatabaseModule; +import org.briarproject.messaging.MessagingModule; +import org.briarproject.sync.SyncModule; import dagger.Module; import dagger.Provides; diff --git a/briar-core/src/org/briarproject/contact/ContactModule.java b/briar-core/src/org/briarproject/contact/ContactModule.java index f2009be57d..e4927a74f2 100644 --- a/briar-core/src/org/briarproject/contact/ContactModule.java +++ b/briar-core/src/org/briarproject/contact/ContactModule.java @@ -3,6 +3,8 @@ package org.briarproject.contact; import org.briarproject.api.contact.ContactManager; import org.briarproject.api.identity.IdentityManager; import org.briarproject.api.lifecycle.LifecycleManager; +import org.briarproject.identity.IdentityModule; +import org.briarproject.lifecycle.LifecycleModule; import javax.inject.Singleton; diff --git a/briar-core/src/org/briarproject/crypto/CryptoModule.java b/briar-core/src/org/briarproject/crypto/CryptoModule.java index 04e216b80b..c8b1d4845f 100644 --- a/briar-core/src/org/briarproject/crypto/CryptoModule.java +++ b/briar-core/src/org/briarproject/crypto/CryptoModule.java @@ -7,6 +7,7 @@ import org.briarproject.api.crypto.StreamDecrypterFactory; import org.briarproject.api.crypto.StreamEncrypterFactory; import org.briarproject.api.lifecycle.LifecycleManager; import org.briarproject.api.system.SeedProvider; +import org.briarproject.lifecycle.LifecycleModule; import java.security.SecureRandom; import java.util.concurrent.BlockingQueue; diff --git a/briar-core/src/org/briarproject/db/DatabaseModule.java b/briar-core/src/org/briarproject/db/DatabaseModule.java index 74512c9c0f..c177c9ae4b 100644 --- a/briar-core/src/org/briarproject/db/DatabaseModule.java +++ b/briar-core/src/org/briarproject/db/DatabaseModule.java @@ -7,6 +7,9 @@ import org.briarproject.api.event.EventBus; import org.briarproject.api.lifecycle.LifecycleManager; import org.briarproject.api.lifecycle.ShutdownManager; import org.briarproject.api.system.Clock; +import org.briarproject.data.DataModule; +import org.briarproject.event.EventModule; +import org.briarproject.lifecycle.LifecycleModule; import java.security.SecureRandom; import java.sql.Connection; @@ -17,6 +20,7 @@ import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.RejectedExecutionHandler; import java.util.concurrent.ThreadPoolExecutor; +import javax.inject.Inject; import javax.inject.Named; import javax.inject.Singleton; diff --git a/briar-core/src/org/briarproject/forum/ForumModule.java b/briar-core/src/org/briarproject/forum/ForumModule.java index 5712c165eb..dba71334f0 100644 --- a/briar-core/src/org/briarproject/forum/ForumModule.java +++ b/briar-core/src/org/briarproject/forum/ForumModule.java @@ -15,6 +15,11 @@ import org.briarproject.api.identity.Author; import org.briarproject.api.sync.MessageFactory; import org.briarproject.api.sync.ValidationManager; import org.briarproject.api.system.Clock; +import org.briarproject.contact.ContactModule; +import org.briarproject.crypto.CryptoModule; +import org.briarproject.data.DataModule; +import org.briarproject.db.DatabaseModule; +import org.briarproject.sync.SyncModule; import javax.inject.Singleton; diff --git a/briar-core/src/org/briarproject/identity/IdentityModule.java b/briar-core/src/org/briarproject/identity/IdentityModule.java index 99e8eeb0f1..e270156129 100644 --- a/briar-core/src/org/briarproject/identity/IdentityModule.java +++ b/briar-core/src/org/briarproject/identity/IdentityModule.java @@ -9,6 +9,9 @@ import org.briarproject.api.identity.Author; import org.briarproject.api.identity.AuthorFactory; import org.briarproject.api.identity.IdentityManager; import org.briarproject.api.system.Clock; +import org.briarproject.crypto.CryptoModule; +import org.briarproject.data.DataModule; +import org.briarproject.db.DatabaseModule; import javax.inject.Singleton; diff --git a/briar-core/src/org/briarproject/lifecycle/LifecycleModule.java b/briar-core/src/org/briarproject/lifecycle/LifecycleModule.java index 5685dd2a2d..c6218f2730 100644 --- a/briar-core/src/org/briarproject/lifecycle/LifecycleModule.java +++ b/briar-core/src/org/briarproject/lifecycle/LifecycleModule.java @@ -17,6 +17,7 @@ import org.briarproject.api.lifecycle.IoExecutor; import org.briarproject.api.lifecycle.LifecycleManager; import org.briarproject.api.lifecycle.ShutdownManager; import org.briarproject.api.system.Clock; +import org.briarproject.event.EventModule; import dagger.Module; import dagger.Provides; diff --git a/briar-core/src/org/briarproject/messaging/MessagingModule.java b/briar-core/src/org/briarproject/messaging/MessagingModule.java index 89c748a59f..6a68b0fe1a 100644 --- a/briar-core/src/org/briarproject/messaging/MessagingModule.java +++ b/briar-core/src/org/briarproject/messaging/MessagingModule.java @@ -9,6 +9,9 @@ import org.briarproject.api.messaging.PrivateMessageFactory; import org.briarproject.api.sync.MessageFactory; import org.briarproject.api.sync.ValidationManager; import org.briarproject.api.system.Clock; +import org.briarproject.contact.ContactModule; +import org.briarproject.data.DataModule; +import org.briarproject.sync.SyncModule; import javax.inject.Singleton; diff --git a/briar-core/src/org/briarproject/properties/PropertiesModule.java b/briar-core/src/org/briarproject/properties/PropertiesModule.java index 057f685ba5..15fcf56aa5 100644 --- a/briar-core/src/org/briarproject/properties/PropertiesModule.java +++ b/briar-core/src/org/briarproject/properties/PropertiesModule.java @@ -6,6 +6,9 @@ import org.briarproject.api.data.MetadataEncoder; import org.briarproject.api.properties.TransportPropertyManager; import org.briarproject.api.sync.ValidationManager; import org.briarproject.api.system.Clock; +import org.briarproject.contact.ContactModule; +import org.briarproject.data.DataModule; +import org.briarproject.sync.SyncModule; import javax.inject.Singleton; diff --git a/briar-core/src/org/briarproject/settings/SettingsModule.java b/briar-core/src/org/briarproject/settings/SettingsModule.java index d8aa3b9158..b9edc99515 100644 --- a/briar-core/src/org/briarproject/settings/SettingsModule.java +++ b/briar-core/src/org/briarproject/settings/SettingsModule.java @@ -2,6 +2,7 @@ package org.briarproject.settings; import org.briarproject.api.db.DatabaseComponent; import org.briarproject.api.settings.SettingsManager; +import org.briarproject.db.DatabaseModule; import dagger.Module; import dagger.Provides; diff --git a/briar-core/src/org/briarproject/sync/SyncModule.java b/briar-core/src/org/briarproject/sync/SyncModule.java index 654f029e6f..6c286f8af4 100644 --- a/briar-core/src/org/briarproject/sync/SyncModule.java +++ b/briar-core/src/org/briarproject/sync/SyncModule.java @@ -16,9 +16,14 @@ import org.briarproject.api.sync.PacketWriterFactory; import org.briarproject.api.sync.SyncSessionFactory; import org.briarproject.api.sync.ValidationManager; import org.briarproject.api.system.Clock; +import org.briarproject.crypto.CryptoModule; +import org.briarproject.db.DatabaseModule; +import org.briarproject.event.EventModule; +import org.briarproject.lifecycle.LifecycleModule; import java.util.concurrent.Executor; +import javax.inject.Inject; import javax.inject.Singleton; import dagger.Module; diff --git a/briar-core/src/org/briarproject/transport/TransportModule.java b/briar-core/src/org/briarproject/transport/TransportModule.java index 090882d1ab..5a4ae89367 100644 --- a/briar-core/src/org/briarproject/transport/TransportModule.java +++ b/briar-core/src/org/briarproject/transport/TransportModule.java @@ -7,6 +7,8 @@ import org.briarproject.api.lifecycle.LifecycleManager; import org.briarproject.api.transport.KeyManager; import org.briarproject.api.transport.StreamReaderFactory; import org.briarproject.api.transport.StreamWriterFactory; +import org.briarproject.event.EventModule; +import org.briarproject.lifecycle.LifecycleModule; import javax.inject.Singleton; -- GitLab