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 2019/07/02 02:17:04 UTC

[servicecomb-java-chassis] branch weak-contract-type updated (a64d200 -> ff4d830)

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

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


    from a64d200  [SCB-1336][WIP][WEAK] should not lost @ApiParam description when wrap parameter to body at swagger generator pojo mode
     new 712b5f6  [SCB-1337][WIP][WEAK] should wrap enum to body at swagger generator pojo mode
     new 8418b61  [SCB-1337][WIP][WEAK] rollback org.apache.servicecomb.swagger.SwaggerUtils#validateSwagger, to avoid can not throw exception for wrong swagger
     new ff4d830  [SCB-1337][WIP][WEAK] add comment for org.apache.servicecomb.swagger.generator.pojo.PojoOperationGenerator#wrapParametersToBody

The 3 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:
 .../resources/microservices/jaxrs/compute.yaml     | 11 ++++++-----
 .../resources/microservices/jaxrs/schemaFirst.yaml |  3 ++-
 .../apache/servicecomb/swagger/SwaggerUtils.java   |  3 +--
 .../generator/pojo/PojoOperationGenerator.java     |  4 ++++
 .../swagger/generator/core/TestSwaggerUtils.java   |  5 +++++
 .../swagger/generator/core/schema/Schema.java      |  4 ++++
 .../src/test/resources/schemas/allMethod.yaml      | 22 ++++++++++++++++++++++
 .../resources/schemas/{bytes.yaml => oneEnum.yaml} | 18 +++++++++++-------
 8 files changed, 55 insertions(+), 15 deletions(-)
 copy swagger/swagger-generator/generator-core/src/test/resources/schemas/{bytes.yaml => oneEnum.yaml} (82%)


[servicecomb-java-chassis] 01/03: [SCB-1337][WIP][WEAK] should wrap enum to body at swagger generator pojo mode

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch weak-contract-type
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git

commit 712b5f634eea475595fef89b525c822ec54d9d0c
Author: wujimin <wu...@huawei.com>
AuthorDate: Sun Jun 30 21:35:28 2019 +0800

    [SCB-1337][WIP][WEAK] should wrap enum to body at swagger generator pojo mode
---
 .../apache/servicecomb/swagger/SwaggerUtils.java   |  2 +-
 .../swagger/generator/core/TestSwaggerUtils.java   |  5 +++
 .../swagger/generator/core/schema/Schema.java      |  4 ++
 .../src/test/resources/schemas/allMethod.yaml      | 22 +++++++++
 .../src/test/resources/schemas/oneEnum.yaml        | 52 ++++++++++++++++++++++
 5 files changed, 84 insertions(+), 1 deletion(-)

diff --git a/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/SwaggerUtils.java b/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/SwaggerUtils.java
index 7cab421..4b64283 100644
--- a/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/SwaggerUtils.java
+++ b/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/SwaggerUtils.java
@@ -380,7 +380,7 @@ public final class SwaggerUtils {
     }
 
     JavaType javaType = TypeFactory.defaultInstance().constructType(type);
-    if (javaType.isContainerType()) {
+    if (javaType.isContainerType() || javaType.isEnumType()) {
       return false;
     }
 
diff --git a/swagger/swagger-generator/generator-core/src/test/java/org/apache/servicecomb/swagger/generator/core/TestSwaggerUtils.java b/swagger/swagger-generator/generator-core/src/test/java/org/apache/servicecomb/swagger/generator/core/TestSwaggerUtils.java
index 3e8ea49..f7f191e 100644
--- a/swagger/swagger-generator/generator-core/src/test/java/org/apache/servicecomb/swagger/generator/core/TestSwaggerUtils.java
+++ b/swagger/swagger-generator/generator-core/src/test/java/org/apache/servicecomb/swagger/generator/core/TestSwaggerUtils.java
@@ -91,6 +91,11 @@ public class TestSwaggerUtils {
   }
 
   @Test
+  public void testOneEnum() {
+    testSchemaMethod("oneEnum", "testOneEnum");
+  }
+
+  @Test
   public void testEnum() {
     testSchemaMethod("enum", "testEnum");
   }
diff --git a/swagger/swagger-generator/generator-core/src/test/java/org/apache/servicecomb/swagger/generator/core/schema/Schema.java b/swagger/swagger-generator/generator-core/src/test/java/org/apache/servicecomb/swagger/generator/core/schema/Schema.java
index 9ef232a..75c5807 100644
--- a/swagger/swagger-generator/generator-core/src/test/java/org/apache/servicecomb/swagger/generator/core/schema/Schema.java
+++ b/swagger/swagger-generator/generator-core/src/test/java/org/apache/servicecomb/swagger/generator/core/schema/Schema.java
@@ -113,6 +113,10 @@ public class Schema {
 
   }
 
+  public void testOneEnum(Color color) {
+
+  }
+
   public void testEnum(Color color, Color color1) {
 
   }
diff --git a/swagger/swagger-generator/generator-core/src/test/resources/schemas/allMethod.yaml b/swagger/swagger-generator/generator-core/src/test/resources/schemas/allMethod.yaml
index a2a2e24..4c01239 100644
--- a/swagger/swagger-generator/generator-core/src/test/resources/schemas/allMethod.yaml
+++ b/swagger/swagger-generator/generator-core/src/test/resources/schemas/allMethod.yaml
@@ -346,6 +346,18 @@ paths:
       responses:
         200:
           description: "response of 200"
+  /testOneEnum:
+    post:
+      operationId: "testOneEnum"
+      parameters:
+      - in: "body"
+        name: "color"
+        required: false
+        schema:
+          $ref: "#/definitions/testOneEnumBody"
+      responses:
+        200:
+          description: "response of 200"
   /testOptional:
     post:
       operationId: "testOptional"
@@ -769,6 +781,16 @@ definitions:
         additionalProperties:
           $ref: "#/definitions/User"
     x-java-class: "gen.cse.ms.ut.testMultiParamBody"
+  testOneEnumBody:
+    type: "object"
+    properties:
+      color:
+        type: "string"
+        enum:
+        - "RED"
+        - "YELLOW"
+        - "BLUE"
+        x-java-class: "org.apache.servicecomb.foundation.test.scaffolding.model.Color"
   testSetBody:
     type: "object"
     properties:
diff --git a/swagger/swagger-generator/generator-core/src/test/resources/schemas/oneEnum.yaml b/swagger/swagger-generator/generator-core/src/test/resources/schemas/oneEnum.yaml
new file mode 100644
index 0000000..5ae35a6
--- /dev/null
+++ b/swagger/swagger-generator/generator-core/src/test/resources/schemas/oneEnum.yaml
@@ -0,0 +1,52 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements.  See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License.  You may obtain a copy of the License at
+##
+##      http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+
+---
+swagger: "2.0"
+info:
+  version: "1.0.0"
+  title: "swagger definition for org.apache.servicecomb.swagger.generator.core.schema.Schema"
+  x-java-interface: "gen.cse.ms.ut.SchemaIntf"
+basePath: "/Schema"
+consumes:
+- "application/json"
+produces:
+- "application/json"
+paths:
+  /testOneEnum:
+    post:
+      operationId: "testOneEnum"
+      parameters:
+      - in: "body"
+        name: "color"
+        required: false
+        schema:
+          $ref: "#/definitions/testOneEnumBody"
+      responses:
+        200:
+          description: "response of 200"
+definitions:
+  testOneEnumBody:
+    type: "object"
+    properties:
+      color:
+        type: "string"
+        enum:
+        - "RED"
+        - "YELLOW"
+        - "BLUE"
+        x-java-class: "org.apache.servicecomb.foundation.test.scaffolding.model.Color"


[servicecomb-java-chassis] 02/03: [SCB-1337][WIP][WEAK] rollback org.apache.servicecomb.swagger.SwaggerUtils#validateSwagger, to avoid can not throw exception for wrong swagger

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch weak-contract-type
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git

commit 8418b61d544f1527f9639e183ac2e349ee61f051
Author: wujimin <wu...@huawei.com>
AuthorDate: Mon Jul 1 23:58:07 2019 +0800

    [SCB-1337][WIP][WEAK] rollback org.apache.servicecomb.swagger.SwaggerUtils#validateSwagger, to avoid can not throw exception for wrong swagger
---
 .../src/main/resources/microservices/jaxrs/compute.yaml       | 11 ++++++-----
 .../src/test/resources/microservices/jaxrs/schemaFirst.yaml   |  3 ++-
 .../java/org/apache/servicecomb/swagger/SwaggerUtils.java     |  1 -
 3 files changed, 8 insertions(+), 7 deletions(-)

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 66eb476..c7a1fa1 100644
--- a/demo/demo-schema/src/main/resources/microservices/jaxrs/compute.yaml
+++ b/demo/demo-schema/src/main/resources/microservices/jaxrs/compute.yaml
@@ -22,7 +22,7 @@ info:
   title: rest test
   version: 1.0.0
   x-java-interface: org.apache.servicecomb.demo.compute.Compute
-  
+
 # the domain of the service
 #host: api.uber.com
 
@@ -34,7 +34,7 @@ info:
 basePath: /compute
 produces:
   - application/json
-  
+
 paths:
   /add:
     post:
@@ -50,10 +50,10 @@ paths:
           required: true
           type: integer
           format: int32
-      responses: 
+      responses:
         200:
           description: add numer
-          schema: 
+          schema:
             type: integer
             format: int32
   /reduce:
@@ -98,7 +98,8 @@ paths:
           in: body
           required: true
           x-raw-json: true
-          type: string
+          schema:
+            type: string
       responses:
         200:
           description: test RawJson String
diff --git a/integration-tests/jaxrs-tests/src/test/resources/microservices/jaxrs/schemaFirst.yaml b/integration-tests/jaxrs-tests/src/test/resources/microservices/jaxrs/schemaFirst.yaml
index c9ccda1..2dafe26 100644
--- a/integration-tests/jaxrs-tests/src/test/resources/microservices/jaxrs/schemaFirst.yaml
+++ b/integration-tests/jaxrs-tests/src/test/resources/microservices/jaxrs/schemaFirst.yaml
@@ -87,7 +87,8 @@ paths:
           in: body
           required: true
           x-raw-json: true
-          type: string
+          schema:
+            type: string
       responses:
         200:
           description: test RawJson String
diff --git a/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/SwaggerUtils.java b/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/SwaggerUtils.java
index 4b64283..83b608b 100644
--- a/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/SwaggerUtils.java
+++ b/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/SwaggerUtils.java
@@ -127,7 +127,6 @@ public final class SwaggerUtils {
 
       for (Parameter parameter : operation.getParameters()) {
         if (BodyParameter.class.isInstance(parameter) &&
-            !isRawJsonType(parameter) &&
             ((BodyParameter) parameter).getSchema() == null) {
           throw new ServiceCombException("swagger validator: body parameter schema is empty.");
         }


[servicecomb-java-chassis] 03/03: [SCB-1337][WIP][WEAK] add comment for org.apache.servicecomb.swagger.generator.pojo.PojoOperationGenerator#wrapParametersToBody

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch weak-contract-type
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git

commit ff4d830551f6a93f490db8bfe2696dbea2f81225
Author: wujimin <wu...@huawei.com>
AuthorDate: Mon Jul 1 23:59:15 2019 +0800

    [SCB-1337][WIP][WEAK] add comment for org.apache.servicecomb.swagger.generator.pojo.PojoOperationGenerator#wrapParametersToBody
---
 .../servicecomb/swagger/generator/pojo/PojoOperationGenerator.java    | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/pojo/PojoOperationGenerator.java b/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/pojo/PojoOperationGenerator.java
index e3aa409..02f4ade 100644
--- a/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/pojo/PojoOperationGenerator.java
+++ b/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/pojo/PojoOperationGenerator.java
@@ -83,6 +83,10 @@ public class PojoOperationGenerator extends AbstractOperationGenerator {
     bodyModel = new ModelImpl();
     bodyModel.setType(ModelImpl.OBJECT);
     for (ParameterGenerator parameterGenerator : bodyFields) {
+      // to collect all information by swagger mechanism
+      // must have a parameter type
+      // but all these parameters will be wrap to be one body parameter, their parameter type must be null
+      // so we first set to be BODY, after collected, set back to be null
       parameterGenerator.setHttpParameterType(HttpParameterType.BODY);
       scanMethodParameter(parameterGenerator);