This is an automated email from the ASF dual-hosted git repository.

albumenj pushed a commit to branch 3.3
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.3 by this push:
     new 7618e10199 Fix unable to deserialize Record using Hessian2 (#14820)
7618e10199 is described below

commit 7618e10199411ab6fb128dab97358874aab7475f
Author: Albumen Kevin <[email protected]>
AuthorDate: Mon Oct 28 15:10:31 2024 +0800

    Fix unable to deserialize Record using Hessian2 (#14820)
---
 .../serialize/hessian2/Hessian2SerializerFactory.java    | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git 
a/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/Hessian2SerializerFactory.java
 
b/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/Hessian2SerializerFactory.java
index 4f02609dfe..71eb60c2f4 100644
--- 
a/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/Hessian2SerializerFactory.java
+++ 
b/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/Hessian2SerializerFactory.java
@@ -18,11 +18,15 @@ package org.apache.dubbo.common.serialize.hessian2;
 
 import org.apache.dubbo.common.utils.DefaultSerializeClassChecker;
 
+import java.io.InputStream;
 import java.io.Serializable;
 
 import com.alibaba.com.caucho.hessian.io.Deserializer;
+import com.alibaba.com.caucho.hessian.io.InputStreamDeserializer;
 import com.alibaba.com.caucho.hessian.io.JavaDeserializer;
 import com.alibaba.com.caucho.hessian.io.JavaSerializer;
+import com.alibaba.com.caucho.hessian.io.RecordDeserializer;
+import com.alibaba.com.caucho.hessian.io.RecordUtil;
 import com.alibaba.com.caucho.hessian.io.Serializer;
 import com.alibaba.com.caucho.hessian.io.SerializerFactory;
 import com.alibaba.com.caucho.hessian.io.UnsafeDeserializer;
@@ -72,9 +76,15 @@ public class Hessian2SerializerFactory extends 
SerializerFactory {
 
         checkSerializable(cl);
 
-        if (isEnableUnsafeSerializer()) {
-            return new UnsafeDeserializer(cl, getFieldDeserializerFactory());
-        } else return new JavaDeserializer(cl, getFieldDeserializerFactory());
+        if (InputStream.class.equals(cl)) {
+            return InputStreamDeserializer.DESER;
+        } else if (RecordUtil.isRecord(cl)) {
+            return new RecordDeserializer(cl, getFieldDeserializerFactory());
+        } else {
+            if (isEnableUnsafeSerializer()) {
+                return new UnsafeDeserializer(cl, 
getFieldDeserializerFactory());
+            } else return new JavaDeserializer(cl, 
getFieldDeserializerFactory());
+        }
     }
 
     private void checkSerializable(Class<?> cl) {

Reply via email to