From c7a7adeb431390365f1d50af035d2dbc14a6f92d Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Thu, 8 Aug 2024 10:38:58 +0300 Subject: [PATCH] Fixed - @RObjectField annotation with codec option has no effect. #3605 --- .../liveobject/core/RedissonObjectBuilder.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/redisson/src/main/java/org/redisson/liveobject/core/RedissonObjectBuilder.java b/redisson/src/main/java/org/redisson/liveobject/core/RedissonObjectBuilder.java index 973b64cc9..158646268 100644 --- a/redisson/src/main/java/org/redisson/liveobject/core/RedissonObjectBuilder.java +++ b/redisson/src/main/java/org/redisson/liveobject/core/RedissonObjectBuilder.java @@ -157,7 +157,7 @@ public class RedissonObjectBuilder { return codecProvider.getCodec(anno, rEntity, rObjectClass, fieldName, config); } else { REntity anno = ClassUtils.getAnnotation(rEntity, REntity.class); - return codecProvider.getCodec(anno, (Class) rEntity, config); + return codecProvider.getCodec(anno, rEntity, config); } } @@ -321,9 +321,11 @@ public class RedissonObjectBuilder { private T createRObject(RedissonClient redisson, Class expectedType, String name, K codec) throws ReflectiveOperationException { Class[] interfaces = expectedType.getInterfaces(); for (Class iType : interfaces) { - if (REFERENCES.containsKey(iType)) {// user cache to speed up things a little. - Method builder = REFERENCES.get(iType).get(codec != null); - if (codec != null) { + if (REFERENCES.containsKey(iType)) { + boolean isDefaultCodec = codec.getClass() == config.getCodec().getClass(); + + Method builder = REFERENCES.get(iType).get(isDefaultCodec); + if (isDefaultCodec) { return (T) builder.invoke(redisson, name); } return (T) builder.invoke(redisson, name, codec);