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