This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit f1c3a633ff619cb8bc43a7d105d8955373ae6275 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Thu Sep 27 11:06:36 2018 +0200 CAMEL-12828: camel-restdsl-swagger:generate - Add option to generate dto objects --- tooling/maven/camel-restdsl-swagger-plugin/pom.xml | 13 +++++ .../src/it/customized/pom.xml | 20 ++++++++ .../src/it/simple-xml/pom.xml | 23 +++++++++ .../src/it/simple/pom.xml | 23 +++++++++ .../generator/swagger/AbstractGenerateMojo.java | 56 ++++++++++++++++++++++ .../maven/generator/swagger/GenerateMojo.java | 4 ++ .../maven/generator/swagger/GenerateXmlMojo.java | 4 ++ 7 files changed, 143 insertions(+) diff --git a/tooling/maven/camel-restdsl-swagger-plugin/pom.xml b/tooling/maven/camel-restdsl-swagger-plugin/pom.xml index 11b0d95..7a99f0a 100644 --- a/tooling/maven/camel-restdsl-swagger-plugin/pom.xml +++ b/tooling/maven/camel-restdsl-swagger-plugin/pom.xml @@ -32,6 +32,11 @@ <name>Camel :: Maven Plugins :: Swagger REST DSL Generator Maven plugin</name> <description>Maven plugin that generates REST DSL RouteBuilder from Swagger specification</description> + <properties> + <swagger-codegen-maven-plugin-version>2.3.1</swagger-codegen-maven-plugin-version> + </properties> + + <build> <plugins> <plugin> @@ -92,14 +97,22 @@ <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-core</artifactId> + <version>3.5.4</version> </dependency> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-plugin-api</artifactId> + <version>3.5.4</version> + </dependency> + <dependency> + <groupId>org.twdata.maven</groupId> + <artifactId>mojo-executor</artifactId> + <version>2.3.0</version> </dependency> <dependency> <groupId>org.apache.maven.plugin-tools</groupId> <artifactId>maven-plugin-annotations</artifactId> + <version>3.5</version> <scope>provided</scope> </dependency> </dependencies> diff --git a/tooling/maven/camel-restdsl-swagger-plugin/src/it/customized/pom.xml b/tooling/maven/camel-restdsl-swagger-plugin/src/it/customized/pom.xml index f6544bc..b91faba 100644 --- a/tooling/maven/camel-restdsl-swagger-plugin/src/it/customized/pom.xml +++ b/tooling/maven/camel-restdsl-swagger-plugin/src/it/customized/pom.xml @@ -66,5 +66,25 @@ <artifactId>camel-swagger-rest-dsl-generator</artifactId> <version>@project.version@</version> </dependency> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-core</artifactId> + <version>@project.version@</version> + </dependency> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-swagger-java</artifactId> + <version>@project.version@</version> + </dependency> + <dependency> + <groupId>com.google.code.gson</groupId> + <artifactId>gson</artifactId> + <version>2.8.5</version> + </dependency> + <dependency> + <groupId>org.threeten</groupId> + <artifactId>threetenbp</artifactId> + <version>1.3.7</version> + </dependency> </dependencies> </project> diff --git a/tooling/maven/camel-restdsl-swagger-plugin/src/it/simple-xml/pom.xml b/tooling/maven/camel-restdsl-swagger-plugin/src/it/simple-xml/pom.xml index 95307f0..dce6e63 100644 --- a/tooling/maven/camel-restdsl-swagger-plugin/src/it/simple-xml/pom.xml +++ b/tooling/maven/camel-restdsl-swagger-plugin/src/it/simple-xml/pom.xml @@ -33,6 +33,29 @@ <maven.compiler.target>1.8</maven.compiler.target> </properties> + <dependencies> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-core</artifactId> + <version>@project.version@</version> + </dependency> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-swagger-java</artifactId> + <version>@project.version@</version> + </dependency> + <dependency> + <groupId>com.google.code.gson</groupId> + <artifactId>gson</artifactId> + <version>2.8.5</version> + </dependency> + <dependency> + <groupId>org.threeten</groupId> + <artifactId>threetenbp</artifactId> + <version>1.3.7</version> + </dependency> + </dependencies> + <build> <plugins> <plugin> diff --git a/tooling/maven/camel-restdsl-swagger-plugin/src/it/simple/pom.xml b/tooling/maven/camel-restdsl-swagger-plugin/src/it/simple/pom.xml index 41216a6..4da5d91 100644 --- a/tooling/maven/camel-restdsl-swagger-plugin/src/it/simple/pom.xml +++ b/tooling/maven/camel-restdsl-swagger-plugin/src/it/simple/pom.xml @@ -33,6 +33,29 @@ <maven.compiler.target>1.8</maven.compiler.target> </properties> + <dependencies> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-core</artifactId> + <version>@project.version@</version> + </dependency> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-swagger-java</artifactId> + <version>@project.version@</version> + </dependency> + <dependency> + <groupId>com.google.code.gson</groupId> + <artifactId>gson</artifactId> + <version>2.8.5</version> + </dependency> + <dependency> + <groupId>org.threeten</groupId> + <artifactId>threetenbp</artifactId> + <version>1.3.7</version> + </dependency> + </dependencies> + <build> <plugins> <plugin> diff --git a/tooling/maven/camel-restdsl-swagger-plugin/src/main/java/org/apache/camel/maven/generator/swagger/AbstractGenerateMojo.java b/tooling/maven/camel-restdsl-swagger-plugin/src/main/java/org/apache/camel/maven/generator/swagger/AbstractGenerateMojo.java index 63f8754..bd993cd 100644 --- a/tooling/maven/camel-restdsl-swagger-plugin/src/main/java/org/apache/camel/maven/generator/swagger/AbstractGenerateMojo.java +++ b/tooling/maven/camel-restdsl-swagger-plugin/src/main/java/org/apache/camel/maven/generator/swagger/AbstractGenerateMojo.java @@ -23,11 +23,25 @@ import java.net.URL; import java.net.URLClassLoader; import org.apache.camel.generator.swagger.DestinationGenerator; +import org.apache.maven.execution.MavenSession; import org.apache.maven.plugin.AbstractMojo; +import org.apache.maven.plugin.BuildPluginManager; import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugins.annotations.Component; import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.MavenProject; +import static org.twdata.maven.mojoexecutor.MojoExecutor.artifactId; +import static org.twdata.maven.mojoexecutor.MojoExecutor.configuration; +import static org.twdata.maven.mojoexecutor.MojoExecutor.element; +import static org.twdata.maven.mojoexecutor.MojoExecutor.executeMojo; +import static org.twdata.maven.mojoexecutor.MojoExecutor.executionEnvironment; +import static org.twdata.maven.mojoexecutor.MojoExecutor.goal; +import static org.twdata.maven.mojoexecutor.MojoExecutor.groupId; +import static org.twdata.maven.mojoexecutor.MojoExecutor.name; +import static org.twdata.maven.mojoexecutor.MojoExecutor.plugin; +import static org.twdata.maven.mojoexecutor.MojoExecutor.version; + abstract class AbstractGenerateMojo extends AbstractMojo { @Parameter @@ -45,6 +59,21 @@ abstract class AbstractGenerateMojo extends AbstractMojo { @Parameter(defaultValue = "${project.basedir}/src/spec/swagger.json", required = true) String specificationUri; + @Parameter(defaultValue = "true") + boolean dto; + + @Parameter(defaultValue = "2.3.1") + String swaggerCodegenMavenPluginVersion; + + @Parameter(defaultValue = "${project}", readonly = true) + private MavenProject mavenProject; + + @Parameter(defaultValue = "${session}", readonly = true) + private MavenSession mavenSession; + + @Component + private BuildPluginManager pluginManager; + DestinationGenerator createDestinationGenerator() throws MojoExecutionException { final Class<DestinationGenerator> destinationGeneratorClass; @@ -86,4 +115,31 @@ abstract class AbstractGenerateMojo extends AbstractMojo { return destinationGeneratorObject; } + void generateDto() throws MojoExecutionException { + getLog().info("Generating DTO classes using io.swagger:swagger-codegen-maven-plugin:" + swaggerCodegenMavenPluginVersion); + + executeMojo( + plugin( + groupId("io.swagger"), + artifactId("swagger-codegen-maven-plugin"), + version(swaggerCodegenMavenPluginVersion) + ), + goal("generate"), + configuration( + element(name("inputSpec"), specificationUri), + element(name("language"), "java"), + element(name("generateApis"), "false"), + element(name("generateModelTests"), "false"), + element(name("generateModelDocumentation"), "false"), + element(name("generateSupportingFiles"), "false") + ), + executionEnvironment( + mavenProject, + mavenSession, + pluginManager + ) + ); + + } + } diff --git a/tooling/maven/camel-restdsl-swagger-plugin/src/main/java/org/apache/camel/maven/generator/swagger/GenerateMojo.java b/tooling/maven/camel-restdsl-swagger-plugin/src/main/java/org/apache/camel/maven/generator/swagger/GenerateMojo.java index 3006b57..1cd48e6 100644 --- a/tooling/maven/camel-restdsl-swagger-plugin/src/main/java/org/apache/camel/maven/generator/swagger/GenerateMojo.java +++ b/tooling/maven/camel-restdsl-swagger-plugin/src/main/java/org/apache/camel/maven/generator/swagger/GenerateMojo.java @@ -95,6 +95,10 @@ public class GenerateMojo extends AbstractGenerateMojo { throw new MojoExecutionException( "Unable to generate REST DSL Swagger sources from specification: " + specificationUri, e); } + + if (dto) { + generateDto(); + } } } diff --git a/tooling/maven/camel-restdsl-swagger-plugin/src/main/java/org/apache/camel/maven/generator/swagger/GenerateXmlMojo.java b/tooling/maven/camel-restdsl-swagger-plugin/src/main/java/org/apache/camel/maven/generator/swagger/GenerateXmlMojo.java index bee62ad..a8b7ed9 100644 --- a/tooling/maven/camel-restdsl-swagger-plugin/src/main/java/org/apache/camel/maven/generator/swagger/GenerateXmlMojo.java +++ b/tooling/maven/camel-restdsl-swagger-plugin/src/main/java/org/apache/camel/maven/generator/swagger/GenerateXmlMojo.java @@ -94,6 +94,10 @@ public class GenerateXmlMojo extends AbstractGenerateMojo { throw new MojoExecutionException( "Unable to generate REST DSL Swagger sources from specification: " + specificationUri, e); } + + if (dto) { + generateDto(); + } } }