Browse Source

Stop IdentityManager initialising itself.

Instead, have Main provide the instance which becomes the
singleton. This allows us to inject dependencies to it, and
construct it using dagger later, while keeping all of the
code that calls the static getIdentityManager() method working.

Change-Id: I4ceaa062c84509bed66824f39cca8e76d25d131c
Reviewed-on: http://gerrit.dmdirc.com/2677
Reviewed-by: Greg Holmes <greg@dmdirc.com>
Automatic-Compile: DMDirc Build Manager
tags/0.8rc1
Chris Smith 10 years ago
parent
commit
c87f4de60a

+ 1
- 0
src/com/dmdirc/Main.java View File

@@ -107,6 +107,7 @@ public class Main implements LifecycleController {
107 107
     public void init(final String[] args) {
108 108
         Thread.setDefaultUncaughtExceptionHandler(new DMDircExceptionHandler());
109 109
 
110
+        IdentityManager.setIdentityManager(new IdentityManager());
110 111
         IdentityManager.getIdentityManager().loadVersionIdentity();
111 112
         serverManager = new ServerManager(
112 113
                 new ParserFactoryProvider(),

+ 13
- 4
src/com/dmdirc/config/IdentityManager.java View File

@@ -54,7 +54,7 @@ import lombok.extern.slf4j.Slf4j;
54 54
 public class IdentityManager implements IdentityFactory, IdentityController {
55 55
 
56 56
     /** A singleton instance of IdentityManager. */
57
-    private static final IdentityManager INSTANCE = new IdentityManager();
57
+    private static IdentityManager instance;
58 58
 
59 59
     /** Config Directory. */
60 60
     private String configDirectory;
@@ -88,7 +88,7 @@ public class IdentityManager implements IdentityFactory, IdentityController {
88 88
     private ConfigManager globalconfig;
89 89
 
90 90
     /** Creates a new instance of IdentityManager. */
91
-    private IdentityManager() {
91
+    public IdentityManager() {
92 92
     }
93 93
 
94 94
     /** {@inheritDoc} */
@@ -473,7 +473,7 @@ public class IdentityManager implements IdentityFactory, IdentityController {
473 473
     /** {@inheritDoc} */
474 474
     @Override
475 475
     public List<Identity> getIdentitiesForManager(final ConfigManager manager) {
476
-        final List<Identity> sources = new ArrayList<Identity>();
476
+        final List<Identity> sources = new ArrayList<>();
477 477
 
478 478
         synchronized (identities) {
479 479
             for (Identity identity : identities.safeGet(null)) {
@@ -602,7 +602,16 @@ public class IdentityManager implements IdentityFactory, IdentityController {
602 602
      * @return A singleton instance of the IdentityManager.
603 603
      */
604 604
     public static IdentityManager getIdentityManager() {
605
-        return INSTANCE;
605
+        return instance;
606
+    }
607
+
608
+    /**
609
+     * Sets the singleton instance of the Identity Manager.
610
+     *
611
+     * @param identityManager The identity manager to use.
612
+     */
613
+    public static void setIdentityManager(IdentityManager identityManager) {
614
+        instance = identityManager;
606 615
     }
607 616
 
608 617
 }

+ 1
- 0
test/com/dmdirc/TestMain.java View File

@@ -27,6 +27,7 @@ public class TestMain extends Main {
27 27
 
28 28
         // TODO: Tests probably shouldn't rely on a config dir... Who knows
29 29
         //       what the user has done with their config.
30
+        IdentityManager.setIdentityManager(new IdentityManager());
30 31
         IdentityManager.getIdentityManager().loadVersionIdentity();
31 32
         try {
32 33
             IdentityManager.getIdentityManager().initialise(getConfigDir());

+ 9
- 2
test/com/dmdirc/actions/ActionComponentChainTest.java View File

@@ -23,22 +23,29 @@
23 23
 package com.dmdirc.actions;
24 24
 
25 25
 import com.dmdirc.Server;
26
+import com.dmdirc.config.ConfigManager;
27
+import com.dmdirc.config.IdentityManager;
26 28
 
27 29
 import org.junit.Before;
28 30
 import org.junit.Test;
31
+import org.junit.runner.RunWith;
29 32
 import org.mockito.Mock;
30
-import org.mockito.MockitoAnnotations;
33
+import org.mockito.runners.MockitoJUnitRunner;
31 34
 
32 35
 import static org.junit.Assert.*;
33 36
 import static org.mockito.Mockito.*;
34 37
 
38
+@RunWith(MockitoJUnitRunner.class)
35 39
 public class ActionComponentChainTest {
36 40
 
37 41
     @Mock private ActionManager actionManager;
42
+    @Mock private IdentityManager identityManager;
43
+    @Mock private ConfigManager configManager;
38 44
 
39 45
     @Before
40 46
     public void setUp() throws Exception {
41
-        MockitoAnnotations.initMocks(this);
47
+        IdentityManager.setIdentityManager(identityManager);
48
+        when(identityManager.getGlobalConfiguration()).thenReturn(configManager);
42 49
 
43 50
         when(actionManager.getComponent("SERVER_NAME"))
44 51
                 .thenReturn(CoreActionComponent.SERVER_NAME);

+ 1
- 1
test/com/dmdirc/actions/wrappers/AliasWrapperTest.java View File

@@ -55,7 +55,7 @@ public class AliasWrapperTest {
55 55
 
56 56
         action = mock(Action.class);
57 57
         condition = mock(ActionCondition.class);
58
-        conditions = new ArrayList<ActionCondition>();
58
+        conditions = new ArrayList<>();
59 59
         aliasWrapper = new AliasWrapper(controller, TestMain.getTestMain().getServerManager());
60 60
 
61 61
         when(condition.getArg()).thenReturn(1);

+ 12
- 2
test/com/dmdirc/commandparser/CommandArgumentsTest.java View File

@@ -22,23 +22,33 @@
22 22
 
23 23
 package com.dmdirc.commandparser;
24 24
 
25
+import com.dmdirc.config.ConfigManager;
26
+import com.dmdirc.config.IdentityManager;
25 27
 import com.dmdirc.interfaces.CommandController;
26 28
 
27 29
 import java.util.Arrays;
28 30
 
29 31
 import org.junit.Before;
30 32
 import org.junit.Test;
33
+import org.junit.runner.RunWith;
34
+import org.mockito.Mock;
35
+import org.mockito.runners.MockitoJUnitRunner;
31 36
 
32 37
 import static org.junit.Assert.*;
33 38
 import static org.mockito.Mockito.*;
34 39
 
40
+@RunWith(MockitoJUnitRunner.class)
35 41
 public class CommandArgumentsTest {
36 42
 
37
-    private CommandController controller;
43
+    @Mock private CommandController controller;
44
+    @Mock private IdentityManager identityManager;
45
+    @Mock private ConfigManager configManager;
38 46
 
39 47
     @Before
40 48
     public void setUp() {
41
-        this.controller = mock(CommandController.class);
49
+        when(identityManager.getGlobalConfiguration()).thenReturn(configManager);
50
+        IdentityManager.setIdentityManager(identityManager);
51
+
42 52
         when(this.controller.getCommandChar()).thenReturn('/');
43 53
         when(this.controller.getSilenceChar()).thenReturn('.');
44 54
     }

+ 15
- 1
test/com/dmdirc/config/ConfigManagerTest.java View File

@@ -24,14 +24,28 @@ package com.dmdirc.config;
24 24
 import com.dmdirc.interfaces.ConfigChangeListener;
25 25
 import com.dmdirc.util.validators.PermissiveValidator;
26 26
 
27
+import java.util.Collections;
28
+import org.junit.Before;
27 29
 import org.junit.Test;
30
+import org.junit.runner.RunWith;
31
+import org.mockito.Mock;
32
+import org.mockito.runners.MockitoJUnitRunner;
28 33
 
29 34
 import static org.junit.Assert.*;
30
-import static org.mockito.Matchers.*;
31 35
 import static org.mockito.Mockito.*;
32 36
 
37
+@RunWith(MockitoJUnitRunner.class)
33 38
 public class ConfigManagerTest {
34 39
 
40
+    @Mock private IdentityManager identityManager;
41
+
42
+    @Before
43
+    public void setup() {
44
+        IdentityManager.setIdentityManager(identityManager);
45
+        when(identityManager.getIdentitiesForManager(any(ConfigManager.class)))
46
+                .thenReturn(Collections.<Identity>emptyList());
47
+    }
48
+
35 49
     @Test
36 50
     public void testNonExistantOption() {
37 51
         assertNull(new ConfigManager("", "", "", "").getOption("unit-test123", "foobar"));

+ 24
- 1
test/com/dmdirc/ui/messages/FormatterTest.java View File

@@ -21,15 +21,38 @@
21 21
  */
22 22
 package com.dmdirc.ui.messages;
23 23
 
24
+import com.dmdirc.config.ConfigManager;
25
+import com.dmdirc.config.Identity;
26
+import com.dmdirc.config.IdentityManager;
24 27
 import com.dmdirc.harness.TestConfigManagerOptionToggle;
25 28
 
29
+import java.util.Collections;
30
+
31
+import org.junit.Before;
26 32
 import org.junit.Test;
33
+import org.junit.runner.RunWith;
34
+import org.mockito.Mock;
35
+import org.mockito.runners.MockitoJUnitRunner;
27 36
 
28 37
 import static org.junit.Assert.*;
38
+import static org.mockito.Matchers.any;
39
+import static org.mockito.Mockito.when;
29 40
 
41
+@RunWith(MockitoJUnitRunner.class)
30 42
 public class FormatterTest {
31 43
 
32
-    private final TestConfigManagerOptionToggle mcm = new TestConfigManagerOptionToggle();
44
+    private TestConfigManagerOptionToggle mcm;
45
+
46
+    @Mock private IdentityManager identityManager;
47
+
48
+    @Before
49
+    public void setup() {
50
+        IdentityManager.setIdentityManager(identityManager);
51
+        when(identityManager.getIdentitiesForManager(any(ConfigManager.class)))
52
+                .thenReturn(Collections.<Identity>emptyList());
53
+
54
+        mcm = new TestConfigManagerOptionToggle();
55
+    }
33 56
 
34 57
     @Test
35 58
     public void testBasicFormats() {

Loading…
Cancel
Save