org.springframework.test.context.support
Class AbstractContextLoader

java.lang.Object
  extended by org.springframework.test.context.support.AbstractContextLoader
All Implemented Interfaces:
ContextLoader
Direct Known Subclasses:
AbstractGenericContextLoader

public abstract class AbstractContextLoader
extends Object
implements ContextLoader

Abstract application context loader, which provides a basis for all concrete implementations of the ContextLoader strategy. Provides a Template Method based approach for processing locations.

Since:
2.5
Author:
Sam Brannen, Juergen Hoeller
See Also:
generateDefaultLocations(java.lang.Class), modifyLocations(java.lang.Class, java.lang.String...)

Constructor Summary
AbstractContextLoader()
           
 
Method Summary
protected  String[] generateDefaultLocations(Class<?> clazz)
          Generates the default classpath resource locations array based on the supplied class.
protected abstract  String getResourceSuffix()
          Get the suffix to append to ApplicationContext resource locations when generating default locations.
protected  boolean isGenerateDefaultLocations()
          Determine whether or not default resource locations should be generated if the locations provided to processLocations() are null or empty.
protected  String[] modifyLocations(Class<?> clazz, String... locations)
          Generate a modified version of the supplied locations array and returns it.
 String[] processLocations(Class<?> clazz, String... locations)
          If the supplied locations are null or empty and isGenerateDefaultLocations() is true, default locations will be generated for the specified class and the configured resource suffix; otherwise, the supplied locations will be modified if necessary and returned.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.springframework.test.context.ContextLoader
loadContext
 

Constructor Detail

AbstractContextLoader

public AbstractContextLoader()
Method Detail

processLocations

public final String[] processLocations(Class<?> clazz,
                                       String... locations)
If the supplied locations are null or empty and isGenerateDefaultLocations() is true, default locations will be generated for the specified class and the configured resource suffix; otherwise, the supplied locations will be modified if necessary and returned.

Specified by:
processLocations in interface ContextLoader
Parameters:
clazz - the class with which the locations are associated: to be used when generating default locations
locations - the unmodified locations to use for loading the application context (can be null or empty)
Returns:
an array of application context resource locations
See Also:
generateDefaultLocations(java.lang.Class), modifyLocations(java.lang.Class, java.lang.String...), ContextLoader.processLocations(java.lang.Class, java.lang.String...)

generateDefaultLocations

protected String[] generateDefaultLocations(Class<?> clazz)
Generates the default classpath resource locations array based on the supplied class.

For example, if the supplied class is com.example.MyTest, the generated locations will contain a single string with a value of "classpath:/com/example/MyTest<suffix>", where <suffix> is the value of the resource suffix string.

Subclasses can override this method to implement a different default location generation strategy.

Parameters:
clazz - the class for which the default locations are to be generated
Returns:
an array of default application context resource locations
See Also:
getResourceSuffix()

modifyLocations

protected String[] modifyLocations(Class<?> clazz,
                                   String... locations)
Generate a modified version of the supplied locations array and returns it.

A plain path, e.g. "context.xml", will be treated as a classpath resource from the same package in which the specified class is defined. A path starting with a slash is treated as a fully qualified class path location, e.g.: "/org/springframework/whatever/foo.xml". A path which references a URL (e.g., a path prefixed with classpath:, file:, http:, etc.) will be added to the results unchanged.

Subclasses can override this method to implement a different location modification strategy.

Parameters:
clazz - the class with which the locations are associated
locations - the resource locations to be modified
Returns:
an array of modified application context resource locations

isGenerateDefaultLocations

protected boolean isGenerateDefaultLocations()
Determine whether or not default resource locations should be generated if the locations provided to processLocations() are null or empty.

Can be overridden by subclasses to change the default behavior.

Returns:
always true by default

getResourceSuffix

protected abstract String getResourceSuffix()
Get the suffix to append to ApplicationContext resource locations when generating default locations.

Must be implemented by subclasses.

Returns:
the resource suffix; should not be null or empty
See Also:
generateDefaultLocations(Class)