From a02579b97ea5a84a95b4b2f093cd75850de5173d Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Tue, 26 Feb 2019 14:51:03 +0100 Subject: [PATCH] DATACASS-633 - Silently traverse CassandraPersistentEntity associations. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BasicCassandraPersistentEntity.doWithAssociations(…) now no longer throws UnsupportedCassandraOperationException when trying to traverse associations. Calling doWithAssociations results in a no-op as there are no associations. Related ticket: DATAREST-1337. --- .../BasicCassandraPersistentEntity.java | 1 - ...sicCassandraPersistentEntityUnitTests.java | 28 ++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntity.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntity.java index eb5dedf3b..e37fed1cb 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntity.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntity.java @@ -120,7 +120,6 @@ public class BasicCassandraPersistentEntity extends BasicPersistentEntity handler) { - throw new UnsupportedCassandraOperationException("Cassandra does not support associations"); } /* (non-Javadoc) diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntityUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntityUnitTests.java index 78ffcbaee..8686cb00c 100755 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntityUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntityUnitTests.java @@ -16,7 +16,7 @@ package org.springframework.data.cassandra.core.mapping; import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.isA; +import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import java.lang.annotation.ElementType; @@ -33,6 +33,8 @@ import org.springframework.beans.DirectFieldAccessor; import org.springframework.context.ApplicationContext; import org.springframework.core.annotation.AliasFor; import org.springframework.data.cassandra.core.cql.CqlIdentifier; +import org.springframework.data.mapping.Association; +import org.springframework.data.mapping.AssociationHandler; import org.springframework.data.util.ClassTypeInformation; /** @@ -141,6 +143,30 @@ public class BasicCassandraPersistentEntityUnitTests { assertThat(entity.isCompositePrimaryKey()).isTrue(); } + @Test // DATACASS-633 + @SuppressWarnings("unchecked") + public void shouldRejectAssociationCreation() { + + BasicCassandraPersistentEntity entity = new BasicCassandraPersistentEntity<>( + ClassTypeInformation.from(PrimaryKeyClassWithComposedAnnotation.class)); + + assertThatThrownBy(() -> entity.addAssociation(mock(Association.class))) + .isInstanceOf(UnsupportedCassandraOperationException.class); + } + + @Test // DATACASS-633 + @SuppressWarnings("unchecked") + public void shouldNoOpOnDoWithAssociations() { + + BasicCassandraPersistentEntity entity = new BasicCassandraPersistentEntity<>( + ClassTypeInformation.from(PrimaryKeyClassWithComposedAnnotation.class)); + + AssociationHandler handlerMock = mock(AssociationHandler.class); + entity.doWithAssociations(handlerMock); + + verifyZeroInteractions(handlerMock); + } + @Table("messages") static class Message {}