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
The following commit(s) were added to refs/heads/weak-contract-type by this
push:
new a64d200 [SCB-1336][WIP][WEAK] should not lost @ApiParam description
when wrap parameter to body at swagger generator pojo mode
a64d200 is described below
commit a64d20093f321c67444434e2aa7f8c28425414af
Author: wujimin <[email protected]>
AuthorDate: Sun Jun 30 21:25:18 2019 +0800
[SCB-1336][WIP][WEAK] should not lost @ApiParam description when wrap
parameter to body at swagger generator pojo mode
---
.../apache/servicecomb/swagger/SwaggerUtils.java | 27 ++++++------
.../generator/pojo/PojoOperationGenerator.java | 7 +++-
.../swagger/generator/core/TestSwaggerUtils.java | 5 +++
.../swagger/generator/core/schema/Schema.java | 5 +++
.../src/test/resources/schemas/allMethod.yaml | 19 +++++++++
.../test/resources/schemas/wrapToBodyWithDesc.yaml | 49 ++++++++++++++++++++++
6 files changed, 99 insertions(+), 13 deletions(-)
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 509c982..7cab421 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
@@ -115,18 +115,21 @@ public final class SwaggerUtils {
*/
public static void validateSwagger(Swagger swagger) {
Map<String, Path> paths = swagger.getPaths();
- if (paths != null) {
- for (Path path : paths.values()) {
- Operation operation = path.getPost();
- if (operation != null) {
- List<Parameter> parameters = operation.getParameters();
- for (Parameter parameter : parameters) {
- if (BodyParameter.class.isInstance(parameter)) {
- if (((BodyParameter) parameter).getSchema() == null) {
- throw new ServiceCombException("swagger validator: body
parameter schema is empty.");
- }
- }
- }
+ if (paths == null) {
+ return;
+ }
+
+ for (Path path : paths.values()) {
+ Operation operation = path.getPost();
+ if (operation == null) {
+ continue;
+ }
+
+ 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.");
}
}
}
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 9ed8568..e3aa409 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,9 +83,14 @@ public class PojoOperationGenerator extends
AbstractOperationGenerator {
bodyModel = new ModelImpl();
bodyModel.setType(ModelImpl.OBJECT);
for (ParameterGenerator parameterGenerator : bodyFields) {
- SwaggerUtils.addDefinitions(swagger,
parameterGenerator.getGenericType());
+ parameterGenerator.setHttpParameterType(HttpParameterType.BODY);
+ scanMethodParameter(parameterGenerator);
+
Property property =
ModelConverters.getInstance().readAsProperty(parameterGenerator.getGenericType());
+
property.setDescription(parameterGenerator.getGeneratedParameter().getDescription());
bodyModel.addProperty(parameterGenerator.getParameterName(), property);
+
+ parameterGenerator.setHttpParameterType(null);
}
swagger.addDefinition(simpleRef, bodyModel);
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 95a456d..3e8ea49 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
@@ -86,6 +86,11 @@ public class TestSwaggerUtils {
}
@Test
+ public void
should_not_lost_ApiParam_description_when_wrap_parameter_to_body() {
+ testSchemaMethod("wrapToBodyWithDesc", "wrapToBodyWithDesc");
+ }
+
+ @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 8176361..9ef232a 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
@@ -32,6 +32,7 @@ import
org.apache.servicecomb.foundation.test.scaffolding.model.Color;
import org.apache.servicecomb.foundation.test.scaffolding.model.User;
import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ResponseHeader;
@@ -214,6 +215,10 @@ public class Schema {
}
+ public void wrapToBodyWithDesc(@ApiParam(value = "desc") int value) {
+
+ }
+
public void ignoreRequest(HttpServletRequest request, int value) {
}
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 c8fcdc3..a2a2e24 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
@@ -509,6 +509,18 @@ paths:
responses:
200:
description: "response of 200"
+ /wrapToBodyWithDesc:
+ post:
+ operationId: "wrapToBodyWithDesc"
+ parameters:
+ - in: "body"
+ name: "value"
+ required: false
+ schema:
+ $ref: "#/definitions/wrapToBodyWithDescBody"
+ responses:
+ 200:
+ description: "response of 200"
definitions:
ignoreRequestBody:
type: "object"
@@ -828,3 +840,10 @@ definitions:
value:
type: "integer"
format: "int16"
+ wrapToBodyWithDescBody:
+ type: "object"
+ properties:
+ value:
+ type: "integer"
+ format: "int32"
+ description: "desc"
diff --git
a/swagger/swagger-generator/generator-core/src/test/resources/schemas/wrapToBodyWithDesc.yaml
b/swagger/swagger-generator/generator-core/src/test/resources/schemas/wrapToBodyWithDesc.yaml
new file mode 100644
index 0000000..1e4a9db
--- /dev/null
+++
b/swagger/swagger-generator/generator-core/src/test/resources/schemas/wrapToBodyWithDesc.yaml
@@ -0,0 +1,49 @@
+## ---------------------------------------------------------------------------
+## 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:
+ /wrapToBodyWithDesc:
+ post:
+ operationId: "wrapToBodyWithDesc"
+ parameters:
+ - in: "body"
+ name: "value"
+ required: false
+ schema:
+ $ref: "#/definitions/wrapToBodyWithDescBody"
+ responses:
+ 200:
+ description: "response of 200"
+definitions:
+ wrapToBodyWithDescBody:
+ type: "object"
+ properties:
+ value:
+ type: "integer"
+ format: "int32"
+ description: "desc"