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 2020/01/19 00:46:44 UTC
[servicecomb-java-chassis] branch master updated:
[SCB-1713]Invocation carries both invocation arguments and swagger
arguments and fix implicit parameter problems
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 a3b2a80 [SCB-1713]Invocation carries both invocation arguments and swagger arguments and fix implicit parameter problems
a3b2a80 is described below
commit a3b2a8051ea462ea89841b38b1c7dea0d4198e21
Author: liubao <bi...@qq.com>
AuthorDate: Fri Jan 17 17:48:59 2020 +0800
[SCB-1713]Invocation carries both invocation arguments and swagger arguments and fix implicit parameter problems
---
.../rest/filter/inner/ClientRestArgsFilter.java | 15 +----
.../rest/filter/inner/ServerRestArgsFilter.java | 10 +--
.../org/apache/servicecomb/core/Invocation.java | 78 +++++++++++++++++-----
.../servicecomb/core/definition/OperationMeta.java | 29 --------
.../core/invocation/InvocationFactory.java | 12 ++--
.../core/provider/consumer/InvokerUtils.java | 8 +--
.../servicecomb/demo/pojo/client/TestWeakPojo.java | 4 +-
.../client/CodeFirstRestTemplateSpringmvc.java | 33 +++++++--
.../demo/springmvc/client/SpringmvcClient.java | 2 +-
.../TestRSAProviderTokenManager.java | 2 +-
.../router/custom/RouterServerListFilter.java | 2 +-
.../it/edge/filter/CheckRawFormParamFilter.java | 2 +-
.../apache/servicecomb/provider/pojo/Invoker.java | 4 +-
.../common/InvocationToHttpServletRequest.java | 14 ++--
.../common/TestInvocationToHttpServletRequest.java | 4 --
.../springmvc/reference/CseClientHttpRequest.java | 12 ++--
.../reference/async/CseAsyncClientHttpRequest.java | 8 +--
.../reference/TestCseClientHttpRequest.java | 4 +-
.../async/CseAsyncClientHttpRequestTest.java | 2 +-
.../swagger/engine/SwaggerProducerOperation.java | 53 +--------------
.../arguments/AbstractArgumentsMapperCreator.java | 15 +++++
.../consumer/ConsumerArgumentsMapperCreator.java | 8 +++
.../producer/ProducerArgumentsMapperCreator.java | 6 ++
.../engine/TestSwaggerProducerOperation.java | 2 +-
.../transport/highway/HighwayCodec.java | 35 ++--------
.../transport/highway/TestHighwayCodec.java | 2 +-
.../rest/client/http/RestClientInvocation.java | 2 +-
27 files changed, 172 insertions(+), 196 deletions(-)
diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/ClientRestArgsFilter.java b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/ClientRestArgsFilter.java
index 1c4e3eb..8babd97 100644
--- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/ClientRestArgsFilter.java
+++ b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/ClientRestArgsFilter.java
@@ -44,19 +44,8 @@ public class ClientRestArgsFilter implements HttpClientFilter {
OperationMeta operationMeta = invocation.getOperationMeta();
RestOperationMeta swaggerRestOperation = operationMeta.getExtData(RestConst.SWAGGER_REST_OPERATION);
try {
- // POJO invoker for client
- if (swaggerRestOperation.getOperationMeta().getSwaggerConsumerOperation() != null && !invocation.isEdge()
- && !invocation.isWeakInvoke()) {
- RestCodec
- .argsToRest(swaggerRestOperation.getOperationMeta().getSwaggerConsumerOperation().getArgumentsMapper()
- .invocationArgumentToSwaggerArguments(invocation,
- invocation.getArguments()), swaggerRestOperation,
- restClientRequest);
- } else {
- // RestTemplate invoker for client
- RestCodec.argsToRest(invocation.getArguments(), swaggerRestOperation,
- restClientRequest);
- }
+ RestCodec.argsToRest(invocation.getSwaggerArguments(), swaggerRestOperation,
+ restClientRequest);
requestEx.setBodyBuffer(restClientRequest.getBodyBuffer());
} catch (Throwable e) {
throw ExceptionFactory.convertConsumerException(e);
diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/ServerRestArgsFilter.java b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/ServerRestArgsFilter.java
index bbb4bb7..8464a63 100644
--- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/ServerRestArgsFilter.java
+++ b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/ServerRestArgsFilter.java
@@ -59,14 +59,8 @@ public class ServerRestArgsFilter implements HttpServerFilter {
public Response afterReceiveRequest(Invocation invocation, HttpServletRequestEx requestEx) {
OperationMeta operationMeta = invocation.getOperationMeta();
RestOperationMeta restOperationMeta = operationMeta.getExtData(RestConst.SWAGGER_REST_OPERATION);
- Map<String, Object> args = RestCodec.restToArgs(requestEx, restOperationMeta);
- if (restOperationMeta.getOperationMeta().getSwaggerProducerOperation() != null && !invocation.isEdge()) {
- invocation.setArguments(restOperationMeta.getOperationMeta().getSwaggerProducerOperation().getArgumentsMapper()
- .swaggerArgumentToInvocationArguments(invocation, args));
- } else {
- // edge
- invocation.setArguments(args);
- }
+ Map<String, Object> swaggerArguments = RestCodec.restToArgs(requestEx, restOperationMeta);
+ invocation.setSwaggerArguments(swaggerArguments);
return null;
}
diff --git a/core/src/main/java/org/apache/servicecomb/core/Invocation.java b/core/src/main/java/org/apache/servicecomb/core/Invocation.java
index 131e514..6b81b9a 100644
--- a/core/src/main/java/org/apache/servicecomb/core/Invocation.java
+++ b/core/src/main/java/org/apache/servicecomb/core/Invocation.java
@@ -19,6 +19,7 @@ package org.apache.servicecomb.core;
import java.lang.reflect.Method;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -101,7 +102,9 @@ public class Invocation extends SwaggerInvocation {
private long invocationId;
- private Map<String, Object> arguments;
+ private Map<String, Object> invocationArguments = Collections.emptyMap();
+
+ private Map<String, Object> swaggerArguments = Collections.emptyMap();
public long getInvocationId() {
return invocationId;
@@ -137,24 +140,25 @@ public class Invocation extends SwaggerInvocation {
// An empty invocation, used to mock or some other scenario do not need operation information.
}
- public Invocation(ReferenceConfig referenceConfig, OperationMeta operationMeta, Map<String, Object> arguments) {
+ public Invocation(ReferenceConfig referenceConfig, OperationMeta operationMeta,
+ Map<String, Object> swaggerArguments) {
this.invocationType = InvocationType.CONSUMER;
this.referenceConfig = referenceConfig;
this.responsesMeta = operationMeta.getResponsesMeta();
- init(operationMeta, arguments);
+ init(operationMeta, swaggerArguments);
}
- public Invocation(Endpoint endpoint, OperationMeta operationMeta, Map<String, Object> arguments) {
+ public Invocation(Endpoint endpoint, OperationMeta operationMeta, Map<String, Object> swaggerArguments) {
this.invocationType = InvocationType.PRODUCER;
this.endpoint = endpoint;
- init(operationMeta, arguments);
+ init(operationMeta, swaggerArguments);
}
- private void init(OperationMeta operationMeta, Map<String, Object> arguments) {
+ private void init(OperationMeta operationMeta, Map<String, Object> swaggerArguments) {
this.invocationId = INVOCATION_ID.getAndIncrement();
this.schemaMeta = operationMeta.getSchemaMeta();
this.operationMeta = operationMeta;
- this.arguments = arguments;
+ this.setSwaggerArguments(swaggerArguments);
this.handlerList = getHandlerChain();
handlerIndex = 0;
}
@@ -188,21 +192,63 @@ public class Invocation extends SwaggerInvocation {
return operationMeta;
}
- public Map<String, Object> getArguments() {
- return this.arguments;
+ public Map<String, Object> getInvocationArguments() {
+ return this.invocationArguments;
+ }
+
+ public Map<String, Object> getSwaggerArguments() {
+ return this.swaggerArguments;
+ }
+
+ public Object getInvocationArgument(String name) {
+ return this.invocationArguments.get(name);
+ }
+
+ public Object getSwaggerArgument(String name) {
+ return this.swaggerArguments.get(name);
+ }
+
+ public void setInvocationArguments(Map<String, Object> invocationArguments) {
+ if (invocationArguments == null) {
+ // Empty arguments
+ this.invocationArguments = new HashMap<>(0);
+ return;
+ }
+ this.invocationArguments = invocationArguments;
+
+ buildSwaggerArguments();
}
- public Object getArgument(String name) {
- return this.arguments.get(name);
+ private void buildSwaggerArguments() {
+ if (operationMeta.getSwaggerConsumerOperation() != null && !isEdge()
+ && !isWeakInvoke()) {
+ this.swaggerArguments = operationMeta.getSwaggerConsumerOperation().getArgumentsMapper()
+ .invocationArgumentToSwaggerArguments(this,
+ this.invocationArguments);
+ } else {
+ this.swaggerArguments = invocationArguments;
+ }
}
- public void setArguments(Map<String, Object> arguments) {
- if (arguments == null) {
+ public void setSwaggerArguments(Map<String, Object> swaggerArguments) {
+ if (swaggerArguments == null) {
// Empty arguments
- this.arguments = new HashMap<>(0);
+ this.swaggerArguments = new HashMap<>(0);
return;
}
- this.arguments = arguments;
+ this.swaggerArguments = swaggerArguments;
+
+ buildInvocationArguments();
+ }
+
+ private void buildInvocationArguments() {
+ if (operationMeta.getSwaggerProducerOperation() != null && !isEdge()) {
+ this.invocationArguments = operationMeta.getSwaggerProducerOperation().getArgumentsMapper()
+ .swaggerArgumentToInvocationArguments(this,
+ swaggerArguments);
+ } else {
+ this.invocationArguments = swaggerArguments;
+ }
}
// TODO: WEAK add release notes to tell this change in 2.0.0
@@ -210,7 +256,7 @@ public class Invocation extends SwaggerInvocation {
Method method = operationMeta.getSwaggerProducerOperation().getProducerMethod();
Object[] args = new Object[method.getParameterCount()];
for (int i = 0; i < method.getParameterCount(); i++) {
- args[i] = this.arguments.get(method.getParameters()[i].getName());
+ args[i] = this.invocationArguments.get(method.getParameters()[i].getName());
}
return args;
}
diff --git a/core/src/main/java/org/apache/servicecomb/core/definition/OperationMeta.java b/core/src/main/java/org/apache/servicecomb/core/definition/OperationMeta.java
index f735afd..e138da9 100644
--- a/core/src/main/java/org/apache/servicecomb/core/definition/OperationMeta.java
+++ b/core/src/main/java/org/apache/servicecomb/core/definition/OperationMeta.java
@@ -16,8 +16,6 @@
*/
package org.apache.servicecomb.core.definition;
-import java.util.HashMap;
-import java.util.Map;
import java.util.concurrent.Executor;
import org.apache.servicecomb.core.Const;
@@ -28,9 +26,6 @@ import org.apache.servicecomb.swagger.engine.SwaggerProducerOperation;
import org.apache.servicecomb.swagger.generator.core.model.SwaggerOperation;
import org.apache.servicecomb.swagger.invocation.response.ResponsesMeta;
-import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.type.TypeFactory;
-
import io.swagger.models.Operation;
public class OperationMeta {
@@ -48,8 +43,6 @@ public class OperationMeta {
private Operation swaggerOperation;
- private Map<String, JavaType> argumentsTypes = new HashMap<>();
-
// run in this executor
private Executor executor;
@@ -74,31 +67,9 @@ public class OperationMeta {
return this;
}
- private void buildArgumentsTypes() {
- this.argumentsTypes.clear();
- if (getSwaggerProducerOperation() != null) {
- SwaggerProducerOperation swaggerProducerOperation = getSwaggerProducerOperation();
- swaggerProducerOperation.getMethodParameterTypesBySwaggerName().forEach((k, v) -> {
- this.argumentsTypes.put(k, TypeFactory.defaultInstance().constructType(v));
- });
- }
- }
-
- public JavaType getArgumentType(String name) {
- return this.argumentsTypes.get(name) == null ? TypeFactory.defaultInstance().constructType(Object.class)
- : this.argumentsTypes.get(name);
- }
-
- public boolean isPojoWrappedArguments(String name) {
- if (this.getSwaggerProducerOperation() != null) {
- return this.getSwaggerProducerOperation().isPojoWrappedArguments(name);
- }
- return false;
- }
public void setSwaggerProducerOperation(SwaggerProducerOperation swaggerProducerOperation) {
this.putExtData(Const.PRODUCER_OPERATION, swaggerProducerOperation);
- buildArgumentsTypes();
}
public SwaggerProducerOperation getSwaggerProducerOperation() {
diff --git a/core/src/main/java/org/apache/servicecomb/core/invocation/InvocationFactory.java b/core/src/main/java/org/apache/servicecomb/core/invocation/InvocationFactory.java
index 53229b0..1e6d6b7 100644
--- a/core/src/main/java/org/apache/servicecomb/core/invocation/InvocationFactory.java
+++ b/core/src/main/java/org/apache/servicecomb/core/invocation/InvocationFactory.java
@@ -37,10 +37,10 @@ public final class InvocationFactory {
}
public static Invocation forConsumer(ReferenceConfig referenceConfig, OperationMeta operationMeta,
- Map<String, Object> arguments) {
+ Map<String, Object> swaggerArguments) {
Invocation invocation = new Invocation(referenceConfig,
operationMeta,
- arguments);
+ swaggerArguments);
invocation.addContext(Const.SRC_MICROSERVICE, getMicroserviceName());
return invocation;
}
@@ -49,9 +49,9 @@ public final class InvocationFactory {
* consumer端使用,schemaMeta级别的缓存,每次调用根据operationName来执行
*/
public static Invocation forConsumer(ReferenceConfig referenceConfig, SchemaMeta schemaMeta, String operationId,
- Map<String, Object> arguments) {
+ Map<String, Object> swaggerArguments) {
OperationMeta operationMeta = schemaMeta.ensureFindOperation(operationId);
- return forConsumer(referenceConfig, operationMeta, arguments);
+ return forConsumer(referenceConfig, operationMeta, swaggerArguments);
}
/*
@@ -59,10 +59,10 @@ public final class InvocationFactory {
*/
public static Invocation forProvider(Endpoint endpoint,
OperationMeta operationMeta,
- Map<String, Object> arguments) {
+ Map<String, Object> swaggerArguments) {
SCBEngine.getInstance().ensureStatusUp();
return new Invocation(endpoint,
operationMeta,
- arguments);
+ swaggerArguments);
}
}
diff --git a/core/src/main/java/org/apache/servicecomb/core/provider/consumer/InvokerUtils.java b/core/src/main/java/org/apache/servicecomb/core/provider/consumer/InvokerUtils.java
index dc2a895..9e0b976 100644
--- a/core/src/main/java/org/apache/servicecomb/core/provider/consumer/InvokerUtils.java
+++ b/core/src/main/java/org/apache/servicecomb/core/provider/consumer/InvokerUtils.java
@@ -37,12 +37,12 @@ public final class InvokerUtils {
private static final Logger LOGGER = LoggerFactory.getLogger(InvokerUtils.class);
public static Object syncInvoke(String microserviceName, String schemaId, String operationId,
- Map<String, Object> args) {
- return syncInvoke(microserviceName, null, null, schemaId, operationId, args);
+ Map<String, Object> swaggerArguments) {
+ return syncInvoke(microserviceName, null, null, schemaId, operationId, swaggerArguments);
}
public static Object syncInvoke(String microserviceName, String microserviceVersion, String transport,
- String schemaId, String operationId, Map<String, Object> args) {
+ String schemaId, String operationId, Map<String, Object> swaggerArguments) {
MicroserviceReferenceConfig microserviceReferenceConfig = SCBEngine.getInstance()
.createMicroserviceReferenceConfig(microserviceName, microserviceVersion);
MicroserviceMeta microserviceMeta = microserviceReferenceConfig.getLatestMicroserviceMeta();
@@ -50,7 +50,7 @@ public final class InvokerUtils {
OperationMeta operationMeta = schemaMeta.ensureFindOperation(operationId);
ReferenceConfig referenceConfig = microserviceReferenceConfig.createReferenceConfig(transport, operationMeta);
- Invocation invocation = InvocationFactory.forConsumer(referenceConfig, operationMeta, args);
+ Invocation invocation = InvocationFactory.forConsumer(referenceConfig, operationMeta, swaggerArguments);
return syncInvoke(invocation);
}
diff --git a/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/TestWeakPojo.java b/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/TestWeakPojo.java
index a28c71f..d324463 100644
--- a/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/TestWeakPojo.java
+++ b/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/TestWeakPojo.java
@@ -174,6 +174,8 @@ public class TestWeakPojo implements CategorizedTestCase {
Map<String, Object> args = new HashMap<>();
args.put("x", 2);
args.put("y", 3);
- TestMgr.check(7, InvokerUtils.syncInvoke("pojo", "WeakPojo", "differentName", args));
+ Map<String, Object> swaggerArgs = new HashMap<>();
+ swaggerArgs.put("differentNameBody", args);
+ TestMgr.check(7, InvokerUtils.syncInvoke("pojo", "WeakPojo", "differentName", swaggerArgs));
}
}
diff --git a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/CodeFirstRestTemplateSpringmvc.java b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/CodeFirstRestTemplateSpringmvc.java
index bc4998d..563fcdf 100644
--- a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/CodeFirstRestTemplateSpringmvc.java
+++ b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/CodeFirstRestTemplateSpringmvc.java
@@ -83,7 +83,7 @@ public class CodeFirstRestTemplateSpringmvc extends CodeFirstRestTemplate {
throw new IllegalStateException(e);
}
testResponseEntity("springmvc", template, cseUrlPrefix);
- testCodeFirstTestForm(template, cseUrlPrefix);
+ testCodeFirstTestFormRest(template, cseUrlPrefix);
testFallback(template, cseUrlPrefix);
testResponse.runRest();
@@ -100,7 +100,7 @@ public class CodeFirstRestTemplateSpringmvc extends CodeFirstRestTemplate {
testResponse.runHighway();
testObject.runHighway();
testGeneric.runHighway();
-
+ testCodeFirstTestFormHighway(template, cseUrlPrefix);
super.testOnlyHighway(template, cseUrlPrefix);
}
@@ -111,9 +111,9 @@ public class CodeFirstRestTemplateSpringmvc extends CodeFirstRestTemplate {
testGeneric.runAllTransport();
testRestTemplate.runAllTest();
testBizkeeper.runAllTest();
- // TODO : WEAK not supported now in HIGHWAY
testResponseEntity("springmvc", template, cseUrlPrefix);
-// testCodeFirstTestForm(template, cseUrlPrefix);
+ testCodeFirstTestForm(template, cseUrlPrefix);
+ // TODO : WEAK not supported now in HIGHWAY
// testFallback(template, cseUrlPrefix);
super.testAllTransport(microserviceName, template, cseUrlPrefix);
@@ -248,7 +248,32 @@ public class CodeFirstRestTemplateSpringmvc extends CodeFirstRestTemplate {
HttpEntity<Map<String, String>> formEntiry = new HttpEntity<>(map, formHeaders);
TestMgr.check(code + "null",
template.postForEntity(cseUrlPrefix + "/testform", formEntiry, String.class).getBody());
+ map.put("form2", "hello");
+ TestMgr.check(code + "hello", template.postForEntity(cseUrlPrefix + "/testform", formEntiry, String.class).getBody());
+ }
+
+ private void testCodeFirstTestFormHighway(RestTemplate template, String cseUrlPrefix) {
+ HttpHeaders formHeaders = new HttpHeaders();
+ formHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+ Map<String, String> map = new HashMap<>();
+ String code = "servicecomb%2bwelcome%40%23%24%25%5e%26*()%3d%3d";
+ map.put("form1", code);
map.put("form2", "");
+ HttpEntity<Map<String, String>> formEntiry = new HttpEntity<>(map, formHeaders);
+ // Highway will not distinguish empty string or null
+ TestMgr
+ .check(code + "null", template.postForEntity(cseUrlPrefix + "/testform", formEntiry, String.class).getBody());
+ }
+
+ private void testCodeFirstTestFormRest(RestTemplate template, String cseUrlPrefix) {
+ HttpHeaders formHeaders = new HttpHeaders();
+ formHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+ Map<String, String> map = new HashMap<>();
+ String code = "servicecomb%2bwelcome%40%23%24%25%5e%26*()%3d%3d";
+ map.put("form1", code);
+ map.put("form2", "");
+ HttpEntity<Map<String, String>> formEntiry = new HttpEntity<>(map, formHeaders);
+ // Rest will have empty string, but users will try to avoid depend on this, This is different from highway
TestMgr.check(code + "", template.postForEntity(cseUrlPrefix + "/testform", formEntiry, String.class).getBody());
}
}
diff --git a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/SpringmvcClient.java b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/SpringmvcClient.java
index 829a0dc..8ecfadf 100644
--- a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/SpringmvcClient.java
+++ b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/SpringmvcClient.java
@@ -68,7 +68,7 @@ public class SpringmvcClient {
TestMgr.check("success", "failed");
LOGGER.error("-------------- test failed -------------");
LOGGER.error("", e);
- System.err.println("-------------- test failed -------------");
+ LOGGER.error("-------------- test failed -------------");
}
TestMgr.summary();
}
diff --git a/handlers/handler-publickey-auth/src/test/java/org/apache/servicecomb/authentication/TestRSAProviderTokenManager.java b/handlers/handler-publickey-auth/src/test/java/org/apache/servicecomb/authentication/TestRSAProviderTokenManager.java
index 9e3efcc..bd9c456 100644
--- a/handlers/handler-publickey-auth/src/test/java/org/apache/servicecomb/authentication/TestRSAProviderTokenManager.java
+++ b/handlers/handler-publickey-auth/src/test/java/org/apache/servicecomb/authentication/TestRSAProviderTokenManager.java
@@ -83,7 +83,7 @@ public class TestRSAProviderTokenManager {
RSAProviderTokenManager.getValidatedToken();
result = CacheBuilder.newBuilder()
- .expireAfterAccess(1000, TimeUnit.MILLISECONDS)
+ .expireAfterAccess(500, TimeUnit.MILLISECONDS)
.build();
}
};
diff --git a/handlers/handler-router/src/main/java/org/apache/servicecomb/router/custom/RouterServerListFilter.java b/handlers/handler-router/src/main/java/org/apache/servicecomb/router/custom/RouterServerListFilter.java
index 1009476..e8b733e 100644
--- a/handlers/handler-router/src/main/java/org/apache/servicecomb/router/custom/RouterServerListFilter.java
+++ b/handlers/handler-router/src/main/java/org/apache/servicecomb/router/custom/RouterServerListFilter.java
@@ -91,7 +91,7 @@ public class RouterServerListFilter implements ServerListFilterExt {
headers.putAll(canaryContext);
}
}
- invocation.getArguments().forEach((k, v) -> headers.put(k, v == null ? null : v.toString()));
+ invocation.getInvocationArguments().forEach((k, v) -> headers.put(k, v == null ? null : v.toString()));
headers.putAll(invocation.getContext());
return headers;
}
diff --git a/integration-tests/it-edge/src/main/java/org/apache/servicecomb/it/edge/filter/CheckRawFormParamFilter.java b/integration-tests/it-edge/src/main/java/org/apache/servicecomb/it/edge/filter/CheckRawFormParamFilter.java
index e5bc80a..e4ff4dc 100644
--- a/integration-tests/it-edge/src/main/java/org/apache/servicecomb/it/edge/filter/CheckRawFormParamFilter.java
+++ b/integration-tests/it-edge/src/main/java/org/apache/servicecomb/it/edge/filter/CheckRawFormParamFilter.java
@@ -43,7 +43,7 @@ public class CheckRawFormParamFilter implements HttpServerFilter {
if (!"paramCodec.stringUrlencodedForm".equals(invocation.getOperationMeta().getSchemaQualifiedName())) {
return null;
}
- final Object swaggerArgument = invocation.getArgument("requestMap");
+ final Object swaggerArgument = invocation.getInvocationArgument("requestMap");
if (!(swaggerArgument instanceof Map)) {
return Response.failResp(new InvocationException(Status.BAD_REQUEST, "param is not map"));
diff --git a/providers/provider-pojo/src/main/java/org/apache/servicecomb/provider/pojo/Invoker.java b/providers/provider-pojo/src/main/java/org/apache/servicecomb/provider/pojo/Invoker.java
index d7f8d9e..2166280 100644
--- a/providers/provider-pojo/src/main/java/org/apache/servicecomb/provider/pojo/Invoker.java
+++ b/providers/provider-pojo/src/main/java/org/apache/servicecomb/provider/pojo/Invoker.java
@@ -167,7 +167,9 @@ public class Invoker implements InvocationHandler {
operationMeta,
null);
invocation.setResponsesMeta(pojoConsumerOperationMeta.getResponsesMeta());
- invocation.setArguments(toArguments(method, args));
+ Map<String, Object> invocationArguments = toArguments(method, args);
+
+ invocation.setInvocationArguments(invocationArguments);
if (CompletableFuture.class.equals(method.getReturnType())) {
return completableFutureInvoke(invocation, consumerOperation);
diff --git a/providers/provider-rest-common/src/main/java/org/apache/servicecomb/provider/rest/common/InvocationToHttpServletRequest.java b/providers/provider-rest-common/src/main/java/org/apache/servicecomb/provider/rest/common/InvocationToHttpServletRequest.java
index c2f86d7..b98f799 100644
--- a/providers/provider-rest-common/src/main/java/org/apache/servicecomb/provider/rest/common/InvocationToHttpServletRequest.java
+++ b/providers/provider-rest-common/src/main/java/org/apache/servicecomb/provider/rest/common/InvocationToHttpServletRequest.java
@@ -36,14 +36,14 @@ import io.vertx.core.net.SocketAddress;
public class InvocationToHttpServletRequest extends AbstractHttpServletRequest {
private RestOperationMeta swaggerOperation;
- private Map<String, Object> args;
-
private SocketAddress sockerAddress;
+ private Invocation invocation;
+
public InvocationToHttpServletRequest(Invocation invocation) {
this.swaggerOperation = invocation.getOperationMeta().getExtData(RestConst.SWAGGER_REST_OPERATION);
- this.args = invocation.getArguments();
this.sockerAddress = (SocketAddress) invocation.getHandlerContext().get(Const.REMOTE_ADDRESS);
+ this.invocation = invocation;
}
@Override
@@ -53,7 +53,7 @@ public class InvocationToHttpServletRequest extends AbstractHttpServletRequest {
return null;
}
- Object value = param.getValue(args);
+ Object value = param.getValue(invocation.getSwaggerArguments());
if (value == null) {
return null;
}
@@ -68,14 +68,14 @@ public class InvocationToHttpServletRequest extends AbstractHttpServletRequest {
return null;
}
- return param.getValueAsStrings(args);
+ return param.getValueAsStrings(invocation.getSwaggerArguments());
}
@Override
public Map<String, String[]> getParameterMap() {
Map<String, String[]> paramMap = new HashMap<>();
for (RestParam param : swaggerOperation.getParamList()) {
- String[] value = param.getValueAsStrings(args);
+ String[] value = param.getValueAsStrings(invocation.getSwaggerArguments());
paramMap.put(param.getParamName(), value);
}
return paramMap;
@@ -104,7 +104,7 @@ public class InvocationToHttpServletRequest extends AbstractHttpServletRequest {
@Override
public String getPathInfo() {
try {
- return this.swaggerOperation.getPathBuilder().createPathString(args);
+ return this.swaggerOperation.getPathBuilder().createPathString(invocation.getSwaggerArguments());
} catch (Exception e) {
throw new ServiceCombException("Failed to get path info.", e);
}
diff --git a/providers/provider-rest-common/src/test/java/org/apache/servicecomb/provider/rest/common/TestInvocationToHttpServletRequest.java b/providers/provider-rest-common/src/test/java/org/apache/servicecomb/provider/rest/common/TestInvocationToHttpServletRequest.java
index 87daa70..13619f4 100644
--- a/providers/provider-rest-common/src/test/java/org/apache/servicecomb/provider/rest/common/TestInvocationToHttpServletRequest.java
+++ b/providers/provider-rest-common/src/test/java/org/apache/servicecomb/provider/rest/common/TestInvocationToHttpServletRequest.java
@@ -73,8 +73,6 @@ public class TestInvocationToHttpServletRequest {
result = swaggerOperation;
invocation.getHandlerContext();
result = handlerContext;
- invocation.getArguments();
- result = args;
}
};
@@ -309,8 +307,6 @@ public class TestInvocationToHttpServletRequest {
result = operationMeta;
operationMeta.getExtData(RestConst.SWAGGER_REST_OPERATION);
result = swaggerOperation;
- invocation.getArguments();
- result = args;
invocation.getHandlerContext();
result = handlerContext;
}
diff --git a/providers/provider-springmvc/src/main/java/org/apache/servicecomb/provider/springmvc/reference/CseClientHttpRequest.java b/providers/provider-springmvc/src/main/java/org/apache/servicecomb/provider/springmvc/reference/CseClientHttpRequest.java
index f0431ae..14b4bfe 100644
--- a/providers/provider-springmvc/src/main/java/org/apache/servicecomb/provider/springmvc/reference/CseClientHttpRequest.java
+++ b/providers/provider-springmvc/src/main/java/org/apache/servicecomb/provider/springmvc/reference/CseClientHttpRequest.java
@@ -173,10 +173,10 @@ public class CseClientHttpRequest implements ClientHttpRequest {
QueryStringDecoder queryStringDecoder = new QueryStringDecoder(uri.getRawSchemeSpecificPart());
queryParams = queryStringDecoder.parameters();
- Map<String, Object> arguments = this.collectArguments();
+ Map<String, Object> swaggerArguments = this.collectArguments();
// 异常流程,直接抛异常出去
- return this.invoke(arguments);
+ return this.invoke(swaggerArguments);
}
protected RequestMeta createRequestMeta(String httpMethod, URI uri) {
@@ -207,11 +207,11 @@ public class CseClientHttpRequest implements ClientHttpRequest {
return uri.getRawPath();
}
- protected Invocation prepareInvocation(Map<String, Object> arguments) {
+ protected Invocation prepareInvocation(Map<String, Object> swaggerArguments) {
Invocation invocation =
InvocationFactory.forConsumer(requestMeta.getReferenceConfig(),
requestMeta.getOperationMeta(),
- arguments);
+ swaggerArguments);
invocation.setWeakInvoke(true);
invocation.getHandlerContext().put(RestConst.REST_CLIENT_REQUEST_PATH,
@@ -234,8 +234,8 @@ public class CseClientHttpRequest implements ClientHttpRequest {
return invocation;
}
- private CseClientHttpResponse invoke(Map<String, Object> arguments) {
- Invocation invocation = prepareInvocation(arguments);
+ private CseClientHttpResponse invoke(Map<String, Object> swaggerArguments) {
+ Invocation invocation = prepareInvocation(swaggerArguments);
Response response = doInvoke(invocation);
if (response.isSuccessed()) {
diff --git a/providers/provider-springmvc/src/main/java/org/apache/servicecomb/provider/springmvc/reference/async/CseAsyncClientHttpRequest.java b/providers/provider-springmvc/src/main/java/org/apache/servicecomb/provider/springmvc/reference/async/CseAsyncClientHttpRequest.java
index fc8250b..4082ae4 100644
--- a/providers/provider-springmvc/src/main/java/org/apache/servicecomb/provider/springmvc/reference/async/CseAsyncClientHttpRequest.java
+++ b/providers/provider-springmvc/src/main/java/org/apache/servicecomb/provider/springmvc/reference/async/CseAsyncClientHttpRequest.java
@@ -53,8 +53,8 @@ public class CseAsyncClientHttpRequest extends CseClientHttpRequest implements
return null;
}
- private ListenableFuture<ClientHttpResponse> invoke(Map<String, Object> args) {
- Invocation invocation = prepareInvocation(args);
+ private ListenableFuture<ClientHttpResponse> invoke(Map<String, Object> swaggerArguments) {
+ Invocation invocation = prepareInvocation(swaggerArguments);
invocation.getHandlerContext().put(RestConst.CONSUMER_HEADER, this.getHeaders());
CompletableFuture<ClientHttpResponse> clientHttpResponseCompletableFuture = doAsyncInvoke(invocation);
return new CompletableToListenableFutureAdapter<ClientHttpResponse>(clientHttpResponseCompletableFuture);
@@ -79,7 +79,7 @@ public class CseAsyncClientHttpRequest extends CseClientHttpRequest implements
this.setRequestMeta(createRequestMeta(this.getMethod().name(), this.getURI()));
QueryStringDecoder queryStringDecoder = new QueryStringDecoder(this.getURI().getRawSchemeSpecificPart());
this.setQueryParams(queryStringDecoder.parameters());
- Map<String, Object> args = this.collectArguments();
- return this.invoke(args);
+ Map<String, Object> swaggerArguments = this.collectArguments();
+ return this.invoke(swaggerArguments);
}
}
diff --git a/providers/provider-springmvc/src/test/java/org/apache/servicecomb/provider/springmvc/reference/TestCseClientHttpRequest.java b/providers/provider-springmvc/src/test/java/org/apache/servicecomb/provider/springmvc/reference/TestCseClientHttpRequest.java
index a09e6d1..a0f932d 100644
--- a/providers/provider-springmvc/src/test/java/org/apache/servicecomb/provider/springmvc/reference/TestCseClientHttpRequest.java
+++ b/providers/provider-springmvc/src/test/java/org/apache/servicecomb/provider/springmvc/reference/TestCseClientHttpRequest.java
@@ -83,7 +83,7 @@ public class TestCseClientHttpRequest {
client.execute();
- Assert.assertArrayEquals(body, (byte[] )holder.value.getArguments().get("input"));
- Assert.assertEquals("123", holder.value.getArguments().get("token"));
+ Assert.assertArrayEquals(body, (byte[] )holder.value.getInvocationArguments().get("input"));
+ Assert.assertEquals("123", holder.value.getInvocationArguments().get("token"));
}
}
diff --git a/providers/provider-springmvc/src/test/java/org/apache/servicecomb/provider/springmvc/reference/async/CseAsyncClientHttpRequestTest.java b/providers/provider-springmvc/src/test/java/org/apache/servicecomb/provider/springmvc/reference/async/CseAsyncClientHttpRequestTest.java
index 05e3ad3..9ccbf9c 100644
--- a/providers/provider-springmvc/src/test/java/org/apache/servicecomb/provider/springmvc/reference/async/CseAsyncClientHttpRequestTest.java
+++ b/providers/provider-springmvc/src/test/java/org/apache/servicecomb/provider/springmvc/reference/async/CseAsyncClientHttpRequestTest.java
@@ -82,7 +82,7 @@ public class CseAsyncClientHttpRequestTest {
byte[] body = "abc".getBytes();
client.setRequestBody(body);
client.executeAsync();
- Assert.assertArrayEquals(body, ( byte[])holder.value.getArguments().get("input"));
+ Assert.assertArrayEquals(body, ( byte[])holder.value.getInvocationArguments().get("input"));
}
@Test
diff --git a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/engine/SwaggerProducerOperation.java b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/engine/SwaggerProducerOperation.java
index 82c49a6..31c1bdb 100644
--- a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/engine/SwaggerProducerOperation.java
+++ b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/engine/SwaggerProducerOperation.java
@@ -17,14 +17,11 @@
package org.apache.servicecomb.swagger.engine;
import java.lang.reflect.Method;
-import java.lang.reflect.Parameter;
import java.lang.reflect.Type;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
-import org.apache.servicecomb.swagger.generator.SwaggerGeneratorUtils;
import org.apache.servicecomb.swagger.generator.core.model.SwaggerOperation;
import org.apache.servicecomb.swagger.invocation.arguments.producer.ProducerArgumentsMapper;
import org.apache.servicecomb.swagger.invocation.extension.ProducerInvokeExtension;
@@ -32,8 +29,6 @@ import org.apache.servicecomb.swagger.invocation.response.producer.ProducerRespo
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import io.swagger.models.parameters.BodyParameter;
-
public class SwaggerProducerOperation {
private static final Logger LOGGER = LoggerFactory.getLogger(SwaggerProducerOperation.class);
@@ -58,8 +53,6 @@ public class SwaggerProducerOperation {
private List<ProducerInvokeExtension> producerInvokeExtenstionList =
SPIServiceUtils.getSortedService(ProducerInvokeExtension.class);
- private Map<String, Type> methodParameterTypesBySwaggerName = new HashMap<>();
-
public String getOperationId() {
return swaggerOperation.getOperationId();
}
@@ -86,7 +79,6 @@ public class SwaggerProducerOperation {
public void setProducerMethod(Method producerMethod) {
this.producerMethod = producerMethod;
- this.buildMethodSwaggerParameterName();
}
public SwaggerOperation getSwaggerOperation() {
@@ -126,35 +118,8 @@ public class SwaggerProducerOperation {
return this.producerInvokeExtenstionList;
}
- public boolean isPojoWrappedArguments(String name) {
- List<io.swagger.models.parameters.Parameter> swaggerParameters = this.swaggerOperation.getOperation()
- .getParameters();
- io.swagger.models.parameters.Parameter swaggerParameter = findParameterByName(swaggerParameters, name);
-
- if (swaggerParameter instanceof BodyParameter) {
- Type methodParameter = findMethodParameterTypesBySwaggerName(name);
- if (methodParameter == null) {
- return true;
- }
- }
- return false;
- }
-
public Type getSwaggerParameterType(String name) {
- List<io.swagger.models.parameters.Parameter> swaggerParameters = this.swaggerOperation.getOperation()
- .getParameters();
- io.swagger.models.parameters.Parameter swaggerParameter = findParameterByName(swaggerParameters, name);
-
- Type methodParameterType = findMethodParameterTypesBySwaggerName(name);
- if (methodParameterType == null) {
- if (swaggerParameter instanceof BodyParameter) {
- return Object.class;
- }
- } else {
- return methodParameterType;
- }
-
- throw new IllegalStateException("not implemented now, name=" + name);
+ return this.swaggerParameterTypes.get(name);
}
private static io.swagger.models.parameters.Parameter findParameterByName(
@@ -166,20 +131,4 @@ public class SwaggerProducerOperation {
}
throw new IllegalStateException("not found parameter name in swagger, name=" + name);
}
-
- private Type findMethodParameterTypesBySwaggerName(String name) {
- return this.methodParameterTypesBySwaggerName.get(name);
- }
-
- public Map<String, Type> getMethodParameterTypesBySwaggerName() {
- return this.methodParameterTypesBySwaggerName;
- }
-
- private void buildMethodSwaggerParameterName() {
- Parameter[] methodParameters = this.producerMethod.getParameters();
- for (Parameter parameter : methodParameters) {
- String name = SwaggerGeneratorUtils.collectParameterName(parameter);
- this.methodParameterTypesBySwaggerName.put(name, parameter.getParameterizedType());
- }
- }
}
diff --git a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/AbstractArgumentsMapperCreator.java b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/AbstractArgumentsMapperCreator.java
index 240be62..0ac0365 100644
--- a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/AbstractArgumentsMapperCreator.java
+++ b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/AbstractArgumentsMapperCreator.java
@@ -20,8 +20,10 @@ import static org.apache.servicecomb.swagger.generator.SwaggerGeneratorUtils.col
import java.lang.reflect.Method;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.apache.servicecomb.swagger.SwaggerUtils;
import org.apache.servicecomb.swagger.generator.core.model.SwaggerOperation;
@@ -110,6 +112,8 @@ public abstract class AbstractArgumentsMapperCreator {
protected Map<String, Property> swaggerBodyProperties;
+ protected Set<String> processedSwaggerParamters;
+
public AbstractArgumentsMapperCreator(SerializationConfig serializationConfig,
Map<Class<?>, ContextArgumentMapperFactory> contextFactorys,
Method providerMethod, SwaggerOperation swaggerOperation) {
@@ -122,6 +126,7 @@ public abstract class AbstractArgumentsMapperCreator {
bodyParameter = findSwaggerBodyParameter();
swaggerBodyProperties = SwaggerUtils.getBodyProperties(swaggerOperation.getSwagger(), bodyParameter);
+ processedSwaggerParamters = new HashSet<>();
}
private BodyParameter findSwaggerBodyParameter() {
@@ -157,10 +162,12 @@ public abstract class AbstractArgumentsMapperCreator {
String parameterName = collectParameterName(providerParameter);
if (processKnownParameter(providerParamIdx, providerParameter, parameterName)) {
+ processedSwaggerParamters.add(parameterName);
continue;
}
if (processSwaggerBodyField(providerParamIdx, providerParameter, parameterName)) {
+ processedSwaggerParamters.add(parameterName);
continue;
}
@@ -172,6 +179,12 @@ public abstract class AbstractArgumentsMapperCreator {
processUnknownParameter(parameterName);
}
+
+ for (Parameter parameter : swaggerParameters) {
+ if (!processedSwaggerParamters.contains(parameter.getName())) {
+ processPendingSwaggerParameter(parameter);
+ }
+ }
}
/**
@@ -249,4 +262,6 @@ public abstract class AbstractArgumentsMapperCreator {
protected abstract void processBeanParameter(int providerParamIdx, java.lang.reflect.Parameter providerParameter);
protected abstract void processUnknownParameter(String parameterName);
+
+ protected abstract void processPendingSwaggerParameter(Parameter parameter);
}
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 d6c60b8..24bea6a 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
@@ -36,6 +36,8 @@ import com.fasterxml.jackson.databind.SerializationConfig;
import com.fasterxml.jackson.databind.introspect.BeanPropertyDefinition;
import com.fasterxml.jackson.databind.type.TypeFactory;
+import io.swagger.models.parameters.Parameter;
+
public class ConsumerArgumentsMapperCreator extends AbstractArgumentsMapperCreator {
private static final Logger LOGGER = LoggerFactory.getLogger(ConsumerArgumentsMapperCreator.class);
@@ -81,6 +83,11 @@ public class ConsumerArgumentsMapperCreator extends AbstractArgumentsMapperCreat
}
@Override
+ protected void processPendingSwaggerParameter(Parameter parameter) {
+
+ }
+
+ @Override
protected ArgumentMapper createKnownParameterMapper(int consumerParamIdx, Integer swaggerIdx) {
return new ConsumerArgumentSame(this.providerMethod.getParameters()[consumerParamIdx].getName(),
this.swaggerParameters.get(swaggerIdx).getName());
@@ -116,6 +123,7 @@ public class ConsumerArgumentsMapperCreator extends AbstractArgumentsMapperCreat
}
mapper.addField(parameterName, getter);
+ processedSwaggerParamters.add(parameterName);
}
mappers.add(mapper);
}
diff --git a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/producer/ProducerArgumentsMapperCreator.java b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/producer/ProducerArgumentsMapperCreator.java
index e7ca773..3b4d33f 100644
--- a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/producer/ProducerArgumentsMapperCreator.java
+++ b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/producer/ProducerArgumentsMapperCreator.java
@@ -68,6 +68,11 @@ public class ProducerArgumentsMapperCreator extends AbstractArgumentsMapperCreat
}
@Override
+ protected void processPendingSwaggerParameter(io.swagger.models.parameters.Parameter parameter) {
+ swaggerParameterTypes.put(parameter.getName(), Object.class);
+ }
+
+ @Override
protected ArgumentMapper createKnownParameterMapper(int providerParamIdx, Integer swaggerIdx) {
String swaggerArgumentName = swaggerParameters.get(swaggerIdx).getName();
swaggerParameterTypes
@@ -111,6 +116,7 @@ public class ProducerArgumentsMapperCreator extends AbstractArgumentsMapperCreat
swaggerParameterTypes.put(parameterName, propertyDefinition.getPrimaryType());
mapper.addField(parameterName, setter);
+ processedSwaggerParamters.add(parameterName);
}
mappers.add(mapper);
}
diff --git a/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/engine/TestSwaggerProducerOperation.java b/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/engine/TestSwaggerProducerOperation.java
index a2473d2..7852436 100644
--- a/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/engine/TestSwaggerProducerOperation.java
+++ b/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/engine/TestSwaggerProducerOperation.java
@@ -33,7 +33,7 @@ public class TestSwaggerProducerOperation {
SwaggerProducerOperation swaggerProducerOperation = producer.findOperation("testBytes");
Assert.assertEquals(1, swaggerProducerOperation.getSwaggerOperation().getOperation().getParameters().size());
- Assert.assertEquals(byte[].class, swaggerProducerOperation.getSwaggerParameterType("bytes"));
+ Assert.assertEquals(Object.class, swaggerProducerOperation.getSwaggerParameterType("bytes"));
swaggerProducerOperation = producer.findOperation("testSimple");
Assert.assertEquals(1, swaggerProducerOperation.getSwaggerOperation().getOperation().getParameters().size());
diff --git a/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayCodec.java b/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayCodec.java
index 9db0396..014f2b7 100644
--- a/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayCodec.java
+++ b/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayCodec.java
@@ -55,37 +55,10 @@ public final class HighwayCodec {
header.setContext(invocation.getContext());
HighwayOutputStream os = new HighwayOutputStream(msgId);
- os.write(header, operationProtobuf.getRequestRootSerializer(),
- invocationArgumentsToSwaggerArguments(invocation, operationProtobuf.getOperationMeta(),
- invocation.getArguments()));
+ os.write(header, operationProtobuf.getRequestRootSerializer(), invocation.getSwaggerArguments());
return os;
}
- private static Map<String, Object> invocationArgumentsToSwaggerArguments(Invocation invocation,
- OperationMeta operationMeta,
- Map<String, Object> invocationArguments) {
- if (operationMeta.getSwaggerConsumerOperation() != null && !invocation.isEdge()
- && !invocation.isWeakInvoke()) {
- return operationMeta.getSwaggerConsumerOperation().getArgumentsMapper()
- .invocationArgumentToSwaggerArguments(invocation,
- invocation.getArguments());
- } else {
- return invocationArguments;
- }
- }
-
- private static Map<String, Object> swaggerArgumentsToInvocationArguments(Invocation invocation,
- OperationMeta operationMeta,
- Map<String, Object> swaggerArguments) {
- if (operationMeta.getSwaggerProducerOperation() != null && !invocation.isEdge()) {
- return operationMeta.getSwaggerProducerOperation().getArgumentsMapper()
- .swaggerArgumentToInvocationArguments(invocation,
- addPrimitiveTypeDefaultValues(invocation, operationMeta, swaggerArguments));
- } else {
- return swaggerArguments;
- }
- }
-
@SuppressWarnings({"rawtypes", "unchecked"})
private static Map<String, Object> addPrimitiveTypeDefaultValues(Invocation invocation, OperationMeta operationMeta,
Map<String, Object> swaggerArguments) {
@@ -112,9 +85,9 @@ public final class HighwayCodec {
public static void decodeRequest(Invocation invocation, RequestHeader header, OperationProtobuf operationProtobuf,
Buffer bodyBuffer) throws Exception {
RequestRootDeserializer<Object> requestDesirializer = operationProtobuf.getRequestRootDeserializer();
- Map<String, Object> args = requestDesirializer.deserialize(bodyBuffer.getBytes());
- invocation
- .setArguments(swaggerArgumentsToInvocationArguments(invocation, operationProtobuf.getOperationMeta(), args));
+ Map<String, Object> swaggerArguments = requestDesirializer.deserialize(bodyBuffer.getBytes());
+ addPrimitiveTypeDefaultValues(invocation, operationProtobuf.getOperationMeta(), swaggerArguments);
+ invocation.setSwaggerArguments(swaggerArguments);
invocation.mergeContext(header.getContext());
}
diff --git a/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayCodec.java b/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayCodec.java
index 0259dde..7635139 100644
--- a/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayCodec.java
+++ b/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayCodec.java
@@ -200,7 +200,7 @@ public class TestHighwayCodec {
try {
commonMock();
Map<String, Object> args = new HashMap<>(0);
- Mockito.when(invocation.getArguments()).thenReturn(args);
+ Mockito.when(invocation.getInvocationArguments()).thenReturn(args);
Mockito.when(requestSerializer.serialize(args)).thenReturn(new byte[0]);
TcpOutputStream os = HighwayCodec.encodeRequest(0, invocation, operationProtobuf);
Assert.assertNotNull(os);
diff --git a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/http/RestClientInvocation.java b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/http/RestClientInvocation.java
index 91db649..1b62b4e 100644
--- a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/http/RestClientInvocation.java
+++ b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/http/RestClientInvocation.java
@@ -298,7 +298,7 @@ public class RestClientInvocation {
String path = (String) invocation.getHandlerContext().get(RestConst.REST_CLIENT_REQUEST_PATH);
if (path == null) {
- path = swaggerRestOperation.getPathBuilder().createRequestPath(invocation.getArguments());
+ path = swaggerRestOperation.getPathBuilder().createRequestPath(invocation.getSwaggerArguments());
}
if (StringUtils.isEmpty(urlPrefix) || path.startsWith(urlPrefix)) {