DATACASS-91 - now scanning packages via XML & Java config

This commit is contained in:
Matthew Adams
2014-02-10 23:14:30 -06:00
parent f451050a15
commit e3a131007c
16 changed files with 266 additions and 259 deletions

View File

@@ -1,46 +0,0 @@
package org.springframework.data.cassandra.config;
import java.util.HashSet;
import java.util.Set;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.data.cassandra.mapping.CassandraMappingContext;
import org.springframework.data.cassandra.mapping.DefaultCassandraMappingContext;
public class CassandraDataCassandraMappingContextFactoryBean implements FactoryBean<CassandraMappingContext>,
InitializingBean {
protected Set<String> basePackages = new HashSet<String>();
@Override
public void afterPropertiesSet() throws Exception {
}
@Override
public CassandraMappingContext getObject() throws Exception {
DefaultCassandraMappingContext cmc = new DefaultCassandraMappingContext();
cmc.setInitialEntitySet(new CassandraEntityClassScanner(basePackages).scanForEntityClasses());
return cmc;
}
@Override
public Class<?> getObjectType() {
return CassandraMappingContext.class;
}
@Override
public boolean isSingleton() {
return true;
}
public Set<String> getBasePackages() {
return basePackages;
}
public void setBasePackages(Set<String> basePackages) {
this.basePackages = basePackages;
}
}

View File

@@ -7,10 +7,7 @@ import org.springframework.data.cassandra.convert.CassandraConverter;
import org.springframework.data.cassandra.core.CassandraAdminTemplate;
import org.springframework.data.cassandra.mapping.CassandraMappingContext;
import org.springframework.data.cassandra.mapping.CassandraPersistentEntity;
import org.springframework.data.cassandra.mapping.EntityMapping;
import org.springframework.data.cassandra.mapping.Mapping;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import com.datastax.driver.core.KeyspaceMetadata;
import com.datastax.driver.core.Metadata;
@@ -22,8 +19,6 @@ public class CassandraDataSessionFactoryBean extends CassandraSessionFactoryBean
protected CassandraAdminTemplate admin;
protected CassandraConverter converter;
protected CassandraMappingContext mappingContext;
protected Mapping mapping;
protected ClassLoader entityClassLoader = getClass().getClassLoader();
@Override
public void afterPropertiesSet() throws Exception {
@@ -34,42 +29,9 @@ public class CassandraDataSessionFactoryBean extends CassandraSessionFactoryBean
admin = new CassandraAdminTemplate(session, converter);
mapping = mapping == null ? new Mapping() : mapping;
processMappingOverrides();
performSchemaAction();
}
protected void processMappingOverrides() throws ClassNotFoundException {
if (mapping == null) {
return;
}
for (EntityMapping entityMapping : mapping.getEntityMappings()) {
if (entityMapping == null) {
continue;
}
String entityClassName = entityMapping.getEntityClassName();
Class<?> entityClass = Class.forName(entityClassName, false, entityClassLoader);
CassandraPersistentEntity<?> entity = mappingContext.getPersistentEntity(entityClass);
if (entity == null) {
throw new IllegalStateException(String.format("unknown persistent entity class name [%s]", entityClassName));
}
String tableName = entityMapping.getTableName();
if (!StringUtils.hasText(tableName)) {
continue;
}
entity.setTableName(tableName);
}
}
protected void performSchemaAction() {
boolean dropTables = false;
@@ -138,22 +100,4 @@ public class CassandraDataSessionFactoryBean extends CassandraSessionFactoryBean
this.converter = converter;
this.mappingContext = converter.getMappingContext();
}
public Mapping getMapping() {
return mapping;
}
public void setMapping(Mapping mapping) {
Assert.notNull(mapping);
this.mapping = mapping;
}
public ClassLoader getEntityClassLoader() {
return entityClassLoader;
}
public void setEntityClassLoader(ClassLoader entityClassLoader) {
Assert.notNull(entityClassLoader);
this.entityClassLoader = entityClassLoader;
}
}

View File

@@ -0,0 +1,73 @@
package org.springframework.data.cassandra.config;
import java.util.HashSet;
import java.util.Set;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.data.cassandra.mapping.CassandraMappingContext;
import org.springframework.data.cassandra.mapping.DefaultCassandraMappingContext;
import org.springframework.data.cassandra.mapping.Mapping;
import org.springframework.util.Assert;
public class CassandraMappingContextFactoryBean implements FactoryBean<CassandraMappingContext>, InitializingBean {
protected Set<String> basePackages = new HashSet<String>();
protected Mapping mapping;
protected ClassLoader entityClassLoader;
@Override
public void afterPropertiesSet() throws Exception {
mapping = mapping == null ? new Mapping() : mapping;
}
@Override
public CassandraMappingContext getObject() throws Exception {
DefaultCassandraMappingContext mappingContext = new DefaultCassandraMappingContext();
mappingContext.setInitialEntitySet(new CassandraEntityClassScanner(basePackages).scanForEntityClasses());
mappingContext.setMapping(mapping);
mappingContext.setBeanClassLoader(entityClassLoader);
mappingContext.initialize(); // this is necessary here
return mappingContext;
}
@Override
public Class<?> getObjectType() {
return CassandraMappingContext.class;
}
@Override
public boolean isSingleton() {
return true;
}
public Set<String> getBasePackages() {
return basePackages;
}
public void setBasePackages(Set<String> basePackages) {
this.basePackages = basePackages == null ? new HashSet<String>() : new HashSet<String>(basePackages);
}
public Mapping getMapping() {
return mapping;
}
public void setMapping(Mapping mapping) {
Assert.notNull(mapping);
this.mapping = mapping;
}
public ClassLoader getEntityClassLoader() {
return entityClassLoader;
}
public void setEntityClassLoader(ClassLoader entityClassLoader) {
this.entityClassLoader = entityClassLoader;
}
}

View File

@@ -10,7 +10,7 @@ import org.springframework.data.cassandra.convert.MappingCassandraConverter;
import org.springframework.data.cassandra.mapping.CassandraMappingContext;
import org.springframework.util.Assert;
public class CassandraDataMappingConverterFactoryBean implements FactoryBean<CassandraConverter>, InitializingBean {
public class CassandraMappingConverterFactoryBean implements FactoryBean<CassandraConverter>, InitializingBean {
protected CassandraMappingContext mappingContext;
protected Set<String> basePackages = new HashSet<String>();

View File

@@ -6,5 +6,5 @@ public interface DefaultDataBeanNames extends DefaultBeanNames {
public static final String DATA_TEMPLATE = "cassandraTemplate";
public static final String CONVERTER = "cassandraConverter";
public static final String MAPPING_CONTEXT = "cassandra-mapping";
public static final String MAPPING_CONTEXT = "cassandraMapping";
}

View File

@@ -16,6 +16,7 @@
package org.springframework.data.cassandra.config.java;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import org.springframework.beans.factory.BeanClassLoaderAware;
@@ -24,14 +25,12 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.cassandra.config.CassandraDataSessionFactoryBean;
import org.springframework.data.cassandra.config.CassandraEntityClassScanner;
import org.springframework.data.cassandra.config.CassandraMappingContextFactoryBean;
import org.springframework.data.cassandra.config.CassandraMappingConverterFactoryBean;
import org.springframework.data.cassandra.config.SchemaAction;
import org.springframework.data.cassandra.convert.CassandraConverter;
import org.springframework.data.cassandra.convert.MappingCassandraConverter;
import org.springframework.data.cassandra.core.CassandraAdminOperations;
import org.springframework.data.cassandra.core.CassandraAdminTemplate;
import org.springframework.data.cassandra.mapping.CassandraMappingContext;
import org.springframework.data.cassandra.mapping.DefaultCassandraMappingContext;
import org.springframework.data.cassandra.mapping.Mapping;
import org.springframework.data.cassandra.mapping.Table;
import org.springframework.data.mapping.context.MappingContext;
@@ -48,7 +47,6 @@ public abstract class AbstractSpringDataCassandraConfiguration extends AbstractC
protected abstract String getKeyspaceName();
protected ClassLoader beanClassLoader;
protected Mapping mapping = new Mapping();
/**
* The {@link SchemaAction} to perform. Defaults to {@link SchemaAction#NONE}.
@@ -71,15 +69,12 @@ public abstract class AbstractSpringDataCassandraConfiguration extends AbstractC
CassandraDataSessionFactoryBean bean = new CassandraDataSessionFactoryBean();
bean.setCluster(cluster().getObject());
bean.setConverter(converter());
bean.setConverter(converter().getObject());
bean.setSchemaAction(getSchemaAction());
bean.setKeyspaceName(getKeyspaceName());
bean.setStartupScripts(getStartupScripts());
bean.setShutdownScripts(getShutdownScripts());
bean.setEntityClassLoader(beanClassLoader);
bean.setMapping(mapping);
return bean;
}
@@ -90,7 +85,7 @@ public abstract class AbstractSpringDataCassandraConfiguration extends AbstractC
*/
@Bean
public CassandraAdminOperations cassandraTemplate() throws Exception {
return new CassandraAdminTemplate(session().getObject(), converter());
return new CassandraAdminTemplate(session().getObject(), converter().getObject());
}
/**
@@ -99,20 +94,25 @@ public abstract class AbstractSpringDataCassandraConfiguration extends AbstractC
* @throws ClassNotFoundException
*/
@Bean
public CassandraMappingContext cassandraMappingContext() throws ClassNotFoundException {
DefaultCassandraMappingContext context = new DefaultCassandraMappingContext();
context.setInitialEntitySet(getInitialEntitySet());
return context;
public CassandraMappingContextFactoryBean cassandraMapping() throws ClassNotFoundException {
CassandraMappingContextFactoryBean bean = new CassandraMappingContextFactoryBean();
bean.setBasePackages(new HashSet<String>(Arrays.asList(getMappingBasePackages())));
bean.setEntityClassLoader(beanClassLoader);
return bean;
}
/**
* Return the {@link CassandraConverter} instance to convert Rows to Objects, Objects to BuiltStatements
*
* @throws ClassNotFoundException
*/
@Bean
public CassandraConverter converter() throws ClassNotFoundException {
return new MappingCassandraConverter(cassandraMappingContext());
public CassandraMappingConverterFactoryBean converter() throws Exception {
CassandraMappingConverterFactoryBean bean = new CassandraMappingConverterFactoryBean();
bean.setMappingContext(cassandraMapping().getObject());
return bean;
}
/**

View File

@@ -36,7 +36,7 @@ public class CassandraDataNamespaceHandler extends NamespaceHandlerSupport {
registerBeanDefinitionParser("cluster", new CassandraDataClusterParser());
registerBeanDefinitionParser("session", new CassandraDataSessionParser());
registerBeanDefinitionParser("template", new CassandraDataTemplateParser());
registerBeanDefinitionParser("mapping-converter", new CassandraDataMappingCassandraConverterParser());
registerBeanDefinitionParser("mapping-context", new CassandraDataCassandraMappingContextParser());
registerBeanDefinitionParser("mapping-converter", new CassandraMappingConverterParser());
registerBeanDefinitionParser("mapping", new CassandraMappingContextParser());
}
}

View File

@@ -1,20 +1,15 @@
package org.springframework.data.cassandra.config.xml;
import static org.springframework.cassandra.config.xml.ParsingUtils.*;
import java.util.HashSet;
import java.util.Set;
import static org.springframework.cassandra.config.xml.ParsingUtils.addOptionalPropertyReference;
import static org.springframework.cassandra.config.xml.ParsingUtils.addOptionalPropertyValue;
import static org.springframework.cassandra.config.xml.ParsingUtils.addRequiredPropertyReference;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.ParserContext;
import org.springframework.cassandra.config.xml.CassandraSessionParser;
import org.springframework.data.cassandra.config.DefaultDataBeanNames;
import org.springframework.data.cassandra.config.CassandraDataSessionFactoryBean;
import org.springframework.data.cassandra.config.DefaultDataBeanNames;
import org.springframework.data.cassandra.config.SchemaAction;
import org.springframework.data.cassandra.mapping.EntityMapping;
import org.springframework.data.cassandra.mapping.Mapping;
import org.springframework.util.StringUtils;
import org.springframework.util.xml.DomUtils;
import org.w3c.dom.Attr;
import org.w3c.dom.Element;
@@ -53,57 +48,4 @@ public class CassandraDataSessionParser extends CassandraSessionParser {
addRequiredPropertyReference(builder, "converter", DefaultDataBeanNames.CONVERTER);
addRequiredPropertyReference(builder, "schemaAction", SchemaAction.NONE.name());
}
@Override
protected void parseUnhandledElement(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
if ("mapping".equals(element.getLocalName())) {
parseMapping(element, parserContext, builder);
} else {
super.parseUnhandledElement(element, parserContext, builder);
}
}
protected void parseMapping(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
// TODO: parse <mapping> attributes here, if there ever are any
Set<EntityMapping> mappings = new HashSet<EntityMapping>();
for (Element child : DomUtils.getChildElementsByTagName(element, "entity")) {
EntityMapping entityMapping = parseEntity(child);
if (entityMapping != null) {
mappings.add(entityMapping);
}
}
Mapping mapping = new Mapping();
mapping.setEntityMappings(mappings);
builder.addPropertyValue("mapping", mapping);
}
protected EntityMapping parseEntity(Element entity) {
String className = entity.getAttribute("class");
if (!StringUtils.hasText(className)) {
throw new IllegalStateException("class attribute must not be empty");
}
Element table = DomUtils.getChildElementByTagName(entity, "table");
if (table == null) {
return null;
}
String tableName = table.getAttribute("name");
if (!StringUtils.hasText(tableName)) {
tableName = null;
}
// TODO: parse future entity mappings here, like table options
return new EntityMapping(className, tableName);
}
}

View File

@@ -1,5 +1,6 @@
package org.springframework.data.cassandra.config.xml;
import java.util.HashSet;
import java.util.Set;
import org.springframework.beans.factory.BeanDefinitionStoreException;
@@ -7,21 +8,24 @@ import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.AbstractSimpleBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
import org.springframework.data.cassandra.config.CassandraDataCassandraMappingContextFactoryBean;
import org.springframework.data.cassandra.config.CassandraMappingContextFactoryBean;
import org.springframework.data.cassandra.config.DefaultDataBeanNames;
import org.springframework.data.cassandra.mapping.EntityMapping;
import org.springframework.data.cassandra.mapping.Mapping;
import org.springframework.util.StringUtils;
import org.springframework.util.xml.DomUtils;
import org.w3c.dom.Element;
/**
* Spring Data Cassandra XML namespace parser for the &lt;mapping-context&gt; element.
* Spring Data Cassandra XML namespace parser for the &lt;mapping&gt; element.
*
* @author Matthew T. Adams
*/
public class CassandraDataCassandraMappingContextParser extends AbstractSimpleBeanDefinitionParser {
public class CassandraMappingContextParser extends AbstractSimpleBeanDefinitionParser {
@Override
protected Class<?> getBeanClass(Element element) {
return CassandraDataCassandraMappingContextFactoryBean.class;
return CassandraMappingContextFactoryBean.class;
}
@Override
@@ -37,6 +41,7 @@ public class CassandraDataCassandraMappingContextParser extends AbstractSimpleBe
super.doParse(element, parserContext, builder);
parseBasePackagesAttribute(element, parserContext, builder);
parseMapping(element, parserContext, builder);
}
protected void parseBasePackagesAttribute(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
@@ -49,4 +54,47 @@ public class CassandraDataCassandraMappingContextParser extends AbstractSimpleBe
Set<String> basePackageSet = StringUtils.commaDelimitedListToSet(basePackages);
builder.addPropertyValue("basePackages", basePackageSet);
}
protected void parseMapping(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
// TODO: parse <mapping> **attributes** here, if there ever are any
Set<EntityMapping> mappings = new HashSet<EntityMapping>();
for (Element child : DomUtils.getChildElementsByTagName(element, "entity")) {
EntityMapping entityMapping = parseEntity(child);
if (entityMapping != null) {
mappings.add(entityMapping);
}
}
Mapping mapping = new Mapping();
mapping.setEntityMappings(mappings);
builder.addPropertyValue("mapping", mapping);
}
protected EntityMapping parseEntity(Element entity) {
String className = entity.getAttribute("class");
if (!StringUtils.hasText(className)) {
throw new IllegalStateException("class attribute must not be empty");
}
Element table = DomUtils.getChildElementByTagName(entity, "table");
if (table == null) {
return null;
}
String tableName = table.getAttribute("name");
if (!StringUtils.hasText(tableName)) {
tableName = null;
}
// TODO: parse future entity mappings here, like table options
return new EntityMapping(className, tableName);
}
}

View File

@@ -1,13 +1,11 @@
package org.springframework.data.cassandra.config.xml;
import java.util.Set;
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.AbstractSimpleBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
import org.springframework.data.cassandra.config.CassandraDataMappingConverterFactoryBean;
import org.springframework.data.cassandra.config.CassandraMappingConverterFactoryBean;
import org.springframework.data.cassandra.config.DefaultDataBeanNames;
import org.springframework.util.StringUtils;
import org.w3c.dom.Element;
@@ -17,11 +15,11 @@ import org.w3c.dom.Element;
*
* @author Matthew T. Adams
*/
public class CassandraDataMappingCassandraConverterParser extends AbstractSimpleBeanDefinitionParser {
public class CassandraMappingConverterParser extends AbstractSimpleBeanDefinitionParser {
@Override
protected Class<?> getBeanClass(Element element) {
return CassandraDataMappingConverterFactoryBean.class;
return CassandraMappingConverterFactoryBean.class;
}
@Override
@@ -34,29 +32,20 @@ public class CassandraDataMappingCassandraConverterParser extends AbstractSimple
@Override
protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
super.doParse(element, parserContext, builder);
parseMappingContextAttribute(element, parserContext, builder);
parseBasePackagesAttribute(element, parserContext, builder);
}
protected void parseMappingContextAttribute(Element element, ParserContext parserContext,
BeanDefinitionBuilder builder) {
String mappingContextRef = element.getAttribute("mapping-context-ref");
String mappingContextRef = element.getAttribute("mapping-ref");
if (!StringUtils.hasText(mappingContextRef)) {
mappingContextRef = DefaultDataBeanNames.MAPPING_CONTEXT;
}
builder.addPropertyReference("mappingContext", mappingContextRef);
}
protected void parseBasePackagesAttribute(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
String basePackages = element.getAttribute("base-packages");
if (!StringUtils.hasText(basePackages)) {
return;
}
Set<String> basePackageSet = StringUtils.commaDelimitedListToSet(basePackages);
}
}

View File

@@ -37,6 +37,7 @@ import org.springframework.data.mapping.model.MappingException;
import org.springframework.data.mapping.model.SimpleTypeHolder;
import org.springframework.data.util.TypeInformation;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import com.datastax.driver.core.TableMetadata;
@@ -52,6 +53,9 @@ public class DefaultCassandraMappingContext extends
CassandraMappingContext, ApplicationContextAware {
protected ApplicationContext context;
protected Mapping mapping = new Mapping();
protected ClassLoader beanClassLoader;
protected boolean initialized;
// useful caches
protected Map<String, Set<CassandraPersistentEntity<?>>> entitySetsByTableName = new HashMap<String, Set<CassandraPersistentEntity<?>>>();
@@ -65,18 +69,27 @@ public class DefaultCassandraMappingContext extends
setSimpleTypeHolder(new CassandraSimpleTypeHolder());
}
@Override
public void afterPropertiesSet() {
if (initialized) {
return;
}
super.afterPropertiesSet();
}
@Override
public void initialize() {
if (initialized) {
return;
}
super.initialize();
processMappingOverrides();
}
protected void processMappingOverrides() {
// TODO: search for external entity mapping info (xml/properties/yaml/etc) here & update this.mapping
// similar to JPA's or JDO's external metadata search algorithms
initialized = true;
}
@Override
@@ -224,4 +237,51 @@ public class DefaultCassandraMappingContext extends
return entity;
}
public void setMapping(Mapping mapping) {
Assert.notNull(mapping);
this.mapping = mapping;
}
protected void processMappingOverrides() {
if (mapping == null) {
return;
}
for (EntityMapping entityMapping : mapping.getEntityMappings()) {
if (entityMapping == null) {
continue;
}
String entityClassName = entityMapping.getEntityClassName();
Class<?> entityClass;
try {
entityClass = Class.forName(entityClassName, false, beanClassLoader == null ? getClass().getClassLoader()
: beanClassLoader);
} catch (ClassNotFoundException e) {
throw new IllegalStateException(String.format("unknown persistent entity name [%s]", entityClassName), e);
}
CassandraPersistentEntity<?> entity = getPersistentEntity(entityClass);
if (entity == null) {
throw new IllegalStateException(String.format("unknown persistent entity class name [%s]", entityClassName));
}
String tableName = entityMapping.getTableName();
if (!StringUtils.hasText(tableName)) {
continue;
}
entity.setTableName(tableName);
}
}
public void setBeanClassLoader(ClassLoader beanClassLoader) {
this.beanClassLoader = beanClassLoader;
}
}

View File

@@ -452,8 +452,6 @@ Arbitrary CQL script to be executed against the session's keyspace during bean d
]]></xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="mapping" type="mappingType" minOccurs="0"
maxOccurs="1" />
</xsd:sequence>
<xsd:attribute name="id" type="xsd:ID" use="optional">
@@ -629,13 +627,6 @@ The replication factor for the data center.
<xsd:union memberTypes="xsd:string" />
</xsd:simpleType>
<xsd:complexType name="mappingType">
<xsd:sequence>
<xsd:element name="entity" type="entityType" minOccurs="0"
maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="entityType">
<xsd:sequence>
<xsd:element name="table" type="tableType" minOccurs="0"
@@ -696,7 +687,7 @@ The reference to a cassandraTemplate. Will default to 'cassandraTemplate'.
</xsd:complexType>
</xsd:element>
<xsd:element name="mapping-context">
<xsd:element name="mapping">
<xsd:annotation>
<xsd:documentation><![CDATA[
Defines a CassandraMappingContext for holding rich entity mapping information.
@@ -707,6 +698,10 @@ Defines a CassandraMappingContext for holding rich entity mapping information.
</xsd:appinfo>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="entity" type="entityType" minOccurs="0"
maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="base-packages" type="xsd:string"
use="optional">
<xsd:annotation>
@@ -729,12 +724,12 @@ Defines a CassandraConverter for getting rich mapping functionality.
</xsd:appinfo>
</xsd:annotation>
<xsd:complexType>
<xsd:attribute name="mapping-context-ref" type="mappingContextRef"
<xsd:attribute name="mapping-ref" type="mappingContextRef"
use="optional">
<xsd:annotation>
<xsd:documentation
source="org.springframework.data.mapping.model.MappingContext"><![CDATA[
The reference to a MappingContext. Will default to 'mapping-context'.
source="org.springframework.data.cassandra.mapping.CassandraMappingContext"><![CDATA[
The reference to a CassandraMappingContext. Will default to 'cassandraMapping'.
]]></xsd:documentation>
</xsd:annotation>
</xsd:attribute>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cassandra="http://www.springframework.org/schema/data/cassandra"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cass="http://www.springframework.org/schema/data/cassandra"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
@@ -11,22 +11,24 @@
<import resource="classpath:/spring-data-cassandra-basic.xml" />
<cassandra:cluster port="${cassandra.native_transport_port}">
<cassandra:keyspace name="CommentRepositoryXmlConfigIntegrationTests"
<cass:mapping
base-packages="org.springframework.data.cassandra.test.integration.composites">
<cass:entity
class="org.springframework.data.cassandra.test.integration.composites.Comment">
<cass:table name="comments_x" />
</cass:entity>
</cass:mapping>
<cass:cluster port="${cassandra.native_transport_port}">
<cass:keyspace name="CommentRepositoryXmlConfigIntegrationTests"
action="CREATE" durable-writes="true">
</cassandra:keyspace>
</cassandra:cluster>
</cass:keyspace>
</cass:cluster>
<cassandra:session keyspace-name="CommentRepositoryXmlConfigIntegrationTests"
<cass:session keyspace-name="CommentRepositoryXmlConfigIntegrationTests"
schema-action="CREATE">
<cassandra:mapping>
<cassandra:entity
class="org.springframework.data.cassandra.test.integration.composites.Comment">
<cassandra:table name="comments" />
</cassandra:entity>
</cassandra:mapping>
</cassandra:session>
</cass:session>
<cassandra:repositories
<cass:repositories
base-package="org.springframework.data.cassandra.test.integration.composites" />
</beans>

View File

@@ -27,7 +27,7 @@
</cass:cluster>
<!-- TODO: not require that these beans be defined -->
<cass:mapping-context/>
<cass:mapping />
<cass:mapping-converter />
<cass:session keyspace-name="${cassandra.keyspace}"

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cassandra="http://www.springframework.org/schema/data/cassandra"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cass="http://www.springframework.org/schema/data/cassandra"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
@@ -12,22 +12,24 @@
<import resource="classpath:/spring-data-cassandra-basic.xml" />
<cassandra:cluster port="${cassandra.native_transport_port}">
<cassandra:keyspace name="UserRepositoryXmlConfigIntegrationTests"
<cass:mapping
base-packages="org.springframework.data.cassandra.test.integration.repository">
<cass:entity
class="org.springframework.data.cassandra.test.integration.repository.User">
<cass:table name="users_x" />
</cass:entity>
</cass:mapping>
<cass:cluster port="${cassandra.native_transport_port}">
<cass:keyspace name="UserRepositoryXmlConfigIntegrationTests"
action="CREATE" durable-writes="true">
</cassandra:keyspace>
</cassandra:cluster>
</cass:keyspace>
</cass:cluster>
<cassandra:session keyspace-name="UserRepositoryXmlConfigIntegrationTests"
<cass:session keyspace-name="UserRepositoryXmlConfigIntegrationTests"
schema-action="CREATE">
<cassandra:mapping>
<cassandra:entity
class="org.springframework.data.cassandra.test.integration.repository.User">
<cassandra:table name="users_x" />
</cassandra:entity>
</cassandra:mapping>
</cassandra:session>
</cass:session>
<cassandra:repositories
<cass:repositories
base-package="org.springframework.data.cassandra.test.integration.repository" />
</beans>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cassandra="http://www.springframework.org/schema/data/cassandra"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cass="http://www.springframework.org/schema/data/cassandra"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/data/cassandra http://www.springframework.org/schema/data/cassandra/spring-cassandra-1.0.xsd
@@ -10,10 +10,8 @@
<context:property-placeholder
location="classpath:/spring-data-cassandra-build.properties" />
<cassandra:mapping-context />
<cass:mapping-converter />
<cassandra:mapping-converter />
<cassandra:template />
<cass:template />
</beans>