Selaa lähdekoodia

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 vuotta sitten
vanhempi
commit
c87f4de60a

+ 1
- 0
src/com/dmdirc/Main.java Näytä tiedosto

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

+ 13
- 4
src/com/dmdirc/config/IdentityManager.java Näytä tiedosto

54
 public class IdentityManager implements IdentityFactory, IdentityController {
54
 public class IdentityManager implements IdentityFactory, IdentityController {
55
 
55
 
56
     /** A singleton instance of IdentityManager. */
56
     /** A singleton instance of IdentityManager. */
57
-    private static final IdentityManager INSTANCE = new IdentityManager();
57
+    private static IdentityManager instance;
58
 
58
 
59
     /** Config Directory. */
59
     /** Config Directory. */
60
     private String configDirectory;
60
     private String configDirectory;
88
     private ConfigManager globalconfig;
88
     private ConfigManager globalconfig;
89
 
89
 
90
     /** Creates a new instance of IdentityManager. */
90
     /** Creates a new instance of IdentityManager. */
91
-    private IdentityManager() {
91
+    public IdentityManager() {
92
     }
92
     }
93
 
93
 
94
     /** {@inheritDoc} */
94
     /** {@inheritDoc} */
473
     /** {@inheritDoc} */
473
     /** {@inheritDoc} */
474
     @Override
474
     @Override
475
     public List<Identity> getIdentitiesForManager(final ConfigManager manager) {
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
         synchronized (identities) {
478
         synchronized (identities) {
479
             for (Identity identity : identities.safeGet(null)) {
479
             for (Identity identity : identities.safeGet(null)) {
602
      * @return A singleton instance of the IdentityManager.
602
      * @return A singleton instance of the IdentityManager.
603
      */
603
      */
604
     public static IdentityManager getIdentityManager() {
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 Näytä tiedosto

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

+ 9
- 2
test/com/dmdirc/actions/ActionComponentChainTest.java Näytä tiedosto

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

+ 1
- 1
test/com/dmdirc/actions/wrappers/AliasWrapperTest.java Näytä tiedosto

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

+ 12
- 2
test/com/dmdirc/commandparser/CommandArgumentsTest.java Näytä tiedosto

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

+ 15
- 1
test/com/dmdirc/config/ConfigManagerTest.java Näytä tiedosto

24
 import com.dmdirc.interfaces.ConfigChangeListener;
24
 import com.dmdirc.interfaces.ConfigChangeListener;
25
 import com.dmdirc.util.validators.PermissiveValidator;
25
 import com.dmdirc.util.validators.PermissiveValidator;
26
 
26
 
27
+import java.util.Collections;
28
+import org.junit.Before;
27
 import org.junit.Test;
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
 import static org.junit.Assert.*;
34
 import static org.junit.Assert.*;
30
-import static org.mockito.Matchers.*;
31
 import static org.mockito.Mockito.*;
35
 import static org.mockito.Mockito.*;
32
 
36
 
37
+@RunWith(MockitoJUnitRunner.class)
33
 public class ConfigManagerTest {
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
     @Test
49
     @Test
36
     public void testNonExistantOption() {
50
     public void testNonExistantOption() {
37
         assertNull(new ConfigManager("", "", "", "").getOption("unit-test123", "foobar"));
51
         assertNull(new ConfigManager("", "", "", "").getOption("unit-test123", "foobar"));

+ 24
- 1
test/com/dmdirc/ui/messages/FormatterTest.java Näytä tiedosto

21
  */
21
  */
22
 package com.dmdirc.ui.messages;
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
 import com.dmdirc.harness.TestConfigManagerOptionToggle;
27
 import com.dmdirc.harness.TestConfigManagerOptionToggle;
25
 
28
 
29
+import java.util.Collections;
30
+
31
+import org.junit.Before;
26
 import org.junit.Test;
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
 import static org.junit.Assert.*;
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
 public class FormatterTest {
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
     @Test
57
     @Test
35
     public void testBasicFormats() {
58
     public void testBasicFormats() {

Loading…
Peruuta
Tallenna