You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by ra...@apache.org on 2025/09/06 11:56:16 UTC

(dubbo-hessian-lite) branch fix/float_serializer created (now 7eabb5a4)

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

rainyu pushed a change to branch fix/float_serializer
in repository https://gitbox.apache.org/repos/asf/dubbo-hessian-lite.git


      at 7eabb5a4 update deserialization to use float

This branch includes the following new commits:

     new 7eabb5a4 update deserialization to use float

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(dubbo-hessian-lite) 01/01: update deserialization to use float

Posted by ra...@apache.org.
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 <st...@gmail.com>
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;
+    }
+}