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 8a5e7ee1d7a061670331da8c8fc7207ce06761bf Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Thu Sep 27 12:04:12 2018 +0200 CAMEL-12828: camel-restdsl-swagger:generate - Add option to generate dto objects --- .../src/it/simple-dto/pom.xml | 1 + .../main/docs/camel-restdsl-swagger-plugin.adoc | 48 ++++++++++++++++++++++ .../generator/swagger/AbstractGenerateMojo.java | 24 +++++++++++ 3 files changed, 73 insertions(+) diff --git a/tooling/maven/camel-restdsl-swagger-plugin/src/it/simple-dto/pom.xml b/tooling/maven/camel-restdsl-swagger-plugin/src/it/simple-dto/pom.xml index 005ad2a..7ebd095 100644 --- a/tooling/maven/camel-restdsl-swagger-plugin/src/it/simple-dto/pom.xml +++ b/tooling/maven/camel-restdsl-swagger-plugin/src/it/simple-dto/pom.xml @@ -70,6 +70,7 @@ </goals> <configuration> <modelPackage>com.foo</modelPackage> + <modelWithXml>false</modelWithXml> </configuration> </execution> </executions> diff --git a/tooling/maven/camel-restdsl-swagger-plugin/src/main/docs/camel-restdsl-swagger-plugin.adoc b/tooling/maven/camel-restdsl-swagger-plugin/src/main/docs/camel-restdsl-swagger-plugin.adoc index a999532..e7b5c0d 100644 --- a/tooling/maven/camel-restdsl-swagger-plugin/src/main/docs/camel-restdsl-swagger-plugin.adoc +++ b/tooling/maven/camel-restdsl-swagger-plugin/src/main/docs/camel-restdsl-swagger-plugin.adoc @@ -46,6 +46,26 @@ Works as `generate` goal but also generates DTO model classes by automatic execu the swagger-codegen-maven-plugin to generate java source code of the DTO model classes from the swagger specification. +This plugin has been scoped and limited to only support a good effort set of defaults for +using the swagger-codegen-maven-plugin to generate the model DTOs. If you need more power +and flexibility then use the https://github.com/swagger-api/swagger-codegen/tree/master/modules/swagger-codegen-maven-plugin[Swagger Codegen Maven Plugin] +directly to generate the DTO and not this plugin. + +The DTO classes may require additional dependencies such as: +[source,xml] +---- + <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> +---- + === Options The plugin supports the following *additional* options @@ -53,7 +73,11 @@ The plugin supports the following *additional* options |======================================== | Parameter | Default Value | Description | `swaggerCodegenMavenPluginVersion` | 2.3.1 | The version of the `io.swagger:swagger-codegen-maven-plugin` maven plugin to be used. +| `modelOutput` | | Target output path (default is ${project.build.directory}/generated-sources/swagger) | `modelPackage` | `io.swagger.client.model` | The package to use for generated model objects/classes +| `modelNamePrefix` | | Sets the pre- or suffix for model classes and enums +| `modelNameSuffix` | | Sets the pre- or suffix for model classes and enums +| `modelWithXml` | true | Enable XML annotations inside the generated models (only works with ibraries that provide support for JSON and XML) |======================================== @@ -86,6 +110,26 @@ Works as `generate-xml` goal but also generates DTO model classes by automatic e the swagger-codegen-maven-plugin to generate java source code of the DTO model classes from the swagger specification. +This plugin has been scoped and limited to only support a good effort set of defaults for +using the swagger-codegen-maven-plugin to generate the model DTOs. If you need more power +and flexibility then use the https://github.com/swagger-api/swagger-codegen/tree/master/modules/swagger-codegen-maven-plugin[Swagger Codegen Maven Plugin] +directly to generate the DTO and not this plugin. + +The DTO classes may require additional dependencies such as: +[source,xml] +---- + <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> +---- + === Options The plugin supports the following *additional* options @@ -93,6 +137,10 @@ The plugin supports the following *additional* options |======================================== | Parameter | Default Value | Description | `swaggerCodegenMavenPluginVersion` | 2.3.1 | The version of the `io.swagger:swagger-codegen-maven-plugin` maven plugin to be used. +| `modelOutput` | | Target output path (default is ${project.build.directory}/generated-sources/swagger) | `modelPackage` | `io.swagger.client.model` | The package to use for generated model objects/classes +| `modelNamePrefix` | | Sets the pre- or suffix for model classes and enums +| `modelNameSuffix` | | Sets the pre- or suffix for model classes and enums +| `modelWithXml` | true | Enable XML annotations inside the generated models (only works with ibraries that provide support for JSON and XML) |======================================== 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 5ed1126..bf4f63d 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 @@ -65,9 +65,21 @@ abstract class AbstractGenerateMojo extends AbstractMojo { @Parameter(defaultValue = "2.3.1") String swaggerCodegenMavenPluginVersion; + @Parameter(defaultValue = "${project.build.directory}/generated-sources/swagger") + String modelOutput; + @Parameter String modelPackage; + @Parameter + String modelNamePrefix; + + @Parameter + String modelNameSuffix; + + @Parameter(defaultValue = "true") + String modelWithXml; + @Parameter(defaultValue = "${project}", readonly = true) private MavenProject mavenProject; @@ -131,9 +143,21 @@ abstract class AbstractGenerateMojo extends AbstractMojo { elements.add(new MojoExecutor.Element("generateModelTests", "false")); elements.add(new MojoExecutor.Element("generateModelDocumentation", "false")); elements.add(new MojoExecutor.Element("generateSupportingFiles", "false")); + if (modelOutput != null) { + elements.add(new MojoExecutor.Element("output", modelOutput)); + } if (modelPackage != null) { elements.add(new MojoExecutor.Element("modelPackage", modelPackage)); } + if (modelNamePrefix != null) { + elements.add(new MojoExecutor.Element("modelNamePrefix", modelNamePrefix)); + } + if (modelNameSuffix != null) { + elements.add(new MojoExecutor.Element("modelNameSuffix", modelNameSuffix)); + } + if (modelWithXml != null) { + elements.add(new MojoExecutor.Element("withXml", modelPackage)); + } executeMojo( plugin(