From 40fd381207520d7928633bb20b1ab3a7b9d712c3 Mon Sep 17 00:00:00 2001 From: Frank Spitulski Date: Tue, 12 Jan 2021 16:36:31 -0800 Subject: [PATCH] non constant assert messages are now deferred to improve performance --- .../cassandra/core/convert/MappingCassandraConverter.java | 8 ++++---- .../data/cassandra/core/convert/RowReader.java | 3 ++- .../core/cql/generator/AlterUserTypeCqlGenerator.java | 3 ++- .../core/cql/generator/CreateUserTypeCqlGenerator.java | 3 ++- .../mapping/BasicCassandraPersistentTupleProperty.java | 4 +++- .../core/mapping/CassandraPersistentProperty.java | 7 ++++--- 6 files changed, 17 insertions(+), 11 deletions(-) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/MappingCassandraConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/MappingCassandraConverter.java index 3e1129bec..1605939b0 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/MappingCassandraConverter.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/MappingCassandraConverter.java @@ -25,7 +25,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanClassLoaderAware; import org.springframework.context.ApplicationContext; @@ -85,6 +84,7 @@ * @author Antoine Toulme * @author John Blum * @author Christoph Strobl + * @author Frank Spitulski */ public class MappingCassandraConverter extends AbstractCassandraConverter implements ApplicationContextAware, BeanClassLoaderAware { @@ -521,7 +521,7 @@ private void writeWhereFromObject(Object source, Where sink, CassandraPersistent Object id = extractId(source, entity); - Assert.notNull(id, String.format("No Id value found in object %s", source)); + Assert.notNull(id, () -> String.format("No Id value found in object %s", source)); CassandraPersistentProperty idProperty = entity.getIdProperty(); CassandraPersistentProperty compositeIdProperty = null; @@ -600,7 +600,7 @@ private void writeWhere(MapId id, Where sink, CassandraPersistentEntity entit private void writeWhere(ConvertingPropertyAccessor accessor, Where sink, CassandraPersistentEntity entity) { Assert.isTrue(entity.isCompositePrimaryKey(), - String.format("Entity [%s] is not a composite primary key", entity.getName())); + () -> String.format("Entity [%s] is not a composite primary key", entity.getName())); for (CassandraPersistentProperty property : entity) { TypeCodec codec = getCodec(property); @@ -684,7 +684,7 @@ public Object getId(Object object, CassandraPersistentEntity entity) { ConvertingPropertyAccessor propertyAccessor = newConvertingPropertyAccessor(object, entity); Assert.isTrue(entity.getType().isAssignableFrom(object.getClass()), - String.format("Given instance of type [%s] is not compatible with expected type [%s]", + () -> String.format("Given instance of type [%s] is not compatible with expected type [%s]", object.getClass().getName(), entity.getType().getName())); if (object instanceof MapIdentifiable) { diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/RowReader.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/RowReader.java index 9009242b3..8b7ec38ae 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/RowReader.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/RowReader.java @@ -35,6 +35,7 @@ * Helpful class to read a column's value from a row, with possible type conversion. * * @author Mark Paluch + * @author Frank Spitulski * @since 3.0 */ class RowReader { @@ -165,7 +166,7 @@ private int getColumnIndex(String columnName) { int index = columns.firstIndexOf(columnName); - Assert.isTrue(index > -1, String.format("Column [%s] does not exist in table", columnName)); + Assert.isTrue(index > -1, () -> String.format("Column [%s] does not exist in table", columnName)); return index; } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/generator/AlterUserTypeCqlGenerator.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/generator/AlterUserTypeCqlGenerator.java index 2d755498e..1ce9a3539 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/generator/AlterUserTypeCqlGenerator.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/generator/AlterUserTypeCqlGenerator.java @@ -27,6 +27,7 @@ * * @author Fabio J. Mendes * @author Mark Paluch + * @author Frank Spitulski * @since 1.5 * @see AlterUserTypeSpecification * @see AddColumnSpecification @@ -58,7 +59,7 @@ public StringBuilder toCql(StringBuilder cql) { Assert.notNull(getSpecification().getName(), "User type name must not be null"); Assert.isTrue(!getSpecification().getChanges().isEmpty(), - String.format("User type [%s] does not contain fields", getSpecification().getName())); + () -> String.format("User type [%s] does not contain fields", getSpecification().getName())); return changesCql(preambleCql(cql)).append(";"); } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/generator/CreateUserTypeCqlGenerator.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/generator/CreateUserTypeCqlGenerator.java index 39afaafa1..5340cbfd7 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/generator/CreateUserTypeCqlGenerator.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/generator/CreateUserTypeCqlGenerator.java @@ -24,6 +24,7 @@ * * @author Fabio J. Mendes * @author Mark Paluch + * @author Frank Spitulski * @since 1.5 * @see CreateUserTypeSpecification */ @@ -52,7 +53,7 @@ public StringBuilder toCql(StringBuilder cql) { Assert.notNull(getSpecification().getName(), "User type name must not be null"); Assert.isTrue(!getSpecification().getFields().isEmpty(), - String.format("User type [%s] does not contain fields", getSpecification().getName().asCql(true))); + () -> String.format("User type [%s] does not contain fields", getSpecification().getName().asCql(true))); return columns(preambleCql(cql)).append(";"); } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentTupleProperty.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentTupleProperty.java index 06b6cb758..3fe4b8acf 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentTupleProperty.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentTupleProperty.java @@ -27,6 +27,7 @@ * Cassandra Tuple specific {@link CassandraPersistentProperty} implementation. * * @author Mark Paluch + * @author Frank Spitulski * @since 2.1 * @see Element */ @@ -68,7 +69,8 @@ private Integer findOrdinal() { } Assert.isTrue(ordinal >= 0, - String.format("Element ordinal must be greater or equal to zero for property [%s] in entity [%s]", getName(), + () -> String.format("Element ordinal must be greater or equal to zero for property [%s] in entity [%s]", + getName(), getOwner().getName())); return ordinal; diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/CassandraPersistentProperty.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/CassandraPersistentProperty.java index 12670527a..eafb70b6d 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/CassandraPersistentProperty.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/CassandraPersistentProperty.java @@ -35,6 +35,7 @@ * @author Mark Paluch * @author John Blum * @author Christoph Strobl + * @author Frank Spitulski */ public interface CassandraPersistentProperty extends PersistentProperty, ApplicationContextAware { @@ -81,8 +82,8 @@ default CqlIdentifier getRequiredColumnName() { CqlIdentifier columnName = getColumnName(); - Assert.state(columnName != null, String.format("No column name available for this persistent property [%1$s.%2$s]", - getOwner().getName(), getName())); + Assert.state(columnName != null, () -> String + .format("No column name available for this persistent property [%1$s.%2$s]", getOwner().getName(), getName())); return columnName; } @@ -115,7 +116,7 @@ default int getRequiredOrdinal() { Integer ordinal = getOrdinal(); - Assert.state(ordinal != null, String.format("No ordinal available for this persistent property [%1$s.%2$s]", + Assert.state(ordinal != null, () -> String.format("No ordinal available for this persistent property [%1$s.%2$s]", getOwner().getName(), getName())); return ordinal;