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.
This commit is contained in:
Thomas Darimont
2013-10-31 12:18:54 +01:00
committed by Oliver Gierke
parent 3a7acf29d7
commit c34983b22b
7 changed files with 59 additions and 23 deletions

View File

@@ -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()));

View File

@@ -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());

View File

@@ -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 {

View File

@@ -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<Entity, Serializable> reference;
@Before
@@ -58,6 +56,7 @@ public class DomainClassPropertyEditorRegistrarUnitTests {
factory.registerBeanDefinition("provider", builder.getBeanDefinition());
context = new GenericApplicationContext(factory);
context.refresh();
registrar = new DomainClassPropertyEditorRegistrar();
}

View File

@@ -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) {