This is an automated email from the ASF dual-hosted git repository. rainyu pushed a commit to branch fix/float_serializer in repository https://gitbox.apache.org/repos/asf/dubbo-hessian-lite.git
commit 7eabb5a45ca80b26af97822f854452efff499560 Author: Rain Yu <[email protected]> AuthorDate: Sat Sep 6 19:56:03 2025 +0800 update deserialization to use float --- .../hessian/io/FieldDeserializer2FactoryUnsafe.java | 7 +++---- .../alibaba/com/caucho/hessian/io/Hessian2ReuseTest.java | 8 ++++++++ .../alibaba/com/caucho/hessian/io/beans/BaseNumber.java | 15 +++++++++++++++ 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/hessian-lite/src/main/java/com/alibaba/com/caucho/hessian/io/FieldDeserializer2FactoryUnsafe.java b/hessian-lite/src/main/java/com/alibaba/com/caucho/hessian/io/FieldDeserializer2FactoryUnsafe.java index a48a4800..af9dfb54 100644 --- a/hessian-lite/src/main/java/com/alibaba/com/caucho/hessian/io/FieldDeserializer2FactoryUnsafe.java +++ b/hessian-lite/src/main/java/com/alibaba/com/caucho/hessian/io/FieldDeserializer2FactoryUnsafe.java @@ -388,12 +388,11 @@ public class FieldDeserializer2FactoryUnsafe extends FieldDeserializer2Factory { public void deserialize(AbstractHessianInput in, Object obj) throws IOException { - double value = 0; + float value = 0; try { - value = in.readDouble(); - - _unsafe.putDouble(obj, _offset, value); + value = (float) in.readDouble(); + _unsafe.putFloat(obj, _offset, value); } catch (Exception e) { logDeserializeError(_field, obj, value, e); } diff --git a/java-8-test/src/test/java/com/alibaba/com/caucho/hessian/io/Hessian2ReuseTest.java b/java-8-test/src/test/java/com/alibaba/com/caucho/hessian/io/Hessian2ReuseTest.java index 3110f629..d2718246 100644 --- a/java-8-test/src/test/java/com/alibaba/com/caucho/hessian/io/Hessian2ReuseTest.java +++ b/java-8-test/src/test/java/com/alibaba/com/caucho/hessian/io/Hessian2ReuseTest.java @@ -115,6 +115,14 @@ public class Hessian2ReuseTest extends SerializeTestBase { } } + @Test + public void testBaseNumber() throws IOException { + BaseNumber obj = new BaseNumber(); + obj.setNumber(3.14f); + BaseNumber newObj = serializeAndDeserialize(obj, BaseNumber.class); + Assertions.assertEquals(obj.getNumber(), newObj.getNumber()); + } + @Test public void testType() throws IOException { serializeAndDeserialize(Type.Lower, Type.class); diff --git a/java-8-test/src/test/java/com/alibaba/com/caucho/hessian/io/beans/BaseNumber.java b/java-8-test/src/test/java/com/alibaba/com/caucho/hessian/io/beans/BaseNumber.java new file mode 100644 index 00000000..dba6478e --- /dev/null +++ b/java-8-test/src/test/java/com/alibaba/com/caucho/hessian/io/beans/BaseNumber.java @@ -0,0 +1,15 @@ +package com.alibaba.com.caucho.hessian.io.beans; + +import java.io.Serializable; + +public class BaseNumber implements Serializable { + + private float number; + public float getNumber() { + return number; + } + + public void setNumber(float number) { + this.number = number; + } +}
