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