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());
     }
   }
 }