diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/CassandraMappingBeanFactoryPostProcessor.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/CassandraMappingBeanFactoryPostProcessor.java index be7c97128..46a481612 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/CassandraMappingBeanFactoryPostProcessor.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/CassandraMappingBeanFactoryPostProcessor.java @@ -181,7 +181,7 @@ public class CassandraMappingBeanFactoryPostProcessor implements BeanFactoryPost .addConstructorArgReference(converterBeanName) // .getBeanDefinition(); - BeanDefinitionHolder template = new BeanDefinitionHolder(beanDefinition, DefaultBeanNames.TEMPLATE); + BeanDefinitionHolder template = new BeanDefinitionHolder(beanDefinition, DefaultBeanNames.DATA_TEMPLATE); registry.registerBeanDefinition(template.getBeanName(), template.getBeanDefinition()); return template; diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/xml/CassandraTemplateParser.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/xml/CassandraTemplateParser.java index 2394eb154..d57d6963c 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/xml/CassandraTemplateParser.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/xml/CassandraTemplateParser.java @@ -15,11 +15,13 @@ */ package org.springframework.data.cassandra.config.xml; +import static org.springframework.cassandra.config.xml.ParsingUtils.addOptionalPropertyReference; + import org.springframework.beans.factory.BeanDefinitionStoreException; import org.springframework.beans.factory.support.AbstractBeanDefinition; import org.springframework.beans.factory.support.BeanDefinitionBuilder; +import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; -import org.springframework.cassandra.config.xml.CassandraCqlTemplateParser; import org.springframework.data.cassandra.config.CassandraTemplateFactoryBean; import org.springframework.data.cassandra.config.DefaultBeanNames; import org.springframework.util.StringUtils; @@ -31,7 +33,7 @@ import org.w3c.dom.Element; * @author Matthew T. Adams * @author Mark Paluch */ -public class CassandraTemplateParser extends CassandraCqlTemplateParser { +public class CassandraTemplateParser extends AbstractSingleBeanDefinitionParser { /* (non-Javadoc) * @see org.springframework.cassandra.config.xml.CassandraCqlTemplateParser#getBeanClass(org.w3c.dom.Element) @@ -48,9 +50,6 @@ public class CassandraTemplateParser extends CassandraCqlTemplateParser { protected String resolveId(Element element, AbstractBeanDefinition definition, ParserContext parserContext) throws BeanDefinitionStoreException { - // TODO: super.resolveId resolves always to a non-empty id because its fallback is DefaultCqlBeanNames.TEMPLATE. - // This also means that CassandraTemplate is exposed as bean named cqlTemplate. This should change with 2.0 - // because 2.0 breaks up inheritance. String id = super.resolveId(element, definition, parserContext); return StringUtils.hasText(id) ? id : DefaultBeanNames.DATA_TEMPLATE; } @@ -65,14 +64,7 @@ public class CassandraTemplateParser extends CassandraCqlTemplateParser { super.doParse(element, parserContext, builder); - parseConverterAttribute(element, parserContext, builder); - } - - protected void parseConverterAttribute(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { - String converterRef = element.getAttribute("cassandra-converter-ref"); - if (!StringUtils.hasText(converterRef)) { - converterRef = DefaultBeanNames.CONVERTER; - } - builder.addPropertyReference("converter", converterRef); + addOptionalPropertyReference(builder, "converter", element, "cassandra-converter-ref", DefaultBeanNames.CONVERTER); + addOptionalPropertyReference(builder, "session", element, "session-ref", DefaultBeanNames.SESSION); } } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/config/CassandraRepositoryConfigurationExtension.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/config/CassandraRepositoryConfigurationExtension.java index 9c26153ee..482bf91ff 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/config/CassandraRepositoryConfigurationExtension.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/config/CassandraRepositoryConfigurationExtension.java @@ -20,7 +20,6 @@ import java.util.Collection; import java.util.Collections; import org.springframework.beans.factory.support.BeanDefinitionBuilder; -import org.springframework.cassandra.config.xml.DefaultCqlBeanNames; import org.springframework.cassandra.config.xml.ParsingUtils; import org.springframework.core.annotation.AnnotationAttributes; import org.springframework.data.cassandra.config.DefaultBeanNames; @@ -78,9 +77,8 @@ public class CassandraRepositoryConfigurationExtension extends RepositoryConfigu Element element = config.getElement(); - // TODO: XML-based configuration uses a different bean name than Java config ParsingUtils.addOptionalPropertyReference(builder, "cassandraTemplate", element, CASSANDRA_TEMPLATE_REF, - DefaultCqlBeanNames.TEMPLATE); + DefaultBeanNames.DATA_TEMPLATE); } /* (non-Javadoc) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/config/EnableCassandraRepositories.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/config/EnableCassandraRepositories.java index 6d1159be9..8196a8ae1 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/config/EnableCassandraRepositories.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/config/EnableCassandraRepositories.java @@ -25,6 +25,7 @@ import java.lang.annotation.Target; import org.springframework.beans.factory.FactoryBean; import org.springframework.context.annotation.ComponentScan.Filter; import org.springframework.context.annotation.Import; +import org.springframework.data.cassandra.config.DefaultBeanNames; import org.springframework.data.cassandra.core.CassandraTemplate; import org.springframework.data.cassandra.repository.support.CassandraRepositoryFactoryBean; import org.springframework.data.repository.config.DefaultRepositoryBaseClass; @@ -120,7 +121,7 @@ public @interface EnableCassandraRepositories { /** * Configures the name of the {@link CassandraTemplate} bean to be used with the repositories detected. - * + * Defaults to {@link DefaultBeanNames#DATA_TEMPLATE} * @return */ String cassandraTemplateRef() default "cassandraTemplate"; diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/config/CassandraMappingBeanFactoryPostProcessorUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/config/CassandraMappingBeanFactoryPostProcessorUnitTests.java index 8728524e5..bdd281169 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/config/CassandraMappingBeanFactoryPostProcessorUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/config/CassandraMappingBeanFactoryPostProcessorUnitTests.java @@ -47,9 +47,9 @@ public class CassandraMappingBeanFactoryPostProcessorUnitTests { context.load(CassandraMappingBeanFactoryPostProcessorUnitTests.class, "cluster-and-mock-session.xml"); context.refresh(); - assertThat(context.getBeanNamesForType(CassandraOperations.class), hasItemInArray("cqlTemplate")); - assertThat(context.getBeanNamesForType(CassandraMappingContext.class), hasItemInArray("cassandraMapping")); - assertThat(context.getBeanNamesForType(CassandraConverter.class), hasItemInArray("cassandraConverter")); + assertThat(context.getBeanNamesForType(CassandraOperations.class), hasItemInArray(DefaultBeanNames.DATA_TEMPLATE)); + assertThat(context.getBeanNamesForType(CassandraMappingContext.class), hasItemInArray(DefaultBeanNames.CONTEXT)); + assertThat(context.getBeanNamesForType(CassandraConverter.class), hasItemInArray(DefaultBeanNames.CONVERTER)); } @Test // DATACASS-290 @@ -59,7 +59,7 @@ public class CassandraMappingBeanFactoryPostProcessorUnitTests { context.load(CassandraMappingBeanFactoryPostProcessorUnitTests.class, "mock-session-mapping-converter.xml"); context.refresh(); - assertThat(context.getBeanNamesForType(CassandraOperations.class), hasItemInArray("cqlTemplate")); + assertThat(context.getBeanNamesForType(CassandraOperations.class), hasItemInArray(DefaultBeanNames.DATA_TEMPLATE)); } @Test // DATACASS-290