Refactor JdkSerializationRedisSerializer.
* Annotate deserialize(..) with @Override. * Cleanup source code. * Edit Javadoc. Closes #2610
This commit is contained in:
@@ -20,18 +20,23 @@ import org.springframework.core.serializer.DefaultDeserializer;
|
||||
import org.springframework.core.serializer.DefaultSerializer;
|
||||
import org.springframework.core.serializer.support.DeserializingConverter;
|
||||
import org.springframework.core.serializer.support.SerializingConverter;
|
||||
import org.springframework.data.redis.util.RedisAssertions;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
* Java Serialization Redis serializer. Delegates to the default (Java based) {@link DefaultSerializer serializer} and
|
||||
* {@link DefaultDeserializer}. This {@link RedisSerializer serializer} can be constructed with either custom
|
||||
* {@link ClassLoader} or own {@link Converter converters}.
|
||||
* Java Serialization {@link RedisSerializer}.
|
||||
* <p>
|
||||
* Delegates to the default (Java-based) {@link DefaultSerializer serializer}
|
||||
* and {@link DefaultDeserializer deserializer}.
|
||||
* <p>
|
||||
* This {@link RedisSerializer serializer} can be constructed with either a custom {@link ClassLoader}
|
||||
* or custom {@link Converter converters}.
|
||||
*
|
||||
* @author Mark Pollack
|
||||
* @author Costin Leau
|
||||
* @author Mark Paluch
|
||||
* @author Christoph Strobl
|
||||
* @author John Blum
|
||||
*/
|
||||
public class JdkSerializationRedisSerializer implements RedisSerializer<Object> {
|
||||
|
||||
@@ -39,16 +44,18 @@ public class JdkSerializationRedisSerializer implements RedisSerializer<Object>
|
||||
private final Converter<byte[], Object> deserializer;
|
||||
|
||||
/**
|
||||
* Creates a new {@link JdkSerializationRedisSerializer} using the default class loader.
|
||||
* Creates a new {@link JdkSerializationRedisSerializer} using the default {@link ClassLoader}.
|
||||
*/
|
||||
public JdkSerializationRedisSerializer() {
|
||||
this(new SerializingConverter(), new DeserializingConverter());
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new {@link JdkSerializationRedisSerializer} using a {@link ClassLoader}.
|
||||
* Creates a new {@link JdkSerializationRedisSerializer} with the given {@link ClassLoader} used to
|
||||
* resolve {@link Class types} during deserialization.
|
||||
*
|
||||
* @param classLoader the {@link ClassLoader} to use for deserialization. Can be {@literal null}.
|
||||
* @param classLoader {@link ClassLoader} used to resolve {@link Class types} for deserialization;
|
||||
* can be {@literal null}.
|
||||
* @since 1.7
|
||||
*/
|
||||
public JdkSerializationRedisSerializer(@Nullable ClassLoader classLoader) {
|
||||
@@ -56,22 +63,25 @@ public class JdkSerializationRedisSerializer implements RedisSerializer<Object>
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new {@link JdkSerializationRedisSerializer} using a {@link Converter converters} to serialize and
|
||||
* deserialize objects.
|
||||
* Creates a new {@link JdkSerializationRedisSerializer} using {@link Converter converters} to serialize and
|
||||
* deserialize {@link Object objects}.
|
||||
*
|
||||
* @param serializer must not be {@literal null}
|
||||
* @param deserializer must not be {@literal null}
|
||||
* @param serializer {@link Converter} used to serialize an {@link Object} to a byte array;
|
||||
* must not be {@literal null}.
|
||||
* @param deserializer {@link Converter} used to deserialize and convert a byte arra into an {@link Object};
|
||||
* must not be {@literal null}
|
||||
* @throws IllegalArgumentException if either the given {@code serializer} or {@code deserializer}
|
||||
* are {@literal null}.
|
||||
* @since 1.7
|
||||
*/
|
||||
public JdkSerializationRedisSerializer(Converter<Object, byte[]> serializer, Converter<byte[], Object> deserializer) {
|
||||
public JdkSerializationRedisSerializer(Converter<Object, byte[]> serializer,
|
||||
Converter<byte[], Object> deserializer) {
|
||||
|
||||
Assert.notNull(serializer, "Serializer must not be null");
|
||||
Assert.notNull(deserializer, "Deserializer must not be null");
|
||||
|
||||
this.serializer = serializer;
|
||||
this.deserializer = deserializer;
|
||||
this.serializer = RedisAssertions.requireObject(serializer, "Serializer must not be null");
|
||||
this.deserializer = RedisAssertions.requireObject(deserializer, "Deserializer must not be null");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object deserialize(@Nullable byte[] bytes) {
|
||||
|
||||
if (SerializationUtils.isEmpty(bytes)) {
|
||||
@@ -80,20 +90,22 @@ public class JdkSerializationRedisSerializer implements RedisSerializer<Object>
|
||||
|
||||
try {
|
||||
return deserializer.convert(bytes);
|
||||
} catch (Exception ex) {
|
||||
throw new SerializationException("Cannot deserialize", ex);
|
||||
} catch (Exception cause) {
|
||||
throw new SerializationException("Cannot deserialize", cause);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte[] serialize(@Nullable Object object) {
|
||||
|
||||
if (object == null) {
|
||||
return SerializationUtils.EMPTY_ARRAY;
|
||||
}
|
||||
|
||||
try {
|
||||
return serializer.convert(object);
|
||||
} catch (Exception ex) {
|
||||
throw new SerializationException("Cannot serialize", ex);
|
||||
} catch (Exception cause) {
|
||||
throw new SerializationException("Cannot serialize", cause);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user