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/incubator-servicecomb-java-chassis.git
commit a0131f061b77e64556da2bab91e4de99330c25c8 Author: liubao <[email protected]> AuthorDate: Thu Aug 16 09:30:31 2018 +0800 [SCB-847]fix test errors and deal with error code override --- .../servicecomb/demo/edge/consumer/Consumer.java | 5 ++-- .../servicecomb/demo/jaxrs/client/JaxrsClient.java | 27 ++++++++++++++-------- .../resources/microservices/jaxrs/compute.yaml | 1 + .../demo/springmvc/client/SpringmvcClient.java | 3 +++ .../swagger/generator/core/OperationGenerator.java | 3 --- .../swagger/invocation/response/ResponsesMeta.java | 5 ++-- .../invocation/response/TestResponsesMeta.java | 11 +++++---- 7 files changed, 35 insertions(+), 20 deletions(-) diff --git a/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/Consumer.java b/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/Consumer.java index c5c22ea..95ea17a 100644 --- a/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/Consumer.java +++ b/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/Consumer.java @@ -161,6 +161,7 @@ public class Consumer { Assert.isNull(response.getField().getField(), "must be null"); } + @SuppressWarnings({"unckecked", "rawtypes"}) protected void testErrorCode() { String url = edgePrefix + "/v2/error/add"; @@ -171,14 +172,14 @@ public class Consumer { Assert.isTrue(raw.get("message").equals("Cse Internal Server Error"), "x99"); try { - raw = template.getForObject(url + "?x=88&y=3", Map.class); + template.getForObject(url + "?x=88&y=3", Map.class); Assert.isTrue(false, "x88"); } catch (HttpClientErrorException e) { Assert.isTrue(e.getRawStatusCode() == 403, "x88"); Assert.isTrue(e.getResponseBodyAsString().equals("{\"id\":12,\"message\":\"not allowed id.\"}"), "x88"); } try { - raw = template.getForObject(url + "?x=77&y=3", Map.class); + template.getForObject(url + "?x=77&y=3", Map.class); Assert.isTrue(false, "x77"); } catch (HttpServerErrorException e) { Assert.isTrue(e.getRawStatusCode() == 500, "x77"); diff --git a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/JaxrsClient.java b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/JaxrsClient.java index f285d5f..ac13405 100644 --- a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/JaxrsClient.java +++ b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/JaxrsClient.java @@ -179,6 +179,9 @@ public class JaxrsClient { result = template.getForObject(cseUrlPrefix + "/query3?a=30&b=2", String.class); TestMgr.check("Hello 302", result); + result = template.getForObject(cseUrlPrefix + "/query3?a=30", String.class); + TestMgr.check("Hello 30null", result); + //input values headers = new HttpHeaders(); headers.setContentType(org.springframework.http.MediaType.APPLICATION_FORM_URLENCODED); @@ -278,6 +281,7 @@ public class JaxrsClient { template.postForObject(cseUrlPrefix + "/compute/testrawjson", jsonPerson, String.class)); } + @SuppressWarnings({"unckecked", "rawtypes"}) private static void testValidatorAddFail(RestTemplate template, String cseUrlPrefix) { Map<String, String> params = new HashMap<>(); params.put("a", "5"); @@ -292,10 +296,11 @@ public class JaxrsClient { // Message dependends on locale, so just check the short part. // 'must be greater than or equal to 20', propertyPath=add.arg1, rootBeanClass=class org.apache.servicecomb.demo.jaxrs.server.Validator, messageTemplate='{javax.validation.constraints.Min.message}'}]] // ignored + Map data = (Map)e.getErrorData(); TestMgr.check( - "CommonExceptionData [message=[ConstraintViolationImpl{interpolatedMessage=", - e.getErrorData().toString().substring(0, - "CommonExceptionData [message=[ConstraintViolationImpl{interpolatedMessage=".length())); + "[ConstraintViolationImpl{interpolatedMessage=", + data.get("message").toString().substring(0, + "[ConstraintViolationImpl{interpolatedMessage=".length())); } TestMgr.check(true, isExcep); @@ -309,6 +314,7 @@ public class JaxrsClient { TestMgr.check(25, result); } + @SuppressWarnings({"unckecked", "rawtypes"}) private static void testValidatorSayHiFail(RestTemplate template, String cseUrlPrefix) { boolean isExcep = false; try { @@ -318,10 +324,11 @@ public class JaxrsClient { TestMgr.check(400, e.getStatus().getStatusCode()); TestMgr.check(Status.BAD_REQUEST, e.getReasonPhrase()); // Message dependends on locale, so just check the short part. + Map data = (Map)e.getErrorData(); TestMgr.check( - "CommonExceptionData [message=[ConstraintViolationImpl{interpolatedMessage=", - e.getErrorData().toString().substring(0, - "CommonExceptionData [message=[ConstraintViolationImpl{interpolatedMessage=".length())); + "[ConstraintViolationImpl{interpolatedMessage=", + data.get("message").toString().substring(0, + "[ConstraintViolationImpl{interpolatedMessage=".length())); } TestMgr.check(true, isExcep); } @@ -333,6 +340,7 @@ public class JaxrsClient { TestMgr.check("world sayhi", responseEntity.getBody()); } + @SuppressWarnings({"unckecked", "rawtypes"}) private static void testValidatorExchangeFail(RestTemplate template, String cseUrlPrefix) { HttpHeaders headers = new HttpHeaders(); headers.add("Accept", MediaType.APPLICATION_JSON); @@ -351,10 +359,11 @@ public class JaxrsClient { TestMgr.check(400, e.getStatus().getStatusCode()); TestMgr.check(Status.BAD_REQUEST, e.getReasonPhrase()); // Message dependends on locale, so just check the short part. + Map data = (Map)e.getErrorData(); TestMgr.check( - "CommonExceptionData [message=[ConstraintViolationImpl{interpolatedMessage=", - e.getErrorData().toString().substring(0, - "CommonExceptionData [message=[ConstraintViolationImpl{interpolatedMessage=".length())); + "[ConstraintViolationImpl{interpolatedMessage", + data.get("message").toString().substring(0, + "[ConstraintViolationImpl{interpolatedMessage".length())); } TestMgr.check(true, isExcep); } diff --git a/demo/demo-schema/src/main/resources/microservices/jaxrs/compute.yaml b/demo/demo-schema/src/main/resources/microservices/jaxrs/compute.yaml index fcca77c..66eb476 100644 --- a/demo/demo-schema/src/main/resources/microservices/jaxrs/compute.yaml +++ b/demo/demo-schema/src/main/resources/microservices/jaxrs/compute.yaml @@ -197,3 +197,4 @@ definitions: properties: name: type: string + x-java-class: "org.apache.servicecomb.demo.compute.Person" 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 a555fc9..d9bd62c 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 @@ -325,6 +325,9 @@ public class SpringmvcClient { result = template.getForObject(cseUrlPrefix + "/query3?a=30&b=2", String.class); TestMgr.check("Hello 302", result); + result = template.getForObject(cseUrlPrefix + "/query3?a=30", String.class); + TestMgr.check("Hello 30null", result); + //input values headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); diff --git a/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/core/OperationGenerator.java b/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/core/OperationGenerator.java index 8698585..f8251f9 100644 --- a/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/core/OperationGenerator.java +++ b/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/core/OperationGenerator.java @@ -328,9 +328,6 @@ public class OperationGenerator { case "number": defaultValue = "0.0"; break; - case "string": - defaultValue = ""; - break; case "boolean": defaultValue = "false"; break; diff --git a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/ResponsesMeta.java b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/ResponsesMeta.java index 856e3f0..5c53375 100644 --- a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/ResponsesMeta.java +++ b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/ResponsesMeta.java @@ -64,8 +64,9 @@ public class ResponsesMeta { } Integer statusCode = Integer.parseInt(entry.getKey()); - ResponseMeta responseMeta = responseMap.computeIfAbsent(statusCode, k -> new ResponseMeta()); - responseMeta.init(swaggerToClassGenerator, entry.getValue()); + ResponseMeta codeMeta = new ResponseMeta(); + codeMeta.init(swaggerToClassGenerator, entry.getValue()); + ResponseMeta responseMeta = responseMap.put(statusCode, codeMeta); } if (defaultResponse == null) { diff --git a/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/response/TestResponsesMeta.java b/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/response/TestResponsesMeta.java index 6b03522..6955040 100644 --- a/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/response/TestResponsesMeta.java +++ b/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/response/TestResponsesMeta.java @@ -19,7 +19,6 @@ package org.apache.servicecomb.swagger.invocation.response; import org.apache.servicecomb.swagger.converter.SwaggerToClassGenerator; import org.apache.servicecomb.swagger.generator.core.SwaggerGenerator; import org.apache.servicecomb.swagger.generator.core.unittest.UnitTestSwaggerUtils; -import org.apache.servicecomb.swagger.invocation.exception.CommonExceptionData; import org.junit.Assert; import org.junit.Test; @@ -55,10 +54,13 @@ public class TestResponsesMeta { meta.init(swaggerToClassGenerator, operation, int.class); ResponseMeta resp = meta.findResponseMeta(200); - Assert.assertEquals(int.class, resp.getJavaType().getRawClass()); + // Response is based on swagger type and is Integer type. + Assert.assertEquals(Integer.class, resp.getJavaType().getRawClass()); resp = meta.findResponseMeta(201); - Assert.assertEquals(int.class, resp.getJavaType().getRawClass()); + // Response is based on swagger type and is Integer type. For this test case there is one problem need to discuss. + // If SUCCESS family, do we should use OK response type? + Assert.assertEquals(Integer.class, resp.getJavaType().getRawClass()); resp = meta.findResponseMeta(400); Assert.assertEquals(String.class, resp.getJavaType().getRawClass()); @@ -68,6 +70,7 @@ public class TestResponsesMeta { Assert.assertEquals(Integer.class, resp.getHeaders().get("h1").getRawClass()); resp = meta.findResponseMeta(500); - Assert.assertEquals(CommonExceptionData.class, resp.getJavaType().getRawClass()); + // changed to Object for new version to keep user defined error data not lose and can be parsed. + Assert.assertEquals(Object.class, resp.getJavaType().getRawClass()); } }
