switch to oas-generator
Signed-off-by: kakulisen <18813972746@163.com>
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.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 @@
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 @@
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.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 @@
private final static String DOC_SUFFIX = ".html";
- private Swagger contractContent;
+ private OpenAPI contractContent;
private String outputPath = ".";
@@ -55,7 +55,7 @@
@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.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 @@
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 @@
* 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 @@
* 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 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.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 @@
}
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()