From b175953ff96350450ada4cc30a0c01eb87004f83 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Wed, 26 Apr 2017 12:58:38 +0200 Subject: [PATCH] DATACASS-435 - Remove strict mode in BasicCassandraPersistentEntityMetadataVerifier. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Strict mode is no longer used. Switching to a lenient verification can be achieved with a custom verifier. Made VerifierMappingExceptions immutable by removing VerifierMappingExceptions.add(…). --- ...andraPersistentEntityMetadataVerifier.java | 27 +--------- .../mapping/VerifierMappingExceptions.java | 43 +++++---------- .../VerifierMappingExceptionsUnitTests.java | 54 ------------------- 3 files changed, 14 insertions(+), 110 deletions(-) delete mode 100644 spring-data-cassandra/src/test/java/org/springframework/data/cassandra/mapping/VerifierMappingExceptionsUnitTests.java diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/BasicCassandraPersistentEntityMetadataVerifier.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/BasicCassandraPersistentEntityMetadataVerifier.java index 77d2a9c50..7460da566 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/BasicCassandraPersistentEntityMetadataVerifier.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/BasicCassandraPersistentEntityMetadataVerifier.java @@ -1,5 +1,5 @@ /* - * Copyright 2013-2016 the original author or authors + * 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. @@ -35,8 +35,6 @@ import org.springframework.data.mapping.model.MappingException; */ public class BasicCassandraPersistentEntityMetadataVerifier implements CassandraPersistentEntityMetadataVerifier { - @Deprecated protected boolean strict = false; - /* * (non-Javadoc) * @see org.springframework.data.cassandra.mapping.CassandraPersistentEntityMetadataVerifier#verify(org.springframework.data.cassandra.mapping.CassandraPersistentEntity) @@ -72,9 +70,6 @@ public class BasicCassandraPersistentEntityMetadataVerifier implements Cassandra } }); - // Perform rules verification on Table/Persistent - // TODO Verify annotation values with CqlIndentifier - /* * Perform rules verification on Table/Persistent */ @@ -113,26 +108,6 @@ public class BasicCassandraPersistentEntityMetadataVerifier implements Cassandra } } - /** - * @return the setting for strict. - * @deprecated Will be removed in future versions. - */ - @Deprecated - @SuppressWarnings("unused") - public boolean isStrict() { - return strict; - } - - /** - * @param strict boolean setting for strict. - * @deprecated Will be removed in future versions. - */ - @Deprecated - @SuppressWarnings("unused") - public void setStrict(boolean strict) { - this.strict = strict; - } - private static void fail(CassandraPersistentEntity entity, List exceptions) { throw new VerifierMappingExceptions(entity, exceptions); } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/VerifierMappingExceptions.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/VerifierMappingExceptions.java index 56e74f2c1..da58eb0c6 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/VerifierMappingExceptions.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/VerifierMappingExceptions.java @@ -33,7 +33,7 @@ import org.springframework.util.Assert; @SuppressWarnings("serial") public class VerifierMappingExceptions extends MappingException { - final Collection exceptions; + private final Collection exceptions; private final String className; @@ -52,6 +52,8 @@ public class VerifierMappingExceptions extends MappingException { this.exceptions = Collections.unmodifiableCollection(new LinkedList<>(exceptions)); this.className = entity.getType().getName(); + + this.exceptions.forEach(this::addSuppressed); } /** @@ -66,56 +68,37 @@ public class VerifierMappingExceptions extends MappingException { Assert.notNull(entity, "CassandraPersistentEntity must not be null"); - this.exceptions = new LinkedList<>(); + this.exceptions = Collections.emptyList(); this.className = entity.getType().getName(); } /** - * @param mappingException must not be {@literal null}. - * @deprecated Exceptions should be immutable so this method is subject to be removed in future versions - */ - @Deprecated - public void add(MappingException mappingException) { - - Assert.notNull(mappingException, "MappingException must not be null"); - - exceptions.add(mappingException); - } - - /** - * Returns a list of the MappingExceptions aggregated within. + * Returns a list of the {@link MappingException}s aggregated within. * - * @return The Collection of MappingException + * @return collection of {@link MappingException}. */ public Collection getMappingExceptions() { - return Collections.unmodifiableCollection(exceptions); + return exceptions; } /** - * Returns a list of the MappingException messages aggregated within. + * Returns a list of the {@link MappingException} messages aggregated within. * - * @return The Collection of Messages + * @return collection of messages. */ public Collection getMessages() { return exceptions.stream().map(Throwable::getMessage).collect(Collectors.toList()); } - /** - * Returns the number of errors that have been added to this Exception Class. - * - * @return Number of Errors present + /* (non-Javadoc) + * @see java.lang.Throwable#getMessage() */ - public int getCount() { - return exceptions.size(); - } - @Override public String getMessage() { + StringBuilder builder = new StringBuilder(className).append(":\n"); - for (MappingException e : exceptions) { - builder.append(" - ").append(e.getMessage()).append("\n"); - } + exceptions.forEach(e -> builder.append(" - ").append(e.getMessage()).append("\n")); return builder.toString(); } diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/mapping/VerifierMappingExceptionsUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/mapping/VerifierMappingExceptionsUnitTests.java deleted file mode 100644 index 880a2564f..000000000 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/mapping/VerifierMappingExceptionsUnitTests.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2016-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.mapping; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.junit.MockitoJUnitRunner; -import org.springframework.data.mapping.model.MappingException; - -/** - * Unit tests for {@link VerifierMappingExceptions}. - * - * @author Mark Paluch - */ -@RunWith(MockitoJUnitRunner.class) -public class VerifierMappingExceptionsUnitTests { - - @Mock CassandraPersistentEntity entityMock; - - @Before - @SuppressWarnings("unchecked") - public void setUp() throws Exception { - - when(entityMock.getType()).thenReturn((Class) VerifierMappingExceptionsUnitTests.class); - - } - - @Test // DATACASS-258 - public void testDeprecatedMutability() { - - VerifierMappingExceptions exceptions = new VerifierMappingExceptions(entityMock, "err"); - exceptions.add(new MappingException("my error")); - - assertThat(exceptions.toString()).contains("my error"); - } -}