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