From 9c2250277bf99021191bc79d90c94d70ed416322 Mon Sep 17 00:00:00 2001
From: Torsten Grote <t@grobox.de>
Date: Thu, 23 Jun 2016 11:59:43 -0300
Subject: [PATCH] Fix IdentityManager hooks

This commit makes sure that there is only one identity manager that is
initialized early enough so hooks can be added properly.

Closes #446
---
 .../src/org/briarproject/CoreEagerSingletons.java     |  3 +++
 briar-core/src/org/briarproject/CoreModule.java       |  1 +
 .../src/org/briarproject/identity/IdentityModule.java | 11 +++++++----
 3 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/briar-core/src/org/briarproject/CoreEagerSingletons.java b/briar-core/src/org/briarproject/CoreEagerSingletons.java
index d7b0c1bee1..f0899dc2df 100644
--- a/briar-core/src/org/briarproject/CoreEagerSingletons.java
+++ b/briar-core/src/org/briarproject/CoreEagerSingletons.java
@@ -5,6 +5,7 @@ import org.briarproject.contact.ContactModule;
 import org.briarproject.crypto.CryptoModule;
 import org.briarproject.db.DatabaseExecutorModule;
 import org.briarproject.forum.ForumModule;
+import org.briarproject.identity.IdentityModule;
 import org.briarproject.introduction.IntroductionModule;
 import org.briarproject.lifecycle.LifecycleModule;
 import org.briarproject.messaging.MessagingModule;
@@ -27,6 +28,8 @@ public interface CoreEagerSingletons {
 
 	void inject(ForumModule.EagerSingletons init);
 
+	void inject(IdentityModule.EagerSingletons init);
+
 	void inject(IntroductionModule.EagerSingletons init);
 
 	void inject(LifecycleModule.EagerSingletons init);
diff --git a/briar-core/src/org/briarproject/CoreModule.java b/briar-core/src/org/briarproject/CoreModule.java
index 140f0b7e67..d5db624408 100644
--- a/briar-core/src/org/briarproject/CoreModule.java
+++ b/briar-core/src/org/briarproject/CoreModule.java
@@ -61,6 +61,7 @@ public class CoreModule {
 		c.inject(new CryptoModule.EagerSingletons());
 		c.inject(new DatabaseExecutorModule.EagerSingletons());
 		c.inject(new ForumModule.EagerSingletons());
+		c.inject(new IdentityModule.EagerSingletons());
 		c.inject(new LifecycleModule.EagerSingletons());
 		c.inject(new MessagingModule.EagerSingletons());
 		c.inject(new PluginsModule.EagerSingletons());
diff --git a/briar-core/src/org/briarproject/identity/IdentityModule.java b/briar-core/src/org/briarproject/identity/IdentityModule.java
index e270156129..c03ee24efb 100644
--- a/briar-core/src/org/briarproject/identity/IdentityModule.java
+++ b/briar-core/src/org/briarproject/identity/IdentityModule.java
@@ -4,15 +4,12 @@ import org.briarproject.api.crypto.CryptoComponent;
 import org.briarproject.api.data.BdfWriterFactory;
 import org.briarproject.api.data.ObjectReader;
 import org.briarproject.api.db.DatabaseComponent;
-import org.briarproject.api.event.EventBus;
 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.Inject;
 import javax.inject.Singleton;
 
 import dagger.Module;
@@ -21,6 +18,11 @@ import dagger.Provides;
 @Module
 public class IdentityModule {
 
+	public static class EagerSingletons {
+		@Inject
+		IdentityManager identityManager;
+	}
+
 	@Provides
 	AuthorFactory provideAuthorFactory(CryptoComponent crypto,
 			BdfWriterFactory bdfWriterFactory, Clock clock) {
@@ -28,6 +30,7 @@ public class IdentityModule {
 	}
 
 	@Provides
+	@Singleton
 	IdentityManager provideIdendityModule(DatabaseComponent db) {
 		return new IdentityManagerImpl(db);
 	}
-- 
GitLab