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 <[email protected]>
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 <[email protected]>
---
 .../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());
     }
   }
 }

Reply via email to