You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2019/10/11 10:01:51 UTC

[servicecomb-java-chassis] branch master updated: [SCB-1520]using RPC and when first paramter type is Object, the second parameter value will be null

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

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git


The following commit(s) were added to refs/heads/master by this push:
     new 858b3af  [SCB-1520]using RPC and when first paramter type is Object, the second parameter value will be null
858b3af is described below

commit 858b3af923a5111bb314c122e1f76484f3b928cd
Author: liubao <bi...@qq.com>
AuthorDate: Fri Oct 11 13:50:34 2019 +0800

    [SCB-1520]using RPC and when first paramter type is Object, the second parameter value will be null
---
 .../servicecomb/it/schema/generic/AbstractBaseService.java | 10 ++++++++++
 .../apache/servicecomb/it/schema/generic/IBaseService.java |  4 ++++
 .../servicecomb/it/schema/generic/TestMyService.java       | 12 ++++++++++++
 .../it/schema/generic/MyEndpointWithInterface.java         | 14 ++++++++++++++
 .../apache/servicecomb/it/schema/generic/MyService.java    | 14 ++++++++++++++
 .../invocation/arguments/ArgumentsMapperFactory.java       |  2 +-
 6 files changed, 55 insertions(+), 1 deletion(-)

diff --git a/integration-tests/it-common/src/main/java/org/apache/servicecomb/it/schema/generic/AbstractBaseService.java b/integration-tests/it-common/src/main/java/org/apache/servicecomb/it/schema/generic/AbstractBaseService.java
index adb30f3..356f354 100644
--- a/integration-tests/it-common/src/main/java/org/apache/servicecomb/it/schema/generic/AbstractBaseService.java
+++ b/integration-tests/it-common/src/main/java/org/apache/servicecomb/it/schema/generic/AbstractBaseService.java
@@ -54,4 +54,14 @@ public class AbstractBaseService<T extends AbstractBean> implements IBaseService
   public PersonBean actual() {
     return target.actual();
   }
+
+  @Override
+  public PersonBean objectParam(Object obj) {
+    return target.objectParam(obj);
+  }
+
+  @Override
+  public PersonBean objectParamTwo(Object obj, String name) {
+    return target.objectParamTwo(obj, name);
+  }
 }
diff --git a/integration-tests/it-common/src/main/java/org/apache/servicecomb/it/schema/generic/IBaseService.java b/integration-tests/it-common/src/main/java/org/apache/servicecomb/it/schema/generic/IBaseService.java
index bbb658a..74fc5ee 100644
--- a/integration-tests/it-common/src/main/java/org/apache/servicecomb/it/schema/generic/IBaseService.java
+++ b/integration-tests/it-common/src/main/java/org/apache/servicecomb/it/schema/generic/IBaseService.java
@@ -33,4 +33,8 @@ public interface IBaseService<T extends AbstractBean> {
   List<T> helloList(List<T> a);
 
   PersonBean actual();
+
+  PersonBean objectParam(Object obj);
+
+  PersonBean objectParamTwo(Object obj, String name);
 }
diff --git a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/schema/generic/TestMyService.java b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/schema/generic/TestMyService.java
index 4473398..655d145 100644
--- a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/schema/generic/TestMyService.java
+++ b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/schema/generic/TestMyService.java
@@ -44,6 +44,12 @@ public class TestMyService {
     resultBean = myservice.getIntf().actual();
     Assert.assertEquals("p", resultBean.getName());
 
+    resultBean = myservice.getIntf().objectParam("p");
+    Assert.assertEquals("p", resultBean.getName());
+
+    resultBean = myservice.getIntf().objectParamTwo("p", "p");
+    Assert.assertEquals("p:p", resultBean.getName());
+
     PersonBean[] beanArray = new PersonBean[] {bean};
     PersonBean[] beanArrayResult = myservice.getIntf().helloBody(beanArray);
     Assert.assertEquals("p", beanArrayResult[0].getName());
@@ -67,6 +73,12 @@ public class TestMyService {
     resultBean = myserviceWithInterface.getIntf().actual();
     Assert.assertEquals("p", resultBean.getName());
 
+    resultBean = myserviceWithInterface.getIntf().objectParam("p");
+    Assert.assertEquals("p", resultBean.getName());
+
+    resultBean = myserviceWithInterface.getIntf().objectParamTwo("p", "p");
+    Assert.assertEquals("p:p", resultBean.getName());
+
     PersonBean[] beanArray = new PersonBean[] {bean};
     PersonBean[] beanArrayResult = myserviceWithInterface.getIntf().helloBody(beanArray);
     Assert.assertEquals("p", beanArrayResult[0].getName());
diff --git a/integration-tests/it-producer/src/main/java/org/apache/servicecomb/it/schema/generic/MyEndpointWithInterface.java b/integration-tests/it-producer/src/main/java/org/apache/servicecomb/it/schema/generic/MyEndpointWithInterface.java
index 33e582f..1f8024e 100644
--- a/integration-tests/it-producer/src/main/java/org/apache/servicecomb/it/schema/generic/MyEndpointWithInterface.java
+++ b/integration-tests/it-producer/src/main/java/org/apache/servicecomb/it/schema/generic/MyEndpointWithInterface.java
@@ -53,4 +53,18 @@ public class MyEndpointWithInterface implements IMyService {
     p.setName("p");
     return p;
   }
+
+  @Override
+  public PersonBean objectParam(Object obj) {
+    PersonBean p = new PersonBean();
+    p.setName(obj.toString());
+    return p;
+  }
+
+  @Override
+  public PersonBean objectParamTwo(Object obj, String name) {
+    PersonBean p = new PersonBean();
+    p.setName(obj.toString() + ":" + name);
+    return p;
+  }
 }
diff --git a/integration-tests/it-producer/src/main/java/org/apache/servicecomb/it/schema/generic/MyService.java b/integration-tests/it-producer/src/main/java/org/apache/servicecomb/it/schema/generic/MyService.java
index 77a1b9d..1628da6 100644
--- a/integration-tests/it-producer/src/main/java/org/apache/servicecomb/it/schema/generic/MyService.java
+++ b/integration-tests/it-producer/src/main/java/org/apache/servicecomb/it/schema/generic/MyService.java
@@ -52,4 +52,18 @@ public class MyService implements IMyService {
     p.setName("p");
     return p;
   }
+
+  @Override
+  public PersonBean objectParam(Object obj) {
+    PersonBean p = new PersonBean();
+    p.setName(obj.toString());
+    return p;
+  }
+
+  @Override
+  public PersonBean objectParamTwo(Object obj, String name) {
+    PersonBean p = new PersonBean();
+    p.setName(obj.toString() + ":" + name);
+    return p;
+  }
 }
diff --git a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/ArgumentsMapperFactory.java b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/ArgumentsMapperFactory.java
index ea4b4fd..eba4d88 100644
--- a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/ArgumentsMapperFactory.java
+++ b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/ArgumentsMapperFactory.java
@@ -102,7 +102,7 @@ public abstract class ArgumentsMapperFactory<T> {
     }
 
     Type firstProviderParam = providerNormalParams.get(0).getType();
-    if (TypeUtils.isAssignable(firstProviderParam, swaggerType)) {
+    if (!firstProviderParam.equals(Object.class) && TypeUtils.isAssignable(firstProviderParam, swaggerType)) {
       return false;
     }