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 2023/07/29 01:06:52 UTC
[servicecomb-java-chassis] branch master updated: [#3865] show interface parameter info when throw InvocationException (#3877)
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 62d62821b [#3865] show interface parameter info when throw InvocationException (#3877)
62d62821b is described below
commit 62d62821bccf111b8b1605949303d9bc6b5908c1
Author: Cheng YouLing <97...@users.noreply.github.com>
AuthorDate: Sat Jul 29 09:06:47 2023 +0800
[#3865] show interface parameter info when throw InvocationException (#3877)
---
.../java/org/apache/servicecomb/common/rest/codec/RestCodec.java | 9 +++------
.../org/apache/servicecomb/common/rest/codec/TestRestCodec.java | 2 ++
.../demo/jaxrs/client/MultiErrorCodeServiceClient.java | 5 ++---
.../demo/jaxrs/client/validation/ValidationServiceClient.java | 3 ++-
4 files changed, 9 insertions(+), 10 deletions(-)
diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/RestCodec.java b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/RestCodec.java
index 2e784ec83..77d89b1e3 100644
--- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/RestCodec.java
+++ b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/RestCodec.java
@@ -57,16 +57,13 @@ public final class RestCodec {
for (RestParam param : paramList) {
try {
paramValues.put(param.getParamName(), param.getParamProcessor().getValue(request));
- } catch (InvocationException e) {
- throw e;
} catch (Exception e) {
- // Avoid information leak of user input, and add option for debug use.
String message = String
- .format("Parameter is not valid for operation [%s]. Parameter is [%s]. Processor is [%s].",
+ .format("Parameter is not valid for operation [%s]. Parameter is [%s]. Processor is [%s]. Message is [%s].",
restOperation.getOperationMeta().getMicroserviceQualifiedName(),
param.getParamName(),
- param.getParamProcessor().getProcessorType());
- LOG.warn(message, e);
+ param.getParamProcessor().getProcessorType(),
+ e.getMessage());
throw new InvocationException(Status.BAD_REQUEST, message);
}
}
diff --git a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/TestRestCodec.java b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/TestRestCodec.java
index 0fe60d613..6f2987020 100644
--- a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/TestRestCodec.java
+++ b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/TestRestCodec.java
@@ -161,6 +161,8 @@ public class TestRestCodec {
success = true;
} catch (InvocationException e) {
Assertions.assertEquals(e.getStatusCode(), Status.BAD_REQUEST.getStatusCode());
+ Assertions.assertTrue(((CommonExceptionData) e.getErrorData()).getMessage()
+ .contains("Parameter is not valid for operation"));
}
Assertions.assertFalse(success);
}
diff --git a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/MultiErrorCodeServiceClient.java b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/MultiErrorCodeServiceClient.java
index 7ce742f2e..2d5eab102 100644
--- a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/MultiErrorCodeServiceClient.java
+++ b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/MultiErrorCodeServiceClient.java
@@ -102,9 +102,8 @@ public class MultiErrorCodeServiceClient implements CategorizedTestCase {
.postForEntity(serverDirectURL + "/MultiErrorCodeService/errorCode", entity, MultiResponse200.class);
} catch (HttpClientErrorException e) {
TestMgr.check(e.getStatusCode().value(), 400);
- TestMgr.check(e.getMessage(),
- "400 Bad Request: \"{\"message\":\"Parameter is not valid for operation [jaxrs.MultiErrorCodeService.errorCode]." +
- " Parameter is [request]. Processor is [body].\"}\"");
+ TestMgr.check(e.getMessage().contains("Parameter is not valid for operation "
+ + "[jaxrs.MultiErrorCodeService.errorCode]. Parameter is [request]. Processor is [body]."), true);
}
entity = new HttpEntity<>(null, headers);
diff --git a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/validation/ValidationServiceClient.java b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/validation/ValidationServiceClient.java
index 0f985ee5e..d36bc0cfa 100644
--- a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/validation/ValidationServiceClient.java
+++ b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/validation/ValidationServiceClient.java
@@ -26,6 +26,7 @@ import org.apache.servicecomb.demo.jaxrs.server.validation.ValidationModel;
import org.apache.servicecomb.demo.validator.Teacher;
import org.apache.servicecomb.foundation.test.scaffolding.config.ArchaiusUtils;
import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
+import org.apache.servicecomb.swagger.invocation.exception.CommonExceptionData;
import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
import org.springframework.web.client.RestTemplate;
@@ -89,7 +90,7 @@ public class ValidationServiceClient {
} catch (InvocationException e) {
TestMgr.check(400, e.getStatus().getStatusCode());
TestMgr.check(Status.BAD_REQUEST, e.getReasonPhrase());
- TestMgr.check(e.getErrorData().toString().contains("Parameter name is required."), true);
+ TestMgr.check(((CommonExceptionData) e.getErrorData()).getMessage().contains("Parameter is not valid"), true);
}
Teacher teacher = new Teacher();