You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by wu...@apache.org on 2018/06/04 01:08:44 UTC

[incubator-servicecomb-java-chassis] branch master updated (d44a423 -> d2af11f)

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

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


    from d44a423  [SCB-502] add a sample how to use log4j2 as log implement (#735)
     new 6a5271e  [SCB-601] when java.lang.Error: not support def type: class io.swagger.models.ComposedMode we don't know which swagger
     new 78bed31  [SCB-601]valid swagger common errors
     new d2af11f  [SCB-601]rename method

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:
 .../servicecomb/core/definition/SchemaMeta.java    | 25 +++++++++++++---------
 .../servicecomb/core/definition/SchemaUtils.java   |  4 +++-
 .../apache/servicecomb/swagger/SwaggerUtils.java   | 25 ++++++++++++++++++++++
 .../servicecomb/swagger/TestSwaggerUtils.java      | 17 +++++++++++++++
 .../src/test/resources/swagger1.yaml               | 21 ++++++++++--------
 .../src/test/resources/swagger2.yaml               | 22 +++++++++++--------
 6 files changed, 85 insertions(+), 29 deletions(-)
 copy demo/demo-crossapp/crossapp-server/src/main/resources/schemas/helloworld.yaml => swagger/swagger-generator/generator-core/src/test/resources/swagger1.yaml (82%)
 copy demo/demo-crossapp/crossapp-server/src/main/resources/schemas/helloworld.yaml => swagger/swagger-generator/generator-core/src/test/resources/swagger2.yaml (82%)

-- 
To stop receiving notification emails like this one, please contact
wujimin@apache.org.

[incubator-servicecomb-java-chassis] 01/03: [SCB-601] when java.lang.Error: not support def type: class io.swagger.models.ComposedMode we don't know which swagger

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

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

commit 6a5271e2f1baa84dfa5fabd255f08a78bb2228a8
Author: liubao <ba...@huawei.com>
AuthorDate: Thu May 31 16:09:16 2018 +0800

    [SCB-601] when java.lang.Error: not support def type: class io.swagger.models.ComposedMode we don't know which swagger
---
 .../servicecomb/core/definition/SchemaMeta.java    | 25 +++++++++++++---------
 1 file changed, 15 insertions(+), 10 deletions(-)

diff --git a/core/src/main/java/org/apache/servicecomb/core/definition/SchemaMeta.java b/core/src/main/java/org/apache/servicecomb/core/definition/SchemaMeta.java
index 1a4e6f9..84143f0 100644
--- a/core/src/main/java/org/apache/servicecomb/core/definition/SchemaMeta.java
+++ b/core/src/main/java/org/apache/servicecomb/core/definition/SchemaMeta.java
@@ -57,21 +57,26 @@ public class SchemaMeta extends CommonService<OperationMeta> {
   private SwaggerToClassGenerator swaggerToClassGenerator;
 
   public SchemaMeta(Swagger swagger, MicroserviceMeta microserviceMeta, String schemaId) {
-    this.packageName = SchemaUtils.generatePackageName(microserviceMeta, schemaId);
+    try {
+      this.packageName = SchemaUtils.generatePackageName(microserviceMeta, schemaId);
 
-    this.swagger = swagger;
-    this.name = schemaId;
+      this.swagger = swagger;
+      this.name = schemaId;
 
-    this.microserviceMeta = microserviceMeta;
-    this.microserviceQualifiedName = microserviceMeta.getName() + "." + schemaId;
+      this.microserviceMeta = microserviceMeta;
+      this.microserviceQualifiedName = microserviceMeta.getName() + "." + schemaId;
 
-    swaggerToClassGenerator = new SwaggerToClassGenerator(microserviceMeta.getClassLoader(), swagger, packageName);
-    swaggerIntf = swaggerToClassGenerator.convert();
+      swaggerToClassGenerator = new SwaggerToClassGenerator(microserviceMeta.getClassLoader(), swagger, packageName);
+      swaggerIntf = swaggerToClassGenerator.convert();
 
-    createOperationMgr("schemaMeta " + schemaId + " operation mgr");
-    operationMgr.setRegisterErrorFmt("Operation name repeat, schema=%s, operation=%s");
+      createOperationMgr("schemaMeta " + schemaId + " operation mgr");
+      operationMgr.setRegisterErrorFmt("Operation name repeat, schema=%s, operation=%s");
 
-    initOperations();
+      initOperations();
+    } catch (Throwable e) {
+      LOGGER.error("Unhandled exception to service " + microserviceMeta.getName() + " schema " + schemaId);
+      throw e;
+    }
   }
 
   public SwaggerToClassGenerator getSwaggerToClassGenerator() {

-- 
To stop receiving notification emails like this one, please contact
wujimin@apache.org.

[incubator-servicecomb-java-chassis] 03/03: [SCB-601]rename method

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

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

commit d2af11f6f613bf5f1edcdfaa64d98d9cda08f29a
Author: liubao <ba...@huawei.com>
AuthorDate: Fri Jun 1 09:27:27 2018 +0800

    [SCB-601]rename method
---
 .../main/java/org/apache/servicecomb/core/definition/SchemaUtils.java | 2 +-
 .../src/main/java/org/apache/servicecomb/swagger/SwaggerUtils.java    | 2 +-
 .../test/java/org/apache/servicecomb/swagger/TestSwaggerUtils.java    | 4 ++--
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/core/src/main/java/org/apache/servicecomb/core/definition/SchemaUtils.java b/core/src/main/java/org/apache/servicecomb/core/definition/SchemaUtils.java
index 80709d9..3346a24 100644
--- a/core/src/main/java/org/apache/servicecomb/core/definition/SchemaUtils.java
+++ b/core/src/main/java/org/apache/servicecomb/core/definition/SchemaUtils.java
@@ -46,7 +46,7 @@ public final class SchemaUtils {
 
   public static Swagger parseSwagger(String swaggerContent) {
     Swagger swagger = SwaggerUtils.parseSwagger(swaggerContent);
-    SwaggerUtils.invalidateSwagger(swagger);
+    SwaggerUtils.validateSwagger(swagger);
     return swagger;
   }
 }
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 5d19bbc..78f319a 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
@@ -75,7 +75,7 @@ public final class SwaggerUtils {
    * Provide a method to validate swagger. This method is now implemented to check common errors, and the logic
    * will be changed when necessary. For internal use only.
    */
-  public static void invalidateSwagger(Swagger swagger) {
+  public static void validateSwagger(Swagger swagger) {
     Map<String, Path> paths = swagger.getPaths();
     for (Path path : paths.values()) {
       Operation operation = path.getPost();
diff --git a/swagger/swagger-generator/generator-core/src/test/java/org/apache/servicecomb/swagger/TestSwaggerUtils.java b/swagger/swagger-generator/generator-core/src/test/java/org/apache/servicecomb/swagger/TestSwaggerUtils.java
index da93f72..5962568 100644
--- a/swagger/swagger-generator/generator-core/src/test/java/org/apache/servicecomb/swagger/TestSwaggerUtils.java
+++ b/swagger/swagger-generator/generator-core/src/test/java/org/apache/servicecomb/swagger/TestSwaggerUtils.java
@@ -181,7 +181,7 @@ public class TestSwaggerUtils {
     URL resource = TestSwaggerUtils.class.getResource("/swagger1.yaml");
     byte[] buffer = new byte[2048];
     Swagger swagger = SwaggerUtils.parseSwagger(resource);
-    SwaggerUtils.invalidateSwagger(swagger);
+    SwaggerUtils.validateSwagger(swagger);
   }
 
   @Test
@@ -189,6 +189,6 @@ public class TestSwaggerUtils {
     URL resource = TestSwaggerUtils.class.getResource("/swagger2.yaml");
     byte[] buffer = new byte[2048];
     Swagger swagger = SwaggerUtils.parseSwagger(resource);
-    SwaggerUtils.invalidateSwagger(swagger);
+    SwaggerUtils.validateSwagger(swagger);
   }
 }

-- 
To stop receiving notification emails like this one, please contact
wujimin@apache.org.

[incubator-servicecomb-java-chassis] 02/03: [SCB-601]valid swagger common errors

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

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

commit 78bed31f1d0cf1da98eb46209730dba95f10e9db
Author: liubao <ba...@huawei.com>
AuthorDate: Thu May 31 19:56:41 2018 +0800

    [SCB-601]valid swagger common errors
---
 .../servicecomb/core/definition/SchemaUtils.java   |  4 ++-
 .../apache/servicecomb/swagger/SwaggerUtils.java   | 25 ++++++++++++++
 .../servicecomb/swagger/TestSwaggerUtils.java      | 17 +++++++++
 .../src/test/resources/swagger1.yaml               | 39 +++++++++++++++++++++
 .../src/test/resources/swagger2.yaml               | 40 ++++++++++++++++++++++
 5 files changed, 124 insertions(+), 1 deletion(-)

diff --git a/core/src/main/java/org/apache/servicecomb/core/definition/SchemaUtils.java b/core/src/main/java/org/apache/servicecomb/core/definition/SchemaUtils.java
index d93ba9d..80709d9 100644
--- a/core/src/main/java/org/apache/servicecomb/core/definition/SchemaUtils.java
+++ b/core/src/main/java/org/apache/servicecomb/core/definition/SchemaUtils.java
@@ -45,6 +45,8 @@ public final class SchemaUtils {
   }
 
   public static Swagger parseSwagger(String swaggerContent) {
-    return SwaggerUtils.parseSwagger(swaggerContent);
+    Swagger swagger = SwaggerUtils.parseSwagger(swaggerContent);
+    SwaggerUtils.invalidateSwagger(swagger);
+    return swagger;
   }
 }
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 78cbaad..5d19bbc 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
@@ -19,6 +19,8 @@ package org.apache.servicecomb.swagger;
 
 import java.io.IOException;
 import java.net.URL;
+import java.util.List;
+import java.util.Map;
 import java.util.Map.Entry;
 
 import javax.ws.rs.core.Response.Status;
@@ -36,6 +38,8 @@ import io.swagger.models.Operation;
 import io.swagger.models.Path;
 import io.swagger.models.Response;
 import io.swagger.models.Swagger;
+import io.swagger.models.parameters.BodyParameter;
+import io.swagger.models.parameters.Parameter;
 import io.swagger.util.Yaml;
 
 public final class SwaggerUtils {
@@ -67,6 +71,27 @@ public final class SwaggerUtils {
     }
   }
 
+  /**
+   * Provide a method to validate swagger. This method is now implemented to check common errors, and the logic
+   * will be changed when necessary. For internal use only.
+   */
+  public static void invalidateSwagger(Swagger swagger) {
+    Map<String, Path> paths = swagger.getPaths();
+    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.");
+            }
+          }
+        }
+      }
+    }
+  }
+
   private static Swagger internalParseSwagger(String swaggerContent)
       throws JsonParseException, JsonMappingException, IOException {
     Swagger swagger = Yaml.mapper().readValue(swaggerContent, Swagger.class);
diff --git a/swagger/swagger-generator/generator-core/src/test/java/org/apache/servicecomb/swagger/TestSwaggerUtils.java b/swagger/swagger-generator/generator-core/src/test/java/org/apache/servicecomb/swagger/TestSwaggerUtils.java
index ced37dc..da93f72 100644
--- a/swagger/swagger-generator/generator-core/src/test/java/org/apache/servicecomb/swagger/TestSwaggerUtils.java
+++ b/swagger/swagger-generator/generator-core/src/test/java/org/apache/servicecomb/swagger/TestSwaggerUtils.java
@@ -174,4 +174,21 @@ public class TestSwaggerUtils {
 
     Assert.assertEquals("response of 200", response.getDescription());
   }
+
+
+  @Test(expected = ServiceCombException.class)
+  public void testInvalidate() throws Exception {
+    URL resource = TestSwaggerUtils.class.getResource("/swagger1.yaml");
+    byte[] buffer = new byte[2048];
+    Swagger swagger = SwaggerUtils.parseSwagger(resource);
+    SwaggerUtils.invalidateSwagger(swagger);
+  }
+
+  @Test
+  public void testInvalidateValid() throws Exception {
+    URL resource = TestSwaggerUtils.class.getResource("/swagger2.yaml");
+    byte[] buffer = new byte[2048];
+    Swagger swagger = SwaggerUtils.parseSwagger(resource);
+    SwaggerUtils.invalidateSwagger(swagger);
+  }
 }
diff --git a/swagger/swagger-generator/generator-core/src/test/resources/swagger1.yaml b/swagger/swagger-generator/generator-core/src/test/resources/swagger1.yaml
new file mode 100644
index 0000000..14d10c4
--- /dev/null
+++ b/swagger/swagger-generator/generator-core/src/test/resources/swagger1.yaml
@@ -0,0 +1,39 @@
+## ---------------------------------------------------------------------------
+## 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:
+  title: rest test
+  version: 1.0.0
+basePath: /springmvc/controller
+produces:
+  - application/json
+
+paths:
+  /sayhello:
+    post:
+      operationId: sayHello
+      parameters:
+        - name: name
+          in: body
+          required: true
+          type: string
+      responses:
+        200:
+          description: say hello
+          schema:
+            type: string
\ No newline at end of file
diff --git a/swagger/swagger-generator/generator-core/src/test/resources/swagger2.yaml b/swagger/swagger-generator/generator-core/src/test/resources/swagger2.yaml
new file mode 100644
index 0000000..5f2f23f
--- /dev/null
+++ b/swagger/swagger-generator/generator-core/src/test/resources/swagger2.yaml
@@ -0,0 +1,40 @@
+## ---------------------------------------------------------------------------
+## 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:
+  title: rest test
+  version: 1.0.0
+basePath: /springmvc/controller
+produces:
+  - application/json
+
+paths:
+  /sayhello:
+    post:
+      operationId: sayHello
+      parameters:
+        - name: name
+          in: body
+          required: true
+          schema:
+            type: string
+      responses:
+        200:
+          description: say hello
+          schema:
+            type: string
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
wujimin@apache.org.