From d0da787f70cd7288e08d58857564c5898a71861a Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Fri, 20 May 2011 20:46:35 +0200 Subject: [PATCH] Removed mapping-context-ref from repositories namespace. We now take the mapping context from the wired MongoTemplate. --- .../config/MongoRepositoryConfigParser.java | 43 ++----------------- .../SimpleMongoRepositoryConfiguration.java | 24 ----------- .../MongoRepositoryFactoryBean.java | 25 +++-------- .../mongodb/config/spring-mongo-1.0.xsd | 7 --- .../MongoRepositoryFactoryUnitTests.java | 15 ++++++- .../MongoNamespaceIntegrationTests.java | 1 - ...rsonRepositoryIntegrationTests-context.xml | 1 - 7 files changed, 22 insertions(+), 94 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/config/MongoRepositoryConfigParser.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/config/MongoRepositoryConfigParser.java index 7c6562028..7e90d8aaa 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/config/MongoRepositoryConfigParser.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/config/MongoRepositoryConfigParser.java @@ -15,11 +15,9 @@ */ package org.springframework.data.document.mongodb.config; -import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.data.document.mongodb.config.SimpleMongoRepositoryConfiguration.MongoRepositoryConfiguration; -import org.springframework.data.mapping.model.MappingContext; import org.springframework.data.repository.config.AbstractRepositoryConfigDefinitionParser; import org.w3c.dom.Element; @@ -32,15 +30,10 @@ import org.w3c.dom.Element; public class MongoRepositoryConfigParser extends AbstractRepositoryConfigDefinitionParser { - private static final String MAPPING_CONTEXT_DEFAULT = BeanNames.MAPPING_CONTEXT; - /* - * (non-Javadoc) - * - * @see org.springframework.data.repository.config. - * AbstractRepositoryConfigDefinitionParser - * #getGlobalRepositoryConfigInformation(org.w3c.dom.Element) - */ + * (non-Javadoc) + * @see org.springframework.data.repository.config.AbstractRepositoryConfigDefinitionParser#getGlobalRepositoryConfigInformation(org.w3c.dom.Element) + */ @Override protected SimpleMongoRepositoryConfiguration getGlobalRepositoryConfigInformation(Element element) { @@ -56,35 +49,5 @@ public class MongoRepositoryConfigParser extends BeanDefinitionRegistry registry, Object beanSource) { builder.addPropertyReference("template", context.getMongoTemplateRef()); - - String mappingContextRef = getMappingContextReference(context, registry); - if (mappingContextRef != null) { - builder.addPropertyReference("mappingContext", mappingContextRef); - } - } - - /** - * Returns the bean name of a {@link MappingContext} to be wired. Will inspect the namespace attribute first and if no - * config is found in that place it will try to lookup the default one. Will return {@literal null} if neither one is - * available. - * - * @param config - * @param registry - * @return - */ - private String getMappingContextReference(MongoRepositoryConfiguration config, BeanDefinitionRegistry registry) { - - String contextRef = config.getMappingContextRef(); - - if (contextRef != null) { - return contextRef; - } - - try { - registry.getBeanDefinition(MAPPING_CONTEXT_DEFAULT); - return MAPPING_CONTEXT_DEFAULT; - } catch (NoSuchBeanDefinitionException e) { - return null; - } } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/config/SimpleMongoRepositoryConfiguration.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/config/SimpleMongoRepositoryConfiguration.java index f8428ce02..edf7d2826 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/config/SimpleMongoRepositoryConfiguration.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/config/SimpleMongoRepositoryConfiguration.java @@ -36,8 +36,6 @@ public class SimpleMongoRepositoryConfiguration private static final String MONGO_TEMPLATE_REF = "mongo-template-ref"; private static final String DEFAULT_MONGO_TEMPLATE_REF = "mongoTemplate"; - private static final String MAPPING_CONTEXT_REF = "mongo-mapping-context-ref"; - /** * Creates a new {@link SimpleMongoRepositoryConfiguration} for the given {@link Element}. * @@ -59,12 +57,6 @@ public class SimpleMongoRepositoryConfiguration return StringUtils.hasText(templateRef) ? templateRef : DEFAULT_MONGO_TEMPLATE_REF; } - public String getMappingContextRef() { - - String attribute = getSource().getAttribute(MAPPING_CONTEXT_REF); - return StringUtils.hasText(attribute) ? attribute : null; - } - /* * (non-Javadoc) * @@ -98,8 +90,6 @@ public class SimpleMongoRepositoryConfiguration SingleRepositoryConfigInformation { String getMongoTemplateRef(); - - String getMappingContextRef(); } /** @@ -132,13 +122,6 @@ public class SimpleMongoRepositoryConfiguration return getAttribute(MONGO_TEMPLATE_REF); } - - /* (non-Javadoc) - * @see org.springframework.data.document.mongodb.config.SimpleMongoRepositoryConfiguration.MongoRepositoryConfiguration#getMappingContextRef() - */ - public String getMappingContextRef() { - return getAttribute(MAPPING_CONTEXT_REF); - } } /** @@ -171,12 +154,5 @@ public class SimpleMongoRepositoryConfiguration return getParent().getMongoTemplateRef(); } - - /* (non-Javadoc) - * @see org.springframework.data.document.mongodb.config.SimpleMongoRepositoryConfiguration.MongoRepositoryConfiguration#getMappingContextRef() - */ - public String getMappingContextRef() { - return getParent().getMappingContextRef(); - } } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/MongoRepositoryFactoryBean.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/MongoRepositoryFactoryBean.java index 1d18a8ef1..64ad086f0 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/MongoRepositoryFactoryBean.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/MongoRepositoryFactoryBean.java @@ -57,7 +57,6 @@ public class MongoRepositoryFactoryBean, S, ID exten RepositoryFactoryBeanSupport { private MongoTemplate template; - private MappingContext, MongoPersistentProperty> mappingContext; /** * Configures the {@link MongoTemplate} to be used. @@ -70,16 +69,6 @@ public class MongoRepositoryFactoryBean, S, ID exten this.template = template; } - /** - * Sets the {@link MappingContext} used with the underlying {@link MongoTemplate}. - * - * @param mappingContext - * the mappingContext to set - */ - public void setMappingContext(MappingContext, MongoPersistentProperty> mappingContext) { - this.mappingContext = mappingContext; - } - /* * (non-Javadoc) * @@ -90,7 +79,7 @@ public class MongoRepositoryFactoryBean, S, ID exten @Override protected RepositoryFactorySupport createRepositoryFactory() { - MongoRepositoryFactory factory = new MongoRepositoryFactory(template, mappingContext); + MongoRepositoryFactory factory = new MongoRepositoryFactory(template); factory.addQueryCreationListener(new IndexEnsuringQueryCreationListener(template)); return factory; } @@ -107,7 +96,6 @@ public class MongoRepositoryFactoryBean, S, ID exten super.afterPropertiesSet(); Assert.notNull(template, "MongoTemplate must not be null!"); - Assert.notNull(mappingContext, "MappingContext must not be null!"); } /** @@ -127,13 +115,12 @@ public class MongoRepositoryFactoryBean, S, ID exten * must not be {@literal null} * @param mappingContext */ - public MongoRepositoryFactory(MongoTemplate template, - MappingContext, MongoPersistentProperty> mappingContext) { + public MongoRepositoryFactory(MongoTemplate template) { Assert.notNull(template); - Assert.notNull(mappingContext); this.template = template; - this.entityInformationCreator = new EntityInformationCreator(mappingContext); + this.entityInformationCreator = new EntityInformationCreator(template.getConverter() + .getMappingContext()); } /* @@ -252,9 +239,9 @@ public class MongoRepositoryFactoryBean, S, ID exten */ static class EntityInformationCreator { - private final MappingContext, MongoPersistentProperty> mappingContext; + private final MappingContext, MongoPersistentProperty> mappingContext; - public EntityInformationCreator(MappingContext, MongoPersistentProperty> mappingContext) { + public EntityInformationCreator(MappingContext, MongoPersistentProperty> mappingContext) { Assert.notNull(mappingContext); this.mappingContext = mappingContext; } diff --git a/spring-data-mongodb/src/main/resources/org/springframework/data/document/mongodb/config/spring-mongo-1.0.xsd b/spring-data-mongodb/src/main/resources/org/springframework/data/document/mongodb/config/spring-mongo-1.0.xsd index 59f3880b6..2e49ec8a0 100644 --- a/spring-data-mongodb/src/main/resources/org/springframework/data/document/mongodb/config/spring-mongo-1.0.xsd +++ b/spring-data-mongodb/src/main/resources/org/springframework/data/document/mongodb/config/spring-mongo-1.0.xsd @@ -116,13 +116,6 @@ The password to use when connecting to a MongoDB server. - - - - The reference to a MappingContext. Will pick up a bean named 'mappingContext' by default if available. - - - diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/MongoRepositoryFactoryUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/MongoRepositoryFactoryUnitTests.java index fef2b7276..60f1cdb60 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/MongoRepositoryFactoryUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/MongoRepositoryFactoryUnitTests.java @@ -20,11 +20,13 @@ import static org.mockito.Mockito.*; import java.io.Serializable; +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.springframework.data.document.mongodb.MongoTemplate; +import org.springframework.data.document.mongodb.convert.MongoConverter; import org.springframework.data.document.mongodb.mapping.MongoPersistentEntity; import org.springframework.data.document.mongodb.mapping.MongoPersistentProperty; import org.springframework.data.document.mongodb.repository.MongoRepositoryFactoryBean.MongoRepositoryFactory; @@ -40,6 +42,9 @@ public class MongoRepositoryFactoryUnitTests { @Mock MongoTemplate template; + + @Mock + MongoConverter converter; @Mock MappingContext, MongoPersistentProperty> mappingContext; @@ -47,10 +52,16 @@ public class MongoRepositoryFactoryUnitTests { @Mock @SuppressWarnings("rawtypes") MongoPersistentEntity entity; + + @Before + public void setUp() { + when(template.getConverter()).thenReturn(converter); + when(converter.getMappingContext()).thenReturn((MappingContext) mappingContext); + } @Test(expected = IllegalArgumentException.class) public void rejectsInvalidIdType() throws Exception { - MongoRepositoryFactory factory = new MongoRepositoryFactory(template, null); + MongoRepositoryFactory factory = new MongoRepositoryFactory(template); factory.getRepository(SampleRepository.class); } @@ -61,7 +72,7 @@ public class MongoRepositoryFactoryUnitTests { when(mappingContext.getPersistentEntity(Person.class)).thenReturn(entity); when(entity.getType()).thenReturn(Person.class); - MongoRepositoryFactory factory = new MongoRepositoryFactory(template, mappingContext); + MongoRepositoryFactory factory = new MongoRepositoryFactory(template); MongoEntityInformation entityInformation = factory.getEntityInformation(Person.class); assertTrue(entityInformation instanceof MappingMongoEntityInformation); } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/config/MongoNamespaceIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/config/MongoNamespaceIntegrationTests.java index 2870d6ad7..ff9f4046a 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/config/MongoNamespaceIntegrationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/config/MongoNamespaceIntegrationTests.java @@ -25,6 +25,5 @@ public class MongoNamespaceIntegrationTests extends AbstractPersonRepositoryInte getClass())); BeanDefinition definition = factory.getBeanDefinition("personRepository"); assertThat(definition, is(notNullValue())); - assertThat(definition.getPropertyValues().getPropertyValue("mappingContext"), is(notNullValue())); } } diff --git a/spring-data-mongodb/src/test/resources/org/springframework/data/document/mongodb/repository/PersonRepositoryIntegrationTests-context.xml b/spring-data-mongodb/src/test/resources/org/springframework/data/document/mongodb/repository/PersonRepositoryIntegrationTests-context.xml index db602c671..7850886d5 100644 --- a/spring-data-mongodb/src/test/resources/org/springframework/data/document/mongodb/repository/PersonRepositoryIntegrationTests-context.xml +++ b/spring-data-mongodb/src/test/resources/org/springframework/data/document/mongodb/repository/PersonRepositoryIntegrationTests-context.xml @@ -15,7 +15,6 @@ -