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) {