1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.seasar.cubby.servlet;
18
19 import static org.easymock.EasyMock.createMock;
20 import static org.easymock.EasyMock.expect;
21 import static org.easymock.EasyMock.replay;
22 import static org.easymock.EasyMock.verify;
23 import static org.junit.Assert.assertFalse;
24 import static org.junit.Assert.assertNotNull;
25 import static org.junit.Assert.assertNull;
26 import static org.junit.Assert.assertTrue;
27 import static org.junit.Assert.fail;
28
29 import java.util.Arrays;
30 import java.util.Collection;
31
32 import javax.servlet.Servlet;
33 import javax.servlet.ServletConfig;
34 import javax.servlet.ServletContext;
35 import javax.servlet.ServletException;
36
37 import org.junit.Test;
38 import org.seasar.cubby.internal.plugin.PluginManager;
39 import org.seasar.cubby.plugin.AbstractPlugin;
40 import org.seasar.cubby.plugin.Plugin;
41 import org.seasar.cubby.plugin.PluginRegistry;
42 import org.seasar.cubby.spi.Provider;
43
44 public class CubbyServletTest {
45
46 private boolean initialized = false;
47
48 private boolean ready = false;
49
50 private boolean destroyed = false;
51
52 @Test
53 public void initialize() throws ServletException {
54 ServletContext servletContext = createMock(ServletContext.class);
55 ServletConfig servletConfig = createMock(ServletConfig.class);
56 expect(servletConfig.getServletContext()).andReturn(servletContext);
57 replay(servletContext, servletConfig);
58
59 Servlet servlet = new CubbyServlet() {
60
61 private static final long serialVersionUID = 1L;
62
63 @Override
64 protected PluginManager buildPluginManager() {
65 PluginManager pluginManager = new PluginManager(PluginRegistry
66 .getInstance()) {
67
68 @Override
69 protected Collection<Plugin> loadPlugins() {
70 return Arrays
71 .asList(new Plugin[] { new AssertPlugin() });
72 }
73
74 };
75 return pluginManager;
76 }
77
78 };
79
80 PluginRegistry pluginRegistry = PluginRegistry.getInstance();
81
82 assertNull(pluginRegistry.getPlugin(AssertPlugin.class));
83 try {
84 pluginRegistry.getProvider(AssertProvider.class);
85 fail();
86 } catch (IllegalArgumentException e) {
87
88 }
89
90 assertFalse(initialized);
91 assertFalse(ready);
92 servlet.init(servletConfig);
93 assertTrue(initialized);
94 assertTrue(ready);
95
96 assertNotNull(pluginRegistry.getPlugin(AssertPlugin.class));
97 assertNotNull(pluginRegistry.getProvider(AssertProvider.class));
98
99 assertFalse(destroyed);
100 servlet.destroy();
101 assertTrue(destroyed);
102
103 verify(servletContext, servletConfig);
104 }
105
106 private class AssertProvider implements Provider {
107
108 }
109
110 private class AssertPlugin extends AbstractPlugin {
111
112 public AssertPlugin() {
113 support(AssertProvider.class);
114 }
115
116 @Override
117 public void initialize(ServletContext servletContext) throws Exception {
118 super.initialize(servletContext);
119 initialized = true;
120 }
121
122 @Override
123 public void ready() throws Exception {
124 super.ready();
125 ready = true;
126 }
127
128 @Override
129 public void destroy() {
130 super.destroy();
131 destroyed = true;
132 }
133
134 public <S extends Provider> S getProvider(Class<S> service) {
135 if (AssertProvider.class.equals(service)) {
136 return service.cast(new AssertProvider());
137 }
138 return null;
139 }
140
141 }
142
143 }