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 667f98a459 Update hessian-lite to 4.0.1 (#14315)
667f98a459 is described below

commit 667f98a4591c1b4ab3ad683ff5d2f561f0add518
Author: Albumen Kevin <[email protected]>
AuthorDate: Fri Jun 14 16:56:39 2024 +0800

    Update hessian-lite to 4.0.1 (#14315)
    
    * Update hessian-lite to 4.0.1
    
    * Fix style
---
 dubbo-dependencies-bom/pom.xml                     |  2 +-
 .../HessianReflectionTypeDescriberRegistrar.java   | 65 ++++++++--------------
 2 files changed, 25 insertions(+), 42 deletions(-)

diff --git a/dubbo-dependencies-bom/pom.xml b/dubbo-dependencies-bom/pom.xml
index 0d2af03959..f9a9e8ba99 100644
--- a/dubbo-dependencies-bom/pom.xml
+++ b/dubbo-dependencies-bom/pom.xml
@@ -167,7 +167,7 @@
     <jaxb_version>2.2.7</jaxb_version>
     <activation_version>1.2.0</activation_version>
     <test_container_version>1.19.8</test_container_version>
-    <hessian_lite_version>4.0.0</hessian_lite_version>
+    <hessian_lite_version>4.0.1</hessian_lite_version>
     <swagger_version>1.6.14</swagger_version>
 
     <snappy_java_version>1.1.10.5</snappy_java_version>
diff --git 
a/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/aot/HessianReflectionTypeDescriberRegistrar.java
 
b/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/aot/HessianReflectionTypeDescriberRegistrar.java
index 0c44aa6572..071156bab2 100644
--- 
a/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/aot/HessianReflectionTypeDescriberRegistrar.java
+++ 
b/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/aot/HessianReflectionTypeDescriberRegistrar.java
@@ -20,60 +20,26 @@ import org.apache.dubbo.aot.api.MemberCategory;
 import org.apache.dubbo.aot.api.ReflectionTypeDescriberRegistrar;
 import org.apache.dubbo.aot.api.TypeDescriber;
 
+import java.net.URL;
 import java.sql.Date;
 import java.sql.Time;
 import java.sql.Timestamp;
 import java.util.ArrayList;
+import java.util.Enumeration;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Properties;
 import java.util.Set;
 
-import com.alibaba.com.caucho.hessian.io.BigDecimalDeserializer;
-import com.alibaba.com.caucho.hessian.io.FileDeserializer;
-import com.alibaba.com.caucho.hessian.io.HessianRemote;
-import com.alibaba.com.caucho.hessian.io.LocaleSerializer;
-import com.alibaba.com.caucho.hessian.io.ObjectNameDeserializer;
-import com.alibaba.com.caucho.hessian.io.StringValueSerializer;
-import com.alibaba.com.caucho.hessian.io.java8.DurationSerializer;
-import com.alibaba.com.caucho.hessian.io.java8.InstantSerializer;
-import com.alibaba.com.caucho.hessian.io.java8.LocalDateSerializer;
-import com.alibaba.com.caucho.hessian.io.java8.LocalDateTimeSerializer;
-import com.alibaba.com.caucho.hessian.io.java8.LocalTimeSerializer;
-import com.alibaba.com.caucho.hessian.io.java8.MonthDaySerializer;
-import com.alibaba.com.caucho.hessian.io.java8.OffsetDateTimeSerializer;
-import com.alibaba.com.caucho.hessian.io.java8.OffsetTimeSerializer;
-import com.alibaba.com.caucho.hessian.io.java8.PeriodSerializer;
-import com.alibaba.com.caucho.hessian.io.java8.YearMonthSerializer;
-import com.alibaba.com.caucho.hessian.io.java8.YearSerializer;
-import com.alibaba.com.caucho.hessian.io.java8.ZoneIdSerializer;
-import com.alibaba.com.caucho.hessian.io.java8.ZoneOffsetSerializer;
-import com.alibaba.com.caucho.hessian.io.java8.ZonedDateTimeSerializer;
-
 public class HessianReflectionTypeDescriberRegistrar implements 
ReflectionTypeDescriberRegistrar {
 
     @Override
     public List<TypeDescriber> getTypeDescribers() {
         List<TypeDescriber> typeDescribers = new ArrayList<>();
-        
typeDescribers.add(buildTypeDescriberWithDeclared(BigDecimalDeserializer.class));
-        
typeDescribers.add(buildTypeDescriberWithDeclared(FileDeserializer.class));
-        
typeDescribers.add(buildTypeDescriberWithDeclared(HessianRemote.class));
-        
typeDescribers.add(buildTypeDescriberWithDeclared(LocaleSerializer.class));
-        
typeDescribers.add(buildTypeDescriberWithDeclared(ObjectNameDeserializer.class));
-        
typeDescribers.add(buildTypeDescriberWithDeclared(StringValueSerializer.class));
-        
typeDescribers.add(buildTypeDescriberWithDeclared(DurationSerializer.class));
-        
typeDescribers.add(buildTypeDescriberWithDeclared(InstantSerializer.class));
-        
typeDescribers.add(buildTypeDescriberWithDeclared(LocalDateSerializer.class));
-        
typeDescribers.add(buildTypeDescriberWithDeclared(LocalDateTimeSerializer.class));
-        
typeDescribers.add(buildTypeDescriberWithDeclared(LocalTimeSerializer.class));
-        
typeDescribers.add(buildTypeDescriberWithDeclared(MonthDaySerializer.class));
-        
typeDescribers.add(buildTypeDescriberWithDeclared(OffsetDateTimeSerializer.class));
-        
typeDescribers.add(buildTypeDescriberWithDeclared(OffsetTimeSerializer.class));
-        
typeDescribers.add(buildTypeDescriberWithDeclared(PeriodSerializer.class));
-        
typeDescribers.add(buildTypeDescriberWithDeclared(YearMonthSerializer.class));
-        
typeDescribers.add(buildTypeDescriberWithDeclared(YearSerializer.class));
-        
typeDescribers.add(buildTypeDescriberWithDeclared(ZoneIdSerializer.class));
-        
typeDescribers.add(buildTypeDescriberWithDeclared(ZoneOffsetSerializer.class));
-        
typeDescribers.add(buildTypeDescriberWithDeclared(ZonedDateTimeSerializer.class));
+
+        loadFile("META-INF/dubbo/hessian/deserializers", typeDescribers);
+        loadFile("META-INF/dubbo/hessian/serializers", typeDescribers);
+
         typeDescribers.add(buildTypeDescriberWithDeclared(Date.class));
         typeDescribers.add(buildTypeDescriberWithDeclared(Time.class));
         typeDescribers.add(buildTypeDescriberWithDeclared(Timestamp.class));
@@ -81,6 +47,23 @@ public class HessianReflectionTypeDescriberRegistrar 
implements ReflectionTypeDe
         return typeDescribers;
     }
 
+    private void loadFile(String path, List<TypeDescriber> typeDescribers) {
+        try {
+            Enumeration<URL> resources = 
this.getClass().getClassLoader().getResources(path);
+            while (resources.hasMoreElements()) {
+                URL url = resources.nextElement();
+                Properties props = new Properties();
+                props.load(url.openStream());
+                for (Object value : props.values()) {
+                    String className = (String) value;
+                    
typeDescribers.add(buildTypeDescriberWithDeclared(className));
+                }
+            }
+        } catch (Throwable t) {
+            // ignore
+        }
+    }
+
     private TypeDescriber buildTypeDescriberWithDeclared(Class<?> cl) {
         Set<MemberCategory> memberCategories = new HashSet<>();
         memberCategories.add(MemberCategory.INVOKE_DECLARED_METHODS);

Reply via email to