Spring for Apache Hadoop

org.springframework.yarn.test.context
Class YarnDelegatingSmartContextLoader

java.lang.Object
  extended by org.springframework.yarn.test.context.YarnDelegatingSmartContextLoader
All Implemented Interfaces:
org.springframework.test.context.ContextLoader, org.springframework.test.context.SmartContextLoader

public class YarnDelegatingSmartContextLoader
extends java.lang.Object
implements org.springframework.test.context.SmartContextLoader

DelegatingSmartContextLoader is an implementation of the SmartContextLoader SPI that delegates to a set of candidate SmartContextLoaders (i.e., YarnClusterInjectingXmlContextLoader and YarnClusterInjectingAnnotationConfigContextLoader) to determine which context loader is appropriate for a given test classes configuration. Each candidate is given a chance to process the ContextConfigurationAttributes for each class in the test class hierarchy that is annotated with @ContextConfiguration, and the candidate that supports the merged, processed configuration will be used to actually load the context.

Placing an empty @ContextConfiguration annotation on a test class signals that default resource locations (i.e., XML configuration files) or default configuration classes should be detected. Furthermore, if a specific ContextLoader or SmartContextLoader is not explicitly declared via @ContextConfiguration, DelegatingSmartContextLoader will be used as the default loader, thus providing automatic support for either XML configuration files or configuration classes, but not both simultaneously.

NOTE: This is a copy from a spring-test order to add custom yarn specific testing logic.

Author:
Sam Brannen, Janne Valkealahti
See Also:
SmartContextLoader, YarnClusterInjectingXmlContextLoader, YarnClusterInjectingAnnotationConfigContextLoader

Constructor Summary
YarnDelegatingSmartContextLoader()
           
 
Method Summary
 org.springframework.context.ApplicationContext loadContext(org.springframework.test.context.MergedContextConfiguration mergedConfig)
          Delegates to an appropriate candidate SmartContextLoader to load an ApplicationContext.
 org.springframework.context.ApplicationContext loadContext(java.lang.String... locations)
          DelegatingSmartContextLoader does not support the ContextLoader.loadContext(String...) method.
 void processContextConfiguration(org.springframework.test.context.ContextConfigurationAttributes configAttributes)
          Delegates to candidate SmartContextLoaders to process the supplied ContextConfigurationAttributes.
 java.lang.String[] processLocations(java.lang.Class<?> clazz, java.lang.String... locations)
          DelegatingSmartContextLoader does not support the ContextLoader.processLocations(Class, String...) method.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

YarnDelegatingSmartContextLoader

public YarnDelegatingSmartContextLoader()
Method Detail

processContextConfiguration

public void processContextConfiguration(org.springframework.test.context.ContextConfigurationAttributes configAttributes)
Delegates to candidate SmartContextLoaders to process the supplied ContextConfigurationAttributes.

Delegation is based on explicit knowledge of the implementations of YarnClusterInjectingXmlContextLoader and YarnClusterInjectingAnnotationConfigContextLoader. Specifically, the delegation algorithm is as follows:

Specified by:
processContextConfiguration in interface org.springframework.test.context.SmartContextLoader
Parameters:
configAttributes - the context configuration attributes to process
Throws:
java.lang.IllegalArgumentException - if the supplied configuration attributes are null, or if the supplied configuration attributes include both resource locations and configuration classes
java.lang.IllegalStateException - if YarnClusterInjectingXmlContextLoader detects default configuration classes; if YarnClusterInjectingAnnotationConfigContextLoader detects default resource locations; if neither candidate loader detects defaults for the supplied context configuration; or if both candidate loaders detect defaults for the supplied context configuration

loadContext

public org.springframework.context.ApplicationContext loadContext(org.springframework.test.context.MergedContextConfiguration mergedConfig)
                                                           throws java.lang.Exception
Delegates to an appropriate candidate SmartContextLoader to load an ApplicationContext.

Delegation is based on explicit knowledge of the implementations of YarnClusterInjectingXmlContextLoader and YarnClusterInjectingAnnotationConfigContextLoader. Specifically, the delegation algorithm is as follows:

Specified by:
loadContext in interface org.springframework.test.context.SmartContextLoader
Parameters:
mergedConfig - the merged context configuration to use to load the application context
Throws:
java.lang.IllegalArgumentException - if the supplied merged configuration is null
java.lang.IllegalStateException - if neither candidate loader is capable of loading an ApplicationContext from the supplied merged context configuration
java.lang.Exception

processLocations

public java.lang.String[] processLocations(java.lang.Class<?> clazz,
                                           java.lang.String... locations)
DelegatingSmartContextLoader does not support the ContextLoader.processLocations(Class, String...) method. Call processContextConfiguration(ContextConfigurationAttributes) instead.

Specified by:
processLocations in interface org.springframework.test.context.ContextLoader
Throws:
java.lang.UnsupportedOperationException

loadContext

public org.springframework.context.ApplicationContext loadContext(java.lang.String... locations)
                                                           throws java.lang.Exception
DelegatingSmartContextLoader does not support the ContextLoader.loadContext(String...) method. Call loadContext(MergedContextConfiguration) instead.

Specified by:
loadContext in interface org.springframework.test.context.ContextLoader
Throws:
java.lang.UnsupportedOperationException
java.lang.Exception

Spring for Apache Hadoop