Skip to content

Commit

Permalink
[JAVA] new Feature interface: Documentation Provider and Annotation L…
Browse files Browse the repository at this point in the history
…ibrary (#11258)

* Implement DocumentationProviderFeatures and integrate it in AbstractJavaCodegen

* Integrate DocumentationProviderFeatures in SpringCodegen

* Run new test config spring-boot-springdoc

* Do not use Locale.ROOT

* Do not use Locale.ROOT, use NONE instead of empty list

* Revert "Do not use Locale.ROOT"

This reverts commit a0d6aac.

* Do not use forbidden APIs

* Fix spring maven plugin example

* Introduce DocumentationProviderFeaturesTest.java

* replace AUTO with preferredAnnotationLibrary

* remove sout.println from Test

* Apply code style.

* Update spring sample configuration to use the new property

* Update samples after merge

* fix atBean import

* Generate all samples

* Add ParameterObject to test

* Allow Subclasses to opt out

* Use OpenAPI 2 (fka Swagger RESTful API Documentation Specification) instead of just "Swagger"

* export generator docs

* Fix typo

* Fix typo - update docs.
  • Loading branch information
cachescrubber committed Jan 22, 2022
1 parent 20bf0c7 commit e1c5b22
Show file tree
Hide file tree
Showing 148 changed files with 3,967 additions and 311 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-e
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
groupId: org.openapitools.openapi3
oas3: "true"
documentationProvider: springdoc
java8: "false"
useBeanValidation: true
artifactId: spring-boot-beanvalidation-no-nullable
Expand Down
1 change: 1 addition & 0 deletions bin/configs/spring-boot-beanvalidation-no-nullable.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ library: spring-boot
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
documentationProvider: springfox
java8: "false"
useBeanValidation: true
artifactId: spring-boot-beanvalidation-no-nullable
Expand Down
1 change: 1 addition & 0 deletions bin/configs/spring-boot-beanvalidation.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ library: spring-boot
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
documentationProvider: springfox
java8: true
useBeanValidation: true
artifactId: spring-boot-beanvalidation
Expand Down
1 change: 1 addition & 0 deletions bin/configs/spring-boot-delegate-j8.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ outputDir: samples/server/petstore/springboot-delegate-j8
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
documentationProvider: springfox
artifactId: springboot-delegate-j8
hideGenerationTimestamp: "true"
delegatePattern: "true"
2 changes: 1 addition & 1 deletion bin/configs/spring-boot-delegate-oas3.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-e
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
groupId: org.openapitools.openapi3
oas3: "true"
documentationProvider: springdoc
artifactId: springboot-delegate
hideGenerationTimestamp: "true"
java8: true
Expand Down
1 change: 1 addition & 0 deletions bin/configs/spring-boot-delegate.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ outputDir: samples/server/petstore/springboot-delegate
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
documentationProvider: springfox
artifactId: springboot-delegate
hideGenerationTimestamp: "true"
java8: true
Expand Down
1 change: 1 addition & 0 deletions bin/configs/spring-boot-implicitHeaders-oas3.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-e
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
groupId: org.openapitools.openapi3
documentationProvider: springdoc
oas3: "true"
artifactId: springboot-implicitHeaders
hideGenerationTimestamp: "true"
Expand Down
1 change: 1 addition & 0 deletions bin/configs/spring-boot-implicitHeaders.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@ inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-e
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
artifactId: springboot-implicitHeaders
documentationProvider: springfox
hideGenerationTimestamp: "true"
implicitHeaders: true
2 changes: 1 addition & 1 deletion bin/configs/spring-boot-oas3.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
groupId: org.openapitools.openapi3
documentationProvider: springdoc
artifactId: springboot
snapshotVersion: "true"
oas3: "true"
hideGenerationTimestamp: "true"
2 changes: 1 addition & 1 deletion bin/configs/spring-boot-reactive-oas3.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-e
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
groupId: org.openapitools.openapi3
oas3: "true"
documentationProvider: springdoc
artifactId: springboot-reactive
reactive: "true"
hideGenerationTimestamp: "true"
Expand Down
1 change: 1 addition & 0 deletions bin/configs/spring-boot-reactive.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-e
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
artifactId: springboot-reactive
documentationProvider: springfox
reactive: "true"
hideGenerationTimestamp: "true"
delegatePattern: "true"
10 changes: 10 additions & 0 deletions bin/configs/spring-boot-springdoc.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
generatorName: spring
outputDir: samples/openapi3/server/petstore/spring-boot-springdoc
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
groupId: org.openapitools.openapi3
documentationProvider: springdoc
artifactId: spring-boot-springdoc
snapshotVersion: "true"
hideGenerationTimestamp: "true"
2 changes: 1 addition & 1 deletion bin/configs/spring-boot-useoptional-oas3.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-e
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
groupId: org.openapitools.openapi3
oas3: "true"
documentationProvider: springdoc
useOptional: true
artifactId: spring-boot-useoptional
hideGenerationTimestamp: "true"
1 change: 1 addition & 0 deletions bin/configs/spring-boot-useoptional.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ outputDir: samples/server/petstore/springboot-useoptional
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
documentationProvider: springfox
useOptional: true
artifactId: spring-boot-useoptional
hideGenerationTimestamp: "true"
1 change: 1 addition & 0 deletions bin/configs/spring-boot-virtualan.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ library: spring-boot
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
documentationProvider: springfox
apiPackage: org.openapitools.virtualan.api
modelPackage: org.openapitools.virtualan.model
virtualService: true
Expand Down
1 change: 1 addition & 0 deletions bin/configs/spring-boot.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ outputDir: samples/server/petstore/springboot
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
documentationProvider: springfox
artifactId: springboot
snapshotVersion: "true"
hideGenerationTimestamp: "true"
2 changes: 1 addition & 1 deletion bin/configs/spring-cloud-async-oas3.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
groupId: org.openapitools.openapi3
oas3: "true"
documentationProvider: springdoc
async: "true"
java8: "true"
artifactId: petstore-spring-cloud
Expand Down
1 change: 1 addition & 0 deletions bin/configs/spring-cloud-async.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ library: spring-cloud
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
documentationProvider: springfox
async: "true"
java8: "true"
artifactId: petstore-spring-cloud
Expand Down
4 changes: 2 additions & 2 deletions bin/configs/spring-cloud-date-time-oas3.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ inputSpec: modules/openapi-generator/src/test/resources/3_0/spring/date-time-par
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
groupId: org.openapitools.openapi3
documentationProvider: springdoc
artifactId: spring-cloud-date-time-oas3
interfaceOnly: "true"
singleContentTypes: "true"
hideGenerationTimestamp: "true"
oas3: "true"
hideGenerationTimestamp: "true"
1 change: 1 addition & 0 deletions bin/configs/spring-cloud-date-time.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ outputDir: samples/client/petstore/spring-cloud-date-time
inputSpec: modules/openapi-generator/src/test/resources/3_0/spring/date-time-parameter-types-for-testing.yml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
documentationProvider: springfox
artifactId: spring-cloud-date-time
interfaceOnly: "true"
singleContentTypes: "true"
Expand Down
2 changes: 1 addition & 1 deletion bin/configs/spring-cloud-oas3-fakeapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-e
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
groupId: org.openapitools.openapi3
documentationProvider: springdoc
artifactId: spring-cloud-oas3
interfaceOnly: "true"
singleContentTypes: "true"
hideGenerationTimestamp: "true"
oas3: "true"
2 changes: 1 addition & 1 deletion bin/configs/spring-cloud-oas3.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
groupId: org.openapitools.openapi3
documentationProvider: springdoc
artifactId: spring-cloud-oas3
interfaceOnly: "true"
singleContentTypes: "true"
hideGenerationTimestamp: "true"
oas3: "true"
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-spring
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
groupId: org.openapitools.openapi3
oas3: "true"
documentationProvider: springdoc
artifactId: spring-cloud-spring-pageable
hideGenerationTimestamp: 'true'
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@ library: spring-cloud
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-spring-pageable.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
documentationProvider: springfox
artifactId: spring-cloud-spring-pageable
hideGenerationTimestamp: 'true'
1 change: 1 addition & 0 deletions bin/configs/spring-cloud.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@ library: spring-cloud
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
documentationProvider: springfox
artifactId: petstore-spring-cloud
hideGenerationTimestamp: "true"
1 change: 1 addition & 0 deletions bin/configs/spring-mvc-default-values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@ outputDir: samples/server/petstore/spring-mvc-default-value
inputSpec: modules/openapi-generator/src/test/resources/3_0/issue_8535.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
documentationProvider: springfox
hideGenerationTimestamp: "true"
artifactId: spring-mvc-default-value
1 change: 1 addition & 0 deletions bin/configs/spring-mvc-j8-async.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ library: spring-mvc
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
documentationProvider: springfox
async: "true"
java8: true
artifactId: spring-mvc-server-j8-async
Expand Down
1 change: 1 addition & 0 deletions bin/configs/spring-mvc-j8-localdatetime.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ library: spring-mvc
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
documentationProvider: springfox
booleanGetterPrefix: get
artifactId: spring-mvc-j8-localdatetime
hideGenerationTimestamp: "true"
Expand Down
1 change: 1 addition & 0 deletions bin/configs/spring-mvc-no-nullable.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ library: spring-mvc
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
documentationProvider: springfox
artifactId: spring-mvc-server-no-nullable
openApiNullable: "false"
serverPort: "8002"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@ library: spring-mvc
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing-with-spring-pageable.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
documentationProvider: springfox
artifactId: spring-mvc-spring-pageable
hideGenerationTimestamp: 'true'
1 change: 1 addition & 0 deletions bin/configs/spring-mvc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ library: spring-mvc
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
documentationProvider: springfox
java8: true
booleanGetterPrefix: get
artifactId: spring-mvc-server
Expand Down
2 changes: 1 addition & 1 deletion bin/configs/spring-stubs-oas3.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
groupId: org.openapitools.openapi3
documentationProvider: springdoc
artifactId: spring-stubs
oas3: "true"
interfaceOnly: "true"
singleContentTypes: "true"
hideGenerationTimestamp: "true"
1 change: 1 addition & 0 deletions bin/configs/spring-stubs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ outputDir: samples/client/petstore/spring-stubs
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
documentationProvider: springfox
artifactId: spring-stubs
interfaceOnly: "true"
singleContentTypes: "true"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,6 @@ templateDir: modules/openapi-generator/src/main/resources/JavaSpring
delegatePattern: true
java8: false
additionalProperties:
documentationProvider: springfox
artifactId: springboot-spring-pageable-delegatePattern-without-j8
hideGenerationTimestamp: 'true'
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@ inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-e
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
delegatePattern: true
additionalProperties:
documentationProvider: springfox
artifactId: springboot-spring-pageable-delegatePattern
hideGenerationTimestamp: 'true'
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@ inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-e
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
java8: false
additionalProperties:
documentationProvider: springfox
artifactId: springboot-spring-pageable-withoutj8
hideGenerationTimestamp: 'true'
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@ library: spring-boot
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing-with-spring-pageable.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
documentationProvider: springfox
artifactId: springboot-spring-pageable
hideGenerationTimestamp: 'true'
3 changes: 2 additions & 1 deletion docs/generators/java-camel.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|additionalEnumTypeAnnotations|Additional annotations for enum type(class level annotations)| |null|
|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations). List separated by semicolon(;) or new line (Linux or Windows)| |null|
|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false|
|annotationLibrary|Select the complementary documentation annotation library.|<dl><dt>**none**</dt><dd>Do not annotate Model and Api with complementary annotations.</dd><dt>**swagger1**</dt><dd>Annotate Model and Api using the Swagger Annotations 1.x library.</dd><dt>**swagger2**</dt><dd>Annotate Model and Api using the Swagger Annotations 2.x library.</dd></dl>|swagger2|
|apiFirst|Generate the API from the OAI spec at server compile time (API first approach)| |false|
|apiPackage|package for generated api classes| |org.openapitools.api|
|artifactDescription|artifact description in generated pom.xml| |OpenAPI Java|
Expand Down Expand Up @@ -47,6 +48,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|<dl><dt>**false**</dt><dd>The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.</dd><dt>**true**</dt><dd>Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.</dd></dl>|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
|documentationProvider|Select the OpenAPI documentation provider.|<dl><dt>**none**</dt><dd>Do not publish an OpenAPI specification.</dd><dt>**source**</dt><dd>Publish the original input OpenAPI specification.</dd><dt>**springfox**</dt><dd>Generate an OpenAPI 2 (fka Swagger RESTful API Documentation Specification) specification using SpringFox 2.x.</dd><dt>**springdoc**</dt><dd>Generate an OpenAPI 3 specification using SpringDoc.</dd></dl>|springdoc|
|ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true|
|enumUnknownDefaultCase|If the server adds new enum cases, that are unknown by an old spec/client, the client will fail to parse the network response.With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the server sends an enum case that is not known by the client/spec, they can safely fallback to this case.|<dl><dt>**false**</dt><dd>No changes to the enum's are made, this is the default option.</dd><dt>**true**</dt><dd>With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the enum case sent by the server is not known by the client/spec, can safely be decoded to this case.</dd></dl>|false|
|fullJavaUtil|whether to use fully qualified name for classes under java.util. This option only works for Java API client| |false|
Expand All @@ -63,7 +65,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|licenseName|The name of the license| |Unlicense|
|licenseUrl|The URL of the license| |http://unlicense.org|
|modelPackage|package for generated models| |org.openapitools.model|
|oas3|Use OAS 3 Swagger annotations instead of OAS 2 annotations| |false|
|openApiNullable|Enable OpenAPI Jackson Nullable library| |true|
|parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
|parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
Expand Down
Loading

0 comments on commit e1c5b22

Please sign in to comment.