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());
   }
 }

Reply via email to