Skip to content

Commit 6bdc7db

Browse files
committed
Offer a proper replacement for NamingStrategy.INSTANCE.
Closes #1350
1 parent 795e244 commit 6bdc7db

File tree

9 files changed

+31
-18
lines changed

9 files changed

+31
-18
lines changed

spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/config/AbstractJdbcConfiguration.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import org.springframework.data.relational.RelationalManagedTypes;
4545
import org.springframework.data.relational.core.conversion.RelationalConverter;
4646
import org.springframework.data.relational.core.dialect.Dialect;
47+
import org.springframework.data.relational.core.mapping.DefaultNamingStrategy;
4748
import org.springframework.data.relational.core.mapping.NamingStrategy;
4849
import org.springframework.data.relational.core.mapping.Table;
4950
import org.springframework.data.util.TypeScanner;
@@ -100,7 +101,7 @@ public RelationalManagedTypes jdbcManagedTypes() throws ClassNotFoundException {
100101
/**
101102
* Register a {@link JdbcMappingContext} and apply an optional {@link NamingStrategy}.
102103
*
103-
* @param namingStrategy optional {@link NamingStrategy}. Use {@link NamingStrategy#INSTANCE} as fallback.
104+
* @param namingStrategy optional {@link NamingStrategy}. Use {@link org.springframework.data.relational.core.mapping.DefaultNamingStrategy#INSTANCE} as fallback.
104105
* @param customConversions see {@link #jdbcCustomConversions()}.
105106
* @param jdbcManagedTypes JDBC managed types, typically discovered through {@link #jdbcManagedTypes() an entity
106107
* scan}.
@@ -110,7 +111,7 @@ public RelationalManagedTypes jdbcManagedTypes() throws ClassNotFoundException {
110111
public JdbcMappingContext jdbcMappingContext(Optional<NamingStrategy> namingStrategy,
111112
JdbcCustomConversions customConversions, RelationalManagedTypes jdbcManagedTypes) {
112113

113-
JdbcMappingContext mappingContext = new JdbcMappingContext(namingStrategy.orElse(NamingStrategy.INSTANCE));
114+
JdbcMappingContext mappingContext = new JdbcMappingContext(namingStrategy.orElse(DefaultNamingStrategy.INSTANCE));
114115
mappingContext.setSimpleTypeHolder(customConversions.getSimpleTypeHolder());
115116
mappingContext.setManagedTypes(jdbcManagedTypes);
116117

spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/JdbcAggregateTemplateUnitTests.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
import org.springframework.data.mapping.callback.EntityCallbacks;
4343
import org.springframework.data.relational.core.conversion.MutableAggregateChange;
4444
import org.springframework.data.relational.core.mapping.Column;
45-
import org.springframework.data.relational.core.mapping.NamingStrategy;
4645
import org.springframework.data.relational.core.mapping.RelationalMappingContext;
4746
import org.springframework.data.relational.core.mapping.event.AfterConvertCallback;
4847
import org.springframework.data.relational.core.mapping.event.AfterDeleteCallback;
@@ -72,7 +71,7 @@ public class JdbcAggregateTemplateUnitTests {
7271
@BeforeEach
7372
public void setUp() {
7473

75-
RelationalMappingContext mappingContext = new RelationalMappingContext(NamingStrategy.INSTANCE);
74+
RelationalMappingContext mappingContext = new RelationalMappingContext();
7675
JdbcConverter converter = new BasicJdbcConverter(mappingContext, relationResolver);
7776

7877
template = new JdbcAggregateTemplate(eventPublisher, mappingContext, converter, dataAccessStrategy);

spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/EntityRowMapperUnitTests.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import org.springframework.data.jdbc.core.mapping.AggregateReference;
5555
import org.springframework.data.jdbc.core.mapping.JdbcMappingContext;
5656
import org.springframework.data.mapping.PersistentPropertyPath;
57+
import org.springframework.data.relational.core.mapping.DefaultNamingStrategy;
5758
import org.springframework.data.relational.core.mapping.Embedded;
5859
import org.springframework.data.relational.core.mapping.Embedded.OnEmpty;
5960
import org.springframework.data.relational.core.mapping.NamingStrategy;
@@ -847,7 +848,7 @@ private <T> FixtureBuilder<T> buildFixture() {
847848
}
848849

849850
private <T> EntityRowMapper<T> createRowMapper(Class<T> type) {
850-
return createRowMapper(type, NamingStrategy.INSTANCE);
851+
return createRowMapper(type, DefaultNamingStrategy.INSTANCE);
851852
}
852853

853854
@SuppressWarnings("unchecked")
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
import org.springframework.data.annotation.Id;
2828
import org.springframework.data.jdbc.core.mapping.JdbcMappingContext;
29+
import org.springframework.data.relational.core.mapping.DefaultNamingStrategy;
2930
import org.springframework.data.relational.core.mapping.NamingStrategy;
3031
import org.springframework.data.relational.core.mapping.RelationalPersistentEntity;
3132

@@ -36,9 +37,9 @@
3637
* @author Jens Schauder
3738
* @author Mark Paluch
3839
*/
39-
public class NamingStrategyUnitTests {
40+
public class DefaultNamingStrategyUnitTests {
4041

41-
private final NamingStrategy target = NamingStrategy.INSTANCE;
42+
private final NamingStrategy target = DefaultNamingStrategy.INSTANCE;
4243

4344
private final RelationalPersistentEntity<?> persistentEntity = //
4445
new JdbcMappingContext(target).getRequiredPersistentEntity(DummyEntity.class);

spring-data-jdbc/src/test/java/org/springframework/data/jdbc/testing/TestConfiguration.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import org.springframework.data.jdbc.repository.support.JdbcRepositoryFactory;
4242
import org.springframework.data.mapping.model.SimpleTypeHolder;
4343
import org.springframework.data.relational.core.dialect.Dialect;
44+
import org.springframework.data.relational.core.mapping.DefaultNamingStrategy;
4445
import org.springframework.data.relational.core.mapping.NamingStrategy;
4546
import org.springframework.data.relational.core.mapping.RelationalMappingContext;
4647
import org.springframework.data.repository.core.NamedQueries;
@@ -114,7 +115,7 @@ template, new SqlParametersFactory(context, converter, dialect),
114115
@Bean
115116
JdbcMappingContext jdbcMappingContext(Optional<NamingStrategy> namingStrategy, CustomConversions conversions) {
116117

117-
JdbcMappingContext mappingContext = new JdbcMappingContext(namingStrategy.orElse(NamingStrategy.INSTANCE));
118+
JdbcMappingContext mappingContext = new JdbcMappingContext(namingStrategy.orElse(DefaultNamingStrategy.INSTANCE));
118119
mappingContext.setSimpleTypeHolder(conversions.getSimpleTypeHolder());
119120
return mappingContext;
120121
}

spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/config/AbstractR2dbcConfiguration.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import org.springframework.data.r2dbc.mapping.R2dbcMappingContext;
4545
import org.springframework.data.relational.RelationalManagedTypes;
4646
import org.springframework.data.relational.core.conversion.BasicRelationalConverter;
47+
import org.springframework.data.relational.core.mapping.DefaultNamingStrategy;
4748
import org.springframework.data.relational.core.mapping.NamingStrategy;
4849
import org.springframework.data.relational.core.mapping.Table;
4950
import org.springframework.data.util.TypeScanner;
@@ -57,6 +58,7 @@
5758
* R2DBC to work.
5859
*
5960
* @author Mark Paluch
61+
* @author Jens Schauder
6062
* @see ConnectionFactory
6163
* @see DatabaseClient
6264
* @see org.springframework.data.r2dbc.repository.config.EnableR2dbcRepositories
@@ -161,7 +163,7 @@ public R2dbcEntityTemplate r2dbcEntityTemplate(DatabaseClient databaseClient,
161163
/**
162164
* Register a {@link R2dbcMappingContext} and apply an optional {@link NamingStrategy}.
163165
*
164-
* @param namingStrategy optional {@link NamingStrategy}. Use {@link NamingStrategy#INSTANCE} as fallback.
166+
* @param namingStrategy optional {@link NamingStrategy}. Use {@link DefaultNamingStrategy#INSTANCE} as fallback.
165167
* @param r2dbcCustomConversions customized R2DBC conversions.
166168
* @param r2dbcManagedTypes R2DBC managed types, typically discovered through {@link #r2dbcManagedTypes() an entity
167169
* scan}.
@@ -174,7 +176,7 @@ public R2dbcMappingContext r2dbcMappingContext(Optional<NamingStrategy> namingSt
174176

175177
Assert.notNull(namingStrategy, "NamingStrategy must not be null");
176178

177-
R2dbcMappingContext context = new R2dbcMappingContext(namingStrategy.orElse(NamingStrategy.INSTANCE));
179+
R2dbcMappingContext context = new R2dbcMappingContext(namingStrategy.orElse(DefaultNamingStrategy.INSTANCE));
178180
context.setSimpleTypeHolder(r2dbcCustomConversions.getSimpleTypeHolder());
179181
context.setManagedTypes(r2dbcManagedTypes);
180182

spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/DefaultNamingStrategy.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,19 @@
2525
*/
2626
public class DefaultNamingStrategy implements NamingStrategy {
2727

28+
/**
29+
* Static immutable instance of the class. It is made immutable by letting
30+
* {@link #setForeignKeyNaming(ForeignKeyNaming)} throw an exception.
31+
* <p>
32+
* Using this avoids creating essentially the same class over and over again.
33+
*/
34+
public static NamingStrategy INSTANCE = new DefaultNamingStrategy() {
35+
@Override
36+
public void setForeignKeyNaming(ForeignKeyNaming foreignKeyNaming) {
37+
throw new UnsupportedOperationException("Cannot update immutable DefaultNamingStrategy");
38+
}
39+
};
40+
2841
private ForeignKeyNaming foreignKeyNaming = ForeignKeyNaming.APPLY_RENAMING;
2942

3043
public void setForeignKeyNaming(ForeignKeyNaming foreignKeyNaming) {

spring-data-relational/src/main/java/org/springframework/data/relational/core/mapping/NamingStrategy.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,7 @@ public interface NamingStrategy {
4141
*
4242
* @deprecated use {@link DefaultNamingStrategy#INSTANCE} instead.
4343
*/
44-
@Deprecated(since = "2.4") NamingStrategy INSTANCE = new DefaultNamingStrategy() {
45-
@Override
46-
public void setForeignKeyNaming(ForeignKeyNaming foreignKeyNaming) {
47-
throw new UnsupportedOperationException("Cannot update immutable DefaultNamingStrategy");
48-
}
49-
};
44+
@Deprecated(since = "2.4", forRemoval = true) NamingStrategy INSTANCE = DefaultNamingStrategy.INSTANCE;
5045

5146
/**
5247
* Defaults to no schema.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@
3131
* @author Oliver Gierke
3232
* @author Jens Schauder
3333
*/
34-
public class NamingStrategyUnitTests {
34+
public class DefaultNamingStrategyUnitTests {
3535

36-
private final NamingStrategy target = NamingStrategy.INSTANCE;
36+
private final NamingStrategy target = DefaultNamingStrategy.INSTANCE;
3737
private final RelationalMappingContext context = new RelationalMappingContext(target);
3838
private final RelationalPersistentEntity<?> persistentEntity = context.getRequiredPersistentEntity(DummyEntity.class);
3939

0 commit comments

Comments
 (0)