This is an automated email from the ASF dual-hosted git repository.
zrlw pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo-hessian-lite.git
The following commit(s) were added to refs/heads/master by this push:
new bff03e52 Optimize unnecessary getInterfaces and getSuperclass calls
(#90)
bff03e52 is described below
commit bff03e523ee06ad6c314a30531242bb0f0cfebfb
Author: Ares_xue <[email protected]>
AuthorDate: Sat Sep 20 11:24:05 2025 +0800
Optimize unnecessary getInterfaces and getSuperclass calls (#90)
---
.../com/caucho/hessian/io/ClassFactory.java | 28 ++++++++--------------
1 file changed, 10 insertions(+), 18 deletions(-)
diff --git
a/hessian-lite/src/main/java/com/alibaba/com/caucho/hessian/io/ClassFactory.java
b/hessian-lite/src/main/java/com/alibaba/com/caucho/hessian/io/ClassFactory.java
index d27080dd..70e20bb7 100644
---
a/hessian-lite/src/main/java/com/alibaba/com/caucho/hessian/io/ClassFactory.java
+++
b/hessian-lite/src/main/java/com/alibaba/com/caucho/hessian/io/ClassFactory.java
@@ -136,30 +136,22 @@ public class ClassFactory {
return aClass;
}
- if (aClass.getInterfaces().length > 0) {
- for (Class<?> anInterface : aClass.getInterfaces()) {
- if (!isAllow(anInterface.getName())) {
- log.log(Level.SEVERE, className + "'s interfaces: " +
anInterface.getName() + " in blacklist or not in whitelist, deserialization
with type 'HashMap' instead.");
- return HashMap.class;
- }
+ for (Class<?> anInterface : aClass.getInterfaces()) {
+ String interfaceName = anInterface.getName();
+ if (!isAllow(interfaceName)) {
+ log.log(Level.SEVERE, className + "'s interfaces: " +
interfaceName + " in blacklist or not in whitelist, deserialization with type
'HashMap' instead.");
+ return HashMap.class;
}
}
- List<Class<?>> allSuperClasses = new LinkedList<>();
-
Class<?> superClass = aClass.getSuperclass();
- while (superClass != null) {
- // add current super class
- allSuperClasses.add(superClass);
- superClass = superClass.getSuperclass();
- }
-
- for (Class<?> aSuperClass : allSuperClasses) {
- if (!isAllow(aSuperClass.getName())) {
- log.log(Level.SEVERE, className + "'s superClass: " +
aSuperClass.getName() + " in blacklist or not in whitelist, deserialization
with type 'HashMap' instead.");
+ while (null != superClass && Object.class != superClass) {
+ String superClassName = superClass.getName();
+ if (!isAllow(superClassName)) {
+ log.log(Level.SEVERE, className + "'s superClass: " +
superClassName + " in blacklist or not in whitelist, deserialization with type
'HashMap' instead.");
return HashMap.class;
}
-
+ superClass = superClass.getSuperclass();
}
_allowClassSet.put(className, className);