Skip to content

Commit 841d8ef

Browse files
mp911dechristophstrobl
authored andcommitted
DATAREDIS-713 - Introduce constants for commonly used StringSerializers.
We now provide constant StringSerializers for US-ASCII, ISO 8859-1 and UTF-8 encoding. Original Pull Request: spring-projects#288
1 parent 1e2a0f8 commit 841d8ef

32 files changed

+168
-72
lines changed

src/main/java/org/springframework/data/redis/cache/RedisCacheConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public static RedisCacheConfiguration defaultCacheConfig() {
9595
registerDefaultConverters(conversionService);
9696

9797
return new RedisCacheConfiguration(Duration.ZERO, true, true, null,
98-
SerializationPair.fromSerializer(new StringRedisSerializer()),
98+
SerializationPair.fromSerializer(StringRedisSerializer.UTF_8),
9999
SerializationPair.fromSerializer(new JdkSerializationRedisSerializer()), conversionService);
100100
}
101101

src/main/java/org/springframework/data/redis/connection/DefaultStringRedisConnection.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ public List<Object> convert(List<Object> execResults) {
117117
* @param connection Redis connection
118118
*/
119119
public DefaultStringRedisConnection(RedisConnection connection) {
120-
this(connection, new StringRedisSerializer());
120+
this(connection, StringRedisSerializer.UTF_8);
121121
}
122122

123123
/**

src/main/java/org/springframework/data/redis/core/RedisTemplate.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ public class RedisTemplate<K, V> extends RedisAccessor implements RedisOperation
9696
@SuppressWarnings("rawtypes") private @Nullable RedisSerializer valueSerializer = null;
9797
@SuppressWarnings("rawtypes") private @Nullable RedisSerializer hashKeySerializer = null;
9898
@SuppressWarnings("rawtypes") private @Nullable RedisSerializer hashValueSerializer = null;
99-
private RedisSerializer<String> stringSerializer = new StringRedisSerializer();
99+
private RedisSerializer<String> stringSerializer = StringRedisSerializer.UTF_8;
100100

101101
private @Nullable ScriptExecutor<K> scriptExecutor;
102102

src/main/java/org/springframework/data/redis/core/StringRedisTemplate.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
* {@link StringRedisConnection}.
3232
*
3333
* @author Costin Leau
34+
* @author Mark Paluch
3435
*/
3536
public class StringRedisTemplate extends RedisTemplate<String, String> {
3637

@@ -39,11 +40,10 @@ public class StringRedisTemplate extends RedisTemplate<String, String> {
3940
* and {@link #afterPropertiesSet()} still need to be called.
4041
*/
4142
public StringRedisTemplate() {
42-
RedisSerializer<String> stringSerializer = new StringRedisSerializer();
43-
setKeySerializer(stringSerializer);
44-
setValueSerializer(stringSerializer);
45-
setHashKeySerializer(stringSerializer);
46-
setHashValueSerializer(stringSerializer);
43+
setKeySerializer(StringRedisSerializer.UTF_8);
44+
setValueSerializer(StringRedisSerializer.UTF_8);
45+
setHashKeySerializer(StringRedisSerializer.UTF_8);
46+
setHashValueSerializer(StringRedisSerializer.UTF_8);
4747
}
4848

4949
/**

src/main/java/org/springframework/data/redis/listener/RedisMessageListenerContainer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ public class RedisMessageListenerContainer implements InitializingBean, Disposab
127127

128128
private final SubscriptionTask subscriptionTask = new SubscriptionTask();
129129

130-
private volatile RedisSerializer<String> serializer = new StringRedisSerializer();
130+
private volatile RedisSerializer<String> serializer = StringRedisSerializer.UTF_8;
131131

132132
private long recoveryInterval = DEFAULT_RECOVERY_INTERVAL;
133133

src/main/java/org/springframework/data/redis/listener/adapter/MessageListenerAdapter.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@
9292
* @author Greg Turnquist
9393
* @author Thomas Darimont
9494
* @author Christoph Strobl
95+
* @author Mark Paluch
9596
* @see org.springframework.jms.listener.adapter.MessageListenerAdapter
9697
*/
9798
public class MessageListenerAdapter implements InitializingBean, MessageListener {
@@ -317,9 +318,8 @@ public void onMessage(Message message, @Nullable byte[] pattern) {
317318
* @see JdkSerializationRedisSerializer
318319
*/
319320
protected void initDefaultStrategies() {
320-
RedisSerializer<String> serializer = new StringRedisSerializer();
321-
setSerializer(serializer);
322-
setStringSerializer(serializer);
321+
setSerializer(StringRedisSerializer.UTF_8);
322+
setStringSerializer(StringRedisSerializer.UTF_8);
323323
}
324324

325325
/**

src/main/java/org/springframework/data/redis/serializer/DefaultRedisSerializationContext.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ static class DefaultRedisSerializationContextBuilder<K, V> implements RedisSeria
9898
private @Nullable SerializationPair<V> valueTuple;
9999
private @Nullable SerializationPair<?> hashKeyTuple;
100100
private @Nullable SerializationPair<?> hashValueTuple;
101-
private SerializationPair<String> stringTuple = SerializationPair.fromSerializer(new StringRedisSerializer());
101+
private SerializationPair<String> stringTuple = SerializationPair.fromSerializer(StringRedisSerializer.UTF_8);
102102

103103
/* (non-Javadoc)
104104
* @see org.springframework.data.redis.serializer.RedisSerializationContextBuilder#key(SerializationPair)

src/main/java/org/springframework/data/redis/serializer/RedisSerializationContext.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ static RedisSerializationContext<byte[], byte[]> raw() {
9393
* @return
9494
*/
9595
static RedisSerializationContext<String, String> string() {
96-
return fromSerializer(new StringRedisSerializer());
96+
return fromSerializer(StringRedisSerializer.UTF_8);
9797
}
9898

9999
/**

src/main/java/org/springframework/data/redis/serializer/StringRedisSerializer.java

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,42 @@
2222
import org.springframework.util.Assert;
2323

2424
/**
25-
* Simple String to byte[] (and back) serializer. Converts Strings into bytes and vice-versa using the specified charset
26-
* (by default UTF-8).
25+
* Simple {@literal} to {@literal byte[]} (and back) serializer. Converts Strings into bytes and vice-versa using the
26+
* specified charset (by default UTF-8).
2727
* <p>
2828
* Useful when the interaction with the Redis happens mainly through Strings.
2929
* <p>
30-
* Does not perform any null conversion since empty strings are valid keys/values.
30+
* Does not perform any {@literal null} conversion since empty strings are valid keys/values.
3131
*
3232
* @author Costin Leau
3333
* @author Christoph Strobl
34+
* @author Mark Paluch
3435
*/
3536
public class StringRedisSerializer implements RedisSerializer<String> {
3637

3738
private final Charset charset;
3839

40+
/**
41+
* Serializer to use 7 bit ASCII, a.k.a. ISO646-US, a.k.a. the Basic Latin block of the Unicode character set.
42+
*
43+
* @since 2.1
44+
*/
45+
public static final StringRedisSerializer US_ASCII = new StringRedisSerializer(StandardCharsets.US_ASCII);
46+
47+
/**
48+
* Serializer to use ISO Latin Alphabet No. 1, a.k.a. ISO-LATIN-1.
49+
*
50+
* @since 2.1
51+
*/
52+
public static final StringRedisSerializer ISO_8859_1 = new StringRedisSerializer(StandardCharsets.ISO_8859_1);
53+
54+
/**
55+
* Serializer to use 8 bit UCS Transformation Format.
56+
*
57+
* @since 2.1
58+
*/
59+
public static final StringRedisSerializer UTF_8 = new StringRedisSerializer(StandardCharsets.UTF_8);
60+
3961
/**
4062
* Creates a new {@link StringRedisSerializer} using {@link StandardCharsets#UTF_8 UTF-8}.
4163
*/

src/main/java/org/springframework/data/redis/support/atomic/RedisAtomicDouble.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ private RedisAtomicDouble(String redisCounter, RedisConnectionFactory factory, @
7979
Assert.notNull(factory, "a valid factory is required");
8080

8181
RedisTemplate<String, Double> redisTemplate = new RedisTemplate<>();
82-
redisTemplate.setKeySerializer(new StringRedisSerializer());
82+
redisTemplate.setKeySerializer(StringRedisSerializer.UTF_8);
8383
redisTemplate.setValueSerializer(new GenericToStringSerializer<>(Double.class));
8484
redisTemplate.setExposeConnection(true);
8585
redisTemplate.setConnectionFactory(factory);

0 commit comments

Comments
 (0)