org.apache.camel.test.spring
Class CamelSpringTestContextLoader

java.lang.Object
  extended by org.springframework.test.context.support.AbstractContextLoader
      extended by org.apache.camel.test.spring.CamelSpringTestContextLoader
All Implemented Interfaces:
org.springframework.test.context.ContextLoader, org.springframework.test.context.SmartContextLoader

public class CamelSpringTestContextLoader
extends org.springframework.test.context.support.AbstractContextLoader

Replacement for the default GenericXmlContextLoader that provides hooks for processing some class level Camel related test annotations.


Constructor Summary
CamelSpringTestContextLoader()
           
 
Method Summary
protected  void cleanup(Class<?> testClass)
          Cleanup/restore global state to defaults / pre-test values after the test setup is complete.
protected  org.springframework.context.support.GenericApplicationContext createContext(Class<?> testClass)
          Creates and starts the Spring context while optionally starting any loaded Camel contexts.
 String getResourceSuffix()
          Returns "-context.xml".
protected  Class<?> getTestClass()
          Returns the class under test in order to enable inspection of annotations while the Spring context is being created.
protected  void handleCamelContextStartup(org.springframework.context.support.GenericApplicationContext context, Class<?> testClass)
          Handles starting of Camel contexts based on UseAdviceWith and other state in the JVM.
protected  void handleDisableJmx(org.springframework.context.support.GenericApplicationContext context, Class<?> testClass)
          Handles disabling of JMX on Camel contexts based on DisableJmx.
protected  void handleLazyLoadTypeConverters(org.springframework.context.support.GenericApplicationContext context, Class<?> testClass)
           
protected  void handleMockEndpoints(org.springframework.context.support.GenericApplicationContext context, Class<?> testClass)
          Handles auto-intercepting of endpoints with mocks based on MockEndpoints.
protected  void handleMockEndpointsAndSkip(org.springframework.context.support.GenericApplicationContext context, Class<?> testClass)
          Handles auto-intercepting of endpoints with mocks based on MockEndpointsAndSkip and skipping the original endpoint.
protected  void handleProvidesBreakpoint(org.springframework.context.support.GenericApplicationContext context, Class<?> testClass)
          Handles the processing of the ProvidesBreakpoint annotation on a test class.
protected  void handleShutdownTimeout(org.springframework.context.support.GenericApplicationContext context, Class<?> testClass)
          Handles updating shutdown timeouts on Camel contexts based on ShutdownTimeout.
protected  void loadBeanDefinitions(org.springframework.context.support.GenericApplicationContext context, org.springframework.test.context.MergedContextConfiguration mergedConfig)
           
protected  void loadBeanDefinitions(org.springframework.context.support.GenericApplicationContext context, String... locations)
           
protected  org.springframework.context.ApplicationContext loadContext(org.springframework.context.support.GenericApplicationContext context, Class<?> testClass)
          Performs the bulk of the Spring application context loading/customization.
 org.springframework.context.ApplicationContext loadContext(org.springframework.test.context.MergedContextConfiguration mergedConfig)
          Modeled after the Spring implementation in AbstractGenericContextLoader, this method creates and refreshes the application context while providing for processing of additional Camel specific post-refresh actions.
 org.springframework.context.ApplicationContext loadContext(String... locations)
          Modeled after the Spring implementation in AbstractGenericContextLoader, this method creates and refreshes the application context while providing for processing of additional Camel specific post-refresh actions.
 
Methods inherited from class org.springframework.test.context.support.AbstractContextLoader
generateDefaultLocations, isGenerateDefaultLocations, modifyLocations, prepareContext, processContextConfiguration, processLocations
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CamelSpringTestContextLoader

public CamelSpringTestContextLoader()
Method Detail

loadContext

public org.springframework.context.ApplicationContext loadContext(org.springframework.test.context.MergedContextConfiguration mergedConfig)
                                                           throws Exception
Modeled after the Spring implementation in AbstractGenericContextLoader, this method creates and refreshes the application context while providing for processing of additional Camel specific post-refresh actions. We do not provide the pre-post hooks for customization seen in AbstractGenericContextLoader because they probably are unnecessary for 90+% of users.

For some functionality, we cannot use TestExecutionListener because we need to both produce the desired outcome during application context loading, and also cleanup after ourselves even if the test class never executes. Thus the listeners, which only run if the application context is successfully initialized are insufficient to provide the behavior described above.

Throws:
Exception

loadContext

public org.springframework.context.ApplicationContext loadContext(String... locations)
                                                           throws Exception
Modeled after the Spring implementation in AbstractGenericContextLoader, this method creates and refreshes the application context while providing for processing of additional Camel specific post-refresh actions. We do not provide the pre-post hooks for customization seen in AbstractGenericContextLoader because they probably are unnecessary for 90+% of users.

For some functionality, we cannot use TestExecutionListener because we need to both produce the desired outcome during application context loading, and also cleanup after ourselves even if the test class never executes. Thus the listeners, which only run if the application context is successfully initialized are insufficient to provide the behavior described above.

Throws:
Exception

getResourceSuffix

public String getResourceSuffix()
Returns "-context.xml".

Specified by:
getResourceSuffix in class org.springframework.test.context.support.AbstractContextLoader

loadContext

protected org.springframework.context.ApplicationContext loadContext(org.springframework.context.support.GenericApplicationContext context,
                                                                     Class<?> testClass)
                                                              throws Exception
Performs the bulk of the Spring application context loading/customization.

Parameters:
context - the partially configured context. The context should have the bean definitions loaded, but nothing else.
testClass - the test class being executed
Returns:
the initialized (refreshed) Spring application context
Throws:
Exception - if there is an error during initialization/customization

cleanup

protected void cleanup(Class<?> testClass)
Cleanup/restore global state to defaults / pre-test values after the test setup is complete.

Parameters:
testClass - the test class being executed

loadBeanDefinitions

protected void loadBeanDefinitions(org.springframework.context.support.GenericApplicationContext context,
                                   org.springframework.test.context.MergedContextConfiguration mergedConfig)

loadBeanDefinitions

protected void loadBeanDefinitions(org.springframework.context.support.GenericApplicationContext context,
                                   String... locations)

createContext

protected org.springframework.context.support.GenericApplicationContext createContext(Class<?> testClass)
Creates and starts the Spring context while optionally starting any loaded Camel contexts.

Parameters:
testClass - the test class that is being executed
Returns:
the loaded Spring context

handleDisableJmx

protected void handleDisableJmx(org.springframework.context.support.GenericApplicationContext context,
                                Class<?> testClass)
Handles disabling of JMX on Camel contexts based on DisableJmx.

Parameters:
context - the initialized Spring context
testClass - the test class being executed

handleProvidesBreakpoint

protected void handleProvidesBreakpoint(org.springframework.context.support.GenericApplicationContext context,
                                        Class<?> testClass)
                                 throws Exception
Handles the processing of the ProvidesBreakpoint annotation on a test class. Exists here as it is needed in

Parameters:
context - the initialized Spring context containing the Camel context(s) to insert breakpoints into
testClass - the test class being processed
Throws:
Exception - if there is an error processing the class

handleShutdownTimeout

protected void handleShutdownTimeout(org.springframework.context.support.GenericApplicationContext context,
                                     Class<?> testClass)
                              throws Exception
Handles updating shutdown timeouts on Camel contexts based on ShutdownTimeout.

Parameters:
context - the initialized Spring context
testClass - the test class being executed
Throws:
Exception

handleMockEndpoints

protected void handleMockEndpoints(org.springframework.context.support.GenericApplicationContext context,
                                   Class<?> testClass)
                            throws Exception
Handles auto-intercepting of endpoints with mocks based on MockEndpoints.

Parameters:
context - the initialized Spring context
testClass - the test class being executed
Throws:
Exception

handleMockEndpointsAndSkip

protected void handleMockEndpointsAndSkip(org.springframework.context.support.GenericApplicationContext context,
                                          Class<?> testClass)
                                   throws Exception
Handles auto-intercepting of endpoints with mocks based on MockEndpointsAndSkip and skipping the original endpoint.

Parameters:
context - the initialized Spring context
testClass - the test class being executed
Throws:
Exception

handleLazyLoadTypeConverters

protected void handleLazyLoadTypeConverters(org.springframework.context.support.GenericApplicationContext context,
                                            Class<?> testClass)
                                     throws Exception
Throws:
Exception

handleCamelContextStartup

protected void handleCamelContextStartup(org.springframework.context.support.GenericApplicationContext context,
                                         Class<?> testClass)
                                  throws Exception
Handles starting of Camel contexts based on UseAdviceWith and other state in the JVM.

Parameters:
context - the initialized Spring context
testClass - the test class being executed
Throws:
Exception

getTestClass

protected Class<?> getTestClass()
Returns the class under test in order to enable inspection of annotations while the Spring context is being created.

Returns:
the test class that is being executed
See Also:
CamelSpringTestHelper


Apache Camel