001 package com.mockrunner.base;
002
003 import junit.framework.TestCase;
004
005 import com.mockrunner.connector.ConnectorTestModule;
006 import com.mockrunner.ejb.EJBTestModule;
007 import com.mockrunner.jdbc.JDBCTestModule;
008 import com.mockrunner.jms.JMSTestModule;
009 import com.mockrunner.mock.connector.cci.ConnectorMockObjectFactory;
010 import com.mockrunner.mock.connector.cci.MockConnectionFactory;
011 import com.mockrunner.mock.ejb.EJBMockObjectFactory;
012 import com.mockrunner.mock.jdbc.JDBCMockObjectFactory;
013 import com.mockrunner.mock.jms.JMSMockObjectFactory;
014 import com.mockrunner.mock.web.ActionMockObjectFactory;
015 import com.mockrunner.mock.web.WebMockObjectFactory;
016 import com.mockrunner.servlet.ServletTestModule;
017 import com.mockrunner.struts.ActionTestModule;
018 import com.mockrunner.tag.TagTestModule;
019
020 /**
021 * Base class for all standard adapters. Not used for basic adapters.
022 */
023 public abstract class BaseTestCase extends TestCase
024 {
025 private WebMockObjectFactory webMockFactory;
026 private ActionMockObjectFactory actionMockFactory;
027 private JDBCMockObjectFactory jdbcMockFactory;
028 private EJBMockObjectFactory ejbMockFactory;
029 private ConnectorMockObjectFactory connectorMockFactory;
030 private JMSMockObjectFactory jmsMockFactory;
031
032 public BaseTestCase()
033 {
034
035 }
036
037 public BaseTestCase(String arg0)
038 {
039 super(arg0);
040 }
041
042 protected void tearDown() throws Exception
043 {
044 super.tearDown();
045 if(null != jdbcMockFactory)
046 {
047 jdbcMockFactory.restoreDrivers();
048 jdbcMockFactory = null;
049 }
050 if(null != ejbMockFactory)
051 {
052 ejbMockFactory.resetMockContextFactory();
053 ejbMockFactory = null;
054 }
055 webMockFactory = null;
056 actionMockFactory = null;
057 jmsMockFactory = null;
058 connectorMockFactory = null;
059 }
060
061 /**
062 * Creates a {@link WebMockObjectFactory}.
063 * @return the created {@link WebMockObjectFactory}
064 */
065 protected WebMockObjectFactory createWebMockObjectFactory()
066 {
067 return new WebMockObjectFactory();
068 }
069
070 /**
071 * Same as <code>createWebMockObjectFactory(otherFactory, true)</code>
072 */
073 protected WebMockObjectFactory createWebMockObjectFactory(WebMockObjectFactory otherFactory)
074 {
075 return new WebMockObjectFactory(otherFactory);
076 }
077
078 /**
079 * Creates a {@link com.mockrunner.mock.web.WebMockObjectFactory} based on another one.
080 * The created {@link com.mockrunner.mock.web.WebMockObjectFactory} will have its own
081 * request and response objects. If you set <i>createNewSession</i>
082 * to <code>true</code> it will also have its own session object.
083 * The two factories will share one <code>ServletContext</code>.
084 * Especially important for multithreading tests.
085 * If you set <i>createNewSession</i> to false, the two factories
086 * will share one session. This setting simulates multiple requests
087 * from the same client.
088 * @param otherFactory the other factory
089 * @param createNewSession create a new session for the new factory
090 * @return the created {@link com.mockrunner.mock.web.WebMockObjectFactory}
091 */
092 protected WebMockObjectFactory createWebMockObjectFactory(WebMockObjectFactory otherFactory, boolean createNewSession)
093 {
094 return new WebMockObjectFactory(otherFactory, createNewSession);
095 }
096
097 /**
098 * Gets the current {@link WebMockObjectFactory}.
099 * @return the {@link WebMockObjectFactory}
100 */
101 protected WebMockObjectFactory getWebMockObjectFactory()
102 {
103 synchronized(ActionMockObjectFactory.class)
104 {
105 if(webMockFactory == null)
106 {
107 webMockFactory = getActionMockObjectFactory();
108 }
109 }
110 return webMockFactory;
111 }
112
113 /**
114 * Sets the current {@link WebMockObjectFactory}.
115 * @param mockFactory the {@link WebMockObjectFactory}
116 */
117 protected void setWebMockObjectFactory(WebMockObjectFactory mockFactory)
118 {
119 this.webMockFactory = mockFactory;
120 }
121
122 /**
123 * Creates a {@link ActionMockObjectFactory}.
124 * @return the created {@link ActionMockObjectFactory}
125 */
126 protected ActionMockObjectFactory createActionMockObjectFactory()
127 {
128 return new ActionMockObjectFactory();
129 }
130
131 /**
132 * Same as <code>createActionMockObjectFactory(otherFactory, true)</code>
133 */
134 protected ActionMockObjectFactory createActionMockObjectFactory(WebMockObjectFactory otherFactory)
135 {
136 return new ActionMockObjectFactory(otherFactory);
137 }
138
139 /**
140 * Creates a {@link com.mockrunner.mock.web.ActionMockObjectFactory} based on
141 * another {@link com.mockrunner.mock.web.WebMockObjectFactory}.
142 * @param otherFactory the other factory
143 * @param createNewSession create a new session for the new factory
144 * @return the created {@link com.mockrunner.mock.web.ActionMockObjectFactory}
145 * @see #createWebMockObjectFactory(WebMockObjectFactory, boolean)
146 */
147 protected ActionMockObjectFactory createActionMockObjectFactory(WebMockObjectFactory otherFactory, boolean createNewSession)
148 {
149 return new ActionMockObjectFactory(otherFactory, createNewSession);
150 }
151
152 /**
153 * Gets the current {@link ActionMockObjectFactory}.
154 * @return the {@link ActionMockObjectFactory}
155 */
156 protected ActionMockObjectFactory getActionMockObjectFactory()
157 {
158 synchronized(ActionMockObjectFactory.class)
159 {
160 if(actionMockFactory == null)
161 {
162 actionMockFactory = createActionMockObjectFactory();
163 }
164 }
165 return actionMockFactory;
166 }
167
168 /**
169 * Sets the current {@link ActionMockObjectFactory}.
170 * @param mockFactory the {@link ActionMockObjectFactory}
171 */
172 protected void setActionMockObjectFactory(ActionMockObjectFactory mockFactory)
173 {
174 this.actionMockFactory = mockFactory;
175 }
176
177 /**
178 * Creates a {@link JDBCMockObjectFactory}.
179 * @return the created {@link JDBCMockObjectFactory}
180 */
181 protected JDBCMockObjectFactory createJDBCMockObjectFactory()
182 {
183 return new JDBCMockObjectFactory();
184 }
185
186 /**
187 * Gets the current {@link JDBCMockObjectFactory}.
188 * @return the {@link JDBCMockObjectFactory}
189 */
190 protected JDBCMockObjectFactory getJDBCMockObjectFactory()
191 {
192 synchronized(JDBCMockObjectFactory.class)
193 {
194 if(jdbcMockFactory == null)
195 {
196 jdbcMockFactory = createJDBCMockObjectFactory();
197 }
198 }
199 return jdbcMockFactory;
200 }
201
202 /**
203 * Sets the current {@link JDBCMockObjectFactory}.
204 * @param mockFactory the {@link JDBCMockObjectFactory}
205 */
206 protected void setJDBCMockObjectFactory(JDBCMockObjectFactory mockFactory)
207 {
208 this.jdbcMockFactory = mockFactory;
209 }
210
211 /**
212 * Creates a {@link EJBMockObjectFactory}.
213 * @return the created {@link EJBMockObjectFactory}
214 */
215 protected EJBMockObjectFactory createEJBMockObjectFactory()
216 {
217 return new EJBMockObjectFactory();
218 }
219
220 /**
221 * Gets the current {@link EJBMockObjectFactory}.
222 * @return the {@link EJBMockObjectFactory}
223 */
224 protected EJBMockObjectFactory getEJBMockObjectFactory()
225 {
226 synchronized(EJBMockObjectFactory.class)
227 {
228 if(ejbMockFactory == null)
229 {
230 ejbMockFactory = createEJBMockObjectFactory();
231 }
232 }
233 return ejbMockFactory;
234 }
235
236 /**
237 * Sets the current {@link EJBMockObjectFactory}.
238 * @param mockFactory the {@link EJBMockObjectFactory}
239 */
240 protected void setEJBMockObjectFactory(EJBMockObjectFactory mockFactory)
241 {
242 this.ejbMockFactory = mockFactory;
243 }
244
245 /**
246 * Creates a {@link ConnectorMockObjectFactory}.
247 * @return the created {@link ConnectorMockObjectFactory}
248 */
249 protected ConnectorMockObjectFactory createConnectorMockObjectFactory()
250 {
251 return new ConnectorMockObjectFactory();
252 }
253
254 /**
255 * Gets the current {@link ConnectorMockObjectFactory}.
256 * @return the {@link ConnectorMockObjectFactory}
257 */
258 protected ConnectorMockObjectFactory getConnectorMockObjectFactory()
259 {
260 synchronized(MockConnectionFactory.class)
261 {
262 if(connectorMockFactory == null)
263 {
264 connectorMockFactory = createConnectorMockObjectFactory();
265 }
266 }
267 return connectorMockFactory;
268 }
269
270 /**
271 * Sets the current {@link ConnectorMockObjectFactory}.
272 * @param mockFactory the {@link ConnectorMockObjectFactory}
273 */
274 protected void setConnectorMockObjectFactory(ConnectorMockObjectFactory mockFactory)
275 {
276 this.connectorMockFactory = mockFactory;
277 }
278
279 /**
280 * Creates a {@link JMSMockObjectFactory}.
281 * @return the created {@link JMSMockObjectFactory}
282 */
283 protected JMSMockObjectFactory createJMSMockObjectFactory()
284 {
285 return new JMSMockObjectFactory();
286 }
287
288 /**
289 * Gets the current {@link JMSMockObjectFactory}.
290 * @return the {@link JMSMockObjectFactory}
291 */
292 protected JMSMockObjectFactory getJMSMockObjectFactory()
293 {
294 synchronized(JMSMockObjectFactory.class)
295 {
296 if(jmsMockFactory == null)
297 {
298 jmsMockFactory = createJMSMockObjectFactory();
299 }
300 }
301 return jmsMockFactory;
302 }
303
304 /**
305 * Sets the current {@link JMSMockObjectFactory}.
306 * @param mockFactory the {@link JMSMockObjectFactory}
307 */
308 protected void setJMSMockObjectFactory(JMSMockObjectFactory mockFactory)
309 {
310 this.jmsMockFactory = mockFactory;
311 }
312
313 /**
314 * Creates an {@link com.mockrunner.struts.ActionTestModule} with the specified
315 * {@link WebMockObjectFactory}.
316 * @param mockFactory the {@link ActionMockObjectFactory}
317 * @return the created {@link com.mockrunner.struts.ActionTestModule}
318 */
319 protected ActionTestModule createActionTestModule(ActionMockObjectFactory mockFactory)
320 {
321 return new ActionTestModule(mockFactory);
322 }
323
324 /**
325 * Creates an {@link com.mockrunner.struts.ActionTestModule} based on the current
326 * {@link WebMockObjectFactory}.
327 * Same as <code>createActionTestModule(getActionMockObjectFactory())</code>.
328 * @return the created {@link com.mockrunner.struts.ActionTestModule}
329 */
330 protected ActionTestModule createActionTestModule()
331 {
332 return new ActionTestModule(getActionMockObjectFactory());
333 }
334
335 /**
336 * Creates a {@link com.mockrunner.tag.TagTestModule} with the specified
337 * {@link WebMockObjectFactory}.
338 * @return the created {@link com.mockrunner.tag.TagTestModule}
339 */
340 protected TagTestModule createTagTestModule(WebMockObjectFactory mockFactory)
341 {
342 return new TagTestModule(mockFactory);
343 }
344
345 /**
346 * Creates a {@link com.mockrunner.tag.TagTestModule} based on the current
347 * {@link WebMockObjectFactory}.
348 * Same as <code>createTagTestModule(getWebMockObjectFactory())</code>.
349 * @return the created {@link com.mockrunner.tag.TagTestModule}
350 */
351 protected TagTestModule createTagTestModule()
352 {
353 return new TagTestModule(getWebMockObjectFactory());
354 }
355
356 /**
357 * Creates a {@link com.mockrunner.servlet.ServletTestModule} with the specified
358 * {@link WebMockObjectFactory}.
359 * @return the created {@link com.mockrunner.servlet.ServletTestModule}
360 */
361 protected ServletTestModule createServletTestModule(WebMockObjectFactory mockFactory)
362 {
363 return new ServletTestModule(mockFactory);
364 }
365
366 /**
367 * Creates a {@link com.mockrunner.servlet.ServletTestModule} based on the current
368 * {@link WebMockObjectFactory}.
369 * Same as <code>createServletTestModule(getWebMockObjectFactory())</code>.
370 * @return the created {@link com.mockrunner.servlet.ServletTestModule}
371 */
372 protected ServletTestModule createServletTestModule()
373 {
374 return new ServletTestModule(getWebMockObjectFactory());
375 }
376
377 /**
378 * Creates a {@link com.mockrunner.jdbc.JDBCTestModule} with the specified
379 * {@link JDBCMockObjectFactory}.
380 * @return the created {@link com.mockrunner.jdbc.JDBCTestModule}
381 */
382 protected JDBCTestModule createJDBCTestModule(JDBCMockObjectFactory mockFactory)
383 {
384 return new JDBCTestModule(mockFactory);
385 }
386
387 /**
388 * Creates a {@link com.mockrunner.jdbc.JDBCTestModule} based on the current
389 * {@link JDBCMockObjectFactory}.
390 * Same as <code>createJDBCTestModule(getJDBCMockObjectFactory())</code>.
391 * @return the created {@link com.mockrunner.jdbc.JDBCTestModule}
392 */
393 protected JDBCTestModule createJDBCTestModule()
394 {
395 return new JDBCTestModule(getJDBCMockObjectFactory());
396 }
397
398 /**
399 * Creates an {@link com.mockrunner.ejb.EJBTestModule} with the specified
400 * {@link EJBMockObjectFactory}.
401 * @return the created {@link com.mockrunner.ejb.EJBTestModule}
402 */
403 protected EJBTestModule createEJBTestModule(EJBMockObjectFactory mockFactory)
404 {
405 return new EJBTestModule(mockFactory);
406 }
407
408 /**
409 * Creates an {@link com.mockrunner.ejb.EJBTestModule} based on the current
410 * {@link EJBMockObjectFactory}.
411 * Same as <code>createEJBTestModule(getEJBMockObjectFactory())</code>.
412 * @return the created {@link com.mockrunner.ejb.EJBTestModule}
413 */
414 protected EJBTestModule createEJBTestModule()
415 {
416 return new EJBTestModule(getEJBMockObjectFactory());
417 }
418
419 /**
420 * Creates an {@link com.mockrunner.connector.ConnectorTestModule} with the specified
421 * {@link ConnectorMockObjectFactory}.
422 * @return the created {@link com.mockrunner.connector.ConnectorTestModule}
423 */
424 protected ConnectorTestModule createConnectorTestModule(ConnectorMockObjectFactory mockFactory)
425 {
426 return new ConnectorTestModule(mockFactory);
427 }
428
429 /**
430 * Creates an {@link com.mockrunner.connector.ConnectorTestModule} based on the current
431 * {@link ConnectorMockObjectFactory}.
432 * Same as <code>createConnectorTestModule(getConnectorMockConnectionFactory())</code>.
433 * @return the created {@link com.mockrunner.connector.ConnectorTestModule}
434 */
435 protected ConnectorTestModule createConnectorTestModule()
436 {
437 return new ConnectorTestModule(getConnectorMockObjectFactory());
438 }
439
440 /**
441 * Creates a {@link com.mockrunner.jms.JMSTestModule} with the specified
442 * {@link JMSMockObjectFactory}.
443 * @return the created {@link com.mockrunner.jms.JMSTestModule}
444 */
445 protected JMSTestModule createJMSTestModule(JMSMockObjectFactory mockFactory)
446 {
447 return new JMSTestModule(mockFactory);
448 }
449
450 /**
451 * Creates a {@link com.mockrunner.jms.JMSTestModule} based on the current
452 * {@link JMSMockObjectFactory}.
453 * Same as <code>createJMSTestModule(getJMSMockObjectFactory())</code>.
454 * @return the created {@link com.mockrunner.jms.JMSTestModule}
455 */
456 protected JMSTestModule createJMSTestModule()
457 {
458 return new JMSTestModule(getJMSMockObjectFactory());
459 }
460 }
461