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(SettingsFragment fragment);
void inject(ForumListFragment fragment);
// Eager singleton load
void inject(AndroidModule.EagerSingletons init);
}

View File

@@ -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(

View File

@@ -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() {

View File

@@ -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();

View File

@@ -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);

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;