diff --git a/spring-cql/src/main/resources/META-INF/spring.schemas b/spring-cql/src/main/resources/META-INF/spring.schemas index dd44454ef..59a2d3daa 100644 --- a/spring-cql/src/main/resources/META-INF/spring.schemas +++ b/spring-cql/src/main/resources/META-INF/spring.schemas @@ -1,3 +1,4 @@ http\://www.springframework.org/schema/cql/spring-cql-1.0.xsd=org/springframework/cassandra/config/spring-cql-1.0.xsd http\://www.springframework.org/schema/cql/spring-cql-1.5.xsd=org/springframework/cassandra/config/spring-cql-1.5.xsd -http\://www.springframework.org/schema/cql/spring-cql.xsd=org/springframework/cassandra/config/spring-cql-1.5.xsd +http\://www.springframework.org/schema/cql/spring-cql-2.0.xsd=org/springframework/cassandra/config/spring-cql-2.0.xsd +http\://www.springframework.org/schema/cql/spring-cql.xsd=org/springframework/cassandra/config/spring-cql-2.0.xsd diff --git a/spring-cql/src/main/resources/org/springframework/cassandra/config/spring-cql-2.0.xsd b/spring-cql/src/main/resources/org/springframework/cassandra/config/spring-cql-2.0.xsd new file mode 100644 index 000000000..5d74ed4a2 --- /dev/null +++ b/spring-cql/src/main/resources/org/springframework/cassandra/config/spring-cql-2.0.xsd @@ -0,0 +1,711 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/CassandraTemplateFactoryBean.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/CassandraTemplateFactoryBean.java index 908678c36..311381d8c 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/CassandraTemplateFactoryBean.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/CassandraTemplateFactoryBean.java @@ -1,12 +1,12 @@ /* * Copyright 2013-2017 the original author or authors - * + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -17,6 +17,9 @@ package org.springframework.data.cassandra.config; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.InitializingBean; +import org.springframework.cassandra.core.CqlOperations; +import org.springframework.cassandra.core.session.DefaultSessionFactory; +import org.springframework.cassandra.core.session.SessionFactory; import org.springframework.data.cassandra.convert.CassandraConverter; import org.springframework.data.cassandra.core.CassandraTemplate; import org.springframework.util.Assert; @@ -31,31 +34,41 @@ import com.datastax.driver.core.Session; */ public class CassandraTemplateFactoryBean implements FactoryBean, InitializingBean { - protected Session session; + protected SessionFactory sessionFactory; + + protected CqlOperations cqlOperations; protected CassandraConverter converter; - /* + /* * (non-Javadoc) * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet() */ @Override public void afterPropertiesSet() throws Exception { - Assert.notNull(session, "Session must not be null"); + if (cqlOperations == null && sessionFactory == null) { + throw new IllegalArgumentException("Either Session/SessionFactory or CqlOperations must be set"); + } + Assert.notNull(converter, "Converter must not be null"); } - /* + /* * (non-Javadoc) * @see org.springframework.beans.factory.FactoryBean#getObject() */ @Override public CassandraTemplate getObject() throws Exception { - return new CassandraTemplate(session, converter); + + if (cqlOperations != null) { + return new CassandraTemplate(cqlOperations, converter); + } + + return new CassandraTemplate(sessionFactory, converter); } - /* + /* * (non-Javadoc) * @see org.springframework.beans.factory.FactoryBean#getObjectType() */ @@ -64,7 +77,7 @@ public class CassandraTemplateFactoryBean implements FactoryBean + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/config/xml/CassandraNamespaceIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/config/xml/CassandraNamespaceIntegrationTests.java index c8593d2c8..f6521f4f4 100755 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/config/xml/CassandraNamespaceIntegrationTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/config/xml/CassandraNamespaceIntegrationTests.java @@ -20,7 +20,9 @@ import static org.assertj.core.api.Assertions.*; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cassandra.core.CqlTemplate; import org.springframework.context.ApplicationContext; +import org.springframework.data.cassandra.core.CassandraTemplate; import org.springframework.data.cassandra.mapping.BasicCassandraMappingContext; import org.springframework.data.cassandra.mapping.SimpleUserTypeResolver; import org.springframework.data.cassandra.test.integration.support.AbstractSpringDataEmbeddedCassandraIntegrationTest; @@ -96,4 +98,13 @@ public class CassandraNamespaceIntegrationTests extends AbstractSpringDataEmbedd assertThat(userTypeResolver).isNotNull(); } + + @Test // DATACASS-417 + public void mappingContextShouldCassandraTemplateConfigured() { + + CassandraTemplate cassandraTemplate = applicationContext.getBean(CassandraTemplate.class); + CqlTemplate cqlTemplate = applicationContext.getBean(CqlTemplate.class); + + assertThat(cassandraTemplate.getCqlOperations()).isSameAs(cqlTemplate); + } } diff --git a/spring-data-cassandra/src/test/resources/org/springframework/data/cassandra/config/xml/CassandraNamespaceIntegrationTests-context.xml b/spring-data-cassandra/src/test/resources/org/springframework/data/cassandra/config/xml/CassandraNamespaceIntegrationTests-context.xml index 349e96862..f8a0bed69 100644 --- a/spring-data-cassandra/src/test/resources/org/springframework/data/cassandra/config/xml/CassandraNamespaceIntegrationTests-context.xml +++ b/spring-data-cassandra/src/test/resources/org/springframework/data/cassandra/config/xml/CassandraNamespaceIntegrationTests-context.xml @@ -1,41 +1,43 @@ + http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/cql http://www.springframework.org/schema/cql/spring-cql.xsd"> + location="classpath:/config/cassandra-connection.properties,classpath:/org/springframework/data/cassandra/config/xml/cassandra.properties"/> + port="${build.cassandra.native_transport_port}" compression="SNAPPY" netty-options-ref="nettyOptions"> + min-simultaneous-requests="26" max-simultaneous-requests="101" + core-connections="3" max-connections="9"/> + min-simultaneous-requests="25" max-simultaneous-requests="100" + core-connections="1" max-connections="2"/> + keep-alive="true" reuse-address="true" so-linger="60" tcp-no-delay="true" + receive-buffer-size="65536" send-buffer-size="65536"/> + durable-writes="true"/> - + - + + schema-action="NONE"/> - + + diff --git a/spring-data-cassandra/src/test/resources/org/springframework/data/cassandra/config/xml/cassandra.properties b/spring-data-cassandra/src/test/resources/org/springframework/data/cassandra/config/xml/cassandra.properties index 86e1499cd..61214c60d 100644 --- a/spring-data-cassandra/src/test/resources/org/springframework/data/cassandra/config/xml/cassandra.properties +++ b/spring-data-cassandra/src/test/resources/org/springframework/data/cassandra/config/xml/cassandra.properties @@ -1 +1 @@ -cassandra.keyspace=TestKS123 +cassandra.keyspace=CassandraNamespaceIntegrationTests