当前位置: 首页>>代码示例>>Java>>正文


Java SmartContextLoader类代码示例

本文整理汇总了Java中org.springframework.test.context.SmartContextLoader的典型用法代码示例。如果您正苦于以下问题:Java SmartContextLoader类的具体用法?Java SmartContextLoader怎么用?Java SmartContextLoader使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


SmartContextLoader类属于org.springframework.test.context包,在下文中一共展示了SmartContextLoader类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: WebDelegatingSmartContextLoader

import org.springframework.test.context.SmartContextLoader; //导入依赖的package包/类
public WebDelegatingSmartContextLoader() {
	if (groovyPresent) {
		try {
			Class<?> loaderClass = ClassUtils.forName(GROOVY_XML_WEB_CONTEXT_LOADER_CLASS_NAME,
				WebDelegatingSmartContextLoader.class.getClassLoader());
			this.xmlLoader = (SmartContextLoader) BeanUtils.instantiateClass(loaderClass);
		}
		catch (Throwable ex) {
			throw new IllegalStateException("Failed to enable support for Groovy scripts; "
					+ "could not load class: " + GROOVY_XML_WEB_CONTEXT_LOADER_CLASS_NAME, ex);
		}
	}
	else {
		this.xmlLoader = new GenericXmlWebContextLoader();
	}

	this.annotationConfigLoader = new AnnotationConfigWebContextLoader();
}
 
开发者ID:langtianya,项目名称:spring4-understanding,代码行数:19,代码来源:WebDelegatingSmartContextLoader.java

示例2: DelegatingSmartContextLoader

import org.springframework.test.context.SmartContextLoader; //导入依赖的package包/类
public DelegatingSmartContextLoader() {
	if (groovyPresent) {
		try {
			Class<?> loaderClass = ClassUtils.forName(GROOVY_XML_CONTEXT_LOADER_CLASS_NAME,
				DelegatingSmartContextLoader.class.getClassLoader());
			this.xmlLoader = (SmartContextLoader) BeanUtils.instantiateClass(loaderClass);
		}
		catch (Throwable ex) {
			throw new IllegalStateException("Failed to enable support for Groovy scripts; "
					+ "could not load class: " + GROOVY_XML_CONTEXT_LOADER_CLASS_NAME, ex);
		}
	}
	else {
		this.xmlLoader = new GenericXmlContextLoader();
	}

	this.annotationConfigLoader = new AnnotationConfigContextLoader();
}
 
开发者ID:langtianya,项目名称:spring4-understanding,代码行数:19,代码来源:DelegatingSmartContextLoader.java

示例3: loadContextInternal

import org.springframework.test.context.SmartContextLoader; //导入依赖的package包/类
/**
 * Load the {@code ApplicationContext} for the supplied merged context configuration.
 * <p>Supports both the {@link SmartContextLoader} and {@link ContextLoader} SPIs.
 * @throws Exception if an error occurs while loading the application context
 */
protected ApplicationContext loadContextInternal(MergedContextConfiguration mergedContextConfiguration)
		throws Exception {

	ContextLoader contextLoader = mergedContextConfiguration.getContextLoader();
	Assert.notNull(contextLoader, "Cannot load an ApplicationContext with a NULL 'contextLoader'. " +
			"Consider annotating your test class with @ContextConfiguration or @ContextHierarchy.");

	ApplicationContext applicationContext;

	if (contextLoader instanceof SmartContextLoader) {
		SmartContextLoader smartContextLoader = (SmartContextLoader) contextLoader;
		applicationContext = smartContextLoader.loadContext(mergedContextConfiguration);
	}
	else {
		String[] locations = mergedContextConfiguration.getLocations();
		Assert.notNull(locations, "Cannot load an ApplicationContext with a NULL 'locations' array. " +
				"Consider annotating your test class with @ContextConfiguration or @ContextHierarchy.");
		applicationContext = contextLoader.loadContext(locations);
	}

	return applicationContext;
}
 
开发者ID:langtianya,项目名称:spring4-understanding,代码行数:28,代码来源:DefaultCacheAwareContextLoaderDelegate.java

示例4: loadContext

import org.springframework.test.context.SmartContextLoader; //导入依赖的package包/类
/**
 * Delegates to an appropriate candidate {@code SmartContextLoader} to load
 * an {@link ApplicationContext}.
 *
 * <p>Delegation is based on explicit knowledge of the implementations of the
 * default loaders for {@link #getXmlLoader() XML configuration files} and
 * {@link #getAnnotationConfigLoader() annotated classes}. Specifically, the
 * delegation algorithm is as follows:
 *
 * <ul>
 * <li>If the resource locations in the supplied {@code MergedContextConfiguration}
 * are not empty and the annotated classes are empty,
 * the XML-based loader will load the {@code ApplicationContext}.</li>
 * <li>If the annotated classes in the supplied {@code MergedContextConfiguration}
 * are not empty and the resource locations are empty,
 * the annotation-based loader will load the {@code ApplicationContext}.</li>
 * </ul>
 *
 * @param mergedConfig the merged context configuration to use to load the application context
 * @throws IllegalArgumentException if the supplied merged configuration is {@code null}
 * @throws IllegalStateException if neither candidate loader is capable of loading an
 * {@code ApplicationContext} from the supplied merged context configuration
 */
public ApplicationContext loadContext(MergedContextConfiguration mergedConfig) throws Exception {
	Assert.notNull(mergedConfig, "mergedConfig must not be null");

	List<SmartContextLoader> candidates = Arrays.asList(getXmlLoader(), getAnnotationConfigLoader());

	for (SmartContextLoader loader : candidates) {
		// Determine if each loader can load a context from the mergedConfig. If it
		// can, let it; otherwise, keep iterating.
		if (supports(loader, mergedConfig)) {
			return delegateLoading(loader, mergedConfig);
		}
	}

	// If neither of the candidates supports the mergedConfig based on resources but
	// ACIs were declared, then delegate to the annotation config loader.
	if (!mergedConfig.getContextInitializerClasses().isEmpty()) {
		return delegateLoading(getAnnotationConfigLoader(), mergedConfig);
	}

	throw new IllegalStateException(String.format(
		"Neither %s nor %s was able to load an ApplicationContext from %s.", name(getXmlLoader()),
		name(getAnnotationConfigLoader()), mergedConfig));
}
 
开发者ID:deathspeeder,项目名称:class-guard,代码行数:47,代码来源:AbstractDelegatingSmartContextLoader.java

示例5: delegateProcessing

import org.springframework.test.context.SmartContextLoader; //导入依赖的package包/类
private static void delegateProcessing(SmartContextLoader loader, ContextConfigurationAttributes configAttributes) {
	if (logger.isDebugEnabled()) {
		logger.debug(String.format("Delegating to %s to process context configuration %s.", name(loader),
			configAttributes));
	}
	loader.processContextConfiguration(configAttributes);
}
 
开发者ID:langtianya,项目名称:spring4-understanding,代码行数:8,代码来源:AbstractDelegatingSmartContextLoader.java

示例6: delegateLoading

import org.springframework.test.context.SmartContextLoader; //导入依赖的package包/类
private static ApplicationContext delegateLoading(SmartContextLoader loader, MergedContextConfiguration mergedConfig)
		throws Exception {

	if (logger.isDebugEnabled()) {
		logger.debug(String.format("Delegating to %s to load context from %s.", name(loader), mergedConfig));
	}
	return loader.loadContext(mergedConfig);
}
 
开发者ID:langtianya,项目名称:spring4-understanding,代码行数:9,代码来源:AbstractDelegatingSmartContextLoader.java

示例7: supports

import org.springframework.test.context.SmartContextLoader; //导入依赖的package包/类
private boolean supports(SmartContextLoader loader, MergedContextConfiguration mergedConfig) {
	if (loader == getAnnotationConfigLoader()) {
		return mergedConfig.hasClasses() && !mergedConfig.hasLocations();
	}
	else {
		return mergedConfig.hasLocations() && !mergedConfig.hasClasses();
	}
}
 
开发者ID:langtianya,项目名称:spring4-understanding,代码行数:9,代码来源:AbstractDelegatingSmartContextLoader.java

示例8: loadContext

import org.springframework.test.context.SmartContextLoader; //导入依赖的package包/类
/**
 * Delegates to an appropriate candidate {@code SmartContextLoader} to load
 * an {@link ApplicationContext}.
 * <p>Delegation is based on explicit knowledge of the implementations of the
 * default loaders for {@linkplain #getXmlLoader() XML configuration files and
 * Groovy scripts} and {@linkplain #getAnnotationConfigLoader() annotated classes}.
 * Specifically, the delegation algorithm is as follows:
 * <ul>
 * <li>If the resource locations in the supplied {@code MergedContextConfiguration}
 * are not empty and the annotated classes are empty,
 * the XML-based loader will load the {@code ApplicationContext}.</li>
 * <li>If the annotated classes in the supplied {@code MergedContextConfiguration}
 * are not empty and the resource locations are empty,
 * the annotation-based loader will load the {@code ApplicationContext}.</li>
 * </ul>
 * @param mergedConfig the merged context configuration to use to load the application context
 * @throws IllegalArgumentException if the supplied merged configuration is {@code null}
 * @throws IllegalStateException if neither candidate loader is capable of loading an
 * {@code ApplicationContext} from the supplied merged context configuration
 */
@Override
public ApplicationContext loadContext(MergedContextConfiguration mergedConfig) throws Exception {
	Assert.notNull(mergedConfig, "mergedConfig must not be null");
	List<SmartContextLoader> candidates = Arrays.asList(getXmlLoader(), getAnnotationConfigLoader());

	if (mergedConfig.hasLocations() && mergedConfig.hasClasses()) {
		throw new IllegalStateException(String.format(
			"Neither %s nor %s supports loading an ApplicationContext from %s: "
					+ "declare either 'locations' or 'classes' but not both.", name(getXmlLoader()),
			name(getAnnotationConfigLoader()), mergedConfig));
	}

	for (SmartContextLoader loader : candidates) {
		// Determine if each loader can load a context from the mergedConfig. If it
		// can, let it; otherwise, keep iterating.
		if (supports(loader, mergedConfig)) {
			return delegateLoading(loader, mergedConfig);
		}
	}

	// If neither of the candidates supports the mergedConfig based on resources but
	// ACIs were declared, then delegate to the annotation config loader.
	if (!mergedConfig.getContextInitializerClasses().isEmpty()) {
		return delegateLoading(getAnnotationConfigLoader(), mergedConfig);
	}

	// else...
	throw new IllegalStateException(String.format(
		"Neither %s nor %s was able to load an ApplicationContext from %s.", name(getXmlLoader()),
		name(getAnnotationConfigLoader()), mergedConfig));
}
 
开发者ID:langtianya,项目名称:spring4-understanding,代码行数:52,代码来源:AbstractDelegatingSmartContextLoader.java

示例9: delegateLoading

import org.springframework.test.context.SmartContextLoader; //导入依赖的package包/类
private static ApplicationContext delegateLoading(SmartContextLoader loader, MergedContextConfiguration mergedConfig)
		throws Exception {
	if (logger.isDebugEnabled()) {
		logger.debug(String.format("Delegating to %s to load context from %s.", name(loader), mergedConfig));
	}
	return loader.loadContext(mergedConfig);
}
 
开发者ID:deathspeeder,项目名称:class-guard,代码行数:8,代码来源:AbstractDelegatingSmartContextLoader.java

示例10: supports

import org.springframework.test.context.SmartContextLoader; //导入依赖的package包/类
private boolean supports(SmartContextLoader loader, MergedContextConfiguration mergedConfig) {
	if (loader == getAnnotationConfigLoader()) {
		return ObjectUtils.isEmpty(mergedConfig.getLocations()) && !ObjectUtils.isEmpty(mergedConfig.getClasses());
	} else {
		return !ObjectUtils.isEmpty(mergedConfig.getLocations()) && ObjectUtils.isEmpty(mergedConfig.getClasses());
	}
}
 
开发者ID:deathspeeder,项目名称:class-guard,代码行数:8,代码来源:AbstractDelegatingSmartContextLoader.java

示例11: getXmlLoader

import org.springframework.test.context.SmartContextLoader; //导入依赖的package包/类
@Override
protected SmartContextLoader getXmlLoader() {
	return this.xmlLoader;
}
 
开发者ID:langtianya,项目名称:spring4-understanding,代码行数:5,代码来源:WebDelegatingSmartContextLoader.java

示例12: getAnnotationConfigLoader

import org.springframework.test.context.SmartContextLoader; //导入依赖的package包/类
@Override
protected SmartContextLoader getAnnotationConfigLoader() {
	return this.annotationConfigLoader;
}
 
开发者ID:langtianya,项目名称:spring4-understanding,代码行数:5,代码来源:WebDelegatingSmartContextLoader.java

示例13: name

import org.springframework.test.context.SmartContextLoader; //导入依赖的package包/类
private static String name(SmartContextLoader loader) {
	return loader.getClass().getSimpleName();
}
 
开发者ID:langtianya,项目名称:spring4-understanding,代码行数:4,代码来源:AbstractDelegatingSmartContextLoader.java

示例14: buildMergedContextConfiguration

import org.springframework.test.context.SmartContextLoader; //导入依赖的package包/类
/**
 * Build the {@link MergedContextConfiguration merged context configuration}
 * for the supplied {@link Class testClass}, context configuration attributes,
 * and parent context configuration.
 * @param testClass the test class for which the {@code MergedContextConfiguration}
 * should be built (must not be {@code null})
 * @param configAttributesList the list of context configuration attributes for the
 * specified test class, ordered <em>bottom-up</em> (i.e., as if we were
 * traversing up the class hierarchy); never {@code null} or empty
 * @param parentConfig the merged context configuration for the parent application
 * context in a context hierarchy, or {@code null} if there is no parent
 * @param cacheAwareContextLoaderDelegate the cache-aware context loader delegate to
 * be passed to the {@code MergedContextConfiguration} constructor
 * @return the merged context configuration
 * @see #resolveContextLoader
 * @see ContextLoaderUtils#resolveContextConfigurationAttributes
 * @see SmartContextLoader#processContextConfiguration
 * @see ContextLoader#processLocations
 * @see ActiveProfilesUtils#resolveActiveProfiles
 * @see ApplicationContextInitializerUtils#resolveInitializerClasses
 * @see MergedContextConfiguration
 */
private MergedContextConfiguration buildMergedContextConfiguration(Class<?> testClass,
		List<ContextConfigurationAttributes> configAttributesList, MergedContextConfiguration parentConfig,
		CacheAwareContextLoaderDelegate cacheAwareContextLoaderDelegate) {

	ContextLoader contextLoader = resolveContextLoader(testClass, configAttributesList);
	List<String> locationsList = new ArrayList<String>();
	List<Class<?>> classesList = new ArrayList<Class<?>>();

	for (ContextConfigurationAttributes configAttributes : configAttributesList) {
		if (logger.isTraceEnabled()) {
			logger.trace(String.format("Processing locations and classes for context configuration attributes %s",
				configAttributes));
		}
		if (contextLoader instanceof SmartContextLoader) {
			SmartContextLoader smartContextLoader = (SmartContextLoader) contextLoader;
			smartContextLoader.processContextConfiguration(configAttributes);
			locationsList.addAll(0, Arrays.asList(configAttributes.getLocations()));
			classesList.addAll(0, Arrays.asList(configAttributes.getClasses()));
		}
		else {
			String[] processedLocations = contextLoader.processLocations(configAttributes.getDeclaringClass(),
				configAttributes.getLocations());
			locationsList.addAll(0, Arrays.asList(processedLocations));
			// Legacy ContextLoaders don't know how to process classes
		}
		if (!configAttributes.isInheritLocations()) {
			break;
		}
	}

	String[] locations = StringUtils.toStringArray(locationsList);
	Class<?>[] classes = ClassUtils.toClassArray(classesList);
	Set<Class<? extends ApplicationContextInitializer<? extends ConfigurableApplicationContext>>> initializerClasses = //
	ApplicationContextInitializerUtils.resolveInitializerClasses(configAttributesList);
	String[] activeProfiles = ActiveProfilesUtils.resolveActiveProfiles(testClass);
	MergedTestPropertySources mergedTestPropertySources = TestPropertySourceUtils.buildMergedTestPropertySources(testClass);

	MergedContextConfiguration mergedConfig = new MergedContextConfiguration(testClass, locations, classes,
		initializerClasses, activeProfiles, mergedTestPropertySources.getLocations(),
		mergedTestPropertySources.getProperties(), contextLoader, cacheAwareContextLoaderDelegate, parentConfig);

	return processMergedContextConfiguration(mergedConfig);
}
 
开发者ID:langtianya,项目名称:spring4-understanding,代码行数:66,代码来源:AbstractTestContextBootstrapper.java

示例15: getXmlLoader

import org.springframework.test.context.SmartContextLoader; //导入依赖的package包/类
protected SmartContextLoader getXmlLoader() {
	return this.xmlLoader;
}
 
开发者ID:deathspeeder,项目名称:class-guard,代码行数:4,代码来源:WebDelegatingSmartContextLoader.java


注:本文中的org.springframework.test.context.SmartContextLoader类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。