Browse Source

DATADOC-119 improved the converter parsing

pull/1/head
Thomas Risberg 15 years ago
parent
commit
35629f5370
  1. 12
      spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/config/MappingMongoConverterParser.java
  2. 4
      spring-data-mongodb/src/test/resources/org/springframework/data/document/mongodb/config/MongoNamespaceTests-context.xml

12
spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/config/MappingMongoConverterParser.java

@ -19,11 +19,13 @@ package org.springframework.data.document.mongodb.config; @@ -19,11 +19,13 @@ package org.springframework.data.document.mongodb.config;
import java.util.List;
import java.util.Set;
import org.springframework.beans.BeanMetadataElement;
import org.springframework.beans.MutablePropertyValues;
import org.springframework.beans.factory.BeanDefinitionStoreException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.BeanDefinitionHolder;
import org.springframework.beans.factory.config.RuntimeBeanNameReference;
import org.springframework.beans.factory.config.RuntimeBeanReference;
import org.springframework.beans.factory.parsing.CompositeComponentDefinition;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
@ -145,23 +147,21 @@ public class MappingMongoConverterParser extends AbstractBeanDefinitionParser { @@ -145,23 +147,21 @@ public class MappingMongoConverterParser extends AbstractBeanDefinitionParser {
return classes;
}
public BeanDefinition parseConverter(Element element, ParserContext parserContext) {
public BeanMetadataElement parseConverter(Element element, ParserContext parserContext) {
String converterRef= element.getAttribute("ref");
if (StringUtils.hasText(converterRef)) {
//TODO: need to make this work for beans not in the registry yet
BeanDefinition converterBean = parserContext.getRegistry().getBeanDefinition(converterRef);
return converterBean;
return new RuntimeBeanReference(converterRef);
}
Element beanElement = DomUtils.getChildElementByTagName(element, "bean");
if (beanElement != null) {
BeanDefinitionHolder beanDef = parserContext.getDelegate().parseBeanDefinitionElement(beanElement);
beanDef = parserContext.getDelegate().decorateBeanDefinitionIfRequired(beanElement, beanDef);
return beanDef.getBeanDefinition();
return beanDef;
}
parserContext.getReaderContext().error(
"Element <converter> must specify either 'ref' or contain a bean definition for the converter", element);
"Element <converter> must specify 'ref' or contain a bean definition for the converter", element);
return null;
}
}

4
spring-data-mongodb/src/test/resources/org/springframework/data/document/mongodb/config/MongoNamespaceTests-context.xml

@ -12,8 +12,6 @@ @@ -12,8 +12,6 @@
<mongo:mongo id="defaultMongo" host="localhost" port="27017"/>
<bean id="readConverter" class="org.springframework.data.document.mongodb.PersonReadConverter"/>
<mongo:mapping-converter>
<mongo:custom-converters>
<mongo:converter ref="readConverter"/>
@ -23,6 +21,8 @@ @@ -23,6 +21,8 @@
</mongo:custom-converters>
</mongo:mapping-converter>
<bean id="readConverter" class="org.springframework.data.document.mongodb.PersonReadConverter"/>
<bean id="mongoTemplate" class="org.springframework.data.document.mongodb.MongoTemplate">
<constructor-arg name="mongo" ref="mongo"/>
<constructor-arg name="databaseName" value="database"/>

Loading…
Cancel
Save