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

albumenj pushed a commit to branch 3.2
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.2 by this push:
     new 838b7c9c4b Generic bugfix in bean mode (#12249)
838b7c9c4b is described below

commit 838b7c9c4b24b5ab3f93607cca4cd49ef7aed4de
Author: wxbty <[email protected]>
AuthorDate: Mon May 8 07:41:04 2023 +0800

    Generic bugfix in bean mode (#12249)
---
 .../org/apache/dubbo/rpc/filter/GenericFilter.java | 22 ++++++++++++----------
 .../apache/dubbo/rpc/filter/GenericImplFilter.java | 12 ++++++------
 2 files changed, 18 insertions(+), 16 deletions(-)

diff --git 
a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/GenericFilter.java
 
b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/GenericFilter.java
index 4931fc8887..7967e022c0 100644
--- 
a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/GenericFilter.java
+++ 
b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/GenericFilter.java
@@ -145,16 +145,18 @@ public class GenericFilter implements Filter, 
Filter.Listener, ScopeModelAware {
                     }
                 } else if (ProtocolUtils.isBeanGenericSerialization(generic)) {
                     for (int i = 0; i < args.length; i++) {
-                        if (args[i] instanceof JavaBeanDescriptor) {
-                            args[i] = 
JavaBeanSerializeUtil.deserialize((JavaBeanDescriptor) args[i]);
-                        } else {
-                            throw new RpcException(
-                                "Generic serialization [" +
-                                    GENERIC_SERIALIZATION_BEAN +
-                                    "] only support message type " +
-                                    JavaBeanDescriptor.class.getName() +
-                                    " and your message type is " +
-                                    args[i].getClass().getName());
+                        if (args[i] != null) {
+                            if (args[i] instanceof JavaBeanDescriptor) {
+                                args[i] = 
JavaBeanSerializeUtil.deserialize((JavaBeanDescriptor) args[i]);
+                            } else {
+                                throw new RpcException(
+                                    "Generic serialization [" +
+                                        GENERIC_SERIALIZATION_BEAN +
+                                        "] only support message type " +
+                                        JavaBeanDescriptor.class.getName() +
+                                        " and your message type is " +
+                                        args[i].getClass().getName());
+                            }
                         }
                     }
                 } else if 
(ProtocolUtils.isProtobufGenericSerialization(generic)) {
diff --git 
a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/GenericImplFilter.java
 
b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/GenericImplFilter.java
index c21fa3d1f9..e3308840e8 100644
--- 
a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/GenericImplFilter.java
+++ 
b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/GenericImplFilter.java
@@ -16,11 +16,6 @@
  */
 package org.apache.dubbo.rpc.filter;
 
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-
 import org.apache.dubbo.common.beanutil.JavaBeanAccessor;
 import org.apache.dubbo.common.beanutil.JavaBeanDescriptor;
 import org.apache.dubbo.common.beanutil.JavaBeanSerializeUtil;
@@ -43,6 +38,11 @@ import org.apache.dubbo.rpc.service.GenericService;
 import org.apache.dubbo.rpc.support.ProtocolUtils;
 import org.apache.dubbo.rpc.support.RpcUtils;
 
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+
 import static org.apache.dubbo.common.constants.CommonConstants.$INVOKE;
 import static org.apache.dubbo.common.constants.CommonConstants.$INVOKE_ASYNC;
 import static 
org.apache.dubbo.common.constants.CommonConstants.GENERIC_PARAMETER_DESC;
@@ -122,7 +122,7 @@ public class GenericImplFilter implements Filter, 
Filter.Listener {
                 }
             } else if (ProtocolUtils.isBeanGenericSerialization(generic)) {
                 for (Object arg : args) {
-                    if (!(arg instanceof JavaBeanDescriptor)) {
+                    if (arg != null && !(arg instanceof JavaBeanDescriptor)) {
                         error(generic, JavaBeanDescriptor.class.getName(), 
arg.getClass().getName());
                     }
                 }

Reply via email to