From caf4160604c04d094eb063c710d1000ccf43755b Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Thu, 1 Jun 2017 11:43:32 +0200 Subject: [PATCH] DATACASS-452 - Align naming scheme for CassandraRepository. We now follow a more consistent naming scheme for cassandra repository interfaces. * The basic, store-specific interface is now named CassandraRepository * An extended variant, using MapId's is named MapIdCassandraRepository That results in the following renames: * CassandraRepository -> MapIdCassandraRepository * TypedIdCassandraRepository -> CassandraRepository TypedIdCassandraRepository was re-introduced as deprecated variant now extending CassandraRepository to preserve a majority of existing repository declarations. --- .../repository/CassandraRepository.java | 99 ++++++++++++++----- .../repository/MapIdCassandraRepository.java | 51 ++++++++++ .../TypedIdCassandraRepository.java | 66 ++----------- .../support/CassandraRepositoryFactory.java | 4 +- .../CassandraRepositoryFactoryBean.java | 7 +- .../support/SimpleCassandraRepository.java | 4 +- .../BigIntParamIntegrationTests.java | 3 +- .../repository/DateKeyIntegrationTests.java | 2 +- .../repository/IntParamIntegrationTests.java | 3 +- .../NamedQueryIntegrationTests.java | 2 +- .../QueryDerivationIntegrationTests.java | 2 +- ...sitoryConfigurationExtensionUnitTests.java | 5 +- ...dsParameterConversionIntegrationTests.java | 4 +- ...dsParameterConversionIntegrationTests.java | 4 +- .../PartTreeCassandraQueryUnitTests.java | 6 +- ...activePartTreeCassandraQueryUnitTests.java | 4 +- ...leCassandraRepositoryIntegrationTests.java | 4 +- .../ExplicitRepository.java | 5 +- .../ImplicitRepository.java | 5 +- .../config/ExplicitPropertiesRepository.java | 5 +- .../forcequote/config/ExplicitRepository.java | 5 +- .../config/ImplicitPropertiesRepository.java | 5 +- .../forcequote/config/ImplicitRepository.java | 5 +- .../MultiPrimaryKeyColumnsRepository.java | 5 +- .../SinglePrimaryKecColumnRepository.java | 4 +- src/main/asciidoc/new-features.adoc | 1 + 26 files changed, 184 insertions(+), 126 deletions(-) create mode 100644 spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/MapIdCassandraRepository.java diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/CassandraRepository.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/CassandraRepository.java index 27bf5665e..7e490a436 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/CassandraRepository.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/CassandraRepository.java @@ -1,36 +1,83 @@ +/* + * 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. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.data.cassandra.repository; -import org.springframework.data.cassandra.core.mapping.PrimaryKeyColumn; -import org.springframework.data.cassandra.repository.support.BasicMapId; +import java.util.List; + +import org.springframework.data.cassandra.core.mapping.Table; +import org.springframework.data.domain.Persistable; +import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.NoRepositoryBean; /** - * Basic Cassandra repository interface. - *

- * This interface uses {@link MapId} for the id type, allowing you to annotate entity fields or properties with - * {@link PrimaryKeyColumn @PrimaryKeyColumn}. For a full discussion of this interface, including the use of custom - * primary key classes, see {@link TypedIdCassandraRepository}. - *

- * Steps to use this interface: - *

+ * Cassandra-specific extension of the {@link CrudRepository} interface that allows the specification of a type for the + * identity of the {@link Table @Table} (or {@link Persistable @Persistable}) type. + *

+ * Repositories based on {@link CassandraRepository} can define either a single primary key, use a primary key class or + * a compound primary key without a primary key class. Types using a compound primary key without a primary key class + * must use {@link MapId} to declare their key value. * - * @param The type of the persistent entity. - * @see TypedIdCassandraRepository - * @see MapId - * @See {@link MapIdentifiable} + * @author Alex Shvid * @author Matthew T. Adams * @author Mark Paluch + * @see MapIdCassandraRepository */ @NoRepositoryBean -public interface CassandraRepository extends TypedIdCassandraRepository {} +public interface CassandraRepository extends CrudRepository { + + /* + * (non-Javadoc) + * @see org.springframework.data.repository.CrudRepository#saveAll(java.lang.Iterable) + */ + @Override + List saveAll(Iterable entites); + + /* + * (non-Javadoc) + * @see org.springframework.data.repository.CrudRepository#findAll() + */ + @Override + List findAll(); + + /* + * (non-Javadoc) + * @see org.springframework.data.repository.CrudRepository#findAllById(java.lang.Iterable) + */ + @Override + List findAllById(Iterable ids); + + /** + * Inserts the given entity. Assumes the instance to be new to be able to apply insertion optimizations. Use the + * returned instance for further operations as the save operation might have changed the entity instance completely. + * Prefer using {@link #save(Object)} instead to avoid the usage of store-specific API. + * + * @param entity must not be {@literal null}. + * @return the saved entity + * @since 2.0 + */ + S insert(S entity); + + /** + * Inserts the given entities. Assumes the given entities to have not been persisted yet and thus will optimize the + * insert over a call to {@link #saveAll(Iterable)}. Prefer using {@link #saveAll(Iterable)} to avoid the usage of + * store specific API. + * + * @param entities must not be {@literal null}. + * @return the saved entities + * @since 2.0 + */ + List insert(Iterable entities); +} diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/MapIdCassandraRepository.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/MapIdCassandraRepository.java new file mode 100644 index 000000000..e4718a4f2 --- /dev/null +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/MapIdCassandraRepository.java @@ -0,0 +1,51 @@ +/* + * Copyright 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. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.data.cassandra.repository; + +import org.springframework.data.cassandra.core.mapping.PrimaryKeyColumn; +import org.springframework.data.cassandra.repository.support.BasicMapId; +import org.springframework.data.repository.NoRepositoryBean; + +/** + * Cassandra repository interface using {@link MapId} to represent Ids. + *

+ * This interface uses {@link MapId} for the id type, allowing you to annotate entity fields or properties with + * {@link PrimaryKeyColumn @PrimaryKeyColumn}. Use this interface if you do not require a composite primary key class + * and want to specify the Id with {@link MapId}. + *

+ * Steps to use this interface: + *

+ * + * @author Matthew T. Adams + * @author Mark Paluch + * @since 2.0 + * @see CassandraRepository + * @see MapId + * @see MapIdentifiable + */ +@NoRepositoryBean +public interface MapIdCassandraRepository extends CassandraRepository {} diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/TypedIdCassandraRepository.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/TypedIdCassandraRepository.java index ece1711f7..e793df3de 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/TypedIdCassandraRepository.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/TypedIdCassandraRepository.java @@ -5,7 +5,7 @@ * 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 + * 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, @@ -15,15 +15,7 @@ */ package org.springframework.data.cassandra.repository; -import java.util.List; - -import org.springframework.data.cassandra.core.mapping.PrimaryKey; -import org.springframework.data.cassandra.core.mapping.PrimaryKeyClass; -import org.springframework.data.cassandra.core.mapping.PrimaryKeyColumn; import org.springframework.data.cassandra.core.mapping.Table; -import org.springframework.data.cassandra.repository.support.BasicMapId; -import org.springframework.data.domain.Persistable; -import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.NoRepositoryBean; /** @@ -35,7 +27,7 @@ import org.springframework.data.repository.NoRepositoryBean; *
  • annotate the field or property in your entity with {@link PrimaryKey @PrimaryKey} and declare your repository * interface to be a subinterface of this interface, specifying the entity type and id type, or
  • *
  • annotate the field or property in your entity with {@link PrimaryKeyColumn @PrimaryKeyColumn} and declare your - * repository interface to be a subinterface of {@link CassandraRepository}.
  • + * repository interface to be a subinterface of {@link MapIdCassandraRepository}. * * If multiple columns comprise the identity of the entity, then you must employ one of the following two strategies. *
      @@ -49,13 +41,13 @@ import org.springframework.data.repository.NoRepositoryBean; * your primary key class type. *
    *
  • Strategy: embed identity fields or properties directly in your entity and use - * {@link CassandraRepository}
  • + * {@link MapIdCassandraRepository} *
      *
    • Define your entity, including a field or property for each column, including those for partition and (optional) * cluster columns.
    • *
    • Annotate each partition & cluster field or property with {@link PrimaryKeyColumn @PrimaryKeyColumn}
    • - *
    • Define your repository interface to be a subinterface of {@link CassandraRepository}, which uses a provided id - * type, {@link MapId} (implemented by {@link BasicMapId}).
    • + *
    • Define your repository interface to be a subinterface of {@link MapIdCassandraRepository}, which uses a provided + * id type, {@link MapId} (implemented by {@link BasicMapId}).
    • *
    • Whenever you need a {@link MapId}, you can use the static factory method {@link BasicMapId#id()} (which is * convenient if you import statically) and the builder method {@link MapId#with(String, Object)} to easily construct an * id.
    • @@ -65,50 +57,8 @@ import org.springframework.data.repository.NoRepositoryBean; * @author Alex Shvid * @author Matthew T. Adams * @author Mark Paluch + * @deprecated since 2.0, use {@link CassandraRepository}. */ @NoRepositoryBean -public interface TypedIdCassandraRepository extends CrudRepository { - - /* - * (non-Javadoc) - * @see org.springframework.data.repository.CrudRepository#saveAll(java.lang.Iterable) - */ - @Override - List saveAll(Iterable entites); - - /* - * (non-Javadoc) - * @see org.springframework.data.repository.CrudRepository#findAll() - */ - @Override - List findAll(); - - /* - * (non-Javadoc) - * @see org.springframework.data.repository.CrudRepository#findAllById(java.lang.Iterable) - */ - @Override - List findAllById(Iterable ids); - - /** - * Inserts the given entity. Assumes the instance to be new to be able to apply insertion optimizations. Use the - * returned instance for further operations as the save operation might have changed the entity instance completely. - * Prefer using {@link #save(Object)} instead to avoid the usage of store-specific API. - * - * @param entity must not be {@literal null}. - * @return the saved entity - * @since 2.0 - */ - S insert(S entity); - - /** - * Inserts the given entities. Assumes the given entities to have not been persisted yet and thus will optimize the - * insert over a call to {@link #saveAll(Iterable)}. Prefer using {@link #saveAll(Iterable)} to avoid the usage of - * store specific API. - * - * @param entities must not be {@literal null}. - * @return the saved entities - * @since 2.0 - */ - List insert(Iterable entities); -} +@Deprecated +public interface TypedIdCassandraRepository extends CassandraRepository {} diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/CassandraRepositoryFactory.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/CassandraRepositoryFactory.java index e0451de9f..99a4de166 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/CassandraRepositoryFactory.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/CassandraRepositoryFactory.java @@ -21,7 +21,7 @@ import java.util.Optional; import org.springframework.data.cassandra.core.CassandraOperations; import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity; -import org.springframework.data.cassandra.repository.TypedIdCassandraRepository; +import org.springframework.data.cassandra.repository.CassandraRepository; import org.springframework.data.cassandra.repository.query.CassandraEntityInformation; import org.springframework.data.cassandra.repository.query.CassandraQueryMethod; import org.springframework.data.cassandra.repository.query.PartTreeCassandraQuery; @@ -39,7 +39,7 @@ import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.util.Assert; /** - * Factory to create {@link TypedIdCassandraRepository} instances. + * Factory to create {@link CassandraRepository} instances. * * @author Alex Shvid * @author Matthew T. Adams diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/CassandraRepositoryFactoryBean.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/CassandraRepositoryFactoryBean.java index d9ab2f3e6..13a4384a7 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/CassandraRepositoryFactoryBean.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/CassandraRepositoryFactoryBean.java @@ -16,20 +16,19 @@ package org.springframework.data.cassandra.repository.support; import org.springframework.data.cassandra.core.CassandraTemplate; -import org.springframework.data.cassandra.repository.TypedIdCassandraRepository; +import org.springframework.data.cassandra.repository.CassandraRepository; import org.springframework.data.repository.Repository; import org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport; import org.springframework.data.repository.core.support.RepositoryFactorySupport; import org.springframework.util.Assert; /** - * {@link org.springframework.beans.factory.FactoryBean} to create {@link TypedIdCassandraRepository} instances. + * {@link org.springframework.beans.factory.FactoryBean} to create {@link CassandraRepository} instances. * * @author Alex Shvid * @author John Blum * @author Oliver Gierke - * @see org.springframework.data.repository.Repository - * @see org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport + * @author Mark Paluch */ public class CassandraRepositoryFactoryBean, S, ID> extends RepositoryFactoryBeanSupport { diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/SimpleCassandraRepository.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/SimpleCassandraRepository.java index fb6d58756..0fb389b55 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/SimpleCassandraRepository.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/SimpleCassandraRepository.java @@ -26,7 +26,7 @@ import org.springframework.data.cassandra.core.CassandraOperations; import org.springframework.data.cassandra.core.CassandraTemplate; import org.springframework.data.cassandra.core.convert.CassandraConverter; import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity; -import org.springframework.data.cassandra.repository.TypedIdCassandraRepository; +import org.springframework.data.cassandra.repository.CassandraRepository; import org.springframework.data.cassandra.repository.query.CassandraEntityInformation; import org.springframework.util.Assert; @@ -41,7 +41,7 @@ import com.datastax.driver.core.querybuilder.Select; * @author Matthew T. Adams * @author Mark Paluch */ -public class SimpleCassandraRepository implements TypedIdCassandraRepository { +public class SimpleCassandraRepository implements CassandraRepository { private final CassandraEntityInformation entityInformation; diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/BigIntParamIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/BigIntParamIntegrationTests.java index 77eb43e3c..b7d7977f0 100755 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/BigIntParamIntegrationTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/BigIntParamIntegrationTests.java @@ -46,6 +46,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; * Integration tests for {@link BigInteger} usage in repositories. * * @author Pete Cable + * @author Mark Paluch */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration @@ -94,7 +95,7 @@ public class BigIntParamIntegrationTests extends AbstractSpringDataEmbeddedCassa /** * @author Pete Cable */ - interface BigThingRepo extends CassandraRepository { + interface BigThingRepo extends MapIdCassandraRepository { @Query("SELECT * from bigthing where number = ?0") BigThing findThingByBigInteger(BigInteger number); diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/DateKeyIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/DateKeyIntegrationTests.java index e033cb107..0d2d38b72 100755 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/DateKeyIntegrationTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/DateKeyIntegrationTests.java @@ -96,7 +96,7 @@ public class DateKeyIntegrationTests extends AbstractSpringDataEmbeddedCassandra * * @author Matthew T. Adams */ - interface DateThingRepo extends CassandraRepository { + interface DateThingRepo extends MapIdCassandraRepository { @Query("SELECT * from datething where date = ?0") DateThing findThingByDate(Date date); diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/IntParamIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/IntParamIntegrationTests.java index 526272d47..d137ae116 100755 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/IntParamIntegrationTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/IntParamIntegrationTests.java @@ -42,6 +42,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** * @author Matthew T. Adams + * @author Mark Paluch */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration @@ -88,7 +89,7 @@ public class IntParamIntegrationTests extends AbstractSpringDataEmbeddedCassandr @PrimaryKeyColumn(ordinal = 0, type = PrimaryKeyType.PARTITIONED) private int number; } - interface IntThingRepo extends CassandraRepository { + interface IntThingRepo extends MapIdCassandraRepository { @Query("SELECT * from intthing where number = ?0") IntThing findThingByIntPrimitive(int number); diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/NamedQueryIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/NamedQueryIntegrationTests.java index eac184f4a..f17bd2515 100755 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/NamedQueryIntegrationTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/NamedQueryIntegrationTests.java @@ -339,7 +339,7 @@ public class NamedQueryIntegrationTests extends AbstractSpringDataEmbeddedCassan assertThat(count).isEqualTo(before + 100L); } - public interface PersonRepositoryWithNamedQueries extends CassandraRepository { + public interface PersonRepositoryWithNamedQueries extends MapIdCassandraRepository { List findFolksWithLastnameAsList(String lastname); diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/QueryDerivationIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/QueryDerivationIntegrationTests.java index 39d46789a..05b324d6e 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/QueryDerivationIntegrationTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/QueryDerivationIntegrationTests.java @@ -281,7 +281,7 @@ public class QueryDerivationIntegrationTests extends AbstractSpringDataEmbeddedC /** * @author Mark Paluch */ - static interface PersonRepository extends CassandraRepository { + static interface PersonRepository extends MapIdCassandraRepository { List findByLastname(String lastname); diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/config/CassandraRepositoryConfigurationExtensionUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/config/CassandraRepositoryConfigurationExtensionUnitTests.java index 2fbe41fba..5001c5d86 100755 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/config/CassandraRepositoryConfigurationExtensionUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/config/CassandraRepositoryConfigurationExtensionUnitTests.java @@ -28,7 +28,7 @@ import org.springframework.core.io.ResourceLoader; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.core.type.StandardAnnotationMetadata; import org.springframework.data.cassandra.core.mapping.Table; -import org.springframework.data.cassandra.repository.CassandraRepository; +import org.springframework.data.cassandra.repository.MapIdCassandraRepository; import org.springframework.data.repository.Repository; import org.springframework.data.repository.config.AnnotationRepositoryConfigurationSource; import org.springframework.data.repository.config.RepositoryConfiguration; @@ -38,6 +38,7 @@ import org.springframework.data.repository.config.RepositoryConfigurationSource; * Unit tests for {@link CassandraRepositoryConfigurationExtension}. * * @author Christoph Strobl + * @author Mark Paluch */ public class CassandraRepositoryConfigurationExtensionUnitTests { @@ -108,5 +109,5 @@ public class CassandraRepositoryConfigurationExtensionUnitTests { interface UnannotatedRepository extends Repository {} - interface StoreRepository extends CassandraRepository {} + interface StoreRepository extends MapIdCassandraRepository {} } diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/conversion/DerivedQueryMethodsParameterConversionIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/conversion/DerivedQueryMethodsParameterConversionIntegrationTests.java index d1c51ab27..89c79becc 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/conversion/DerivedQueryMethodsParameterConversionIntegrationTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/conversion/DerivedQueryMethodsParameterConversionIntegrationTests.java @@ -22,7 +22,7 @@ import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.cassandra.repository.CassandraRepository; +import org.springframework.data.cassandra.repository.MapIdCassandraRepository; import org.springframework.data.cassandra.repository.NamedQueryIntegrationTests.PersonRepositoryWithNamedQueries; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @@ -99,7 +99,7 @@ public class DerivedQueryMethodsParameterConversionIntegrationTests extends Para assertThat(contactRepository.findByAlternativePhonesContains(udtValue)).contains(walter); } - interface ContactRepository extends CassandraRepository { + interface ContactRepository extends MapIdCassandraRepository { List findByAddress(Address address); diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/conversion/StringQueryMethodsParameterConversionIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/conversion/StringQueryMethodsParameterConversionIntegrationTests.java index a6678e968..052ada2f2 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/conversion/StringQueryMethodsParameterConversionIntegrationTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/conversion/StringQueryMethodsParameterConversionIntegrationTests.java @@ -22,7 +22,7 @@ import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.cassandra.repository.CassandraRepository; +import org.springframework.data.cassandra.repository.MapIdCassandraRepository; import org.springframework.data.cassandra.repository.NamedQueryIntegrationTests.PersonRepositoryWithNamedQueries; import org.springframework.data.cassandra.repository.Query; import org.springframework.test.context.ContextConfiguration; @@ -100,7 +100,7 @@ public class StringQueryMethodsParameterConversionIntegrationTests extends Param assertThat(contactRepository.findByAlternativePhonesContains(udtValue)).contains(walter); } - interface ContactStringQueryRepository extends CassandraRepository { + interface ContactStringQueryRepository extends MapIdCassandraRepository { @Query("SELECT * from contact where address = ?0;") List findByAddress(Address address); diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/PartTreeCassandraQueryUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/PartTreeCassandraQueryUnitTests.java index bdde772ac..e75af962f 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/PartTreeCassandraQueryUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/PartTreeCassandraQueryUnitTests.java @@ -38,7 +38,7 @@ import org.springframework.data.cassandra.core.mapping.UserTypeResolver; import org.springframework.data.cassandra.domain.AddressType; import org.springframework.data.cassandra.domain.Group; import org.springframework.data.cassandra.domain.Person; -import org.springframework.data.cassandra.repository.CassandraRepository; +import org.springframework.data.cassandra.repository.MapIdCassandraRepository; import org.springframework.data.cassandra.repository.Query; import org.springframework.data.cql.core.CqlIdentifier; import org.springframework.data.projection.ProjectionFactory; @@ -197,13 +197,13 @@ public class PartTreeCassandraQueryUnitTests { } @SuppressWarnings("unused") - interface GroupRepository extends CassandraRepository { + interface GroupRepository extends MapIdCassandraRepository { Group findByIdHashPrefix(String hashPrefix); } @SuppressWarnings("unused") - interface Repo extends CassandraRepository { + interface Repo extends MapIdCassandraRepository { @Query() Person findByLastname(String lastname); diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactivePartTreeCassandraQueryUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactivePartTreeCassandraQueryUnitTests.java index 1d6d17bf3..9ac9832d1 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactivePartTreeCassandraQueryUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactivePartTreeCassandraQueryUnitTests.java @@ -36,7 +36,7 @@ import org.springframework.data.cassandra.core.convert.MappingCassandraConverter import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext; import org.springframework.data.cassandra.core.mapping.UserTypeResolver; import org.springframework.data.cassandra.domain.Person; -import org.springframework.data.cassandra.repository.CassandraRepository; +import org.springframework.data.cassandra.repository.MapIdCassandraRepository; import org.springframework.data.cassandra.repository.Query; import org.springframework.data.projection.ProjectionFactory; import org.springframework.data.projection.SpelAwareProxyProjectionFactory; @@ -127,7 +127,7 @@ public class ReactivePartTreeCassandraQueryUnitTests { } @SuppressWarnings("unused") - interface Repo extends CassandraRepository { + interface Repo extends MapIdCassandraRepository { @Query() Flux findByLastname(String lastname); diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/SimpleCassandraRepositoryIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/SimpleCassandraRepositoryIntegrationTests.java index d5666b0cf..76bc37cd8 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/SimpleCassandraRepositoryIntegrationTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/SimpleCassandraRepositoryIntegrationTests.java @@ -32,7 +32,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.data.cassandra.core.CassandraOperations; import org.springframework.data.cassandra.domain.User; -import org.springframework.data.cassandra.repository.TypedIdCassandraRepository; +import org.springframework.data.cassandra.repository.CassandraRepository; import org.springframework.data.cql.AbstractKeyspaceCreatingIntegrationTest; import org.springframework.data.repository.query.DefaultEvaluationContextProvider; import org.springframework.test.context.ContextConfiguration; @@ -288,5 +288,5 @@ public class SimpleCassandraRepositoryIntegrationTests extends AbstractKeyspaceC assertThat(loaded).isEmpty(); } - interface UserRepostitory extends TypedIdCassandraRepository {} + interface UserRepostitory extends CassandraRepository {} } diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/compositeprimarykey/ExplicitRepository.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/compositeprimarykey/ExplicitRepository.java index 1f84341ff..2e9393954 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/compositeprimarykey/ExplicitRepository.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/compositeprimarykey/ExplicitRepository.java @@ -15,9 +15,10 @@ */ package org.springframework.data.cassandra.test.integration.forcequote.compositeprimarykey; -import org.springframework.data.cassandra.repository.TypedIdCassandraRepository; +import org.springframework.data.cassandra.repository.CassandraRepository; /** * @author Matthew T. Adams + * @author Mark Paluch */ -public interface ExplicitRepository extends TypedIdCassandraRepository {} +public interface ExplicitRepository extends CassandraRepository {} diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/compositeprimarykey/ImplicitRepository.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/compositeprimarykey/ImplicitRepository.java index c14b1c561..c2b0dade0 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/compositeprimarykey/ImplicitRepository.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/compositeprimarykey/ImplicitRepository.java @@ -15,9 +15,10 @@ */ package org.springframework.data.cassandra.test.integration.forcequote.compositeprimarykey; -import org.springframework.data.cassandra.repository.TypedIdCassandraRepository; +import org.springframework.data.cassandra.repository.CassandraRepository; /** * @author Matthew T. Adams + * @author Mark Paluch */ -public interface ImplicitRepository extends TypedIdCassandraRepository {} +public interface ImplicitRepository extends CassandraRepository {} diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ExplicitPropertiesRepository.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ExplicitPropertiesRepository.java index 2d8b503f1..6afad0e94 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ExplicitPropertiesRepository.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ExplicitPropertiesRepository.java @@ -15,9 +15,10 @@ */ package org.springframework.data.cassandra.test.integration.forcequote.config; -import org.springframework.data.cassandra.repository.TypedIdCassandraRepository; +import org.springframework.data.cassandra.repository.CassandraRepository; /** * @author Matthew T. Adams + * @author Mark Paluch */ -public interface ExplicitPropertiesRepository extends TypedIdCassandraRepository {} +public interface ExplicitPropertiesRepository extends CassandraRepository {} diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ExplicitRepository.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ExplicitRepository.java index 0f80a863f..4a5d0262b 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ExplicitRepository.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ExplicitRepository.java @@ -15,9 +15,10 @@ */ package org.springframework.data.cassandra.test.integration.forcequote.config; -import org.springframework.data.cassandra.repository.TypedIdCassandraRepository; +import org.springframework.data.cassandra.repository.CassandraRepository; /** * @author Matthew T. Adams + * @author Mark Paluch */ -public interface ExplicitRepository extends TypedIdCassandraRepository {} +public interface ExplicitRepository extends CassandraRepository {} diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ImplicitPropertiesRepository.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ImplicitPropertiesRepository.java index cefaf3538..9a65e15bf 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ImplicitPropertiesRepository.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ImplicitPropertiesRepository.java @@ -15,9 +15,10 @@ */ package org.springframework.data.cassandra.test.integration.forcequote.config; -import org.springframework.data.cassandra.repository.TypedIdCassandraRepository; +import org.springframework.data.cassandra.repository.CassandraRepository; /** * @author Matthew T. Adams + * @author Mark Paluch */ -public interface ImplicitPropertiesRepository extends TypedIdCassandraRepository {} +public interface ImplicitPropertiesRepository extends CassandraRepository {} diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ImplicitRepository.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ImplicitRepository.java index a7856541b..9cce2cfce 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ImplicitRepository.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ImplicitRepository.java @@ -15,9 +15,10 @@ */ package org.springframework.data.cassandra.test.integration.forcequote.config; -import org.springframework.data.cassandra.repository.TypedIdCassandraRepository; +import org.springframework.data.cassandra.repository.CassandraRepository; /** * @author Matthew T. Adams + * @author Mark Paluch */ -public interface ImplicitRepository extends TypedIdCassandraRepository {} +public interface ImplicitRepository extends CassandraRepository {} diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/mapping/mapid/repo/MultiPrimaryKeyColumnsRepository.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/mapping/mapid/repo/MultiPrimaryKeyColumnsRepository.java index 1393fa867..d583e583b 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/mapping/mapid/repo/MultiPrimaryKeyColumnsRepository.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/mapping/mapid/repo/MultiPrimaryKeyColumnsRepository.java @@ -15,9 +15,10 @@ */ package org.springframework.data.cassandra.test.integration.mapping.mapid.repo; -import org.springframework.data.cassandra.repository.CassandraRepository; +import org.springframework.data.cassandra.repository.MapIdCassandraRepository; /** * @author Matthew T. Adams + * @author Mark Paluch */ -public interface MultiPrimaryKeyColumnsRepository extends CassandraRepository {} +public interface MultiPrimaryKeyColumnsRepository extends MapIdCassandraRepository {} diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/mapping/mapid/repo/SinglePrimaryKecColumnRepository.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/mapping/mapid/repo/SinglePrimaryKecColumnRepository.java index 2bbb0ff67..09870b447 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/mapping/mapid/repo/SinglePrimaryKecColumnRepository.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/mapping/mapid/repo/SinglePrimaryKecColumnRepository.java @@ -15,9 +15,9 @@ */ package org.springframework.data.cassandra.test.integration.mapping.mapid.repo; -import org.springframework.data.cassandra.repository.CassandraRepository; +import org.springframework.data.cassandra.repository.MapIdCassandraRepository; /** * @author Matthew T. Adams */ -public interface SinglePrimaryKecColumnRepository extends CassandraRepository {} +public interface SinglePrimaryKecColumnRepository extends MapIdCassandraRepository {} diff --git a/src/main/asciidoc/new-features.adoc b/src/main/asciidoc/new-features.adoc index 02677f0c1..f684001b9 100644 --- a/src/main/asciidoc/new-features.adoc +++ b/src/main/asciidoc/new-features.adoc @@ -4,6 +4,7 @@ [[new-features.2-0-0]] == What's new in Spring Data for Apache Cassandra 2.0 * `Update` and `Query` objects. +* CRUD repository interface renaming: `CassandraRepository` using `MapId` is now renamed to `MapIdCassandraRepository`. `TypedIdCassandraRepository` is renamed to `CassandraRepository`. [[new-features.1-5-0]] == What's new in Spring Data for Apache Cassandra 1.5