Merge branch '3.2.x' into master
* 3.2.x: Fix ClassCastException when setting media types Enable execution of TestNG tests in spring-test Polish support for topic branch-specific versions Segregate add'l long-running and performance tests Eliminate EBR dependencies and repository config Skip creation of IDEA metadata for spring-aspects Fix Eclipse compilation error in Gradle plugin Polish build.gradle Fix null parameterName issue in content negotiation Recursively add test dependencies
This commit is contained in:
commit
7a737bebdd
68
build.gradle
68
build.gradle
|
|
@ -8,7 +8,10 @@ buildscript {
|
|||
}
|
||||
}
|
||||
|
||||
configure(allprojects) {
|
||||
configure(allprojects) { project ->
|
||||
group = "org.springframework"
|
||||
version = qualifyVersionIfNecessary(version)
|
||||
|
||||
ext.aspectjVersion = "1.7.1"
|
||||
ext.easymockVersion = "2.5.2"
|
||||
ext.hsqldbVersion = "1.8.0.10"
|
||||
|
|
@ -16,14 +19,6 @@ configure(allprojects) {
|
|||
ext.slf4jVersion = "1.6.1"
|
||||
ext.gradleScriptDir = "${rootProject.projectDir}/gradle"
|
||||
|
||||
if (rootProject.hasProperty("VERSION_QUALIFIER")) {
|
||||
def qualifier = rootProject.getProperty("VERSION_QUALIFIER")
|
||||
if (qualifier.startsWith("SPR-")) { // topic branch, e.g. SPR-1234
|
||||
// replace 3.2.0.BUILD-SNAPSHOT for 3.2.0.SPR-1234-SNAPSHOT
|
||||
version = version.replace('BUILD', qualifier)
|
||||
}
|
||||
}
|
||||
|
||||
apply plugin: "propdeps"
|
||||
apply plugin: "java"
|
||||
apply plugin: "propdeps-eclipse"
|
||||
|
|
@ -31,8 +26,6 @@ configure(allprojects) {
|
|||
apply plugin: "test-source-set-dependencies"
|
||||
apply from: "${gradleScriptDir}/ide.gradle"
|
||||
|
||||
group = "org.springframework"
|
||||
|
||||
compileJava {
|
||||
sourceCompatibility=1.5
|
||||
targetCompatibility=1.5
|
||||
|
|
@ -65,17 +58,26 @@ configure(allprojects) {
|
|||
|
||||
sourceSets.test.resources.srcDirs = ["src/test/resources", "src/test/java"]
|
||||
|
||||
test.systemProperty("java.awt.headless", "true")
|
||||
test {
|
||||
systemProperty("java.awt.headless", "true")
|
||||
systemProperty("testGroups", properties.get("testGroups"))
|
||||
}
|
||||
|
||||
repositories {
|
||||
maven { url "http://repo.springsource.org/libs-release" }
|
||||
maven { url "http://repo.springsource.org/ebr-maven-external" }
|
||||
}
|
||||
|
||||
dependencies {
|
||||
testCompile("junit:junit:${junitVersion}")
|
||||
testCompile("org.hamcrest:hamcrest-all:1.3")
|
||||
testCompile("org.mockito:mockito-core:1.9.5")
|
||||
if (project.name in ["spring", "spring-jms", "spring-orm",
|
||||
"spring-orm-hibernate4", "spring-oxm", "spring-struts",
|
||||
"spring-test", "spring-test-mvc", "spring-tx", "spring-web",
|
||||
"spring-webmvc", "spring-webmvc-portlet", "spring-webmvc-tiles3"]) {
|
||||
testCompile("org.easymock:easymock:${easymockVersion}")
|
||||
testCompile "org.easymock:easymockclassextension:${easymockVersion}"
|
||||
}
|
||||
}
|
||||
|
||||
ext.javadocLinks = [
|
||||
|
|
@ -101,16 +103,6 @@ configure(allprojects) {
|
|||
] as String[]
|
||||
}
|
||||
|
||||
configure(allprojects.findAll{it.name in ["spring", "spring-jms", "spring-orm",
|
||||
"spring-orm-hibernate4", "spring-oxm", "spring-struts", "spring-test",
|
||||
"spring-test-mvc", "spring-tx", "spring-web", "spring-webmvc",
|
||||
"spring-webmvc-portlet", "spring-webmvc-tiles3"]}) {
|
||||
dependencies {
|
||||
testCompile("org.easymock:easymock:${easymockVersion}")
|
||||
testCompile "org.easymock:easymockclassextension:${easymockVersion}"
|
||||
}
|
||||
}
|
||||
|
||||
configure(subprojects - project(":spring-build-src")) { subproject ->
|
||||
apply plugin: "merge"
|
||||
apply from: "${gradleScriptDir}/publish-maven.gradle"
|
||||
|
|
@ -160,14 +152,6 @@ configure(subprojects - project(":spring-build-src")) { subproject ->
|
|||
}
|
||||
}
|
||||
|
||||
configure(allprojects) {
|
||||
dependencies {
|
||||
testCompile("junit:junit:${junitVersion}")
|
||||
testCompile("org.hamcrest:hamcrest-all:1.3")
|
||||
}
|
||||
test.systemProperties.put("testGroups", properties.get("testGroups"))
|
||||
}
|
||||
|
||||
project("spring-build-src") {
|
||||
description = "Exposes gradle buildSrc for IDE support"
|
||||
apply plugin: "groovy"
|
||||
|
|
@ -340,7 +324,7 @@ project("spring-context") {
|
|||
optional("org.aspectj:aspectjweaver:${aspectjVersion}")
|
||||
optional("org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1")
|
||||
testCompile("commons-dbcp:commons-dbcp:1.2.2")
|
||||
testCompile("javax.inject:com.springsource.org.atinject.tck:1.0.0")
|
||||
testCompile("javax.inject:javax.inject-tck:1")
|
||||
}
|
||||
|
||||
test {
|
||||
|
|
@ -657,6 +641,10 @@ project("spring-webmvc-portlet") {
|
|||
|
||||
project("spring-test") {
|
||||
description = "Spring TestContext Framework"
|
||||
test {
|
||||
useJUnit()
|
||||
useTestNG()
|
||||
}
|
||||
dependencies {
|
||||
compile(project(":spring-core"))
|
||||
optional(project(":spring-beans"))
|
||||
|
|
@ -967,3 +955,19 @@ configure(rootProject) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Support publication of artifacts versioned by topic branch.
|
||||
* CI builds supply `-P BRANCH_NAME=<TOPIC>` to gradle at build time.
|
||||
* If <TOPIC> starts with 'SPR-', change version
|
||||
* from BUILD-SNAPSHOT => <TOPIC>-SNAPSHOT
|
||||
* e.g. 3.2.1.BUILD-SNAPSHOT => 3.2.1.SPR-1234-SNAPSHOT
|
||||
*/
|
||||
def qualifyVersionIfNecessary(version) {
|
||||
if (rootProject.hasProperty("BRANCH_NAME")) {
|
||||
def qualifier = rootProject.getProperty("BRANCH_NAME")
|
||||
if (qualifier.startsWith("SPR-")) {
|
||||
version = version.replace('BUILD', qualifier)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -33,19 +33,25 @@ class TestSourceSetDependenciesPlugin implements Plugin<Project> {
|
|||
@Override
|
||||
public void apply(Project project) {
|
||||
project.afterEvaluate {
|
||||
Set<ProjectDependency> projectDependencies = new LinkedHashSet<>()
|
||||
for(def configurationName in ["compile", "optional", "provided"]) {
|
||||
Configuration configuration = project.getConfigurations().findByName(configurationName)
|
||||
if(configuration) {
|
||||
projectDependencies.addAll(
|
||||
configuration.dependencies.findAll { it instanceof ProjectDependency }
|
||||
)
|
||||
}
|
||||
}
|
||||
Set<ProjectDependency> projectDependencies = new LinkedHashSet<ProjectDependency>()
|
||||
collectProjectDependencies(projectDependencies, project)
|
||||
projectDependencies.each {
|
||||
project.dependencies.add("testCompile", it.dependencyProject.sourceSets.test.output)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void collectProjectDependencies(Set<ProjectDependency> projectDependencies,
|
||||
Project project) {
|
||||
for(def configurationName in ["compile", "optional", "provided"]) {
|
||||
Configuration configuration = project.getConfigurations().findByName(configurationName)
|
||||
if(configuration) {
|
||||
configuration.dependencies.findAll { it instanceof ProjectDependency }.each {
|
||||
projectDependencies.add(it)
|
||||
collectProjectDependencies(projectDependencies, it.dependencyProject)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@ _Within your locally cloned spring-framework working directory:_
|
|||
## Known issues
|
||||
|
||||
1. `spring-aspects` does not compile out of the box due to references to aspect types unknown to IDEA.
|
||||
See http://youtrack.jetbrains.com/issue/IDEA-64446 for details. In the meantime, you may want to
|
||||
exclude `spring-aspects` from the overall project to avoid compilation errors.
|
||||
See http://youtrack.jetbrains.com/issue/IDEA-64446 for details. In the meantime, the 'spring-aspects'
|
||||
module has been excluded from the overall project to avoid compilation errors.
|
||||
2. While all JUnit tests pass from the command line with Gradle, many will fail when run from IDEA.
|
||||
Resolving this is a work in progress. If attempting to run all JUnit tests from within IDEA, you will
|
||||
likely need to set the following VM options to avoid out of memory errors:
|
||||
|
|
|
|||
|
|
@ -8,6 +8,10 @@ configurations {
|
|||
ajInpath
|
||||
}
|
||||
|
||||
// exclude spring-aspects as a module within IDEA until IDEA-64446 is resolved
|
||||
tasks.getByName("idea").onlyIf { false }
|
||||
tasks.getByName("ideaModule").onlyIf { false }
|
||||
|
||||
task compileJava(overwrite: true) {
|
||||
dependsOn JavaPlugin.PROCESS_RESOURCES_TASK_NAME
|
||||
dependsOn configurations.ajc.getTaskDependencyFromProjectDependency(true, "compileJava")
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -29,10 +29,11 @@ import org.springframework.core.task.SimpleAsyncTaskExecutor;
|
|||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.scheduling.annotation.AsyncResult;
|
||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||
import org.springframework.tests.Assume;
|
||||
import org.springframework.tests.TestGroup;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.not;
|
||||
import static org.hamcrest.Matchers.startsWith;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.*;
|
||||
import static org.hamcrest.Matchers.not;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
|
|
@ -54,6 +55,8 @@ public class AnnotationAsyncExecutionAspectTests {
|
|||
|
||||
@Test
|
||||
public void asyncMethodGetsRoutedAsynchronously() {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
|
||||
ClassWithoutAsyncAnnotation obj = new ClassWithoutAsyncAnnotation();
|
||||
obj.incrementAsync();
|
||||
executor.waitForCompletion();
|
||||
|
|
@ -84,6 +87,8 @@ public class AnnotationAsyncExecutionAspectTests {
|
|||
|
||||
@Test
|
||||
public void voidMethodInAsyncClassGetsRoutedAsynchronously() {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
|
||||
ClassWithAsyncAnnotation obj = new ClassWithAsyncAnnotation();
|
||||
obj.increment();
|
||||
executor.waitForCompletion();
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -16,10 +16,6 @@
|
|||
|
||||
package org.springframework.beans.factory;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.fail;
|
||||
import static test.util.TestResourceUtils.qualifiedResource;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
|
|
@ -31,14 +27,21 @@ import java.util.Set;
|
|||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.beans.PropertyEditorRegistrar;
|
||||
import org.springframework.beans.PropertyEditorRegistry;
|
||||
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
|
||||
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
|
||||
import org.springframework.beans.propertyeditors.CustomDateEditor;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.tests.Assume;
|
||||
import org.springframework.tests.TestGroup;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static test.util.TestResourceUtils.*;
|
||||
|
||||
/**
|
||||
* @author Guillaume Poirier
|
||||
|
|
@ -72,6 +75,8 @@ public final class ConcurrentBeanFactoryTests {
|
|||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
|
||||
DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
|
||||
new XmlBeanDefinitionReader(factory).loadBeanDefinitions(CONTEXT);
|
||||
factory.addPropertyEditorRegistrar(new PropertyEditorRegistrar() {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -44,6 +44,8 @@ import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
|
|||
import org.springframework.beans.propertyeditors.CustomNumberEditor;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.core.io.UrlResource;
|
||||
import org.springframework.tests.Assume;
|
||||
import org.springframework.tests.TestGroup;
|
||||
|
||||
import test.beans.GenericBean;
|
||||
import test.beans.GenericIntegerBean;
|
||||
|
|
@ -641,6 +643,8 @@ public class BeanFactoryGenericsTests {
|
|||
|
||||
@Test
|
||||
public void testSetBean() throws Exception {
|
||||
Assume.group(TestGroup.LONG_RUNNING);
|
||||
|
||||
DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
|
||||
new XmlBeanDefinitionReader(bf).loadBeanDefinitions(
|
||||
new ClassPathResource("genericBeanTests.xml", getClass()));
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -18,18 +18,28 @@ package org.springframework.beans.support;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.tests.Assume;
|
||||
import org.springframework.tests.TestGroup;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import test.beans.TestBean;
|
||||
|
||||
/**
|
||||
* @author Juergen Hoeller
|
||||
* @author Jean-Pierre PAWLAK
|
||||
* @author Chris Beams
|
||||
* @since 20.05.2003
|
||||
*/
|
||||
public class PagedListHolderTests extends TestCase {
|
||||
public class PagedListHolderTests {
|
||||
|
||||
@Test
|
||||
public void testPagedListHolder() {
|
||||
Assume.group(TestGroup.LONG_RUNNING);
|
||||
|
||||
TestBean tb1 = new TestBean();
|
||||
tb1.setName("eva");
|
||||
tb1.setAge(25);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2010-2012 the original author or authors.
|
||||
* Copyright 2010-2013 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -20,10 +20,13 @@ import net.sf.ehcache.CacheManager;
|
|||
import net.sf.ehcache.Ehcache;
|
||||
import net.sf.ehcache.Element;
|
||||
import net.sf.ehcache.config.CacheConfiguration;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.cache.Cache;
|
||||
import org.springframework.tests.Assume;
|
||||
import org.springframework.tests.TestGroup;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
|
|
@ -95,6 +98,7 @@ public class EhCacheCacheTests {
|
|||
|
||||
@Test
|
||||
public void testExpiredElements() throws Exception {
|
||||
Assume.group(TestGroup.LONG_RUNNING);
|
||||
String key = "brancusi";
|
||||
String value = "constantin";
|
||||
Element brancusi = new Element(key, value);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -33,6 +33,7 @@ import java.util.Map;
|
|||
|
||||
import javax.sql.DataSource;
|
||||
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.quartz.CronTrigger;
|
||||
import org.quartz.Job;
|
||||
|
|
@ -382,15 +383,19 @@ public class QuartzSupportTests {
|
|||
verify(scheduler).shutdown(false);
|
||||
}
|
||||
|
||||
/*public void testMethodInvocationWithConcurrency() throws Exception {
|
||||
@Ignore @Test
|
||||
public void testMethodInvocationWithConcurrency() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
methodInvokingConcurrency(true);
|
||||
}*/
|
||||
}
|
||||
|
||||
// We can't test both since Quartz somehow seems to keep things in memory
|
||||
// enable both and one of them will fail (order doesn't matter).
|
||||
/*public void testMethodInvocationWithoutConcurrency() throws Exception {
|
||||
@Ignore @Test
|
||||
public void testMethodInvocationWithoutConcurrency() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
methodInvokingConcurrency(false);
|
||||
}*/
|
||||
}
|
||||
|
||||
private void methodInvokingConcurrency(boolean concurrent) throws Exception {
|
||||
// Test the concurrency flag.
|
||||
|
|
@ -637,6 +642,8 @@ public class QuartzSupportTests {
|
|||
|
||||
@Test
|
||||
public void testSchedulerWithTaskExecutor() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
|
||||
CountingTaskExecutor taskExecutor = new CountingTaskExecutor();
|
||||
DummyJob.count = 0;
|
||||
|
||||
|
|
@ -668,6 +675,8 @@ public class QuartzSupportTests {
|
|||
|
||||
@Test
|
||||
public void testSchedulerWithRunnable() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
|
||||
DummyRunnable.count = 0;
|
||||
|
||||
JobDetail jobDetail = new JobDetailBean();
|
||||
|
|
@ -696,6 +705,8 @@ public class QuartzSupportTests {
|
|||
|
||||
@Test
|
||||
public void testSchedulerWithQuartzJobBean() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
|
||||
DummyJob.param = 0;
|
||||
DummyJob.count = 0;
|
||||
|
||||
|
|
@ -727,6 +738,8 @@ public class QuartzSupportTests {
|
|||
|
||||
@Test
|
||||
public void testSchedulerWithSpringBeanJobFactory() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
|
||||
DummyJob.param = 0;
|
||||
DummyJob.count = 0;
|
||||
|
||||
|
|
@ -760,6 +773,7 @@ public class QuartzSupportTests {
|
|||
|
||||
@Test
|
||||
public void testSchedulerWithSpringBeanJobFactoryAndParamMismatchNotIgnored() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
DummyJob.param = 0;
|
||||
DummyJob.count = 0;
|
||||
|
||||
|
|
@ -794,6 +808,8 @@ public class QuartzSupportTests {
|
|||
|
||||
@Test
|
||||
public void testSchedulerWithSpringBeanJobFactoryAndRunnable() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
|
||||
DummyRunnable.param = 0;
|
||||
DummyRunnable.count = 0;
|
||||
|
||||
|
|
@ -826,6 +842,7 @@ public class QuartzSupportTests {
|
|||
|
||||
@Test
|
||||
public void testSchedulerWithSpringBeanJobFactoryAndQuartzJobBean() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
DummyJobBean.param = 0;
|
||||
DummyJobBean.count = 0;
|
||||
|
||||
|
|
@ -858,6 +875,7 @@ public class QuartzSupportTests {
|
|||
|
||||
@Test
|
||||
public void testSchedulerWithSpringBeanJobFactoryAndJobSchedulingData() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
DummyJob.param = 0;
|
||||
DummyJob.count = 0;
|
||||
|
||||
|
|
@ -896,6 +914,7 @@ public class QuartzSupportTests {
|
|||
|
||||
@Test
|
||||
public void testWithTwoAnonymousMethodInvokingJobDetailFactoryBeans() throws InterruptedException {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
ClassPathXmlApplicationContext ctx =
|
||||
new ClassPathXmlApplicationContext("/org/springframework/scheduling/quartz/multipleAnonymousMethodInvokingJobDetailFB.xml");
|
||||
Thread.sleep(3000);
|
||||
|
|
@ -915,6 +934,7 @@ public class QuartzSupportTests {
|
|||
|
||||
@Test
|
||||
public void testSchedulerAccessorBean() throws InterruptedException {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
ClassPathXmlApplicationContext ctx =
|
||||
new ClassPathXmlApplicationContext("/org/springframework/scheduling/quartz/schedulerAccessorBean.xml");
|
||||
Thread.sleep(3000);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -16,8 +16,6 @@
|
|||
|
||||
package org.springframework.aop.aspectj;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.springframework.aop.framework.Advised;
|
||||
|
|
@ -26,9 +24,13 @@ import org.springframework.beans.ITestBean;
|
|||
import org.springframework.beans.TestBean;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
||||
import org.springframework.tests.Assume;
|
||||
import org.springframework.tests.TestGroup;
|
||||
|
||||
import test.mixin.Lockable;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* @author Rod Johnson
|
||||
* @author Chris Beams
|
||||
|
|
@ -63,6 +65,8 @@ public final class DeclareParentsTests {
|
|||
// on the introduction, in which case this would not be a problem.
|
||||
@Test
|
||||
public void testLockingWorks() {
|
||||
Assume.group(TestGroup.LONG_RUNNING);
|
||||
|
||||
Object introductionObject = ctx.getBean("introduction");
|
||||
assertFalse("Introduction should not be proxied", AopUtils.isAopProxy(introductionObject));
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -19,7 +19,6 @@ package org.springframework.context.support;
|
|||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.beans.DirectFieldAccessor;
|
||||
import org.springframework.beans.factory.FactoryBean;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
|
|
@ -27,6 +26,8 @@ import org.springframework.beans.factory.support.RootBeanDefinition;
|
|||
import org.springframework.context.Lifecycle;
|
||||
import org.springframework.context.LifecycleProcessor;
|
||||
import org.springframework.context.SmartLifecycle;
|
||||
import org.springframework.tests.Assume;
|
||||
import org.springframework.tests.TestGroup;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
|
|
@ -251,6 +252,8 @@ public class DefaultLifecycleProcessorTests {
|
|||
|
||||
@Test
|
||||
public void smartLifecycleGroupShutdown() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
|
||||
CopyOnWriteArrayList<Lifecycle> stoppedBeans = new CopyOnWriteArrayList<Lifecycle>();
|
||||
TestSmartLifecycleBean bean1 = TestSmartLifecycleBean.forShutdownTests(1, 300, stoppedBeans);
|
||||
TestSmartLifecycleBean bean2 = TestSmartLifecycleBean.forShutdownTests(3, 100, stoppedBeans);
|
||||
|
|
@ -280,6 +283,8 @@ public class DefaultLifecycleProcessorTests {
|
|||
|
||||
@Test
|
||||
public void singleSmartLifecycleShutdown() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
|
||||
CopyOnWriteArrayList<Lifecycle> stoppedBeans = new CopyOnWriteArrayList<Lifecycle>();
|
||||
TestSmartLifecycleBean bean = TestSmartLifecycleBean.forShutdownTests(99, 300, stoppedBeans);
|
||||
StaticApplicationContext context = new StaticApplicationContext();
|
||||
|
|
@ -386,6 +391,8 @@ public class DefaultLifecycleProcessorTests {
|
|||
|
||||
@Test
|
||||
public void dependentShutdownFirstEvenIfItsPhaseIsLower() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
|
||||
CopyOnWriteArrayList<Lifecycle> stoppedBeans = new CopyOnWriteArrayList<Lifecycle>();
|
||||
TestSmartLifecycleBean beanMin = TestSmartLifecycleBean.forShutdownTests(Integer.MIN_VALUE, 100, stoppedBeans);
|
||||
TestSmartLifecycleBean bean1 = TestSmartLifecycleBean.forShutdownTests(1, 200, stoppedBeans);
|
||||
|
|
@ -458,6 +465,8 @@ public class DefaultLifecycleProcessorTests {
|
|||
|
||||
@Test
|
||||
public void dependentShutdownFirstAndIsSmartLifecycle() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
|
||||
CopyOnWriteArrayList<Lifecycle> stoppedBeans = new CopyOnWriteArrayList<Lifecycle>();
|
||||
TestSmartLifecycleBean beanMin = TestSmartLifecycleBean.forShutdownTests(Integer.MIN_VALUE, 400, stoppedBeans);
|
||||
TestSmartLifecycleBean beanNegative = TestSmartLifecycleBean.forShutdownTests(-99, 100, stoppedBeans);
|
||||
|
|
@ -521,6 +530,8 @@ public class DefaultLifecycleProcessorTests {
|
|||
|
||||
@Test
|
||||
public void dependentShutdownFirstButNotSmartLifecycle() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
|
||||
CopyOnWriteArrayList<Lifecycle> stoppedBeans = new CopyOnWriteArrayList<Lifecycle>();
|
||||
TestSmartLifecycleBean bean1 = TestSmartLifecycleBean.forShutdownTests(1, 200, stoppedBeans);
|
||||
TestLifecycleBean simpleBean = TestLifecycleBean.forShutdownTests(stoppedBeans);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -20,6 +20,7 @@ import java.lang.annotation.Retention;
|
|||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.util.concurrent.Future;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
|
||||
|
|
@ -28,6 +29,8 @@ import org.springframework.context.ApplicationEvent;
|
|||
import org.springframework.context.ApplicationListener;
|
||||
import org.springframework.context.support.GenericApplicationContext;
|
||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||
import org.springframework.tests.Assume;
|
||||
import org.springframework.tests.TestGroup;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
|
|
@ -43,6 +46,10 @@ public class AsyncExecutionTests {
|
|||
|
||||
private static int listenerConstructed = 0;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void asyncMethods() throws Exception {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -26,7 +26,6 @@ import java.util.List;
|
|||
import java.util.Properties;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.beans.DirectFieldAccessor;
|
||||
import org.springframework.beans.factory.BeanCreationException;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
|
|
@ -37,6 +36,8 @@ import org.springframework.scheduling.config.CronTask;
|
|||
import org.springframework.scheduling.config.IntervalTask;
|
||||
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
|
||||
import org.springframework.scheduling.support.ScheduledMethodRunnable;
|
||||
import org.springframework.tests.Assume;
|
||||
import org.springframework.tests.TestGroup;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
|
|
@ -130,6 +131,8 @@ public class ScheduledAnnotationBeanPostProcessorTests {
|
|||
|
||||
@Test
|
||||
public void cronTask() throws InterruptedException {
|
||||
Assume.group(TestGroup.LONG_RUNNING);
|
||||
|
||||
StaticApplicationContext context = new StaticApplicationContext();
|
||||
BeanDefinition processorDefinition = new RootBeanDefinition(ScheduledAnnotationBeanPostProcessor.class);
|
||||
BeanDefinition targetDefinition = new RootBeanDefinition(
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -16,15 +16,6 @@
|
|||
|
||||
package org.springframework.scheduling.concurrent;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.fail;
|
||||
import static org.mockito.BDDMockito.willThrow;
|
||||
import static org.mockito.Mockito.atLeast;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
import java.util.concurrent.RejectedExecutionHandler;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.ThreadFactory;
|
||||
|
|
@ -32,6 +23,12 @@ import java.util.concurrent.ThreadFactory;
|
|||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.springframework.core.task.NoOpRunnable;
|
||||
import org.springframework.tests.Assume;
|
||||
import org.springframework.tests.TestGroup;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.mockito.BDDMockito.*;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
/**
|
||||
* @author Rick Evans
|
||||
|
|
@ -97,6 +94,8 @@ public class ScheduledExecutorFactoryBeanTests {
|
|||
|
||||
@Test
|
||||
public void testOneTimeExecutionIsSetUpAndFiresCorrectly() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
|
||||
Runnable runnable = mock(Runnable.class);
|
||||
|
||||
ScheduledExecutorFactoryBean factory = new ScheduledExecutorFactoryBean();
|
||||
|
|
@ -112,6 +111,8 @@ public class ScheduledExecutorFactoryBeanTests {
|
|||
|
||||
@Test
|
||||
public void testFixedRepeatedExecutionIsSetUpAndFiresCorrectly() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
|
||||
Runnable runnable = mock(Runnable.class);
|
||||
|
||||
ScheduledExecutorTask task = new ScheduledExecutorTask(runnable);
|
||||
|
|
@ -129,6 +130,8 @@ public class ScheduledExecutorFactoryBeanTests {
|
|||
|
||||
@Test
|
||||
public void testFixedRepeatedExecutionIsSetUpAndFiresCorrectlyAfterException() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
|
||||
Runnable runnable = mock(Runnable.class);
|
||||
willThrow(new IllegalStateException()).given(runnable).run();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -32,6 +32,7 @@ import java.io.FileNotFoundException;
|
|||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.springframework.aop.support.AopUtils;
|
||||
|
|
@ -53,6 +54,8 @@ import org.springframework.scripting.ScriptCompilationException;
|
|||
import org.springframework.scripting.ScriptSource;
|
||||
import org.springframework.scripting.support.ScriptFactoryPostProcessor;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.tests.Assume;
|
||||
import org.springframework.tests.TestGroup;
|
||||
|
||||
/**
|
||||
* @author Rob Harrop
|
||||
|
|
@ -64,6 +67,11 @@ import org.springframework.stereotype.Component;
|
|||
*/
|
||||
public class GroovyScriptFactoryTests {
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
Assume.group(TestGroup.LONG_RUNNING);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStaticScript() throws Exception {
|
||||
ApplicationContext ctx = new ClassPathXmlApplicationContext("groovyContext.xml", getClass());
|
||||
|
|
@ -396,6 +404,8 @@ public class GroovyScriptFactoryTests {
|
|||
|
||||
@Test
|
||||
public void testAnonymousScriptDetected() throws Exception {
|
||||
Assume.group(TestGroup.LONG_RUNNING);
|
||||
|
||||
ApplicationContext ctx = new ClassPathXmlApplicationContext("groovy-with-xsd.xml", getClass());
|
||||
Map<?, Messenger> beans = ctx.getBeansOfType(Messenger.class);
|
||||
assertEquals(4, beans.size());
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -18,8 +18,8 @@ package org.springframework.scripting.jruby;
|
|||
|
||||
import java.util.Map;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.springframework.aop.support.AopUtils;
|
||||
import org.springframework.aop.target.dynamic.Refreshable;
|
||||
import org.springframework.beans.TestBean;
|
||||
|
|
@ -31,13 +31,18 @@ import org.springframework.scripting.ConfigurableMessenger;
|
|||
import org.springframework.scripting.Messenger;
|
||||
import org.springframework.scripting.ScriptCompilationException;
|
||||
import org.springframework.scripting.TestBeanAwareMessenger;
|
||||
import org.springframework.tests.Assume;
|
||||
import org.springframework.tests.TestGroup;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* @author Rob Harrop
|
||||
* @author Rick Evans
|
||||
* @author Juergen Hoeller
|
||||
* @author Chris Beams
|
||||
*/
|
||||
public class JRubyScriptFactoryTests extends TestCase {
|
||||
public class JRubyScriptFactoryTests {
|
||||
|
||||
private static final String RUBY_SCRIPT_SOURCE_LOCATOR =
|
||||
"inline:require 'java'\n" +
|
||||
|
|
@ -45,7 +50,12 @@ public class JRubyScriptFactoryTests extends TestCase {
|
|||
"end\n" +
|
||||
"RubyBar.new";
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
Assume.group(TestGroup.LONG_RUNNING);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStaticScript() throws Exception {
|
||||
ApplicationContext ctx = new ClassPathXmlApplicationContext("jrubyContext.xml", getClass());
|
||||
Calculator calc = (Calculator) ctx.getBean("calculator");
|
||||
|
|
@ -64,6 +74,7 @@ public class JRubyScriptFactoryTests extends TestCase {
|
|||
assertEquals("Message is incorrect", desiredMessage, messenger.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNonStaticScript() throws Exception {
|
||||
ApplicationContext ctx = new ClassPathXmlApplicationContext("jrubyRefreshableContext.xml", getClass());
|
||||
Messenger messenger = (Messenger) ctx.getBean("messenger");
|
||||
|
|
@ -81,6 +92,7 @@ public class JRubyScriptFactoryTests extends TestCase {
|
|||
assertEquals("Incorrect refresh count", 2, refreshable.getRefreshCount());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testScriptCompilationException() throws Exception {
|
||||
try {
|
||||
new ClassPathXmlApplicationContext("jrubyBrokenContext.xml", getClass());
|
||||
|
|
@ -91,6 +103,7 @@ public class JRubyScriptFactoryTests extends TestCase {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCtorWithNullScriptSourceLocator() throws Exception {
|
||||
try {
|
||||
new JRubyScriptFactory(null, new Class<?>[]{Messenger.class});
|
||||
|
|
@ -100,6 +113,7 @@ public class JRubyScriptFactoryTests extends TestCase {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCtorWithEmptyScriptSourceLocator() throws Exception {
|
||||
try {
|
||||
new JRubyScriptFactory("", new Class<?>[]{Messenger.class});
|
||||
|
|
@ -109,6 +123,7 @@ public class JRubyScriptFactoryTests extends TestCase {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCtorWithWhitespacedScriptSourceLocator() throws Exception {
|
||||
try {
|
||||
new JRubyScriptFactory("\n ", new Class<?>[]{Messenger.class});
|
||||
|
|
@ -118,6 +133,7 @@ public class JRubyScriptFactoryTests extends TestCase {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCtorWithNullScriptInterfacesArray() throws Exception {
|
||||
try {
|
||||
new JRubyScriptFactory(RUBY_SCRIPT_SOURCE_LOCATOR, null);
|
||||
|
|
@ -127,6 +143,7 @@ public class JRubyScriptFactoryTests extends TestCase {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCtorWithEmptyScriptInterfacesArray() throws Exception {
|
||||
try {
|
||||
new JRubyScriptFactory(RUBY_SCRIPT_SOURCE_LOCATOR, new Class<?>[]{});
|
||||
|
|
@ -136,6 +153,7 @@ public class JRubyScriptFactoryTests extends TestCase {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testResourceScriptFromTag() throws Exception {
|
||||
ApplicationContext ctx = new ClassPathXmlApplicationContext("jruby-with-xsd.xml", getClass());
|
||||
TestBean testBean = (TestBean) ctx.getBean("testBean");
|
||||
|
|
@ -151,6 +169,7 @@ public class JRubyScriptFactoryTests extends TestCase {
|
|||
assertEquals(testBean, messengerByName.getTestBean());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPrototypeScriptFromTag() throws Exception {
|
||||
ApplicationContext ctx = new ClassPathXmlApplicationContext("jruby-with-xsd.xml", getClass());
|
||||
ConfigurableMessenger messenger = (ConfigurableMessenger) ctx.getBean("messengerPrototype");
|
||||
|
|
@ -166,6 +185,7 @@ public class JRubyScriptFactoryTests extends TestCase {
|
|||
assertEquals("Byebye World!", messenger2.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInlineScriptFromTag() throws Exception {
|
||||
ApplicationContext ctx = new ClassPathXmlApplicationContext("jruby-with-xsd.xml", getClass());
|
||||
Calculator calculator = (Calculator) ctx.getBean("calculator");
|
||||
|
|
@ -173,6 +193,7 @@ public class JRubyScriptFactoryTests extends TestCase {
|
|||
assertFalse(calculator instanceof Refreshable);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRefreshableFromTag() throws Exception {
|
||||
ApplicationContext ctx = new ClassPathXmlApplicationContext("jruby-with-xsd.xml", getClass());
|
||||
Messenger messenger = (Messenger) ctx.getBean("refreshableMessenger");
|
||||
|
|
@ -190,6 +211,7 @@ public class JRubyScriptFactoryTests extends TestCase {
|
|||
assertEquals(0, calc.add(2, -2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWithComplexArg() throws Exception {
|
||||
ApplicationContext ctx = new ClassPathXmlApplicationContext("jrubyContext.xml", getClass());
|
||||
Printer printer = (Printer) ctx.getBean("printer");
|
||||
|
|
@ -198,6 +220,7 @@ public class JRubyScriptFactoryTests extends TestCase {
|
|||
assertEquals(1, printable.count);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWithPrimitiveArgsInReturnTypeAndParameters() throws Exception {
|
||||
ApplicationContext ctx = new ClassPathXmlApplicationContext("jrubyContextForPrimitives.xml", getClass());
|
||||
PrimitiveAdder adder = (PrimitiveAdder) ctx.getBean("adder");
|
||||
|
|
@ -211,6 +234,7 @@ public class JRubyScriptFactoryTests extends TestCase {
|
|||
assertEquals('c', adder.echo('c'));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWithWrapperArgsInReturnTypeAndParameters() throws Exception {
|
||||
ApplicationContext ctx = new ClassPathXmlApplicationContext("jrubyContextForWrappers.xml", getClass());
|
||||
WrapperAdder adder = (WrapperAdder) ctx.getBean("adder");
|
||||
|
|
@ -266,6 +290,7 @@ public class JRubyScriptFactoryTests extends TestCase {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAOP() throws Exception {
|
||||
ApplicationContext ctx = new ClassPathXmlApplicationContext("jruby-aop.xml", getClass());
|
||||
Messenger messenger = (Messenger) ctx.getBean("messenger");
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -17,7 +17,9 @@
|
|||
package org.springframework.scripting.support;
|
||||
|
||||
import static org.mockito.Mockito.mock;
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.beans.FatalBeanException;
|
||||
import org.springframework.beans.factory.BeanFactory;
|
||||
|
|
@ -28,12 +30,17 @@ import org.springframework.context.support.GenericApplicationContext;
|
|||
import org.springframework.scripting.Messenger;
|
||||
import org.springframework.scripting.ScriptCompilationException;
|
||||
import org.springframework.scripting.groovy.GroovyScriptFactory;
|
||||
import org.springframework.tests.Assume;
|
||||
import org.springframework.tests.TestGroup;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* @author Rick Evans
|
||||
* @author Juergen Hoeller
|
||||
* @author Chris Beams
|
||||
*/
|
||||
public class ScriptFactoryPostProcessorTests extends TestCase {
|
||||
public class ScriptFactoryPostProcessorTests {
|
||||
|
||||
private static final String MESSAGE_TEXT = "Bingo";
|
||||
|
||||
|
|
@ -69,11 +76,17 @@ public class ScriptFactoryPostProcessorTests extends TestCase {
|
|||
" }\n" +
|
||||
"}";
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDoesNothingWhenPostProcessingNonScriptFactoryTypeBeforeInstantiation() throws Exception {
|
||||
assertNull(new ScriptFactoryPostProcessor().postProcessBeforeInstantiation(getClass(), "a.bean"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testThrowsExceptionIfGivenNonAbstractBeanFactoryImplementation() throws Exception {
|
||||
try {
|
||||
new ScriptFactoryPostProcessor().setBeanFactory(mock(BeanFactory.class));
|
||||
|
|
@ -83,6 +96,7 @@ public class ScriptFactoryPostProcessorTests extends TestCase {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testChangeScriptWithRefreshableBeanFunctionality() throws Exception {
|
||||
BeanDefinition processorBeanDefinition = createScriptFactoryPostProcessor(true);
|
||||
BeanDefinition scriptedBeanDefinition = createScriptedGroovyBean();
|
||||
|
|
@ -103,6 +117,7 @@ public class ScriptFactoryPostProcessorTests extends TestCase {
|
|||
assertEquals(EXPECTED_CHANGED_MESSAGE_TEXT, refreshedMessenger.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testChangeScriptWithNoRefreshableBeanFunctionality() throws Exception {
|
||||
BeanDefinition processorBeanDefinition = createScriptFactoryPostProcessor(false);
|
||||
BeanDefinition scriptedBeanDefinition = createScriptedGroovyBean();
|
||||
|
|
@ -123,6 +138,7 @@ public class ScriptFactoryPostProcessorTests extends TestCase {
|
|||
MESSAGE_TEXT, refreshedMessenger.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRefreshedScriptReferencePropagatesToCollaborators() throws Exception {
|
||||
BeanDefinition processorBeanDefinition = createScriptFactoryPostProcessor(true);
|
||||
BeanDefinition scriptedBeanDefinition = createScriptedGroovyBean();
|
||||
|
|
@ -150,6 +166,7 @@ public class ScriptFactoryPostProcessorTests extends TestCase {
|
|||
assertEquals(EXPECTED_CHANGED_MESSAGE_TEXT, collaborator.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReferencesAcrossAContainerHierarchy() throws Exception {
|
||||
GenericApplicationContext businessContext = new GenericApplicationContext();
|
||||
businessContext.registerBeanDefinition("messenger", BeanDefinitionBuilder.rootBeanDefinition(StubMessenger.class).getBeanDefinition());
|
||||
|
|
@ -165,11 +182,13 @@ public class ScriptFactoryPostProcessorTests extends TestCase {
|
|||
presentationCtx.refresh();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testScriptHavingAReferenceToAnotherBean() throws Exception {
|
||||
// just tests that the (singleton) script-backed bean is able to be instantiated with references to its collaborators
|
||||
new ClassPathXmlApplicationContext("org/springframework/scripting/support/groovyReferences.xml");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testForRefreshedScriptHavingErrorPickedUpOnFirstCall() throws Exception {
|
||||
BeanDefinition processorBeanDefinition = createScriptFactoryPostProcessor(true);
|
||||
BeanDefinition scriptedBeanDefinition = createScriptedGroovyBean();
|
||||
|
|
@ -200,6 +219,7 @@ public class ScriptFactoryPostProcessorTests extends TestCase {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPrototypeScriptedBean() throws Exception {
|
||||
GenericApplicationContext ctx = new GenericApplicationContext();
|
||||
ctx.registerBeanDefinition("messenger", BeanDefinitionBuilder.rootBeanDefinition(StubMessenger.class).getBeanDefinition());
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -27,6 +27,8 @@ import org.springframework.core.io.UrlResource;
|
|||
import org.springframework.core.type.classreading.CachingMetadataReaderFactory;
|
||||
import org.springframework.core.type.classreading.MetadataReader;
|
||||
import org.springframework.core.type.classreading.MetadataReaderFactory;
|
||||
import org.springframework.tests.Assume;
|
||||
import org.springframework.tests.TestGroup;
|
||||
|
||||
/**
|
||||
* Unit test checking the behaviour of {@link CachingMetadataReaderFactory under load.
|
||||
|
|
@ -47,6 +49,8 @@ public class CachingMetadataReaderLeakTest {
|
|||
|
||||
@Test
|
||||
public void testSignificantLoad() throws Exception {
|
||||
Assume.group(TestGroup.LONG_RUNNING);
|
||||
|
||||
// the biggest public class in the JDK (>60k)
|
||||
URL url = getClass().getResource("/java/awt/Component.class");
|
||||
assertThat(url, notNullValue());
|
||||
|
|
|
|||
|
|
@ -26,12 +26,23 @@ import java.util.Set;
|
|||
*
|
||||
* @see Assume#group(TestGroup)
|
||||
* @author Phillip Webb
|
||||
* @author Chris Beams
|
||||
*/
|
||||
public enum TestGroup {
|
||||
|
||||
|
||||
/**
|
||||
* Performance related tests that may take a considerable time to run.
|
||||
* Tests that take a considerable amount of time to run. Any test lasting longer than
|
||||
* 500ms should be considered a candidate in order to avoid making the overall test
|
||||
* suite too slow to run during the normal development cycle.
|
||||
*/
|
||||
LONG_RUNNING,
|
||||
|
||||
/**
|
||||
* Performance-related tests that may fail unpredictably based on CPU profile and load.
|
||||
* Any test using {@link Thread#sleep}, {@link Object#wait}, Spring's
|
||||
* {@code StopWatch}, etc. should be considered a candidate as their successful
|
||||
* execution is likely to be based on events occurring within a given time window.
|
||||
*/
|
||||
PERFORMANCE;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -16,11 +16,6 @@
|
|||
|
||||
package org.springframework.jdbc.config;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.is;
|
||||
import static org.hamcrest.CoreMatchers.notNullValue;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertThat;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
|
||||
import org.junit.Rule;
|
||||
|
|
@ -37,10 +32,16 @@ import org.springframework.jdbc.BadSqlGrammarException;
|
|||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactoryBean;
|
||||
import org.springframework.jdbc.datasource.init.DataSourceInitializer;
|
||||
import org.springframework.tests.Assume;
|
||||
import org.springframework.tests.TestGroup;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.*;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* @author Dave Syer
|
||||
* @author Juergen Hoeller
|
||||
* @author Chris Beams
|
||||
*/
|
||||
public class JdbcNamespaceIntegrationTests {
|
||||
|
||||
|
|
@ -49,6 +50,8 @@ public class JdbcNamespaceIntegrationTests {
|
|||
|
||||
@Test
|
||||
public void testCreateEmbeddedDatabase() throws Exception {
|
||||
Assume.group(TestGroup.LONG_RUNNING);
|
||||
|
||||
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
|
||||
"org/springframework/jdbc/config/jdbc-config.xml");
|
||||
assertCorrectSetup(context, "dataSource", "h2DataSource", "derbyDataSource");
|
||||
|
|
@ -58,6 +61,8 @@ public class JdbcNamespaceIntegrationTests {
|
|||
@Test
|
||||
public void testCreateEmbeddedDatabaseAgain() throws Exception {
|
||||
// If Derby isn't cleaned up properly this will fail...
|
||||
Assume.group(TestGroup.LONG_RUNNING);
|
||||
|
||||
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
|
||||
"org/springframework/jdbc/config/jdbc-config.xml");
|
||||
assertCorrectSetup(context, "derbyDataSource");
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -39,6 +39,8 @@ import org.mockito.InOrder;
|
|||
import org.springframework.dao.DataAccessResourceFailureException;
|
||||
import org.springframework.jdbc.UncategorizedSQLException;
|
||||
import org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor;
|
||||
import org.springframework.tests.Assume;
|
||||
import org.springframework.tests.TestGroup;
|
||||
import org.springframework.transaction.CannotCreateTransactionException;
|
||||
import org.springframework.transaction.IllegalTransactionStateException;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
|
|
@ -845,6 +847,8 @@ public class DataSourceTransactionManagerTests {
|
|||
}
|
||||
|
||||
private void doTestTransactionWithTimeout(int timeout) throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
|
||||
PreparedStatement ps = mock(PreparedStatement.class);
|
||||
given(con.getAutoCommit()).willReturn(true);
|
||||
given(con.prepareStatement("some SQL statement")).willReturn(ps);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2010 the original author or authors.
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -16,13 +16,15 @@
|
|||
|
||||
package org.springframework.jdbc.datasource.embedded;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.core.io.ClassRelativeResourceLoader;
|
||||
import org.springframework.dao.DataAccessResourceFailureException;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.jdbc.datasource.init.CannotReadScriptException;
|
||||
import org.springframework.tests.Assume;
|
||||
import org.springframework.tests.TestGroup;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* @author Keith Donald
|
||||
|
|
@ -59,6 +61,8 @@ public class EmbeddedDatabaseBuilderTests {
|
|||
|
||||
@Test
|
||||
public void testBuildDerby() {
|
||||
Assume.group(TestGroup.LONG_RUNNING);
|
||||
|
||||
EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(new ClassRelativeResourceLoader(getClass()));
|
||||
EmbeddedDatabase db = builder.setType(EmbeddedDatabaseType.DERBY).addScript("db-schema-derby.sql").addScript("db-test-data.sql").build();
|
||||
assertDatabaseCreatedAndShutdown(db);
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ configurations {
|
|||
dependencies {
|
||||
castor "org.codehaus.castor:castor-anttasks:1.2"
|
||||
castor "velocity:velocity:1.5"
|
||||
xjc "com.sun.xml:com.springsource.com.sun.tools.xjc:2.1.7"
|
||||
xmlbeans "org.apache.xmlbeans:com.springsource.org.apache.xmlbeans:2.4.0"
|
||||
xjc "com.sun.xml.bind:jaxb-xjc:2.1.7"
|
||||
xmlbeans "org.apache.xmlbeans:xmlbeans:2.4.0"
|
||||
jibx "org.jibx:jibx-bind:1.2.3"
|
||||
jibx "bcel:bcel:5.1"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -237,7 +237,8 @@ public class FailingBeforeAndAfterMethodsTests {
|
|||
|
||||
@BeforeTransaction
|
||||
public void beforeTransaction() {
|
||||
org.testng.Assert.fail("always failing beforeTransaction()");
|
||||
// See SPR-8116
|
||||
//org.testng.Assert.fail("always failing beforeTransaction()");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -250,7 +251,8 @@ public class FailingBeforeAndAfterMethodsTests {
|
|||
|
||||
@AfterTransaction
|
||||
public void afterTransaction() {
|
||||
org.testng.Assert.fail("always failing afterTransaction()");
|
||||
// See SPR-8116
|
||||
//org.testng.Assert.fail("always failing afterTransaction()");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import java.util.HashMap;
|
|||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.servlet.ServletContext;
|
||||
|
|
@ -27,6 +28,7 @@ import javax.servlet.ServletContext;
|
|||
import org.springframework.beans.factory.FactoryBean;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.web.context.ServletContextAware;
|
||||
|
||||
|
|
@ -51,11 +53,11 @@ public class ContentNegotiationManagerFactoryBean
|
|||
|
||||
private boolean ignoreAcceptHeader = false;
|
||||
|
||||
private Properties mediaTypes = new Properties();
|
||||
private Map<String, MediaType> mediaTypes = new HashMap<String, MediaType>();
|
||||
|
||||
private Boolean useJaf;
|
||||
|
||||
private String parameterName;
|
||||
private String parameterName = "format";
|
||||
|
||||
private MediaType defaultContentType;
|
||||
|
||||
|
|
@ -63,7 +65,6 @@ public class ContentNegotiationManagerFactoryBean
|
|||
|
||||
private ServletContext servletContext;
|
||||
|
||||
|
||||
/**
|
||||
* Indicate whether the extension of the request path should be used to determine
|
||||
* the requested media type with the <em>highest priority</em>.
|
||||
|
|
@ -76,21 +77,43 @@ public class ContentNegotiationManagerFactoryBean
|
|||
}
|
||||
|
||||
/**
|
||||
* Add mappings from file extensions to media types.
|
||||
* <p>If this property is not set, the Java Action Framework, if available, may
|
||||
* still be used in conjunction with {@link #setFavorPathExtension(boolean)}.
|
||||
* Add mappings from file extensions to media types represented as strings.
|
||||
* <p>When this mapping is not set or when an extension is not found, the Java
|
||||
* Action Framework, if available, may be used if enabled via
|
||||
* {@link #setFavorPathExtension(boolean)}.
|
||||
*
|
||||
* @see #addMediaType(String, MediaType)
|
||||
* @see #addMediaTypes(Map)
|
||||
*/
|
||||
public void setMediaTypes(Properties mediaTypes) {
|
||||
if (!CollectionUtils.isEmpty(mediaTypes)) {
|
||||
for (Map.Entry<Object, Object> entry : mediaTypes.entrySet()) {
|
||||
String extension = ((String) entry.getKey()).toLowerCase(Locale.ENGLISH);
|
||||
for (Entry<Object, Object> entry : mediaTypes.entrySet()) {
|
||||
String extension = ((String)entry.getKey()).toLowerCase(Locale.ENGLISH);
|
||||
this.mediaTypes.put(extension, MediaType.valueOf((String) entry.getValue()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Properties getMediaTypes() {
|
||||
return this.mediaTypes;
|
||||
/**
|
||||
* Add a mapping from a file extension to a media type.
|
||||
* <p>If no mapping is added or when an extension is not found, the Java
|
||||
* Action Framework, if available, may be used if enabled via
|
||||
* {@link #setFavorPathExtension(boolean)}.
|
||||
*/
|
||||
public void addMediaType(String fileExtension, MediaType mediaType) {
|
||||
this.mediaTypes.put(fileExtension, mediaType);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add mappings from file extensions to media types.
|
||||
* <p>If no mappings are added or when an extension is not found, the Java
|
||||
* Action Framework, if available, may be used if enabled via
|
||||
* {@link #setFavorPathExtension(boolean)}.
|
||||
*/
|
||||
public void addMediaTypes(Map<String, MediaType> mediaTypes) {
|
||||
if (mediaTypes != null) {
|
||||
this.mediaTypes.putAll(mediaTypes);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -98,6 +121,7 @@ public class ContentNegotiationManagerFactoryBean
|
|||
* to map from file extensions to media types. This is used only when
|
||||
* {@link #setFavorPathExtension(boolean)} is set to {@code true}.
|
||||
* <p>The default value is {@code true}.
|
||||
*
|
||||
* @see #parameterName
|
||||
* @see #setMediaTypes(Properties)
|
||||
*/
|
||||
|
|
@ -114,6 +138,7 @@ public class ContentNegotiationManagerFactoryBean
|
|||
* {@code "application/pdf"} regardless of the {@code Accept} header.
|
||||
* <p>To use this option effectively you must also configure the MediaType
|
||||
* type mappings via {@link #setMediaTypes(Properties)}.
|
||||
*
|
||||
* @see #setParameterName(String)
|
||||
*/
|
||||
public void setFavorParameter(boolean favorParameter) {
|
||||
|
|
@ -126,6 +151,7 @@ public class ContentNegotiationManagerFactoryBean
|
|||
* <p>The default parameter name is {@code "format"}.
|
||||
*/
|
||||
public void setParameterName(String parameterName) {
|
||||
Assert.notNull(parameterName, "parameterName is required");
|
||||
this.parameterName = parameterName;
|
||||
}
|
||||
|
||||
|
|
@ -143,8 +169,8 @@ public class ContentNegotiationManagerFactoryBean
|
|||
/**
|
||||
* Set the default content type.
|
||||
* <p>This content type will be used when neither the request path extension,
|
||||
* nor a request parameter, nor the {@code Accept} header could help determine
|
||||
* the requested content type.
|
||||
* nor a request parameter, nor the {@code Accept} header could help
|
||||
* determine the requested content type.
|
||||
*/
|
||||
public void setDefaultContentType(MediaType defaultContentType) {
|
||||
this.defaultContentType = defaultContentType;
|
||||
|
|
@ -157,16 +183,12 @@ public class ContentNegotiationManagerFactoryBean
|
|||
public void afterPropertiesSet() throws Exception {
|
||||
List<ContentNegotiationStrategy> strategies = new ArrayList<ContentNegotiationStrategy>();
|
||||
|
||||
Map<String, MediaType> mediaTypesMap = new HashMap<String, MediaType>();
|
||||
CollectionUtils.mergePropertiesIntoMap(this.mediaTypes, mediaTypesMap);
|
||||
|
||||
if (this.favorPathExtension) {
|
||||
PathExtensionContentNegotiationStrategy strategy;
|
||||
if (this.servletContext != null) {
|
||||
strategy = new ServletPathExtensionContentNegotiationStrategy(this.servletContext, mediaTypesMap);
|
||||
}
|
||||
else {
|
||||
strategy = new PathExtensionContentNegotiationStrategy(mediaTypesMap);
|
||||
strategy = new ServletPathExtensionContentNegotiationStrategy(this.servletContext, this.mediaTypes);
|
||||
} else {
|
||||
strategy = new PathExtensionContentNegotiationStrategy(this.mediaTypes);
|
||||
}
|
||||
if (this.useJaf != null) {
|
||||
strategy.setUseJaf(this.useJaf);
|
||||
|
|
@ -175,7 +197,7 @@ public class ContentNegotiationManagerFactoryBean
|
|||
}
|
||||
|
||||
if (this.favorParameter) {
|
||||
ParameterContentNegotiationStrategy strategy = new ParameterContentNegotiationStrategy(mediaTypesMap);
|
||||
ParameterContentNegotiationStrategy strategy = new ParameterContentNegotiationStrategy(this.mediaTypes);
|
||||
strategy.setParameterName(this.parameterName);
|
||||
strategies.add(strategy);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,7 +44,6 @@ public class ParameterContentNegotiationStrategy extends AbstractMappingContentN
|
|||
*/
|
||||
public ParameterContentNegotiationStrategy(Map<String, MediaType> mediaTypes) {
|
||||
super(mediaTypes);
|
||||
Assert.notEmpty(mediaTypes, "Cannot look up media types without any mappings");
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -52,6 +51,7 @@ public class ParameterContentNegotiationStrategy extends AbstractMappingContentN
|
|||
* <p>The default parameter name is {@code format}.
|
||||
*/
|
||||
public void setParameterName(String parameterName) {
|
||||
Assert.notNull(parameterName, "parameterName is required");
|
||||
this.parameterName = parameterName;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,8 @@ import static org.junit.Assert.assertEquals;
|
|||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Properties;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
|
@ -74,9 +75,9 @@ public class ContentNegotiationManagerFactoryBeanTests {
|
|||
|
||||
@Test
|
||||
public void addMediaTypes() throws Exception {
|
||||
Properties mediaTypes = new Properties();
|
||||
mediaTypes.put("json", MediaType.APPLICATION_JSON_VALUE);
|
||||
this.factoryBean.setMediaTypes(mediaTypes);
|
||||
Map<String, MediaType> mediaTypes = new HashMap<String, MediaType>();
|
||||
mediaTypes.put("json", MediaType.APPLICATION_JSON);
|
||||
this.factoryBean.addMediaTypes(mediaTypes);
|
||||
|
||||
this.factoryBean.afterPropertiesSet();
|
||||
ContentNegotiationManager manager = this.factoryBean.getObject();
|
||||
|
|
@ -88,17 +89,16 @@ public class ContentNegotiationManagerFactoryBeanTests {
|
|||
@Test
|
||||
public void favorParameter() throws Exception {
|
||||
this.factoryBean.setFavorParameter(true);
|
||||
this.factoryBean.setParameterName("f");
|
||||
|
||||
Properties mediaTypes = new Properties();
|
||||
mediaTypes.put("json", MediaType.APPLICATION_JSON_VALUE);
|
||||
this.factoryBean.setMediaTypes(mediaTypes);
|
||||
Map<String, MediaType> mediaTypes = new HashMap<String, MediaType>();
|
||||
mediaTypes.put("json", MediaType.APPLICATION_JSON);
|
||||
this.factoryBean.addMediaTypes(mediaTypes);
|
||||
|
||||
this.factoryBean.afterPropertiesSet();
|
||||
ContentNegotiationManager manager = this.factoryBean.getObject();
|
||||
|
||||
this.servletRequest.setRequestURI("/flower");
|
||||
this.servletRequest.addParameter("f", "json");
|
||||
this.servletRequest.addParameter("format", "json");
|
||||
|
||||
assertEquals(Arrays.asList(MediaType.APPLICATION_JSON), manager.resolveMediaTypes(this.webRequest));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
*/
|
||||
package org.springframework.web.servlet.config.annotation;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.ServletContext;
|
||||
|
|
@ -36,7 +37,9 @@ import org.springframework.web.accept.ContentNegotiationManagerFactoryBean;
|
|||
*/
|
||||
public class ContentNegotiationConfigurer {
|
||||
|
||||
private ContentNegotiationManagerFactoryBean factoryBean = new ContentNegotiationManagerFactoryBean();
|
||||
private final ContentNegotiationManagerFactoryBean factoryBean = new ContentNegotiationManagerFactoryBean();
|
||||
|
||||
private final Map<String, MediaType> mediaTypes = new HashMap<String, MediaType>();
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -64,7 +67,7 @@ public class ContentNegotiationConfigurer {
|
|||
* still be used in conjunction with {@link #favorPathExtension(boolean)}.
|
||||
*/
|
||||
public ContentNegotiationConfigurer mediaType(String extension, MediaType mediaType) {
|
||||
this.factoryBean.getMediaTypes().put(extension, mediaType);
|
||||
this.mediaTypes.put(extension, mediaType);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
|
@ -75,7 +78,7 @@ public class ContentNegotiationConfigurer {
|
|||
*/
|
||||
public ContentNegotiationConfigurer mediaTypes(Map<String, MediaType> mediaTypes) {
|
||||
if (mediaTypes != null) {
|
||||
this.factoryBean.getMediaTypes().putAll(mediaTypes);
|
||||
this.mediaTypes.putAll(mediaTypes);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
|
@ -86,7 +89,7 @@ public class ContentNegotiationConfigurer {
|
|||
* still be used in conjunction with {@link #favorPathExtension(boolean)}.
|
||||
*/
|
||||
public ContentNegotiationConfigurer replaceMediaTypes(Map<String, MediaType> mediaTypes) {
|
||||
this.factoryBean.getMediaTypes().clear();
|
||||
this.mediaTypes.clear();
|
||||
mediaTypes(mediaTypes);
|
||||
return this;
|
||||
}
|
||||
|
|
@ -157,6 +160,9 @@ public class ContentNegotiationConfigurer {
|
|||
* Return the configured {@link ContentNegotiationManager} instance
|
||||
*/
|
||||
protected ContentNegotiationManager getContentNegotiationManager() throws Exception {
|
||||
if (!this.mediaTypes.isEmpty()) {
|
||||
this.factoryBean.addMediaTypes(mediaTypes);
|
||||
}
|
||||
this.factoryBean.afterPropertiesSet();
|
||||
return this.factoryBean.getObject();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ import java.util.LinkedHashSet;
|
|||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.activation.FileTypeMap;
|
||||
|
|
@ -196,7 +197,9 @@ public class ContentNegotiatingViewResolver extends WebApplicationObjectSupport
|
|||
@Deprecated
|
||||
public void setMediaTypes(Map<String, String> mediaTypes) {
|
||||
if (mediaTypes != null) {
|
||||
this.cnManagerFactoryBean.getMediaTypes().putAll(mediaTypes);
|
||||
Properties props = new Properties();
|
||||
props.putAll(mediaTypes);
|
||||
this.cnManagerFactoryBean.setMediaTypes(props);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue