1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.seasar.cubby.spi;
17
18 import static org.junit.Assert.assertSame;
19 import static org.junit.Assert.fail;
20
21 import org.junit.Test;
22 import org.seasar.cubby.plugin.PluginRegistry;
23 import org.seasar.cubby.plugins.BinderPlugin;
24
25 public class ProviderFactoryTest {
26
27 private final PluginRegistry pluginRegistry = PluginRegistry.getInstance();
28
29 @Test
30 public void getSingletonInstanceInMultiThread() throws Exception {
31 try {
32 ProviderFactory.get(FooProvider.class);
33 fail();
34 } catch (IllegalArgumentException e) {
35
36 }
37
38 final BinderPlugin binderPlugin = new BinderPlugin();
39 FooProviderImpl fooProviderImpl = new FooProviderImpl();
40 binderPlugin.bind(FooProvider.class).toInstance(fooProviderImpl);
41 pluginRegistry.register(binderPlugin);
42
43 assertSame(fooProviderImpl, ProviderFactory.get(FooProvider.class));
44 assertSame(fooProviderImpl, ProviderFactory.get(FooProvider.class));
45
46 pluginRegistry.clear();
47
48 try {
49 ProviderFactory.get(FooProvider.class);
50 fail();
51 } catch (IllegalArgumentException e) {
52
53 }
54 }
55
56 }