Added eager singletons and made some fixes

This commit is contained in:
Ernir Erlingsson
2016-03-08 22:35:42 +01:00
parent 5aba1d79f1
commit 9af3ce123a
17 changed files with 70 additions and 10 deletions

View File

@@ -67,5 +67,7 @@ public interface AndroidComponent {
void inject(ContactListFragment fragment); void inject(ContactListFragment fragment);
void inject(SettingsFragment fragment); void inject(SettingsFragment fragment);
void inject(ForumListFragment fragment); void inject(ForumListFragment fragment);
// Eager singleton load
void inject(AndroidModule.EagerSingletons init);
} }

View File

@@ -1,20 +1,24 @@
package org.briarproject.android; package org.briarproject.android;
import android.app.Application; 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.AndroidExecutor;
import org.briarproject.api.android.AndroidNotificationManager; import org.briarproject.api.android.AndroidNotificationManager;
import org.briarproject.api.android.ReferenceManager; import org.briarproject.api.android.ReferenceManager;
import org.briarproject.api.contact.ContactManager;
import org.briarproject.api.crypto.SecretKey; import org.briarproject.api.crypto.SecretKey;
import org.briarproject.api.db.DatabaseConfig; import org.briarproject.api.db.DatabaseConfig;
import org.briarproject.api.event.EventBus; import org.briarproject.api.event.EventBus;
import org.briarproject.api.lifecycle.LifecycleManager; 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 org.briarproject.api.ui.UiCallback;
import java.io.File; import java.io.File;
import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import dagger.Module; import dagger.Module;
@@ -25,6 +29,24 @@ import static android.content.Context.MODE_PRIVATE;
@Module @Module
public class AndroidModule { 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; private final UiCallback uiCallback;
public AndroidModule() { public AndroidModule() {
@@ -93,7 +115,6 @@ public class AndroidModule {
}; };
} }
@Provides @Provides
@Singleton @Singleton
AndroidNotificationManager provideAndroidNotificationManager( AndroidNotificationManager provideAndroidNotificationManager(

View File

@@ -6,6 +6,8 @@ import java.util.logging.Logger;
import android.app.Application; import android.app.Application;
import android.content.Context; import android.content.Context;
import org.briarproject.event.EventModule;
public class BriarApplication extends Application { public class BriarApplication extends Application {
private static final Logger LOG = private static final Logger LOG =
@@ -16,7 +18,7 @@ public class BriarApplication extends Application {
@Override @Override
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
LOG.info("Created"); LOG.info("Application Created");
UncaughtExceptionHandler oldHandler = UncaughtExceptionHandler oldHandler =
Thread.getDefaultUncaughtExceptionHandler(); Thread.getDefaultUncaughtExceptionHandler();
Context ctx = getApplicationContext(); Context ctx = getApplicationContext();
@@ -27,6 +29,10 @@ public class BriarApplication extends Application {
.appModule(new AppModule(this)) .appModule(new AppModule(this))
.androidModule(new AndroidModule()) .androidModule(new AndroidModule())
.build(); .build();
// We need to load the eager singletons directly after making the
// dependency graph
AndroidModule.injectEager(applicationComponent);
} }
public AndroidComponent getApplicationComponent() { public AndroidComponent getApplicationComponent() {

View File

@@ -8,6 +8,7 @@ import android.os.StrictMode;
import android.os.StrictMode.ThreadPolicy; import android.os.StrictMode.ThreadPolicy;
import android.os.StrictMode.VmPolicy; import android.os.StrictMode.VmPolicy;
import android.support.v7.preference.PreferenceManager; import android.support.v7.preference.PreferenceManager;
import android.util.Log;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
@@ -38,6 +39,8 @@ public class SplashScreenActivity extends BaseActivity {
@Inject @Inject
DatabaseConfig dbConfig; DatabaseConfig dbConfig;
public SplashScreenActivity() { public SplashScreenActivity() {
Logger.getLogger("").setLevel(DEFAULT_LOG_LEVEL); Logger.getLogger("").setLevel(DEFAULT_LOG_LEVEL);
enableStrictMode(); enableStrictMode();

View File

@@ -16,14 +16,11 @@ import org.briarproject.android.identity.CreateIdentityActivity;
import org.briarproject.android.identity.LocalAuthorItem; import org.briarproject.android.identity.LocalAuthorItem;
import org.briarproject.android.identity.LocalAuthorItemComparator; import org.briarproject.android.identity.LocalAuthorItemComparator;
import org.briarproject.android.identity.LocalAuthorSpinnerAdapter; import org.briarproject.android.identity.LocalAuthorSpinnerAdapter;
import org.briarproject.api.crypto.CryptoComponent;
import org.briarproject.api.identity.AuthorId; import org.briarproject.api.identity.AuthorId;
import org.briarproject.api.identity.LocalAuthor; import org.briarproject.api.identity.LocalAuthor;
import java.util.Collection; import java.util.Collection;
import javax.inject.Inject;
import static android.bluetooth.BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE; import static android.bluetooth.BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE;
import static android.bluetooth.BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION; import static android.bluetooth.BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION;
import static org.briarproject.android.identity.LocalAuthorItem.NEW; 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 class ChooseIdentityView extends AddContactView
implements OnItemSelectedListener, OnClickListener { implements OnItemSelectedListener, OnClickListener {
@Inject protected CryptoComponent crypto;
private LocalAuthorSpinnerAdapter adapter = null; private LocalAuthorSpinnerAdapter adapter = null;
private Spinner spinner = null; private Spinner spinner = null;
@@ -44,8 +40,6 @@ implements OnItemSelectedListener, OnClickListener {
void populate() { void populate() {
removeAllViews(); removeAllViews();
Context ctx = getContext(); Context ctx = getContext();
// TODO
// RoboGuice.injectMembers(ctx, this);
LayoutInflater inflater = (LayoutInflater) ctx.getSystemService LayoutInflater inflater = (LayoutInflater) ctx.getSystemService
(Context.LAYOUT_INFLATER_SERVICE); (Context.LAYOUT_INFLATER_SERVICE);

View File

@@ -9,6 +9,10 @@ import org.briarproject.api.data.MetadataParser;
import org.briarproject.api.db.DatabaseComponent; import org.briarproject.api.db.DatabaseComponent;
import org.briarproject.api.sync.GroupFactory; import org.briarproject.api.sync.GroupFactory;
import org.briarproject.api.sync.MessageFactory; 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.Module;
import dagger.Provides; import dagger.Provides;

View File

@@ -3,6 +3,8 @@ package org.briarproject.contact;
import org.briarproject.api.contact.ContactManager; import org.briarproject.api.contact.ContactManager;
import org.briarproject.api.identity.IdentityManager; import org.briarproject.api.identity.IdentityManager;
import org.briarproject.api.lifecycle.LifecycleManager; import org.briarproject.api.lifecycle.LifecycleManager;
import org.briarproject.identity.IdentityModule;
import org.briarproject.lifecycle.LifecycleModule;
import javax.inject.Singleton; import javax.inject.Singleton;

View File

@@ -7,6 +7,7 @@ import org.briarproject.api.crypto.StreamDecrypterFactory;
import org.briarproject.api.crypto.StreamEncrypterFactory; import org.briarproject.api.crypto.StreamEncrypterFactory;
import org.briarproject.api.lifecycle.LifecycleManager; import org.briarproject.api.lifecycle.LifecycleManager;
import org.briarproject.api.system.SeedProvider; import org.briarproject.api.system.SeedProvider;
import org.briarproject.lifecycle.LifecycleModule;
import java.security.SecureRandom; import java.security.SecureRandom;
import java.util.concurrent.BlockingQueue; import java.util.concurrent.BlockingQueue;

View File

@@ -7,6 +7,9 @@ import org.briarproject.api.event.EventBus;
import org.briarproject.api.lifecycle.LifecycleManager; import org.briarproject.api.lifecycle.LifecycleManager;
import org.briarproject.api.lifecycle.ShutdownManager; import org.briarproject.api.lifecycle.ShutdownManager;
import org.briarproject.api.system.Clock; 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.security.SecureRandom;
import java.sql.Connection; import java.sql.Connection;
@@ -17,6 +20,7 @@ import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.RejectedExecutionHandler; import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.ThreadPoolExecutor;
import javax.inject.Inject;
import javax.inject.Named; import javax.inject.Named;
import javax.inject.Singleton; import javax.inject.Singleton;

View File

@@ -15,6 +15,11 @@ import org.briarproject.api.identity.Author;
import org.briarproject.api.sync.MessageFactory; import org.briarproject.api.sync.MessageFactory;
import org.briarproject.api.sync.ValidationManager; import org.briarproject.api.sync.ValidationManager;
import org.briarproject.api.system.Clock; 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; import javax.inject.Singleton;

View File

@@ -9,6 +9,9 @@ import org.briarproject.api.identity.Author;
import org.briarproject.api.identity.AuthorFactory; import org.briarproject.api.identity.AuthorFactory;
import org.briarproject.api.identity.IdentityManager; import org.briarproject.api.identity.IdentityManager;
import org.briarproject.api.system.Clock; 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; import javax.inject.Singleton;

View File

@@ -17,6 +17,7 @@ import org.briarproject.api.lifecycle.IoExecutor;
import org.briarproject.api.lifecycle.LifecycleManager; import org.briarproject.api.lifecycle.LifecycleManager;
import org.briarproject.api.lifecycle.ShutdownManager; import org.briarproject.api.lifecycle.ShutdownManager;
import org.briarproject.api.system.Clock; import org.briarproject.api.system.Clock;
import org.briarproject.event.EventModule;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;

View File

@@ -9,6 +9,9 @@ import org.briarproject.api.messaging.PrivateMessageFactory;
import org.briarproject.api.sync.MessageFactory; import org.briarproject.api.sync.MessageFactory;
import org.briarproject.api.sync.ValidationManager; import org.briarproject.api.sync.ValidationManager;
import org.briarproject.api.system.Clock; 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; import javax.inject.Singleton;

View File

@@ -6,6 +6,9 @@ import org.briarproject.api.data.MetadataEncoder;
import org.briarproject.api.properties.TransportPropertyManager; import org.briarproject.api.properties.TransportPropertyManager;
import org.briarproject.api.sync.ValidationManager; import org.briarproject.api.sync.ValidationManager;
import org.briarproject.api.system.Clock; 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; import javax.inject.Singleton;

View File

@@ -2,6 +2,7 @@ package org.briarproject.settings;
import org.briarproject.api.db.DatabaseComponent; import org.briarproject.api.db.DatabaseComponent;
import org.briarproject.api.settings.SettingsManager; import org.briarproject.api.settings.SettingsManager;
import org.briarproject.db.DatabaseModule;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;

View File

@@ -16,9 +16,14 @@ import org.briarproject.api.sync.PacketWriterFactory;
import org.briarproject.api.sync.SyncSessionFactory; import org.briarproject.api.sync.SyncSessionFactory;
import org.briarproject.api.sync.ValidationManager; import org.briarproject.api.sync.ValidationManager;
import org.briarproject.api.system.Clock; 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 java.util.concurrent.Executor;
import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import dagger.Module; import dagger.Module;

View File

@@ -7,6 +7,8 @@ import org.briarproject.api.lifecycle.LifecycleManager;
import org.briarproject.api.transport.KeyManager; import org.briarproject.api.transport.KeyManager;
import org.briarproject.api.transport.StreamReaderFactory; import org.briarproject.api.transport.StreamReaderFactory;
import org.briarproject.api.transport.StreamWriterFactory; import org.briarproject.api.transport.StreamWriterFactory;
import org.briarproject.event.EventModule;
import org.briarproject.lifecycle.LifecycleModule;
import javax.inject.Singleton; import javax.inject.Singleton;