You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2019/07/10 03:49:35 UTC
[servicecomb-toolkit] 02/08: SCB-1351 Some issues about using
toolkit plugin
This is an automated email from the ASF dual-hosted git repository.
ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-toolkit.git
commit e0a7d52ad23002cee306fb4779e82905c4c3514a
Author: MabinGo <bi...@huawei.com>
AuthorDate: Fri Jul 5 23:32:35 2019 +0800
SCB-1351 Some issues about using toolkit plugin
fix bug about generating document
Signed-off-by: MabinGo <bi...@huawei.com>
---
.../docgen/ContractsSwaggerUIGenerator.java | 2 +-
.../toolkit/plugin/GenerateContractsDocMojo.java | 46 ++++++++++++++--------
2 files changed, 31 insertions(+), 17 deletions(-)
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 6926cdb..9387d2d 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
@@ -102,7 +102,7 @@ public class ContractsSwaggerUIGenerator implements DocGenerator {
private String correctPath(String filepath) {
if (!filepath.endsWith(DOC_SUFFIX)) {
- return filepath + "-" + DOC_FORMAT + DOC_SUFFIX;
+ return filepath + DOC_SUFFIX;
}
return filepath;
diff --git a/toolkit-maven-plugin/src/main/java/org/apache/servicecomb/toolkit/plugin/GenerateContractsDocMojo.java b/toolkit-maven-plugin/src/main/java/org/apache/servicecomb/toolkit/plugin/GenerateContractsDocMojo.java
index ba46c53..cb7a853 100755
--- a/toolkit-maven-plugin/src/main/java/org/apache/servicecomb/toolkit/plugin/GenerateContractsDocMojo.java
+++ b/toolkit-maven-plugin/src/main/java/org/apache/servicecomb/toolkit/plugin/GenerateContractsDocMojo.java
@@ -38,8 +38,10 @@ import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.plugins.annotations.ResolutionScope;
import org.apache.maven.project.MavenProject;
import org.apache.servicecomb.swagger.SwaggerUtils;
-import org.apache.servicecomb.toolkit.GeneratorFactory;
import org.apache.servicecomb.toolkit.DocGenerator;
+import org.apache.servicecomb.toolkit.GeneratorFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
@Mojo(name = "generateDoc", defaultPhase = LifecyclePhase.COMPILE, requiresDependencyResolution = ResolutionScope.COMPILE)
@Execute(goal = "generateDoc",
@@ -47,44 +49,56 @@ import org.apache.servicecomb.toolkit.DocGenerator;
)
public class GenerateContractsDocMojo extends AbstractMojo {
- @Parameter(defaultValue = "${project}", required = true, readonly = true)
+ private static Logger LOGGER = LoggerFactory.getLogger(ContractGenerator.class);
+
+ @Parameter(defaultValue = "${project}")
private MavenProject project;
- @Parameter(defaultValue = "contracts")
- private String outputDir;
+ @Parameter(defaultValue = "contractLocation")
+ private String contractLocation;
- @Parameter(defaultValue = ".yaml")
- private String format;
+ @Parameter(defaultValue = "swagger-ui")
+ private String docType;
- @Parameter(defaultValue = "build/doc")
- private String docOutputDir;
+ @Parameter(defaultValue = "docOutput")
+ private String docOutput;
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
- ContractGenerator contractGenerator = new ContractGenerator(project);
- contractGenerator.generateAndOutput(outputDir, format);
-
try {
- Files.walkFileTree(Paths.get(outputDir), new SimpleFileVisitor<Path>() {
+ if (!Files.exists(Paths.get(contractLocation))) {
+ throw new MojoFailureException("contractLocation directory is not exists");
+ }
+ if (Files.list(Paths.get(contractLocation)).count() == 0) {
+ throw new MojoFailureException(contractLocation + " has no contractLocation files");
+ }
+
+ DocGenerator docGenerator = GeneratorFactory.getGenerator(DocGenerator.class, docType);
+ if (docGenerator == null) {
+ throw new MojoFailureException("DocGenerator's implementation is not found");
+ }
+
+ Files.walkFileTree(Paths.get(contractLocation), new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
- DocGenerator docGenerator = GeneratorFactory.getGenerator(DocGenerator.class, format);
Map<String, Object> docGeneratorConfig = new HashMap<>();
docGeneratorConfig.put("contractContent", SwaggerUtils.parseSwagger(file.toUri().toURL()));
- docGeneratorConfig.put("outputPath",docOutputDir + File.separator
+ docGeneratorConfig.put("outputPath", docOutput + File.separator
+ file.toFile().getName().substring(0, file.toFile().getName().indexOf(".")));
docGenerator.configure(docGeneratorConfig);
- docGenerator.generate();
+ if (!docGenerator.generate()) {
+ throw new RuntimeException("Failed to generate doc base on file " + file.toFile().getName());
+ }
return super.visitFile(file, attrs);
}
});
} catch (IOException e) {
- getLog().error(e.getMessage());
+ LOGGER.error(e.getMessage());
}
}
}