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