[#4334]fix invocation arguments not same with swagger arguments problem (#4335)
diff --git a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/SpringmvcClient.java b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/SpringmvcClient.java
index 849fd56..74293a6 100644
--- a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/SpringmvcClient.java
+++ b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/SpringmvcClient.java
@@ -17,7 +17,6 @@
package org.apache.servicecomb.demo.springmvc;
-import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -29,7 +28,6 @@
import org.apache.servicecomb.demo.controller.Controller;
import org.apache.servicecomb.demo.controller.Person;
import org.apache.servicecomb.demo.springmvc.client.CodeFirstRestTemplateSpringmvc;
-import org.apache.servicecomb.demo.springmvc.client.ThirdSvc.ThirdSvcClient;
import org.apache.servicecomb.foundation.common.LegacyPropertyFactory;
import org.apache.servicecomb.foundation.common.utils.BeanUtils;
import org.apache.servicecomb.foundation.vertx.client.http.HttpClients;
@@ -80,7 +78,7 @@
LOGGER.error("-------------- test failed -------------");
}
TestMgr.summary();
- LOGGER.info("-------------- last time updated checks(maybe more/less): 1341 -------------");
+ LOGGER.info("-------------- last time updated checks(maybe more/less): 1344 -------------");
}
private static void changeTransport(String microserviceName, String transport) {
@@ -218,18 +216,9 @@
testController();
testSpringMvcDefaultValuesAllTransport(templateUrlWithServiceName, microserviceName);
testSpringMvcDefaultValuesJavaPrimitiveAllTransport(templateUrlWithServiceName, microserviceName);
- testThirdService();
}
}
- private static void testThirdService() {
- ThirdSvcClient client = BeanUtils.getContext().getBean(ThirdSvcClient.class);
-
- Date date = new Date();
- ResponseEntity<Date> responseEntity = client.responseEntity(date);
- TestMgr.check(date, responseEntity.getBody());
- }
-
private static void testControllerRest(RestTemplate template, String microserviceName) {
String prefix = "cse://" + microserviceName;
@@ -340,7 +329,6 @@
}
-
private static void testSpringMvcDefaultValuesRest(RestTemplate template, String microserviceName) {
String cseUrlPrefix = "cse://" + microserviceName + "/SpringMvcDefaultValues/";
String result = template.getForObject(cseUrlPrefix + "/query?d=10", String.class);
diff --git a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestThirdSvc.java b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestThirdSvc.java
new file mode 100644
index 0000000..98592c9
--- /dev/null
+++ b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestThirdSvc.java
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.demo.springmvc.client;
+
+import java.util.Date;
+
+import org.apache.servicecomb.demo.CategorizedTestCase;
+import org.apache.servicecomb.demo.TestMgr;
+import org.apache.servicecomb.demo.springmvc.client.ThirdSvc.ThirdSvcClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+
+@Component
+public class TestThirdSvc implements CategorizedTestCase {
+ private ThirdSvcClient client;
+
+ @Autowired
+ public void setThirdSvcClient(ThirdSvcClient client) {
+ this.client = client;
+ }
+
+ @Override
+ public void testAllTransport() throws Exception {
+ testResponseEntity();
+
+ testDifferentParameterName();
+ }
+
+ private void testDifferentParameterName() {
+ String result = client.getAuthorization("test", "param", "auth");
+ TestMgr.check("testparamauth", result);
+ }
+
+ private void testResponseEntity() {
+ Date date = new Date();
+ ResponseEntity<Date> responseEntity = client.responseEntity(date);
+ TestMgr.check(date, responseEntity.getBody());
+ }
+}
diff --git a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/ThirdSvc.java b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/ThirdSvc.java
index 070ca10..3cbd8dd 100644
--- a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/ThirdSvc.java
+++ b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/ThirdSvc.java
@@ -29,9 +29,12 @@
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestAttribute;
+import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
import io.swagger.v3.oas.annotations.headers.Header;
import io.swagger.v3.oas.annotations.media.Content;
@@ -51,6 +54,12 @@
@Header(name = "h2", schema = @Schema(implementation = String.class))})
@RequestMapping(path = "/responseEntity", method = RequestMethod.POST)
ResponseEntity<Date> responseEntity(@RequestAttribute("date") Date date);
+
+ @GetMapping(value = "/getAuthorization", produces = {"application/json"})
+ String getAuthorization(
+ @RequestHeader(value = "test") String test,
+ @RequestParam(value = "param") String param,
+ @RequestHeader("Authorization") String authorization);
}
@Bean
diff --git a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/CodeFirstSpringmvc.java b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/CodeFirstSpringmvc.java
index 8ea395a..ded1680 100644
--- a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/CodeFirstSpringmvc.java
+++ b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/CodeFirstSpringmvc.java
@@ -148,6 +148,15 @@
return new ResponseEntity<>(date, headers, HttpStatus.ACCEPTED);
}
+ @GetMapping(value = "/getAuthorization", produces = {"application/json"})
+ public String getAuthorization(
+ @RequestHeader(value = "test") String test,
+ @RequestParam(value = "param") String param,
+ @Parameter(description = "Authorization header", required = true, in = ParameterIn.HEADER,
+ name = "Authorization") @RequestHeader("Authorization") String authorization) {
+ return test + param + authorization;
+ }
+
@ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = Date.class))
, description = "",
headers = {@Header(name = "h1", schema = @Schema(implementation = String.class)),
diff --git a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/consumer/ConsumerArgumentsMapperCreator.java b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/consumer/ConsumerArgumentsMapperCreator.java
index 47ffd68..e47a5e8 100644
--- a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/consumer/ConsumerArgumentsMapperCreator.java
+++ b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/consumer/ConsumerArgumentsMapperCreator.java
@@ -97,7 +97,8 @@
@Override
protected ArgumentMapper createKnownParameterMapper(int providerParamIdx, String invocationArgumentName) {
- return new ConsumerArgumentSame(invocationArgumentName, invocationArgumentName);
+ return new ConsumerArgumentSame(this.providerMethod.getParameters()[providerParamIdx].getName(),
+ invocationArgumentName);
}
@Override
diff --git a/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/arguments/consumer/TestJaxrsV2V2.java b/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/arguments/consumer/TestJaxrsV2V2.java
index 9429f3e..44f1649 100644
--- a/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/arguments/consumer/TestJaxrsV2V2.java
+++ b/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/arguments/consumer/TestJaxrsV2V2.java
@@ -48,7 +48,7 @@
Map<String, Object> arguments = new HashMap<>();
arguments.put("x", 1);
arguments.put("y", 2);
- arguments.put("x-z", 3);
+ arguments.put("z", 3);
SwaggerInvocation invocation = new SwaggerInvocation();
Map<String, Object> result = mapper.invocationArgumentToSwaggerArguments(invocation, arguments);
@@ -70,7 +70,7 @@
Map<String, Object> arguments = new HashMap<>();
arguments.put("x", 1);
arguments.put("y", 2);
- arguments.put("x-z", 3);
+ arguments.put("z", 3);
SwaggerInvocation invocation = new SwaggerInvocation();
Map<String, Object> result = mapper.invocationArgumentToSwaggerArguments(invocation, arguments);
diff --git a/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/arguments/consumer/TestSpringmvcV2V2.java b/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/arguments/consumer/TestSpringmvcV2V2.java
index e31f922..0e5fcb4 100644
--- a/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/arguments/consumer/TestSpringmvcV2V2.java
+++ b/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/arguments/consumer/TestSpringmvcV2V2.java
@@ -30,11 +30,11 @@
import org.apache.servicecomb.swagger.invocation.schemas.SpringmvcAddV2;
import org.apache.servicecomb.swagger.invocation.schemas.SpringmvcAddWrapperV2;
import org.apache.servicecomb.swagger.invocation.schemas.models.AddWrapperV2;
-
-import io.swagger.v3.oas.models.OpenAPI;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
+import io.swagger.v3.oas.models.OpenAPI;
+
@SuppressWarnings("unchecked")
public class TestSpringmvcV2V2 {
@Test
@@ -48,7 +48,7 @@
Map<String, Object> arguments = new HashMap<>();
arguments.put("x", 1);
arguments.put("y", 2);
- arguments.put("x-z", 3);
+ arguments.put("z", 3);
SwaggerInvocation invocation = new SwaggerInvocation();
Map<String, Object> result = mapper.invocationArgumentToSwaggerArguments(invocation, arguments);
@@ -70,7 +70,7 @@
Map<String, Object> arguments = new HashMap<>();
arguments.put("x", 1);
arguments.put("y", 2);
- arguments.put("x-z", 3);
+ arguments.put("z", 3);
SwaggerInvocation invocation = new SwaggerInvocation();
Map<String, Object> result = mapper.invocationArgumentToSwaggerArguments(invocation, arguments);