From c34983b22b614db775e529d4e7439f685d9d4bf4 Mon Sep 17 00:00:00 2001 From: Thomas Darimont Date: Thu, 31 Oct 2013 12:18:54 +0100 Subject: [PATCH] DATACMNS-391 - Ensure compatibility with Spring Framework 4.0. Some tests required an explicit dependency to servlet-api-3.x. The GenericApplicationContext doesn't refresh automatically in Spring 4.x we thus we have to call refresh manually. Added a specific version of populators.xml for Spring 4.x since the jaxb2-marshaller element definition no longer renamed the contextPath attribute to context-path in 4.x. Original pull request: #52. --- pom.xml | 7 +++++++ ...rBeanDefinitionParserIntegrationTests.java | 15 ++++++++++--- .../DomainClassConverterIntegrationTests.java | 11 ++++------ .../DomainClassConverterUnitTests.java | 17 ++++++++------- ...ClassPropertyEditorRegistrarUnitTests.java | 7 +++---- .../support/RepositoriesUnitTests.java | 4 ++-- .../config/populators-spring-4.0.xml | 21 +++++++++++++++++++ 7 files changed, 59 insertions(+), 23 deletions(-) create mode 100644 src/test/resources/org/springframework/data/repository/config/populators-spring-4.0.xml diff --git a/pom.xml b/pom.xml index a13efe169..4adeda446 100644 --- a/pom.xml +++ b/pom.xml @@ -133,6 +133,13 @@ true + + javax.servlet + javax.servlet-api + 3.0.1 + test + + javax.enterprise diff --git a/src/test/java/org/springframework/data/repository/config/ResourceReaderRepositoryPopulatorBeanDefinitionParserIntegrationTests.java b/src/test/java/org/springframework/data/repository/config/ResourceReaderRepositoryPopulatorBeanDefinitionParserIntegrationTests.java index c49481bb5..971e7870c 100644 --- a/src/test/java/org/springframework/data/repository/config/ResourceReaderRepositoryPopulatorBeanDefinitionParserIntegrationTests.java +++ b/src/test/java/org/springframework/data/repository/config/ResourceReaderRepositoryPopulatorBeanDefinitionParserIntegrationTests.java @@ -24,6 +24,7 @@ import org.junit.Test; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.beans.factory.xml.XmlBeanDefinitionReader; +import org.springframework.core.SpringVersion; import org.springframework.core.io.ClassPathResource; import org.springframework.data.repository.init.Jackson2ResourceReader; import org.springframework.data.repository.init.JacksonResourceReader; @@ -40,6 +41,14 @@ import org.springframework.test.util.ReflectionTestUtils; */ public class ResourceReaderRepositoryPopulatorBeanDefinitionParserIntegrationTests { + private ClassPathResource getPopulatorResource() { + String populatorsResourceName = "populators.xml"; + if (SpringVersion.getVersion().startsWith("4.0")) { + populatorsResourceName = "populators-spring-4.0.xml"; + } + return new ClassPathResource(populatorsResourceName, getClass()); + } + /** * @see DATACMNS-58 */ @@ -48,7 +57,7 @@ public class ResourceReaderRepositoryPopulatorBeanDefinitionParserIntegrationTes DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory); - reader.loadBeanDefinitions(new ClassPathResource("populators.xml", getClass())); + reader.loadBeanDefinitions(getPopulatorResource()); BeanDefinition definition = beanFactory.getBeanDefinition("jackson-populator"); assertThat(definition, is(notNullValue())); @@ -70,7 +79,7 @@ public class ResourceReaderRepositoryPopulatorBeanDefinitionParserIntegrationTes DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory); - reader.loadBeanDefinitions(new ClassPathResource("populators.xml", getClass())); + reader.loadBeanDefinitions(getPopulatorResource()); BeanDefinition definition = beanFactory.getBeanDefinition("jackson2-populator"); assertThat(definition, is(notNullValue())); @@ -92,7 +101,7 @@ public class ResourceReaderRepositoryPopulatorBeanDefinitionParserIntegrationTes DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory); - reader.loadBeanDefinitions(new ClassPathResource("populators.xml", getClass())); + reader.loadBeanDefinitions(getPopulatorResource()); BeanDefinition definition = beanFactory.getBeanDefinition("xml-populator"); assertThat(definition, is(notNullValue())); diff --git a/src/test/java/org/springframework/data/repository/support/DomainClassConverterIntegrationTests.java b/src/test/java/org/springframework/data/repository/support/DomainClassConverterIntegrationTests.java index 807c3c051..200b3b06d 100644 --- a/src/test/java/org/springframework/data/repository/support/DomainClassConverterIntegrationTests.java +++ b/src/test/java/org/springframework/data/repository/support/DomainClassConverterIntegrationTests.java @@ -48,13 +48,9 @@ import org.springframework.data.repository.core.support.RepositoryFactoryInforma @RunWith(MockitoJUnitRunner.class) public class DomainClassConverterIntegrationTests { - @Mock - @SuppressWarnings("rawtypes") - RepositoryFactoryBeanSupport factory; - @Mock - PersonRepository repository; - @Mock - RepositoryInformation information; + @Mock @SuppressWarnings("rawtypes") RepositoryFactoryBeanSupport factory; + @Mock PersonRepository repository; + @Mock RepositoryInformation information; @Test @SuppressWarnings({ "rawtypes", "unchecked" }) @@ -82,6 +78,7 @@ public class DomainClassConverterIntegrationTests { when(factory.getRepositoryInformation()).thenReturn(information); GenericApplicationContext context = new GenericApplicationContext(beanFactory); + context.refresh(); assertThat(context.getBeansOfType(RepositoryFactoryInformation.class).values().size(), is(1)); DomainClassConverter converter = new DomainClassConverter(new DefaultConversionService()); diff --git a/src/test/java/org/springframework/data/repository/support/DomainClassConverterUnitTests.java b/src/test/java/org/springframework/data/repository/support/DomainClassConverterUnitTests.java index 7c02af696..41b3162e4 100644 --- a/src/test/java/org/springframework/data/repository/support/DomainClassConverterUnitTests.java +++ b/src/test/java/org/springframework/data/repository/support/DomainClassConverterUnitTests.java @@ -51,14 +51,12 @@ public class DomainClassConverterUnitTests { static final User USER = new User(); - @SuppressWarnings("rawtypes") - DomainClassConverter converter; + @SuppressWarnings("rawtypes") DomainClassConverter converter; TypeDescriptor sourceDescriptor; TypeDescriptor targetDescriptor; - @Mock - DefaultConversionService service; + @Mock DefaultConversionService service; @Before @SuppressWarnings({ "unchecked", "rawtypes" }) @@ -76,7 +74,9 @@ public class DomainClassConverterUnitTests { @Test public void matchFailsIfNoDaoAvailable() throws Exception { - converter.setApplicationContext(new GenericApplicationContext()); + GenericApplicationContext ctx = new GenericApplicationContext(); + ctx.refresh(); + converter.setApplicationContext(ctx); assertMatches(false); } @@ -143,7 +143,8 @@ public class DomainClassConverterUnitTests { public void discoversFactoryAndRepoFromParentApplicationContext() { ApplicationContext parent = initContextWithRepo(); - ApplicationContext context = new GenericApplicationContext(parent); + GenericApplicationContext context = new GenericApplicationContext(parent); + context.refresh(); when(service.canConvert(String.class, Long.class)).thenReturn(true); @@ -159,7 +160,9 @@ public class DomainClassConverterUnitTests { DefaultListableBeanFactory factory = new DefaultListableBeanFactory(); factory.registerBeanDefinition("provider", builder.getBeanDefinition()); - return new GenericApplicationContext(factory); + GenericApplicationContext ctx = new GenericApplicationContext(factory); + ctx.refresh(); + return ctx; } private static class User { diff --git a/src/test/java/org/springframework/data/repository/support/DomainClassPropertyEditorRegistrarUnitTests.java b/src/test/java/org/springframework/data/repository/support/DomainClassPropertyEditorRegistrarUnitTests.java index 649cbb4eb..ae703d54d 100644 --- a/src/test/java/org/springframework/data/repository/support/DomainClassPropertyEditorRegistrarUnitTests.java +++ b/src/test/java/org/springframework/data/repository/support/DomainClassPropertyEditorRegistrarUnitTests.java @@ -28,7 +28,6 @@ import org.mockito.runners.MockitoJUnitRunner; import org.springframework.beans.PropertyEditorRegistry; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.support.DefaultListableBeanFactory; -import org.springframework.context.ApplicationContext; import org.springframework.context.support.GenericApplicationContext; import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.core.support.DummyRepositoryFactoryBean; @@ -41,11 +40,10 @@ import org.springframework.data.repository.core.support.DummyRepositoryFactoryBe @RunWith(MockitoJUnitRunner.class) public class DomainClassPropertyEditorRegistrarUnitTests { - @Mock - PropertyEditorRegistry registry; + @Mock PropertyEditorRegistry registry; DomainClassPropertyEditorRegistrar registrar; - ApplicationContext context; + GenericApplicationContext context; DomainClassPropertyEditor reference; @Before @@ -58,6 +56,7 @@ public class DomainClassPropertyEditorRegistrarUnitTests { factory.registerBeanDefinition("provider", builder.getBeanDefinition()); context = new GenericApplicationContext(factory); + context.refresh(); registrar = new DomainClassPropertyEditorRegistrar(); } diff --git a/src/test/java/org/springframework/data/repository/support/RepositoriesUnitTests.java b/src/test/java/org/springframework/data/repository/support/RepositoriesUnitTests.java index ece9e8082..fa6e8756e 100644 --- a/src/test/java/org/springframework/data/repository/support/RepositoriesUnitTests.java +++ b/src/test/java/org/springframework/data/repository/support/RepositoriesUnitTests.java @@ -33,7 +33,6 @@ import org.mockito.runners.MockitoJUnitRunner; import org.springframework.beans.factory.support.AbstractBeanDefinition; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.support.DefaultListableBeanFactory; -import org.springframework.context.ApplicationContext; import org.springframework.context.support.GenericApplicationContext; import org.springframework.data.mapping.PersistentEntity; import org.springframework.data.mapping.context.SampleMappingContext; @@ -58,7 +57,7 @@ import org.springframework.data.repository.query.QueryMethod; @RunWith(MockitoJUnitRunner.class) public class RepositoriesUnitTests { - ApplicationContext context; + GenericApplicationContext context; @Rule public ExpectedException exception = ExpectedException.none(); @@ -70,6 +69,7 @@ public class RepositoriesUnitTests { beanFactory.registerBeanDefinition("personRepository", getRepositoryBeanDefinition(PersonRepository.class)); context = new GenericApplicationContext(beanFactory); + context.refresh(); } private AbstractBeanDefinition getRepositoryBeanDefinition(Class repositoryInterface) { diff --git a/src/test/resources/org/springframework/data/repository/config/populators-spring-4.0.xml b/src/test/resources/org/springframework/data/repository/config/populators-spring-4.0.xml new file mode 100644 index 000000000..3ef2e07f6 --- /dev/null +++ b/src/test/resources/org/springframework/data/repository/config/populators-spring-4.0.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + +