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

chanjarster pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-toolkit.git

commit b0d8b88d77317a470e6f351db2a6771db076f351
Author: kakulisen <[email protected]>
AuthorDate: Tue Oct 29 09:23:43 2019 +0800

    switch to oas-generator
    
    Signed-off-by: kakulisen <[email protected]>
---
 common/pom.xml                                     | 30 ----------------------
 contractgen/pom.xml                                | 15 +++++++++++
 .../contractgen/DefaultContractsGenerator.java     | 25 +++++++++---------
 .../docgen/ContractsSwaggerUIGenerator.java        |  8 +++---
 .../docgen/ContractsSwaggerUIGeneratorTest.java    | 11 ++++----
 pom.xml                                            | 24 +++++++++++++++++
 toolkit-distribution/src/release/LICENSE           |  9 +++++++
 .../servicecomb/toolkit/plugin/GenerateUtil.java   | 13 ++++++++--
 8 files changed, 80 insertions(+), 55 deletions(-)

diff --git a/common/pom.xml b/common/pom.xml
index 6855da3..0149615 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -55,36 +55,6 @@
     </dependency>
 
     <dependency>
-      <groupId>org.apache.servicecomb</groupId>
-      <artifactId>swagger-generator-springmvc</artifactId>
-      <version>1.2.0</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.servicecomb</groupId>
-      <artifactId>swagger-generator-jaxrs</artifactId>
-      <version>1.2.0</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.servicecomb</groupId>
-      <artifactId>provider-rest-common</artifactId>
-      <version>1.2.0</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.servicecomb</groupId>
-      <artifactId>provider-pojo</artifactId>
-      <version>1.2.0</version>
-      <exclusions>
-        <exclusion>
-          <groupId>commons-lang</groupId>
-          <artifactId>commons-lang</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-
-    <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <version>4.12</version>
diff --git a/contractgen/pom.xml b/contractgen/pom.xml
index ffcadf6..b5c5a87 100644
--- a/contractgen/pom.xml
+++ b/contractgen/pom.xml
@@ -35,6 +35,21 @@
     </dependency>
 
     <dependency>
+      <groupId>org.apache.servicecomb.toolkit</groupId>
+      <artifactId>oas-generator-jaxrs</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.servicecomb.toolkit</groupId>
+      <artifactId>oas-generator-spring</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.servicecomb.toolkit</groupId>
+      <artifactId>oas-generator-servicecomb</artifactId>
+    </dependency>
+    
+    <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <version>4.12</version>
diff --git 
a/contractgen/src/main/java/org/apache/servicecomb/toolkit/contractgen/DefaultContractsGenerator.java
 
b/contractgen/src/main/java/org/apache/servicecomb/toolkit/contractgen/DefaultContractsGenerator.java
index 49dd5b9..e78abc5 100755
--- 
a/contractgen/src/main/java/org/apache/servicecomb/toolkit/contractgen/DefaultContractsGenerator.java
+++ 
b/contractgen/src/main/java/org/apache/servicecomb/toolkit/contractgen/DefaultContractsGenerator.java
@@ -30,29 +30,26 @@ import java.util.List;
 import java.util.Map;
 import java.util.Vector;
 
-import org.apache.commons.lang3.StringUtils;
+import javax.ws.rs.Path;
+
 import org.apache.servicecomb.provider.pojo.RpcSchema;
 import org.apache.servicecomb.provider.rest.common.RestSchema;
-import org.apache.servicecomb.swagger.SwaggerUtils;
-import 
org.apache.servicecomb.swagger.generator.core.CompositeSwaggerGeneratorContext;
-import org.apache.servicecomb.swagger.generator.core.SwaggerGenerator;
-import org.apache.servicecomb.swagger.generator.core.SwaggerGeneratorContext;
 import org.apache.servicecomb.toolkit.ContractsGenerator;
 import org.apache.servicecomb.toolkit.common.ContractFileType;
 import org.apache.servicecomb.toolkit.common.ImmediateClassLoader;
+import org.apache.servicecomb.toolkit.generator.OasGenerator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import javax.ws.rs.Path;
+import io.swagger.v3.core.util.Yaml;
+import io.swagger.v3.oas.models.OpenAPI;
 
 public class DefaultContractsGenerator implements ContractsGenerator {
 
   private static Logger LOGGER = 
LoggerFactory.getLogger(DefaultContractsGenerator.class);
 
-  private static CompositeSwaggerGeneratorContext 
compositeSwaggerGeneratorContext = new CompositeSwaggerGeneratorContext();
-
   private Map<String, Object> config;
 
   private List<String> classpathUrls;
@@ -125,12 +122,14 @@ public class DefaultContractsGenerator implements 
ContractsGenerator {
           continue;
         }
 
-        SwaggerGeneratorContext generatorContext =
-            compositeSwaggerGeneratorContext.selectContext(loadClass);
+        OasGenerator oasGenerator = new OasGenerator();
+        OpenAPI oas = oasGenerator.generate(loadClass);
 
-        SwaggerGenerator generator = new SwaggerGenerator(generatorContext, 
loadClass);
+        if (oas == null) {
+          continue;
+        }
 
-        String swaggerString = 
SwaggerUtils.swaggerToString(generator.generate());
+        String oasPretty = Yaml.pretty(oas);
 
         File outputFile = new File(
             outputDir + File.separator + loadClass.getSimpleName() + 
contractfileType
@@ -143,7 +142,7 @@ public class DefaultContractsGenerator implements 
ContractsGenerator {
           outputFile.createNewFile();
         }
 
-        Files.write(Paths.get(outputFile.toURI()), swaggerString.getBytes());
+        Files.write(Paths.get(outputFile.toURI()), oasPretty.getBytes());
       }
     } catch (IOException e) {
       throw new RuntimeException(e);
diff --git 
a/docgen/src/main/java/org/apache/servicecomb/toolkit/docgen/ContractsSwaggerUIGenerator.java
 
b/docgen/src/main/java/org/apache/servicecomb/toolkit/docgen/ContractsSwaggerUIGenerator.java
index 4277652..1bf2e7a 100755
--- 
a/docgen/src/main/java/org/apache/servicecomb/toolkit/docgen/ContractsSwaggerUIGenerator.java
+++ 
b/docgen/src/main/java/org/apache/servicecomb/toolkit/docgen/ContractsSwaggerUIGenerator.java
@@ -32,8 +32,8 @@ import org.apache.servicecomb.toolkit.DocGenerator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import io.swagger.models.Swagger;
-import io.swagger.util.Json;
+import io.swagger.v3.core.util.Json;
+import io.swagger.v3.oas.models.OpenAPI;
 
 public class ContractsSwaggerUIGenerator implements DocGenerator {
 
@@ -43,7 +43,7 @@ public class ContractsSwaggerUIGenerator implements 
DocGenerator {
 
   private final static String DOC_SUFFIX = ".html";
 
-  private Swagger contractContent;
+  private OpenAPI contractContent;
 
   private String outputPath = ".";
 
@@ -55,7 +55,7 @@ public class ContractsSwaggerUIGenerator implements 
DocGenerator {
 
   @Override
   public void configure(Map<String, Object> config) {
-    this.contractContent = (Swagger) config.get("contractContent");
+    this.contractContent = (OpenAPI) config.get("contractContent");
     this.outputPath = (String) config.get("outputPath");
   }
 
diff --git 
a/docgen/src/test/java/org/apache/servicecomb/toolkit/docgen/ContractsSwaggerUIGeneratorTest.java
 
b/docgen/src/test/java/org/apache/servicecomb/toolkit/docgen/ContractsSwaggerUIGeneratorTest.java
index 46238be..e1c9662 100644
--- 
a/docgen/src/test/java/org/apache/servicecomb/toolkit/docgen/ContractsSwaggerUIGeneratorTest.java
+++ 
b/docgen/src/test/java/org/apache/servicecomb/toolkit/docgen/ContractsSwaggerUIGeneratorTest.java
@@ -33,16 +33,14 @@ import org.apache.servicecomb.toolkit.GeneratorFactory;
 import org.junit.Assert;
 import org.junit.Test;
 
-import io.swagger.models.Swagger;
-import io.swagger.parser.Swagger20Parser;
+import io.swagger.parser.OpenAPIParser;
+import io.swagger.v3.parser.core.models.SwaggerParseResult;
 
 public class ContractsSwaggerUIGeneratorTest {
 
   @Test
   public void testContractTransferToSwaggerUI() throws IOException {
 
-    Swagger20Parser swagger20Parser = new Swagger20Parser();
-
     InputStream in = 
ContractsSwaggerUIGeneratorTest.class.getClassLoader().getResourceAsStream("HelloEndPoint.yaml");
 
     StringBuilder sb = new StringBuilder();
@@ -52,14 +50,15 @@ public class ContractsSwaggerUIGeneratorTest {
       sb.append(new String(bytes, 0, len));
     }
 
-    Swagger swagger = swagger20Parser.parse(sb.toString());
+    OpenAPIParser openAPIParser = new OpenAPIParser();
+    SwaggerParseResult swaggerParseResult = 
openAPIParser.readContents(sb.toString(), null, null);
 
     Path tempDir = Files.createTempDirectory(null);
     Path outputPath = Paths.get(tempDir.toFile().getAbsolutePath()
         + File.separator + "swagger-ui.html");
     DocGenerator docGenerator = 
GeneratorFactory.getGenerator(DocGenerator.class, "default");
     Map<String, Object> docGeneratorConfig = new HashMap<>();
-    docGeneratorConfig.put("contractContent", swagger);
+    docGeneratorConfig.put("contractContent", swaggerParseResult.getOpenAPI());
     docGeneratorConfig.put("outputPath", 
outputPath.toFile().getCanonicalPath());
     Objects.requireNonNull(docGenerator).configure(docGeneratorConfig);
     docGenerator.generate();
diff --git a/pom.xml b/pom.xml
index 768f030..75c7d8c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -111,6 +111,7 @@
     <module>integration-tests</module>
     <module>contractgen</module>
     <module>oas-validator</module>
+    <module>oas-generator</module>
   </modules>
 
   <dependencyManagement>
@@ -199,6 +200,29 @@
         <version>${project.version}</version>
       </dependency>
 
+      <dependency>
+        <groupId>org.apache.servicecomb.toolkit</groupId>
+        <artifactId>oas-generator-core</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+
+      <dependency>
+        <groupId>org.apache.servicecomb.toolkit</groupId>
+        <artifactId>oas-generator-servicecomb</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+
+      <dependency>
+        <groupId>org.apache.servicecomb.toolkit</groupId>
+        <artifactId>oas-generator-jaxrs</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+
+      <dependency>
+        <groupId>org.apache.servicecomb.toolkit</groupId>
+        <artifactId>oas-generator-spring</artifactId>
+        <version>${project.version}</version>
+      </dependency>
     </dependencies>
   </dependencyManagement>
 
diff --git a/toolkit-distribution/src/release/LICENSE 
b/toolkit-distribution/src/release/LICENSE
index af84657..ff090bc 100644
--- a/toolkit-distribution/src/release/LICENSE
+++ b/toolkit-distribution/src/release/LICENSE
@@ -307,6 +307,13 @@ You can find a copy of the License at 
licenses/LICENSE-cal10n
 * Compiler assisted localization library (CAL10N) - API 
(ch.qos.cal10n:cal10n-api:0.8.1 - http://cal10n.qos.ch/cal10n-api)
 * Compiler assisted localization library (CAL10N) - API 
(ch.qos.cal10n:cal10n-api:0.7.4 - http://cal10n.qos.ch/cal10n-api)
 
+===========================================================================
+This product bundles of asm which is licensed under BSD 3-Clause License
+For details, see 
https://github.com/hamcrest/JavaHamcrest/blob/master/LICENSE.txt
+You can find a copy of the License at licenses/LICENSE-asm
+
+* asm (org.ow2.asm:asm:7.2 - http://asm.ow2.io/)
+
 ================================================================
 This product bundles the following libraries which are licensed
 under the Apache License v2.
@@ -429,6 +436,8 @@ For details, see their respective project links.
 * org.xmlunit:xmlunit-core (org.xmlunit:xmlunit-core:2.6.2 - 
https://www.xmlunit.org/)
 * project ':json-path' (com.jayway.jsonpath:json-path:2.4.0 - 
https://github.com/jayway/JsonPath)
 * swagger-annotations (io.swagger.core.v3:swagger-annotations:2.0.8 - 
https://github.com/swagger-api/swagger-core/modules/swagger-annotations)
+* Spring Web (org.springframework:spring-web:5.2.0.RELEASE - 
https://github.com/spring-projects/spring-framework)
+* swagger-annotations (io.swagger:swagger-annotations:1.5.22 - 
https://github.com/swagger-api/swagger-core/modules/swagger-annotations)
 * swagger-annotations (io.swagger.core.v3:swagger-annotations:2.0.9 - 
https://github.com/swagger-api/swagger-core/modules/swagger-annotations)
 * swagger-annotations (io.swagger:swagger-annotations:1.5.22 - 
https://github.com/swagger-api/swagger-core/modules/swagger-annotations)
 * swagger-codegen (core library) (io.swagger:swagger-codegen:2.4.3 - 
https://github.com/swagger-api/swagger-codegen/modules/swagger-codegen)
diff --git 
a/toolkit-maven-plugin/src/main/java/org/apache/servicecomb/toolkit/plugin/GenerateUtil.java
 
b/toolkit-maven-plugin/src/main/java/org/apache/servicecomb/toolkit/plugin/GenerateUtil.java
index 4a2f0b2..f0dbb00 100755
--- 
a/toolkit-maven-plugin/src/main/java/org/apache/servicecomb/toolkit/plugin/GenerateUtil.java
+++ 
b/toolkit-maven-plugin/src/main/java/org/apache/servicecomb/toolkit/plugin/GenerateUtil.java
@@ -35,7 +35,6 @@ import java.util.Optional;
 
 import org.apache.maven.artifact.DependencyResolutionRequiredException;
 import org.apache.maven.project.MavenProject;
-import org.apache.servicecomb.swagger.SwaggerUtils;
 import org.apache.servicecomb.toolkit.CodeGenerator;
 import org.apache.servicecomb.toolkit.ContractsGenerator;
 import org.apache.servicecomb.toolkit.DocGenerator;
@@ -45,6 +44,10 @@ import 
org.apache.servicecomb.toolkit.codegen.MicroServiceFramework;
 import org.apache.servicecomb.toolkit.codegen.ProjectMetaConstant;
 import org.openapitools.codegen.config.CodegenConfigurator;
 
+import io.swagger.parser.OpenAPIParser;
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.parser.core.models.SwaggerParseResult;
+
 class GenerateUtil {
 
   private static String providerProjectNameSuffix = "-provider";
@@ -90,7 +93,13 @@ class GenerateUtil {
         }
         Map<String, Object> docGeneratorConfig = new HashMap<>();
 
-        docGeneratorConfig.put("contractContent", 
SwaggerUtils.parseSwagger(file.toUri().toURL()));
+        SwaggerParseResult swaggerParseResult = new OpenAPIParser()
+            .readLocation(file.toUri().toURL().toString(), null, null);
+        OpenAPI openAPI = swaggerParseResult.getOpenAPI();
+        if (openAPI == null) {
+          return super.visitFile(file, attrs);
+        }
+        docGeneratorConfig.put("contractContent", openAPI);
         docGeneratorConfig.put("outputPath",
             documentOutput + File.separator + 
file.getParent().toFile().getName() + File.separator + file.toFile()
                 .getName()

Reply via email to