DATAREDIS-1000 - Polishing.

Deprecate raw() and introduce dedicated methods for byteArray and byteBuffer.

Original Pull Request: #459
This commit is contained in:
Christoph Strobl
2019-07-03 14:47:55 +02:00
parent 1491b93078
commit a87e78cc5d
7 changed files with 73 additions and 20 deletions

View File

@@ -21,8 +21,9 @@ import org.springframework.lang.Nullable;
* Raw {@link RedisSerializer} using {@code byte[]}.
*
* @author Mark Paluch
* @since 2.2
*/
enum RawRedisSerializer implements RedisSerializer<byte[]> {
enum ByteArrayRedisSerializer implements RedisSerializer<byte[]> {
INSTANCE;

View File

@@ -79,25 +79,38 @@ public interface RedisSerializationContext<K, V> {
}
/**
* Creates a new {@link RedisSerializationContext} using a {@link SerializationPair#raw() ByteBuffer} serialization
* Creates a new {@link RedisSerializationContext} using a {@link RedisSerializer#byteArray() byte[]} serialization
* pair.
*
* @return
* @return new instance of {@link RedisSerializationContext}.
* @deprecated since 2.2. Please use {@link #byteArray()} instead.
*/
static RedisSerializationContext<ByteBuffer, ByteBuffer> raw() {
return just(RedisSerializerToSerializationPairAdapter.raw());
@Deprecated
static RedisSerializationContext<byte[], byte[]> raw() {
return byteArray();
}
/**
* Creates a new {@link RedisSerializationContext} using a {@link RedisSerializer#raw() byte[]} serialization.
* Creates a new {@link RedisSerializationContext} using a {@link RedisSerializer#byteArray() byte[]} serialization.
*
* @return
* @return new instance of {@link RedisSerializationContext}.
* @since 2.2
*/
static RedisSerializationContext<byte[], byte[]> byteArray() {
return just(RedisSerializerToSerializationPairAdapter.byteArray());
}
/**
* Creates a new {@link RedisSerializationContext} using a {@link SerializationPair#byteBuffer() ByteBuffer}
* serialization.
*
* @return new instance of {@link RedisSerializationContext}.
* @since 2.2
*/
static RedisSerializationContext<ByteBuffer, ByteBuffer> byteBuffer() {
return just(RedisSerializerToSerializationPairAdapter.byteBuffer());
}
/**
* Creates a new {@link RedisSerializationContext} using a {@link JdkSerializationRedisSerializer}.
*
@@ -217,11 +230,33 @@ public interface RedisSerializationContext<K, V> {
* Creates a pass through {@link SerializationPair} to pass-thru {@link ByteBuffer} objects.
*
* @return a pass through {@link SerializationPair}.
* @deprecated since 2.2. Please use either {@link #byteArray()} or {@link #byteBuffer()}.
*/
static SerializationPair<ByteBuffer> raw() {
@Deprecated
static <T> SerializationPair<T> raw() {
return RedisSerializerToSerializationPairAdapter.raw();
}
/**
* Creates a pass through {@link SerializationPair} to pass-thru {@link byte} objects.
*
* @return a pass through {@link SerializationPair}.
* @since 2.2
*/
static SerializationPair<byte[]> byteArray() {
return RedisSerializerToSerializationPairAdapter.byteArray();
}
/**
* Creates a pass through {@link SerializationPair} to pass-thru {@link ByteBuffer} objects.
*
* @return a pass through {@link SerializationPair}.
* @since 2.2
*/
static SerializationPair<ByteBuffer> byteBuffer() {
return RedisSerializerToSerializationPairAdapter.byteBuffer();
}
/**
* @return the {@link RedisElementReader}.
*/

View File

@@ -93,13 +93,13 @@ public interface RedisSerializer<T> {
}
/**
* Obtain a raw {@link RedisSerializer} that passes thru {@code byte[]}.
* Obtain a {@link RedisSerializer} that passes thru {@code byte[]}.
*
* @return never {@literal null}.
* @since 2.2
*/
static RedisSerializer<byte[]> raw() {
return RawRedisSerializer.INSTANCE;
static RedisSerializer<byte[]> byteArray() {
return ByteArrayRedisSerializer.INSTANCE;
}
default boolean canSerialize(Class<?> type) {

View File

@@ -30,11 +30,11 @@ import org.springframework.util.Assert;
*/
class RedisSerializerToSerializationPairAdapter<T> implements SerializationPair<T> {
private final static RedisSerializerToSerializationPairAdapter<?> RAW = new RedisSerializerToSerializationPairAdapter<>(
private final static RedisSerializerToSerializationPairAdapter<?> BYTE_BUFFER = new RedisSerializerToSerializationPairAdapter<>(
null);
private final static RedisSerializerToSerializationPairAdapter<byte[]> BYTE_ARRAY = new RedisSerializerToSerializationPairAdapter<>(
RedisSerializer.raw());
RedisSerializer.byteArray());
private final DefaultSerializationPair pair;
@@ -43,15 +43,32 @@ class RedisSerializerToSerializationPairAdapter<T> implements SerializationPair<
new DefaultRedisElementWriter<>(serializer));
}
/**
* @return the {@link RedisSerializerToSerializationPairAdapter} for {@link ByteBuffer}.
* @deprecated since 2.2. Please use {@link #byteBuffer()} instead.
*/
@SuppressWarnings("unchecked")
static SerializationPair<ByteBuffer> raw() {
return (SerializationPair) RAW;
@Deprecated
static <T> SerializationPair<T> raw() {
return (SerializationPair) byteBuffer();
}
/**
* @return the {@link RedisSerializerToSerializationPairAdapter} for {@link byte[]}.
* @since 2.2
*/
static SerializationPair<byte[]> byteArray() {
return BYTE_ARRAY;
}
/**
* @return the {@link RedisSerializerToSerializationPairAdapter} for {@link ByteBuffer}.
* @since 2.2
*/
static SerializationPair<ByteBuffer> byteBuffer() {
return (SerializationPair) BYTE_BUFFER;
}
/**
* Create a {@link SerializationPair} from given {@link RedisSerializer}.
*

View File

@@ -710,7 +710,7 @@ public interface StreamMessageListenerContainer<K, V extends Record<K, ?>> exten
/**
* Configure a hash target type. Changes the emitted {@link Record} type to {@link ObjectRecord}.
*
* @param pair must not be {@literal null}.
* @param targetType must not be {@literal null}.
* @return {@code this} {@link StreamMessageListenerContainerOptionsBuilder}.
*/
@SuppressWarnings("unchecked")
@@ -722,8 +722,8 @@ public interface StreamMessageListenerContainer<K, V extends Record<K, ?>> exten
if (this.hashMapper == null) {
hashKeySerializer(RedisSerializer.raw());
hashValueSerializer(RedisSerializer.raw());
hashKeySerializer(RedisSerializer.byteArray());
hashValueSerializer(RedisSerializer.byteArray());
return (StreamMessageListenerContainerOptionsBuilder) objectMapper(new ObjectHashMapper());
}