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 2018/08/14 06:13:19 UTC

[incubator-servicecomb-java-chassis] branch master updated (e1671b4 -> f72bf03)

This is an automated email from the ASF dual-hosted git repository.

liubao pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git.


    from e1671b4  [SCB-828]test missed
     new 8b3180c  [SCB-736] generate default value to swagger for primitive type when there is no defaultValue annotation
     new 5a270d1  [SCB-736] generate default value to swagger for primitive type: Review comments fix
     new d929f65  [SCB-736] generate default value to swagger for primitive type: Review comments fix
     new c4c2f4f  [SCB-736] generate default value to swagger for primitive type:test case correction
     new f72bf03  [SCB-736] generate default value to swagger for primitive type:test case correction

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../servicecomb/demo/jaxrs/client/JaxrsClient.java | 27 +++++++++++++++++--
 .../demo/jaxrs/server/JaxRSDefaultValues.java      | 30 ++++++++++++++++++++++
 .../demo/springmvc/client/SpringmvcClient.java     | 20 +++++++++++++--
 .../springmvc/server/ProducerTestsAfterBootup.java |  4 +--
 .../springmvc/server/SpringMvcDefaultValues.java   | 28 ++++++++++++++++++--
 .../swagger/generator/core/OperationGenerator.java | 26 +++++++++++++++++--
 .../annotation/CookieValueAnnotationProcessor.java | 10 ++++++++
 .../PathVariableAnnotationProcessor.java           | 10 ++++++++
 .../RequestAttributeAnnotationProcessor.java       | 10 ++++++++
 .../RequestParamAnnotationProcessor.java           | 10 ++++++++
 .../annotation/RequestPartAnnotationProcessor.java | 10 ++++++++
 .../test/resources/schemas/mixupAnnotations.yaml   | 24 ++++++++---------
 12 files changed, 187 insertions(+), 22 deletions(-)


[incubator-servicecomb-java-chassis] 02/05: [SCB-736] generate default value to swagger for primitive type: Review comments fix

Posted by li...@apache.org.
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 5a270d1d7001c6c0e435923509ad98b7bf5cdb46
Author: maheshrajus <ma...@huawei.com>
AuthorDate: Fri Aug 10 11:33:23 2018 +0530

    [SCB-736] generate default value to swagger for primitive type: Review comments fix
---
 .../swagger/generator/core/OperationGenerator.java |  2 +-
 .../annotation/CookieValueAnnotationProcessor.java | 10 +++++++++
 .../PathVariableAnnotationProcessor.java           | 10 +++++++++
 .../RequestAttributeAnnotationProcessor.java       | 10 +++++++++
 .../RequestParamAnnotationProcessor.java           | 10 +++++++++
 .../annotation/RequestPartAnnotationProcessor.java | 10 +++++++++
 .../test/resources/schemas/mixupAnnotations.yaml   | 24 +++++++++++-----------
 7 files changed, 63 insertions(+), 13 deletions(-)

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 390b26d..8698585 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
@@ -319,7 +319,7 @@ public class OperationGenerator {
       if (defaultValue != null) {
         ((AbstractSerializableParameter<?>) parameter).setDefaultValue(defaultValue);
       } else if ((((AbstractSerializableParameter<?>) parameter).getDefaultValue() == null)
-          && (false == ((AbstractSerializableParameter<?>) parameter).getRequired())) { //if required false then only take java primitive values as defaults
+          && (!((AbstractSerializableParameter<?>) parameter).getRequired())) { //if required false then only take java primitive values as defaults
         String type = ((AbstractSerializableParameter<?>) parameter).getType();
         switch (type) {
           case "integer":
diff --git a/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/CookieValueAnnotationProcessor.java b/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/CookieValueAnnotationProcessor.java
index 8dc61ea..a86ea06 100644
--- a/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/CookieValueAnnotationProcessor.java
+++ b/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/CookieValueAnnotationProcessor.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.swagger.generator.springmvc.processor.annotation;
 
+import org.apache.servicecomb.swagger.generator.core.OperationGenerator;
 import org.apache.servicecomb.swagger.generator.core.processor.parameter.AbstractParameterProcessor;
 import org.springframework.web.bind.annotation.CookieValue;
 import org.springframework.web.bind.annotation.ValueConstants;
@@ -35,6 +36,15 @@ public class CookieValueAnnotationProcessor extends AbstractParameterProcessor<C
   }
 
   @Override
+  protected void fillParameter(Object annotation, OperationGenerator operationGenerator, int paramIdx,
+      CookieParameter parameter) {
+    super.fillParameter(annotation, operationGenerator, paramIdx, parameter);
+
+    CookieValue cookie = (CookieValue) annotation;
+    parameter.setRequired(cookie.required());
+  }
+
+  @Override
   protected String getAnnotationParameterDefaultValue(Object annotation) {
     String defaultValue = ((CookieValue) annotation).defaultValue();
     if (defaultValue.equals(ValueConstants.DEFAULT_NONE)) {
diff --git a/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/PathVariableAnnotationProcessor.java b/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/PathVariableAnnotationProcessor.java
index e77b778..6297ef7 100644
--- a/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/PathVariableAnnotationProcessor.java
+++ b/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/PathVariableAnnotationProcessor.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.swagger.generator.springmvc.processor.annotation;
 
+import org.apache.servicecomb.swagger.generator.core.OperationGenerator;
 import org.apache.servicecomb.swagger.generator.core.processor.parameter.AbstractParameterProcessor;
 import org.springframework.web.bind.annotation.PathVariable;
 
@@ -32,4 +33,13 @@ public class PathVariableAnnotationProcessor extends AbstractParameterProcessor<
   public String getAnnotationParameterName(Object annotation) {
     return ((PathVariable) annotation).value();
   }
+  
+  @Override
+  protected void fillParameter(Object annotation, OperationGenerator operationGenerator, int paramIdx,
+      PathParameter parameter) {
+    super.fillParameter(annotation, operationGenerator, paramIdx, parameter);
+
+    PathVariable pathVariable = (PathVariable) annotation;
+    parameter.setRequired(pathVariable.required()); 
+  }
 }
diff --git a/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestAttributeAnnotationProcessor.java b/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestAttributeAnnotationProcessor.java
index 09e5f37..0166a76 100644
--- a/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestAttributeAnnotationProcessor.java
+++ b/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestAttributeAnnotationProcessor.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.swagger.generator.springmvc.processor.annotation;
 
+import org.apache.servicecomb.swagger.generator.core.OperationGenerator;
 import org.apache.servicecomb.swagger.generator.core.processor.parameter.AbstractParameterProcessor;
 import org.springframework.web.bind.annotation.RequestAttribute;
 
@@ -32,4 +33,13 @@ public class RequestAttributeAnnotationProcessor extends AbstractParameterProces
   public String getAnnotationParameterName(Object annotation) {
     return ((RequestAttribute) annotation).name();
   }
+  
+  @Override
+  protected void fillParameter(Object annotation, OperationGenerator operationGenerator, int paramIdx,
+      FormParameter parameter) {
+    super.fillParameter(annotation, operationGenerator, paramIdx, parameter);
+
+    RequestAttribute requestAttribute = (RequestAttribute) annotation;
+    parameter.setRequired(requestAttribute.required()); 
+  }
 }
diff --git a/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestParamAnnotationProcessor.java b/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestParamAnnotationProcessor.java
index d839c1c..a32274b 100644
--- a/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestParamAnnotationProcessor.java
+++ b/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestParamAnnotationProcessor.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.swagger.generator.springmvc.processor.annotation;
 
+import org.apache.servicecomb.swagger.generator.core.OperationGenerator;
 import org.apache.servicecomb.swagger.generator.core.processor.parameter.AbstractParameterProcessor;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ValueConstants;
@@ -35,6 +36,15 @@ public class RequestParamAnnotationProcessor extends AbstractParameterProcessor<
   }
 
   @Override
+  protected void fillParameter(Object annotation, OperationGenerator operationGenerator, int paramIdx,
+      QueryParameter parameter) {
+    super.fillParameter(annotation, operationGenerator, paramIdx, parameter);
+
+    RequestParam requestParam = (RequestParam) annotation;
+    parameter.setRequired(requestParam.required());
+  }
+
+  @Override
   protected String getAnnotationParameterDefaultValue(Object annotation) {
     String defaultValue = ((RequestParam) annotation).defaultValue();
     if (defaultValue.equals(ValueConstants.DEFAULT_NONE)) {
diff --git a/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestPartAnnotationProcessor.java b/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestPartAnnotationProcessor.java
index 3901752..fe3ec24 100644
--- a/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestPartAnnotationProcessor.java
+++ b/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestPartAnnotationProcessor.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.swagger.generator.springmvc.processor.annotation;
 
+import org.apache.servicecomb.swagger.generator.core.OperationGenerator;
 import org.apache.servicecomb.swagger.generator.core.processor.parameter.AbstractParameterProcessor;
 import org.springframework.web.bind.annotation.RequestPart;
 
@@ -32,4 +33,13 @@ public class RequestPartAnnotationProcessor extends AbstractParameterProcessor<F
   public String getAnnotationParameterName(Object annotation) {
     return ((RequestPart) annotation).name();
   }
+
+  @Override
+  protected void fillParameter(Object annotation, OperationGenerator operationGenerator, int paramIdx,
+      FormParameter parameter) {
+    super.fillParameter(annotation, operationGenerator, paramIdx, parameter);
+
+    RequestPart requestPart = (RequestPart) annotation;
+    parameter.setRequired(requestPart.required());
+  }
 }
diff --git a/swagger/swagger-generator/generator-springmvc/src/test/resources/schemas/mixupAnnotations.yaml b/swagger/swagger-generator/generator-springmvc/src/test/resources/schemas/mixupAnnotations.yaml
index a31e9e2..fc9f380 100644
--- a/swagger/swagger-generator/generator-springmvc/src/test/resources/schemas/mixupAnnotations.yaml
+++ b/swagger/swagger-generator/generator-springmvc/src/test/resources/schemas/mixupAnnotations.yaml
@@ -52,11 +52,11 @@ paths:
         type: "string"
       - name: "word"
         in: "query"
-        required: false
+        required: true
         type: "string"
       - name: "form"
         in: "formData"
-        required: false
+        required: true
         type: "string"
       responses:
         200:
@@ -88,11 +88,11 @@ paths:
         type: "string"
       - name: "word"
         in: "query"
-        required: false
+        required: true
         type: "string"
       - name: "form"
         in: "formData"
-        required: false
+        required: true
         type: "string"
       responses:
         200:
@@ -124,11 +124,11 @@ paths:
         type: "string"
       - name: "word"
         in: "query"
-        required: false
+        required: true
         type: "string"
       - name: "form"
         in: "formData"
-        required: false
+        required: true
         type: "string"
       responses:
         200:
@@ -160,11 +160,11 @@ paths:
         type: "string"
       - name: "word"
         in: "query"
-        required: false
+        required: true
         type: "string"
       - name: "form"
         in: "formData"
-        required: false
+        required: true
         type: "string"
       responses:
         200:
@@ -196,11 +196,11 @@ paths:
         type: "string"
       - name: "word"
         in: "query"
-        required: false
+        required: true
         type: "string"
       - name: "form"
         in: "formData"
-        required: false
+        required: true
         type: "string"
       responses:
         200:
@@ -232,11 +232,11 @@ paths:
         type: "string"
       - name: "word"
         in: "query"
-        required: false
+        required: true
         type: "string"
       - name: "form"
         in: "formData"
-        required: false
+        required: true
         type: "string"
       responses:
         200:


[incubator-servicecomb-java-chassis] 03/05: [SCB-736] generate default value to swagger for primitive type: Review comments fix

Posted by li...@apache.org.
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 d929f658eee5c2e0277b10a1b5d33131c20a5a9d
Author: maheshrajus <ma...@huawei.com>
AuthorDate: Fri Aug 10 12:14:51 2018 +0530

    [SCB-736] generate default value to swagger for primitive type: Review comments fix
---
 .../servicecomb/demo/springmvc/server/SpringMvcDefaultValues.java | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/SpringMvcDefaultValues.java b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/SpringMvcDefaultValues.java
index 70e80a1..4d64a34 100644
--- a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/SpringMvcDefaultValues.java
+++ b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/SpringMvcDefaultValues.java
@@ -65,18 +65,18 @@ public class SpringMvcDefaultValues {
   }
 
   @PostMapping("/javaprimitive1")
-  public String springJavaPrim1(@RequestParam(name = "a") int a,
+  public String springJavaPrim1(@RequestParam(name = "a", required = false) int a,
       @RequestParam(name = "b", defaultValue = "bobo") String b) {
     return "Hello " + a + b;
   }
 
   @PostMapping("/javaprimitive2")
-  public String springJavaPrim2(@RequestParam(name = "a") float a, @RequestParam(name = "b") boolean b) {
+  public String springJavaPrim2(@RequestParam(name = "a", required = false) float a, @RequestParam(name = "b", required = false) boolean b) {
     return "Hello " + a + b;
   }
 
   @PostMapping("/javaprimitive3")
-  public String springJavaPrim3(@RequestParam(name = "a") int a, @RequestParam(name = "b") String b) {
+  public String springJavaPrim3(@RequestParam(name = "a", required = false) int a, @RequestParam(name = "b", required = false) String b) {
     if (b == null || b.equals("")) {
       return "Hello";
     }
@@ -85,7 +85,7 @@ public class SpringMvcDefaultValues {
   }
 
   @PostMapping("/javaprimitive4")
-  public String springJavaPrim4(@RequestParam(name = "a") Integer a, @RequestParam(name = "b") Float b) {
+  public String springJavaPrim4(@RequestParam(name = "a", required = false) Integer a, @RequestParam(name = "b", required = false) Float b) {
     return "Hello " + a + b;
   }
 }


[incubator-servicecomb-java-chassis] 01/05: [SCB-736] generate default value to swagger for primitive type when there is no defaultValue annotation

Posted by li...@apache.org.
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 8b3180cad5a95878bef2f2da25d533c59ac77598
Author: maheshrajus <ma...@huawei.com>
AuthorDate: Wed Aug 8 20:27:32 2018 +0530

    [SCB-736] generate default value to swagger for primitive type when there is no defaultValue annotation
---
 .../servicecomb/demo/jaxrs/client/JaxrsClient.java | 26 ++++++++++++++++++-
 .../demo/jaxrs/server/JaxRSDefaultValues.java      | 30 ++++++++++++++++++++++
 .../demo/springmvc/client/SpringmvcClient.java     | 19 +++++++++++++-
 .../springmvc/server/SpringMvcDefaultValues.java   | 24 +++++++++++++++++
 .../swagger/generator/core/OperationGenerator.java | 26 +++++++++++++++++--
 5 files changed, 121 insertions(+), 4 deletions(-)

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 a2b129b..944c7c0 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
@@ -72,6 +72,7 @@ public class JaxrsClient {
     testValidator(templateNew);
     testClientTimeOut(templateNew);
     testJaxRSDefaultValues(templateNew);
+    testSpringMvcDefaultValuesJavaPrimitive(templateNew);
     MultiErrorCodeServiceClient.runTest();
 
     BeanParamPojoClient beanParamPojoClient = new BeanParamPojoClient();
@@ -143,7 +144,7 @@ public class JaxrsClient {
         result = template.getForObject(cseUrlPrefix + "/query2", String.class);
       } catch (InvocationException e) {
         failed = true;
-        TestMgr.check(e.getStatusCode(), ExceptionFactory.PRODUCER_INNER_STATUS_CODE);
+        TestMgr.check(e.getStatusCode(), HttpStatus.SC_BAD_REQUEST);
       }
 
       failed = false;
@@ -408,4 +409,27 @@ public class JaxrsClient {
 
     TestMgr.check(true, isExcep);
   }
+
+  private static void testSpringMvcDefaultValuesJavaPrimitive(RestTemplate template) {
+    String microserviceName = "jaxrs";
+    String cseUrlPrefix = "cse://" + microserviceName + "/JaxRSDefaultValues/";
+
+    HttpHeaders headers = new HttpHeaders();
+    headers.setContentType(org.springframework.http.MediaType.APPLICATION_FORM_URLENCODED);
+    MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
+    HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers);
+
+    //default values with primitive
+    String result = template.postForObject(cseUrlPrefix + "/javaprimitive1", request, String.class);
+    TestMgr.check("Hello 0bobo", result);
+
+    result = template.postForObject(cseUrlPrefix + "/javaprimitive2", request, String.class);
+    TestMgr.check("Hello 0.0false", result);
+
+    result = template.postForObject(cseUrlPrefix + "/javaprimitive3", request, String.class);
+    TestMgr.check("Hello", result);
+
+    result = template.postForObject(cseUrlPrefix + "/javaprimitive4", request, String.class);
+    TestMgr.check("Hello 00.0", result);
+  }
 }
diff --git a/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/JaxRSDefaultValues.java b/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/JaxRSDefaultValues.java
index 7889e54..edf2994 100644
--- a/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/JaxRSDefaultValues.java
+++ b/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/JaxRSDefaultValues.java
@@ -88,4 +88,34 @@ public class JaxRSDefaultValues {
     return "" + appType;
   }
 
+  @Path("/javaprimitive1")
+  @POST
+  @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
+  public String jaxRsJavaPrim1(@FormParam("a") int a, @DefaultValue("bobo") @FormParam("b") String b) {
+    return "Hello " + a + b;
+  }
+
+  @Path("/javaprimitive2")
+  @POST
+  @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
+  public String jaxRsJavaPrim2(@QueryParam("a") float a, @QueryParam("b") boolean b) {
+    return "Hello " + a + b;
+  }
+
+  @Path("/javaprimitive3")
+  @POST
+  @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
+  public String jaxRsJavaPrim3(@FormParam("b") int b, @FormParam("a") String a) {
+    if (a == null || a.equals("")) {
+      return "Hello";
+    }
+    return "Hello " + b + a;
+  }
+
+  @Path("/javaprimitive4")
+  @POST
+  @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
+  public String jaxRsJavaPrim4(@QueryParam("a") Integer a, @QueryParam("b") Float b) {
+    return "Hello " + a + b;
+  }
 }
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 beab26a..f410bba 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
@@ -96,6 +96,7 @@ public class SpringmvcClient {
       testController();
       testRequiredBody(templateUrlWithServiceName, microserviceName);
       testSpringMvcDefaultValues(templateUrlWithServiceName, microserviceName);
+      testSpringMvcDefaultValuesJavaPrimitive(templateUrlWithServiceName, microserviceName);
     }
     HttpHeaders headers = new HttpHeaders();
     headers.set("Accept-Encoding", "gzip");
@@ -289,7 +290,7 @@ public class SpringmvcClient {
       result = template.getForObject(cseUrlPrefix + "/query2", String.class);
     } catch (InvocationException e) {
       failed = true;
-      TestMgr.check(e.getStatusCode(), ExceptionFactory.PRODUCER_INNER_STATUS_CODE);
+      TestMgr.check(e.getStatusCode(), HttpStatus.SC_BAD_REQUEST);
     }
 
     failed = false;
@@ -346,4 +347,20 @@ public class SpringmvcClient {
     result = template.getForObject(cseUrlPrefix + "/query2?a=3&b=4&c=5&d=30&e=2", String.class);
     TestMgr.check("Hello 345302", result);
   }
+
+  private static void testSpringMvcDefaultValuesJavaPrimitive(RestTemplate template, String microserviceName) {
+    String cseUrlPrefix = "cse://" + microserviceName + "/SpringMvcDefaultValues/";
+    //default values with primitive
+    String result = template.postForObject(cseUrlPrefix + "/javaprimitive1", null, String.class);
+    TestMgr.check("Hello 0bobo", result);
+
+    result = template.postForObject(cseUrlPrefix + "/javaprimitive2", null, String.class);
+    TestMgr.check("Hello 0.0false", result);
+
+    result = template.postForObject(cseUrlPrefix + "/javaprimitive3", null, String.class);
+    TestMgr.check("Hello", result);
+
+    result = template.postForObject(cseUrlPrefix + "/javaprimitive4", null, String.class);
+    TestMgr.check("Hello 00.0", result);
+  }
 }
diff --git a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/SpringMvcDefaultValues.java b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/SpringMvcDefaultValues.java
index b2f3723..70e80a1 100644
--- a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/SpringMvcDefaultValues.java
+++ b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/SpringMvcDefaultValues.java
@@ -64,4 +64,28 @@ public class SpringMvcDefaultValues {
     return "Hello " + a + b;
   }
 
+  @PostMapping("/javaprimitive1")
+  public String springJavaPrim1(@RequestParam(name = "a") int a,
+      @RequestParam(name = "b", defaultValue = "bobo") String b) {
+    return "Hello " + a + b;
+  }
+
+  @PostMapping("/javaprimitive2")
+  public String springJavaPrim2(@RequestParam(name = "a") float a, @RequestParam(name = "b") boolean b) {
+    return "Hello " + a + b;
+  }
+
+  @PostMapping("/javaprimitive3")
+  public String springJavaPrim3(@RequestParam(name = "a") int a, @RequestParam(name = "b") String b) {
+    if (b == null || b.equals("")) {
+      return "Hello";
+    }
+    return "Hello " + b + a;
+
+  }
+
+  @PostMapping("/javaprimitive4")
+  public String springJavaPrim4(@RequestParam(name = "a") Integer a, @RequestParam(name = "b") Float b) {
+    return "Hello " + a + b;
+  }
 }
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 ba0b900..390b26d 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
@@ -315,8 +315,30 @@ public class OperationGenerator {
         }
       }
     }
-    if (parameter instanceof AbstractSerializableParameter && defaultValue != null) {
-      ((AbstractSerializableParameter<?>) parameter).setDefaultValue(defaultValue);
+    if (parameter instanceof AbstractSerializableParameter) {
+      if (defaultValue != null) {
+        ((AbstractSerializableParameter<?>) parameter).setDefaultValue(defaultValue);
+      } else if ((((AbstractSerializableParameter<?>) parameter).getDefaultValue() == null)
+          && (false == ((AbstractSerializableParameter<?>) parameter).getRequired())) { //if required false then only take java primitive values as defaults
+        String type = ((AbstractSerializableParameter<?>) parameter).getType();
+        switch (type) {
+          case "integer":
+            defaultValue = "0";
+            break;
+          case "number":
+            defaultValue = "0.0";
+            break;
+          case "string":
+            defaultValue = "";
+            break;
+          case "boolean":
+            defaultValue = "false";
+            break;
+          default:
+            defaultValue = null;
+        }
+        ((AbstractSerializableParameter<?>) parameter).setDefaultValue(defaultValue);
+      }
     }
   }
 


[incubator-servicecomb-java-chassis] 05/05: [SCB-736] generate default value to swagger for primitive type:test case correction

Posted by li...@apache.org.
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 f72bf034b8cc5627ad4f619abd7e55116f8c5e71
Author: maheshrajus <ma...@huawei.com>
AuthorDate: Mon Aug 13 11:10:50 2018 +0530

    [SCB-736] generate default value to swagger for primitive type:test case correction
---
 .../servicecomb/demo/jaxrs/client/JaxrsClient.java       |  9 ++++-----
 .../demo/jaxrs/server/JaxRSDefaultValues.java            | 16 ++++++++--------
 .../demo/springmvc/client/SpringmvcClient.java           |  9 ++++-----
 .../demo/springmvc/server/ProducerTestsAfterBootup.java  |  4 ++--
 .../demo/springmvc/server/SpringMvcDefaultValues.java    | 16 ++++++++--------
 5 files changed, 26 insertions(+), 28 deletions(-)

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 944c7c0..f285d5f 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
@@ -38,7 +38,6 @@ import org.apache.servicecomb.demo.validator.Student;
 import org.apache.servicecomb.foundation.common.utils.BeanUtils;
 import org.apache.servicecomb.foundation.common.utils.Log4jUtils;
 import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
-import org.apache.servicecomb.swagger.invocation.exception.ExceptionFactory;
 import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
@@ -420,16 +419,16 @@ public class JaxrsClient {
     HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers);
 
     //default values with primitive
-    String result = template.postForObject(cseUrlPrefix + "/javaprimitive1", request, String.class);
+    String result = template.postForObject(cseUrlPrefix + "/javaprimitiveint", request, String.class);
     TestMgr.check("Hello 0bobo", result);
 
-    result = template.postForObject(cseUrlPrefix + "/javaprimitive2", request, String.class);
+    result = template.postForObject(cseUrlPrefix + "/javaprimitivenumber", request, String.class);
     TestMgr.check("Hello 0.0false", result);
 
-    result = template.postForObject(cseUrlPrefix + "/javaprimitive3", request, String.class);
+    result = template.postForObject(cseUrlPrefix + "/javaprimitivestr", request, String.class);
     TestMgr.check("Hello", result);
 
-    result = template.postForObject(cseUrlPrefix + "/javaprimitive4", request, String.class);
+    result = template.postForObject(cseUrlPrefix + "/javaprimitivecomb", request, String.class);
     TestMgr.check("Hello 00.0", result);
   }
 }
diff --git a/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/JaxRSDefaultValues.java b/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/JaxRSDefaultValues.java
index edf2994..aa8f461 100644
--- a/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/JaxRSDefaultValues.java
+++ b/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/JaxRSDefaultValues.java
@@ -88,34 +88,34 @@ public class JaxRSDefaultValues {
     return "" + appType;
   }
 
-  @Path("/javaprimitive1")
+  @Path("/javaprimitiveint")
   @POST
   @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
-  public String jaxRsJavaPrim1(@FormParam("a") int a, @DefaultValue("bobo") @FormParam("b") String b) {
+  public String jaxRsJavaPrimitiveInt(@FormParam("a") int a, @DefaultValue("bobo") @FormParam("b") String b) {
     return "Hello " + a + b;
   }
 
-  @Path("/javaprimitive2")
+  @Path("/javaprimitivenumber")
   @POST
   @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
-  public String jaxRsJavaPrim2(@QueryParam("a") float a, @QueryParam("b") boolean b) {
+  public String jaxRsJavaPrimitiveNumber(@QueryParam("a") float a, @QueryParam("b") boolean b) {
     return "Hello " + a + b;
   }
 
-  @Path("/javaprimitive3")
+  @Path("/javaprimitivestr")
   @POST
   @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
-  public String jaxRsJavaPrim3(@FormParam("b") int b, @FormParam("a") String a) {
+  public String jaxRsJavaPrimitiveStr(@FormParam("b") int b, @FormParam("a") String a) {
     if (a == null || a.equals("")) {
       return "Hello";
     }
     return "Hello " + b + a;
   }
 
-  @Path("/javaprimitive4")
+  @Path("/javaprimitivecomb")
   @POST
   @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
-  public String jaxRsJavaPrim4(@QueryParam("a") Integer a, @QueryParam("b") Float b) {
+  public String jaxRsJavaPrimitiveCombnation(@QueryParam("a") Integer a, @QueryParam("b") Float b) {
     return "Hello " + a + b;
   }
 }
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 f410bba..a555fc9 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
@@ -32,7 +32,6 @@ import org.apache.servicecomb.provider.springmvc.reference.CseRestTemplate;
 import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
 import org.apache.servicecomb.provider.springmvc.reference.UrlWithProviderPrefixClientHttpRequestFactory;
 import org.apache.servicecomb.provider.springmvc.reference.UrlWithServiceNameClientHttpRequestFactory;
-import org.apache.servicecomb.swagger.invocation.exception.ExceptionFactory;
 import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
@@ -351,16 +350,16 @@ public class SpringmvcClient {
   private static void testSpringMvcDefaultValuesJavaPrimitive(RestTemplate template, String microserviceName) {
     String cseUrlPrefix = "cse://" + microserviceName + "/SpringMvcDefaultValues/";
     //default values with primitive
-    String result = template.postForObject(cseUrlPrefix + "/javaprimitive1", null, String.class);
+    String result = template.postForObject(cseUrlPrefix + "/javaprimitiveint", null, String.class);
     TestMgr.check("Hello 0bobo", result);
 
-    result = template.postForObject(cseUrlPrefix + "/javaprimitive2", null, String.class);
+    result = template.postForObject(cseUrlPrefix + "/javaprimitivenumber", null, String.class);
     TestMgr.check("Hello 0.0false", result);
 
-    result = template.postForObject(cseUrlPrefix + "/javaprimitive3", null, String.class);
+    result = template.postForObject(cseUrlPrefix + "/javaprimitivestr", null, String.class);
     TestMgr.check("Hello", result);
 
-    result = template.postForObject(cseUrlPrefix + "/javaprimitive4", null, String.class);
+    result = template.postForObject(cseUrlPrefix + "/javaprimitivecomb", null, String.class);
     TestMgr.check("Hello 00.0", result);
   }
 }
diff --git a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/ProducerTestsAfterBootup.java b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/ProducerTestsAfterBootup.java
index 1c12b40..ce80bf8 100644
--- a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/ProducerTestsAfterBootup.java
+++ b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/ProducerTestsAfterBootup.java
@@ -53,9 +53,9 @@ public class ProducerTestsAfterBootup implements BootListener {
             CodeFirstSpringmvcForSchema.class,
             new CodeFirstSpringmvcForSchema());
     String codeFirst = getSwaggerContent(meta.getSwagger());
-    TestMgr.check("07a48acef4cc1a7f2387d695923c49e98951a974e4f51cf1356d6878db48888f",
+    TestMgr.check("4d18e9b339136d68c7e5e83f4f302664c91465d9747a36334841e082d336516e",
         RegistryUtils.calcSchemaSummary(codeFirst));
-    TestMgr.check(codeFirst.length(), 899);
+    TestMgr.check(codeFirst.length(), 896);
   }
 
   public void testRegisterPath() {
diff --git a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/SpringMvcDefaultValues.java b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/SpringMvcDefaultValues.java
index 0e1bc17..1c99505 100644
--- a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/SpringMvcDefaultValues.java
+++ b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/SpringMvcDefaultValues.java
@@ -64,19 +64,19 @@ public class SpringMvcDefaultValues {
     return "Hello " + a + b;
   }
 
-  @PostMapping("/javaprimitive1")
-  public String springJavaPrim1(@RequestParam(name = "a", required = false) int a,
+  @PostMapping("/javaprimitiveint")
+  public String springJavaPrimitiveInt(@RequestParam(name = "a", required = false) int a,
       @RequestParam(name = "b", defaultValue = "bobo") String b) {
     return "Hello " + a + b;
   }
 
-  @PostMapping("/javaprimitive2")
-  public String springJavaPrim2(@RequestParam(name = "a", required = false) float a, @RequestParam(name = "b", required = false) boolean b) {
+  @PostMapping("/javaprimitivenumber")
+  public String springJavaPrimitiveNumber(@RequestParam(name = "a", required = false) float a, @RequestParam(name = "b", required = false) boolean b) {
     return "Hello " + a + b;
   }
 
-  @PostMapping("/javaprimitive3")
-  public String springJavaPrim3(@RequestParam(name = "a", required = false) int a, @RequestParam(name = "b", required = false) String b) {
+  @PostMapping("/javaprimitivestr")
+  public String springJavaPrimitiveStr(@RequestParam(name = "a", required = false) int a, @RequestParam(name = "b", required = false) String b) {
     if (b == null || b.equals("")) {
       return "Hello";
     }
@@ -84,8 +84,8 @@ public class SpringMvcDefaultValues {
 
   }
 
-  @PostMapping("/javaprimitive4")
-  public String springJavaPrim4(@RequestParam(name = "a", required = false) Integer a, @RequestParam(name = "b", required = false) Float b) {
+  @PostMapping("/javaprimitivecomb")
+  public String springJavaPrimitiveCombination(@RequestParam(name = "a", required = false) Integer a, @RequestParam(name = "b", required = false) Float b) {
     return "Hello " + a + b;
   }
 }


[incubator-servicecomb-java-chassis] 04/05: [SCB-736] generate default value to swagger for primitive type:test case correction

Posted by li...@apache.org.
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 c4c2f4f3c8c40491b121a3df53aab4e3f7f13bc1
Author: maheshrajus <ma...@huawei.com>
AuthorDate: Fri Aug 10 13:56:49 2018 +0530

    [SCB-736] generate default value to swagger for primitive type:test case correction
---
 .../servicecomb/demo/springmvc/server/SpringMvcDefaultValues.java     | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/SpringMvcDefaultValues.java b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/SpringMvcDefaultValues.java
index 4d64a34..0e1bc17 100644
--- a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/SpringMvcDefaultValues.java
+++ b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/SpringMvcDefaultValues.java
@@ -52,10 +52,10 @@ public class SpringMvcDefaultValues {
   }
 
   @GetMapping("/query2")
-  public String query2(@RequestParam("e") int e, @RequestParam(name = "a", defaultValue = "20") int a,
+  public String query2(@RequestParam(name = "e", required = false) int e, @RequestParam(name = "a", defaultValue = "20") int a,
       @RequestParam(name = "b", defaultValue = "bobo") String b,
       @RequestParam(name = "c", defaultValue = "40") Integer c,
-      @Min(value = 20) @Max(value = 30) @RequestParam("d") int d) {
+      @Min(value = 20) @Max(value = 30) @RequestParam(name = "d", required = false) int d) {
     return "Hello " + a + b + c + d + e;
   }