From 18eda61f15d00873a870fc2cdfaa20b0043ab3a6 Mon Sep 17 00:00:00 2001 From: Kurt Niemi Date: Mon, 20 Mar 2023 18:27:02 -0400 Subject: [PATCH] Deprecate redundant getReference(IdentifierProcessing) method. Closes #1110 Original pull request #1458 --- .../convert/IdGeneratingBatchInsertStrategy.java | 4 ++-- .../core/convert/IdGeneratingInsertStrategy.java | 4 ++-- .../JdbcBackReferencePropertyValueProvider.java | 2 +- .../core/convert/JdbcPropertyValueProvider.java | 2 +- .../jdbc/core/convert/MapEntityRowMapper.java | 2 +- .../data/jdbc/core/convert/SqlGenerator.java | 2 +- .../convert/SqlIdentifierParameterSource.java | 4 ++-- .../data/r2dbc/dialect/H2Dialect.java | 2 +- .../data/r2dbc/dialect/MySqlDialect.java | 2 +- .../core/mapping/DerivedSqlIdentifier.java | 3 ++- .../relational/core/mapping/NamingStrategy.java | 2 +- .../mapping/PersistentPropertyPathExtension.java | 2 +- .../core/sql/CompositeSqlIdentifier.java | 1 + .../core/sql/DefaultSqlIdentifier.java | 5 +++-- .../data/relational/core/sql/SqlIdentifier.java | 16 ++++++++++------ .../mapping/DerivedSqlIdentifierUnitTests.java | 6 ++++-- .../core/sql/SqlIdentifierUnitTests.java | 4 +++- 17 files changed, 37 insertions(+), 26 deletions(-) diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/IdGeneratingBatchInsertStrategy.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/IdGeneratingBatchInsertStrategy.java index b0407c28..29d5a0bb 100644 --- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/IdGeneratingBatchInsertStrategy.java +++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/IdGeneratingBatchInsertStrategy.java @@ -79,7 +79,7 @@ class IdGeneratingBatchInsertStrategy implements BatchInsertStrategy { Map keys = keyList.get(i); if (keys.size() > 1) { if (idColumn != null) { - ids[i] = keys.get(idColumn.getReference(dialect.getIdentifierProcessing())); + ids[i] = keys.get(idColumn.getReference()); } } else { ids[i] = keys.entrySet().stream().findFirst() // @@ -93,7 +93,7 @@ class IdGeneratingBatchInsertStrategy implements BatchInsertStrategy { private String[] getKeyColumnNames() { return Optional.ofNullable(idColumn) - .map(idColumn -> new String[] { idColumn.getReference(dialect.getIdentifierProcessing()) }) + .map(idColumn -> new String[] { idColumn.getReference() }) .orElse(new String[0]); } } diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/IdGeneratingInsertStrategy.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/IdGeneratingInsertStrategy.java index de081d4e..9f77183a 100644 --- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/IdGeneratingInsertStrategy.java +++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/IdGeneratingInsertStrategy.java @@ -79,13 +79,13 @@ class IdGeneratingInsertStrategy implements InsertStrategy { return null; } - return keys.get(idColumn.getReference(dialect.getIdentifierProcessing())); + return keys.get(idColumn.getReference()); } } private String[] getKeyColumnNames() { return Optional.ofNullable(idColumn) - .map(idColumn -> new String[] { idColumn.getReference(dialect.getIdentifierProcessing()) }) + .map(idColumn -> new String[] { idColumn.getReference() }) .orElse(new String[0]); } } diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/JdbcBackReferencePropertyValueProvider.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/JdbcBackReferencePropertyValueProvider.java index 76b3cacd..24a61b50 100644 --- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/JdbcBackReferencePropertyValueProvider.java +++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/JdbcBackReferencePropertyValueProvider.java @@ -50,7 +50,7 @@ class JdbcBackReferencePropertyValueProvider implements PropertyValueProvider T getPropertyValue(RelationalPersistentProperty property) { return (T) resultSet - .getObject(basePath.extendBy(property).getReverseColumnNameAlias().getReference(identifierProcessing)); + .getObject(basePath.extendBy(property).getReverseColumnNameAlias().getReference()); } public JdbcBackReferencePropertyValueProvider extendBy(RelationalPersistentProperty property) { diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/JdbcPropertyValueProvider.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/JdbcPropertyValueProvider.java index 3d051183..56d9d5a4 100644 --- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/JdbcPropertyValueProvider.java +++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/JdbcPropertyValueProvider.java @@ -62,7 +62,7 @@ class JdbcPropertyValueProvider implements PropertyValueProvider implements RowMapper> { @Override public Map.Entry mapRow(ResultSet rs, int rowNum) throws SQLException { - Object key = rs.getObject(keyColumn.getReference(identifierProcessing)); + Object key = rs.getObject(keyColumn.getReference()); return new HashMap.SimpleEntry<>(key, mapEntity(rs, key)); } diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/SqlGenerator.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/SqlGenerator.java index ecc2acc4..7f4a4dda 100644 --- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/SqlGenerator.java +++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/SqlGenerator.java @@ -772,7 +772,7 @@ class SqlGenerator { } private String renderReference(SqlIdentifier identifier) { - return identifier.getReference(renderContext.getIdentifierProcessing()); + return identifier.getReference(); } private List extractOrderByFields(Sort sort) { diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/SqlIdentifierParameterSource.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/SqlIdentifierParameterSource.java index 8a8e142b..11d834bd 100644 --- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/SqlIdentifierParameterSource.java +++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/SqlIdentifierParameterSource.java @@ -68,7 +68,7 @@ class SqlIdentifierParameterSource extends AbstractSqlParameterSource { void addValue(SqlIdentifier identifier, Object value, int sqlType) { identifiers.add(identifier); - String name = BindParameterNameSanitizer.sanitize(identifier.getReference(identifierProcessing)); + String name = BindParameterNameSanitizer.sanitize(identifier.getReference()); namesToValues.put(name, value); registerSqlType(name, sqlType); } @@ -77,7 +77,7 @@ class SqlIdentifierParameterSource extends AbstractSqlParameterSource { for (SqlIdentifier identifier : others.getIdentifiers()) { - String name = identifier.getReference(identifierProcessing); + String name = identifier.getReference(); addValue(identifier, others.getValue(name), others.getSqlType(name)); } } diff --git a/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/dialect/H2Dialect.java b/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/dialect/H2Dialect.java index da401a05..59db0e2f 100644 --- a/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/dialect/H2Dialect.java +++ b/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/dialect/H2Dialect.java @@ -47,7 +47,7 @@ public class H2Dialect extends org.springframework.data.relational.core.dialect. @Override public String renderForGeneratedValues(SqlIdentifier identifier) { - return identifier.getReference(getIdentifierProcessing()); + return identifier.getReference(); } @Override diff --git a/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/dialect/MySqlDialect.java b/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/dialect/MySqlDialect.java index 1daacdff..e6c9cdf0 100644 --- a/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/dialect/MySqlDialect.java +++ b/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/dialect/MySqlDialect.java @@ -95,7 +95,7 @@ public class MySqlDialect extends org.springframework.data.relational.core.diale @Override public String renderForGeneratedValues(SqlIdentifier identifier) { - return identifier.getReference(getIdentifierProcessing()); + return identifier.getReference(); } /** diff --git a/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/DerivedSqlIdentifier.java b/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/DerivedSqlIdentifier.java index 8ca77899..6a283877 100644 --- a/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/DerivedSqlIdentifier.java +++ b/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/DerivedSqlIdentifier.java @@ -65,8 +65,9 @@ class DerivedSqlIdentifier implements SqlIdentifier { } @Override + @Deprecated(since="3.1", forRemoval = true) public String getReference(IdentifierProcessing processing) { - return this.name; + return toSql(processing); } @Override diff --git a/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/NamingStrategy.java b/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/NamingStrategy.java index 12186a45..736a1841 100644 --- a/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/NamingStrategy.java +++ b/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/NamingStrategy.java @@ -84,7 +84,7 @@ public interface NamingStrategy { Assert.notNull(property, "Property must not be null"); - return property.getOwner().getTableName().getReference(IdentifierProcessing.NONE); + return property.getOwner().getTableName().getReference(); } default String getReverseColumnName(PersistentPropertyPathExtension path) { diff --git a/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/PersistentPropertyPathExtension.java b/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/PersistentPropertyPathExtension.java index 79a2a26e..13b24486 100644 --- a/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/PersistentPropertyPathExtension.java +++ b/spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/PersistentPropertyPathExtension.java @@ -482,7 +482,7 @@ public class PersistentPropertyPathExtension { SqlIdentifier tableAlias = getTableAlias(); return tableAlias == null ? columnName - : columnName.transform(name -> tableAlias.getReference(IdentifierProcessing.NONE) + "_" + name); + : columnName.transform(name -> tableAlias.getReference() + "_" + name); } @Override diff --git a/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/CompositeSqlIdentifier.java b/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/CompositeSqlIdentifier.java index 7fda0ff6..94ce8bb2 100644 --- a/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/CompositeSqlIdentifier.java +++ b/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/CompositeSqlIdentifier.java @@ -66,6 +66,7 @@ class CompositeSqlIdentifier implements SqlIdentifier { } @Override + @Deprecated(since="3.1", forRemoval = true) public String getReference(IdentifierProcessing processing) { throw new UnsupportedOperationException("Composite SQL Identifiers can't be used for reference name retrieval"); } diff --git a/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/DefaultSqlIdentifier.java b/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/DefaultSqlIdentifier.java index 962f130c..1204dc2b 100644 --- a/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/DefaultSqlIdentifier.java +++ b/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/DefaultSqlIdentifier.java @@ -57,12 +57,13 @@ class DefaultSqlIdentifier implements SqlIdentifier { @Override public String toSql(IdentifierProcessing processing) { - return quoted ? processing.quote(getReference(processing)) : getReference(processing); + return quoted ? processing.quote(name) : name; } @Override + @Deprecated(since="3.1", forRemoval = true) public String getReference(IdentifierProcessing processing) { - return name; + return toSql(processing); } @Override diff --git a/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/SqlIdentifier.java b/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/SqlIdentifier.java index d0cb6f78..1bd40671 100644 --- a/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/SqlIdentifier.java +++ b/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/SqlIdentifier.java @@ -26,7 +26,7 @@ import org.springframework.data.util.Streamable; * from a {@link String name} with specifying whether the name should be quoted or unquoted. *

* {@link SqlIdentifier} renders its name using {@link IdentifierProcessing} rules. Use - * {@link #getReference(IdentifierProcessing)} to refer to an object using the identifier when e.g. obtaining values + * {@link #getReference()} to refer to an object using the identifier when e.g. obtaining values * from a result or providing values for a prepared statement. {@link #toSql(IdentifierProcessing)} renders the * identifier for SQL statement usage. *

@@ -39,6 +39,7 @@ import org.springframework.data.util.Streamable; * * @author Jens Schauder * @author Mark Paluch + * @author Kurt Niemi * @since 2.0 */ public interface SqlIdentifier extends Streamable { @@ -79,23 +80,26 @@ public interface SqlIdentifier extends Streamable { * * @param processing identifier processing rules. * @return + * @deprecated since 3.1, use the #getReference() method instead. */ + @Deprecated(since="3.1", forRemoval = true) String getReference(IdentifierProcessing processing); /** - * Return the reference name without any further transformation. The reference name is used for programmatic access to - * the object identified by this {@link SqlIdentifier}. + * Use this method whenever accessing a column in a ResultSet and we do not want any quoting applied. The + * reference name is used for programmatic access to the object identified by this {@link SqlIdentifier}. * * @return * @see IdentifierProcessing#NONE */ default String getReference() { - return getReference(IdentifierProcessing.NONE); + return toSql(IdentifierProcessing.NONE); } /** - * Return the identifier for SQL usage after applying {@link IdentifierProcessing} rules. The identifier name is used - * to construct SQL statements. + * Use this method when rendering an identifier in SQL statements as in: + *

select yourColumn from someTable
+ * {@link IdentifierProcessing} rules are applied to the identifier. * * @param processing identifier processing rules. * @return diff --git a/spring-data-relational/src/test/java/org/springframework/data/relational/core/mapping/DerivedSqlIdentifierUnitTests.java b/spring-data-relational/src/test/java/org/springframework/data/relational/core/mapping/DerivedSqlIdentifierUnitTests.java index 7e04d246..8cc20c98 100644 --- a/spring-data-relational/src/test/java/org/springframework/data/relational/core/mapping/DerivedSqlIdentifierUnitTests.java +++ b/spring-data-relational/src/test/java/org/springframework/data/relational/core/mapping/DerivedSqlIdentifierUnitTests.java @@ -41,7 +41,8 @@ public class DerivedSqlIdentifierUnitTests { SqlIdentifier identifier = new DerivedSqlIdentifier("someName", true); assertThat(identifier.toSql(BRACKETS_LOWER_CASE)).isEqualTo("[somename]"); - assertThat(identifier.getReference(BRACKETS_LOWER_CASE)).isEqualTo("someName"); + assertThat(identifier.getReference(BRACKETS_LOWER_CASE)).isEqualTo("[somename]"); + assertThat(identifier.getReference()).isEqualTo("someName"); } @@ -52,7 +53,8 @@ public class DerivedSqlIdentifierUnitTests { String sql = identifier.toSql(BRACKETS_LOWER_CASE); assertThat(sql).isEqualTo("somename"); - assertThat(identifier.getReference(BRACKETS_LOWER_CASE)).isEqualTo("someName"); + assertThat(identifier.getReference(BRACKETS_LOWER_CASE)).isEqualTo("somename"); + assertThat(identifier.getReference()).isEqualTo("someName"); } @Test // DATAJDBC-386 diff --git a/spring-data-relational/src/test/java/org/springframework/data/relational/core/sql/SqlIdentifierUnitTests.java b/spring-data-relational/src/test/java/org/springframework/data/relational/core/sql/SqlIdentifierUnitTests.java index d0725449..efc6461d 100644 --- a/spring-data-relational/src/test/java/org/springframework/data/relational/core/sql/SqlIdentifierUnitTests.java +++ b/spring-data-relational/src/test/java/org/springframework/data/relational/core/sql/SqlIdentifierUnitTests.java @@ -40,7 +40,8 @@ public class SqlIdentifierUnitTests { SqlIdentifier identifier = quoted("someName"); assertThat(identifier.toSql(BRACKETS_LOWER_CASE)).isEqualTo("[someName]"); - assertThat(identifier.getReference(BRACKETS_LOWER_CASE)).isEqualTo("someName"); + assertThat(identifier.getReference(BRACKETS_LOWER_CASE)).isEqualTo("[someName]"); + assertThat(identifier.getReference()).isEqualTo("someName"); } @Test // DATAJDBC-386 @@ -51,6 +52,7 @@ public class SqlIdentifierUnitTests { assertThat(sql).isEqualTo("someName"); assertThat(identifier.getReference(BRACKETS_LOWER_CASE)).isEqualTo("someName"); + assertThat(identifier.getReference()).isEqualTo("someName"); } @Test // DATAJDBC-386