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