From 6afe1e0b397f37ec5aa1d3439983014b4ac292ce Mon Sep 17 00:00:00 2001 From: John Blum Date: Wed, 14 Jun 2023 12:49:38 -0700 Subject: [PATCH] Refactor JdkSerializationRedisSerializer. * Annotate deserialize(..) with @Override. * Cleanup source code. * Edit Javadoc. Closes 2610 --- .../JdkSerializationRedisSerializer.java | 54 +++++++++++-------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/src/main/java/org/springframework/data/redis/serializer/JdkSerializationRedisSerializer.java b/src/main/java/org/springframework/data/redis/serializer/JdkSerializationRedisSerializer.java index 5beada15b4..f0b54717fa 100644 --- a/src/main/java/org/springframework/data/redis/serializer/JdkSerializationRedisSerializer.java +++ b/src/main/java/org/springframework/data/redis/serializer/JdkSerializationRedisSerializer.java @@ -20,18 +20,23 @@ 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}. + *

+ * Delegates to the default (Java-based) {@link DefaultSerializer serializer} + * and {@link DefaultDeserializer deserializer}. + *

+ * 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 { @@ -39,16 +44,18 @@ public class JdkSerializationRedisSerializer implements RedisSerializer private final Converter 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 JdkSerializationRedisSerializer(@Nullable ClassLoader classLoader) { } /** - * 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 serializer, Converter deserializer) { + public JdkSerializationRedisSerializer(Converter serializer, + Converter 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 Object deserialize(@Nullable byte[] bytes) { 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); } } }