diff --git a/briar-android/src/org/briarproject/android/AndroidComponent.java b/briar-android/src/org/briarproject/android/AndroidComponent.java index caf43416ae358fb2699326bae7b3e4c71fff8854..5be1919a35e652132ec666ee2d90860cfc17ee75 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 427b884b5acb07a4e0775c7e2d83ff690ae9abf8..b258be889a26f7e28139743e93fb50beb6aae854 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 1478b6e2d5357e2e26f547e3c6b5021f66f16f89..e56688e697d513e9b5ab9e5898fbdaf9afd56560 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 ef374c11301b64b1da8519c9631f80c1b49eb772..acc0652af68e218b0ebca6895a59d05a1031ce48 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 e4baf6e137430c65fd09e6f2fbfd68955b06be24..940de7e7594f83fff6a48fd6d1d0062ce8e8f048 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 10bcbc3c7101a66fc4f6f14f21fcdc20cf912cce..055143d43b799faaa5abff52d053e6b1be88fa7d 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 f2009be57d6d1421ab1c8bbe325c5d41678ccb0e..e4927a74f27a5010418914d586ee75a2839829c3 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 04e216b80bd667cadcb951ab10a0d67fd9b4d86f..c8b1d4845fc2602b277c918fd27b3a48d7aed238 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 74512c9c0f3824bf228338b1577848fb89cc7236..c177c9ae4b528774de226da471da8b92a7d4ac84 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 5712c165eb2158377dfc0d46e8439ad54d4ed508..dba71334f03e8381ea55a3fd129a7542d84cc5e6 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 99e8eeb0f15d7e0e862c240124801cc230941db6..e2701561292b08e5b444f15f336741d84fcf9d00 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 5685dd2a2d1f931aeed886ebf345cc991d7ff7ec..c6218f273035d0ed36d4120f7ac7ece38671a9de 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 89c748a59fd5c0e57712300343a10e5295cf8863..6a68b0fe1aa65428a6dd0c39224a51f562c0a998 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 057f685ba534c97a73f9233d8cf5e610a566edf8..15fcf56aa568f72477f5e56b5433e739477c4984 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 d8aa3b9158e4bfc2c267dc986e35f33601b3dd4b..b9edc99515f8f727f86351fec1c64b6305c64850 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 654f029e6f2a0894d5fc622c9e962e5366cad3c5..6c286f8af4cb6a449de48b93122491b468a1d152 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 090882d1ab7ed746766aa5e78f44bf14977d16dc..5a4ae89367449a46a113d2fcad02b344dc24cc06 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;