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

Reply via email to