Skip to content

Commit

Permalink
[Java] adds snapshotVersion CLI option and uses API version as artifa…
Browse files Browse the repository at this point in the history
…ctVersion by default (OpenAPITools#2033)

* [Java]: adds snapshotVersion CLI option and uses API version as artifactVersion by default

* fix some typos

* fix naming diff between branches

* ensure-up-to-date

* update samples
  • Loading branch information
pablolazaro authored and wing328 committed Feb 18, 2019
1 parent 7f61363 commit 315d89d
Show file tree
Hide file tree
Showing 19 changed files with 107 additions and 1 deletion.
1 change: 1 addition & 0 deletions docs/generators/groovy.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,5 @@ sidebar_label: groovy
|parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|snapshotVersion|Uses a SNAPSHOT version.| |null|
|configPackage|configuration package for generated code| |null|
1 change: 1 addition & 0 deletions docs/generators/java-inflector.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,4 @@ sidebar_label: java-inflector
|parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|snapshotVersion|Uses a SNAPSHOT version.| |null|
1 change: 1 addition & 0 deletions docs/generators/java-msf4j.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ sidebar_label: java-msf4j
|parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|snapshotVersion|Uses a SNAPSHOT version.| |null|
|implFolder|folder for generated implementation code| |null|
|title|a title describing the application| |null|
|useBeanValidation|Use BeanValidation API annotations| |true|
Expand Down
1 change: 1 addition & 0 deletions docs/generators/java-pkmst.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ sidebar_label: java-pkmst
|parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|snapshotVersion|Uses a SNAPSHOT version.| |null|
|groupId|groupId in generated pom.xml| |null|
|artifactId|artifactId in generated pom.xml| |null|
|artifactVersion|artifact version in generated pom.xml| |null|
Expand Down
1 change: 1 addition & 0 deletions docs/generators/java-play-framework.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ sidebar_label: java-play-framework
|parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|snapshotVersion|Uses a SNAPSHOT version.| |null|
|title|server title name or client service name| |null|
|configPackage|configuration package for generated code| |null|
|basePackage|base package for generated code| |null|
Expand Down
1 change: 1 addition & 0 deletions docs/generators/java-undertow-server.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,4 @@ sidebar_label: java-undertow-server
|parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|snapshotVersion|Uses a SNAPSHOT version.| |null|
1 change: 1 addition & 0 deletions docs/generators/java-vertx.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,5 +41,6 @@ sidebar_label: java-vertx
|parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|snapshotVersion|Uses a SNAPSHOT version.| |null|
|rxInterface|When specified, API interfaces are generated with RX and methods return Single<> and Comparable.| |false|
|vertxSwaggerRouterVersion|Specify the version of the swagger router library| |null|
1 change: 1 addition & 0 deletions docs/generators/java.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ sidebar_label: java
|parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|snapshotVersion|Uses a SNAPSHOT version.| |null|
|useRxJava|Whether to use the RxJava adapter with the retrofit2 library.| |false|
|useRxJava2|Whether to use the RxJava2 adapter with the retrofit2 library.| |false|
|parcelableModel|Whether to generate models for Android that implement Parcelable with the okhttp-gson library.| |false|
Expand Down
1 change: 1 addition & 0 deletions docs/generators/jaxrs-cxf-cdi.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ sidebar_label: jaxrs-cxf-cdi
|parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|snapshotVersion|Uses a SNAPSHOT version.| |null|
|implFolder|folder for generated implementation code| |null|
|title|a title describing the application| |null|
|useBeanValidation|Use BeanValidation API annotations| |true|
Expand Down
1 change: 1 addition & 0 deletions docs/generators/jaxrs-cxf-client.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ sidebar_label: jaxrs-cxf-client
|parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|snapshotVersion|Uses a SNAPSHOT version.| |null|
|useBeanValidation|Use BeanValidation API annotations| |false|
|useGzipFeatureForTests|Use Gzip Feature for tests| |false|
|useLoggingFeatureForTests|Use Logging Feature for tests| |false|
Expand Down
1 change: 1 addition & 0 deletions docs/generators/jaxrs-cxf.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ sidebar_label: jaxrs-cxf
|parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|snapshotVersion|Uses a SNAPSHOT version.| |null|
|implFolder|folder for generated implementation code| |null|
|title|a title describing the application| |null|
|useBeanValidation|Use BeanValidation API annotations| |true|
Expand Down
1 change: 1 addition & 0 deletions docs/generators/jaxrs-jersey.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ sidebar_label: jaxrs-jersey
|parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|snapshotVersion|Uses a SNAPSHOT version.| |null|
|implFolder|folder for generated implementation code| |null|
|title|a title describing the application| |null|
|useBeanValidation|Use BeanValidation API annotations| |true|
Expand Down
1 change: 1 addition & 0 deletions docs/generators/jaxrs-resteasy-eap.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ sidebar_label: jaxrs-resteasy-eap
|parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|snapshotVersion|Uses a SNAPSHOT version.| |null|
|implFolder|folder for generated implementation code| |null|
|title|a title describing the application| |null|
|useBeanValidation|Use BeanValidation API annotations| |true|
Expand Down
1 change: 1 addition & 0 deletions docs/generators/jaxrs-resteasy.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ sidebar_label: jaxrs-resteasy
|parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|snapshotVersion|Uses a SNAPSHOT version.| |null|
|implFolder|folder for generated implementation code| |null|
|title|a title describing the application| |null|
|useBeanValidation|Use BeanValidation API annotations| |true|
Expand Down
1 change: 1 addition & 0 deletions docs/generators/jaxrs-spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ sidebar_label: jaxrs-spec
|parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|snapshotVersion|Uses a SNAPSHOT version.| |null|
|implFolder|folder for generated implementation code| |null|
|title|a title describing the application| |null|
|useBeanValidation|Use BeanValidation API annotations| |true|
Expand Down
1 change: 1 addition & 0 deletions docs/generators/spring.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ sidebar_label: spring
|parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|snapshotVersion|Uses a SNAPSHOT version.| |null|
|title|server title name or client service name| |null|
|configPackage|configuration package for generated code| |null|
|basePackage|base package (invokerPackage) for generated code| |null|
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -283,10 +283,14 @@ public static enum ENUM_PROPERTY_NAMING_TYPE {camelCase, PascalCase, snake_case,
public static final String ENABLE_POST_PROCESS_FILE_DESC = "Enable post-processing file using environment variables.";

public static final String OPEN_API_SPEC_NAME = "openAPISpecName";

public static final String GENERATE_ALIAS_AS_MODEL = "generateAliasAsModel";
public static final String GENERATE_ALIAS_AS_MODEL_DESC = "Generate alias to map, array as models";

public static final String USE_COMPARE_NET_OBJECTS = "useCompareNetObjects";
public static final String USE_COMPARE_NET_OBJECTS_DESC = "Use KellermanSoftware.CompareNetObjects for deep recursive object comparison. WARNING: this option incurs potential performance impact.";

public static final String SNAPSHOT_VERSION = "snapshotVersion";
public static final String SNAPSHOT_VERSION_DESC = "Uses a SNAPSHOT version.";

}
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,7 @@ public AbstractJavaCodegen() {
cliOptions.add(CliOption.newString(CodegenConstants.PARENT_GROUP_ID, CodegenConstants.PARENT_GROUP_ID_DESC));
cliOptions.add(CliOption.newString(CodegenConstants.PARENT_ARTIFACT_ID, CodegenConstants.PARENT_ARTIFACT_ID_DESC));
cliOptions.add(CliOption.newString(CodegenConstants.PARENT_VERSION, CodegenConstants.PARENT_VERSION_DESC));
cliOptions.add(CliOption.newString(CodegenConstants.SNAPSHOT_VERSION, CodegenConstants.SNAPSHOT_VERSION_DESC));
}

@Override
Expand Down Expand Up @@ -264,11 +265,21 @@ public void processOpts() {

if (additionalProperties.containsKey(CodegenConstants.ARTIFACT_VERSION)) {
this.setArtifactVersion((String) additionalProperties.get(CodegenConstants.ARTIFACT_VERSION));
} else if (this.getVersionFromSpecification() != null) {
this.setArtifactVersion(this.getVersionFromSpecification());
} else {
//not set, use to be passed to template
additionalProperties.put(CodegenConstants.ARTIFACT_VERSION, artifactVersion);
}

if (additionalProperties.containsKey(CodegenConstants.SNAPSHOT_VERSION)) {
Boolean useSnapshotVersion = Boolean.valueOf((String) additionalProperties.get(CodegenConstants.SNAPSHOT_VERSION));

if (useSnapshotVersion) {
this.setArtifactVersion(this.buildSnapshotVersion(this.artifactVersion));
}
}

if (additionalProperties.containsKey(CodegenConstants.ARTIFACT_URL)) {
this.setArtifactUrl((String) additionalProperties.get(CodegenConstants.ARTIFACT_URL));
} else {
Expand Down Expand Up @@ -1340,6 +1351,29 @@ private String deriveInvokerPackageName(String input) {
return sb.toString();
}

/**
* Gets version from API specification.
*
* @return API version
*/
private String getVersionFromSpecification () {
if (this.openAPI != null && this.openAPI.getInfo() != null) {
return this.openAPI.getInfo().getVersion();
} else {
return null;
}
}

/**
* Builds a SNAPSHOT version from a given version.
*
* @param version
* @return SNAPSHOT version
*/
private String buildSnapshotVersion (String version) {
return version + "-" + "SNAPSHOT";
}

public void setSupportJava6(boolean value) {
this.supportJava6 = value;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,52 @@ public void apiDocFileFolder() {
codegen.setOutputDir("/User/open.api.tools");
Assert.assertEquals(codegen.apiDocFileFolder(), "/User/open.api.tools/docs/".replace('/', File.separatorChar));
}

@Test(description = "tests if API version specification is used if no version is provided in additional properties")
public void openApiversionTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();

OpenAPI api = TestUtils.createOpenAPI();
codegen.setOpenAPI(api);

codegen.processOpts();

Assert.assertEquals(codegen.getArtifactVersion(), "1.0.7");
}

@Test(description = "tests if artifactVersion additional property is used")
public void additionalPropertyArtifactVersionTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();

codegen.additionalProperties().put("artifactVersion", "1.1.1");

OpenAPI api = TestUtils.createOpenAPI();
codegen.setOpenAPI(api);

codegen.processOpts();

Assert.assertEquals(codegen.getArtifactVersion(), "1.1.1");
}

@Test(description = "tests if default version is used when neither OpenAPI version nor artifactVersion additional property has been provided")
public void defautlVersionTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();

codegen.processOpts();

Assert.assertEquals(codegen.getArtifactVersion(), "1.0.0");
}

@Test(description = "tests if default version is used when neither OpenAPI version nor artifactVersion additional property has been provided")
public void snapshotVersionTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();

codegen.additionalProperties().put("snapshotVersion", "true");

codegen.processOpts();

Assert.assertEquals(codegen.getArtifactVersion(), "1.0.0-SNAPSHOT");
}

private static class P_AbstractJavaCodegen extends AbstractJavaCodegen {
@Override
Expand All @@ -214,5 +260,11 @@ public String getName() {
public String getHelp() {
return null;
}

/**
* Gets artifact version.
* Only for testing purposes.
*/
public String getArtifactVersion () { return this.artifactVersion; }
}
}

0 comments on commit 315d89d

Please sign in to comment.