mirror of
https://github.com/OpenAPITools/openapi-generator.git
synced 2025-05-12 12:40:53 +00:00
[JAVA-SPRING] Avoid broken code due to duplicate rendering of @Deprecated
annotation with generateBuilders=true
(#18917)
* Implement regression test for #12804 * Fix duplicate rendering of @Deprecated annotation on Builder methods * Regenerate samples * Sort entries so it's easier to parse if an entry already exists * Add sample that uses generateBuilders=true to test build matrix Serves as an additional regression check for #12804 * Add --no-transfer-progress to mvn build command to increase log legibility
This commit is contained in:
parent
ec8998b39f
commit
6f9ad31df3
@ -43,4 +43,4 @@ jobs:
|
||||
(cd http-echo-server && npm install && npm start &)
|
||||
- name: Build
|
||||
working-directory: ${{ matrix.sample }}
|
||||
run: mvn clean package
|
||||
run: mvn clean package --no-transfer-progress
|
||||
|
@ -39,4 +39,4 @@ jobs:
|
||||
(cd http-echo-server && npm install && npm start &)
|
||||
- name: Build
|
||||
working-directory: ${{ matrix.sample }}
|
||||
run: mvn clean package
|
||||
run: mvn clean package --no-transfer-progress
|
||||
|
@ -50,4 +50,4 @@ jobs:
|
||||
(cd http-echo-server && npm install && npm start &)
|
||||
- name: Build
|
||||
working-directory: ${{ matrix.sample }}
|
||||
run: mvn clean package
|
||||
run: mvn clean package --no-transfer-progress
|
||||
|
@ -97,4 +97,4 @@ jobs:
|
||||
key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }}
|
||||
- name: Build
|
||||
working-directory: ${{ matrix.sample }}
|
||||
run: mvn clean package
|
||||
run: mvn clean package --no-transfer-progress
|
||||
|
@ -42,7 +42,7 @@ jobs:
|
||||
|
||||
- name: Build with Maven
|
||||
working-directory: ${{ matrix.sample }}
|
||||
run: mvn clean package
|
||||
run: mvn clean package --no-transfer-progress
|
||||
|
||||
- name: Cache gradle dependencies
|
||||
uses: actions/cache@v4
|
||||
|
@ -38,4 +38,4 @@ jobs:
|
||||
key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }}
|
||||
- name: Build
|
||||
working-directory: ${{ matrix.sample }}
|
||||
run: mvn clean package
|
||||
run: mvn clean package --no-transfer-progress
|
||||
|
@ -36,4 +36,4 @@ jobs:
|
||||
key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }}
|
||||
- name: Build
|
||||
working-directory: ${{ matrix.sample }}
|
||||
run: mvn clean package
|
||||
run: mvn clean package --no-transfer-progress
|
||||
|
@ -44,4 +44,4 @@ jobs:
|
||||
key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }}
|
||||
- name: Build
|
||||
working-directory: ${{ matrix.sample }}
|
||||
run: mvn clean package
|
||||
run: mvn clean package --no-transfer-progress
|
||||
|
@ -50,4 +50,4 @@ jobs:
|
||||
key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }}
|
||||
- name: Build
|
||||
working-directory: ${{ matrix.sample }}
|
||||
run: mvn clean package
|
||||
run: mvn clean package --no-transfer-progress
|
||||
|
2
.github/workflows/samples-java-wiremock.yaml
vendored
2
.github/workflows/samples-java-wiremock.yaml
vendored
@ -32,4 +32,4 @@ jobs:
|
||||
key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }}
|
||||
- name: Build
|
||||
working-directory: ${{ matrix.sample }}
|
||||
run: mvn clean package
|
||||
run: mvn clean package --no-transfer-progress
|
||||
|
2
.github/workflows/samples-jaxrs-jdk11.yaml
vendored
2
.github/workflows/samples-jaxrs-jdk11.yaml
vendored
@ -33,4 +33,4 @@ jobs:
|
||||
key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }}
|
||||
- name: Build
|
||||
working-directory: ${{ matrix.sample }}
|
||||
run: mvn clean package
|
||||
run: mvn clean package --no-transfer-progress
|
||||
|
2
.github/workflows/samples-jaxrs.yaml
vendored
2
.github/workflows/samples-jaxrs.yaml
vendored
@ -53,4 +53,4 @@ jobs:
|
||||
key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }}
|
||||
- name: Build
|
||||
working-directory: ${{ matrix.sample }}
|
||||
run: mvn clean package
|
||||
run: mvn clean package --no-transfer-progress
|
||||
|
2
.github/workflows/samples-jdk17.yaml
vendored
2
.github/workflows/samples-jdk17.yaml
vendored
@ -63,4 +63,4 @@ jobs:
|
||||
key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }}
|
||||
- name: Build
|
||||
working-directory: ${{ matrix.sample }}
|
||||
run: mvn clean package
|
||||
run: mvn clean package --no-transfer-progress
|
||||
|
2
.github/workflows/samples-jdk21.yaml
vendored
2
.github/workflows/samples-jdk21.yaml
vendored
@ -40,4 +40,4 @@ jobs:
|
||||
key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }}
|
||||
- name: Build
|
||||
working-directory: ${{ matrix.sample }}
|
||||
run: mvn clean package
|
||||
run: mvn clean package --no-transfer-progress
|
||||
|
5
.github/workflows/samples-spring-jdk17.yaml
vendored
5
.github/workflows/samples-spring-jdk17.yaml
vendored
@ -4,9 +4,11 @@ on:
|
||||
push:
|
||||
paths:
|
||||
- samples/openapi3/client/petstore/spring-cloud-3-with-optional
|
||||
- samples/openapi3/server/petstore/springboot-3
|
||||
pull_request:
|
||||
paths:
|
||||
- samples/openapi3/client/petstore/spring-cloud-3-with-optional
|
||||
- samples/openapi3/server/petstore/springboot-3
|
||||
- samples/server/petstore/springboot-lombok-data
|
||||
- samples/server/petstore/springboot-lombok-tostring
|
||||
jobs:
|
||||
@ -20,6 +22,7 @@ jobs:
|
||||
# clients
|
||||
- samples/openapi3/client/petstore/spring-cloud-3-with-optional
|
||||
# servers
|
||||
- samples/openapi3/server/petstore/springboot-3
|
||||
- samples/server/petstore/springboot-lombok-data
|
||||
- samples/server/petstore/springboot-lombok-tostring
|
||||
steps:
|
||||
@ -38,4 +41,4 @@ jobs:
|
||||
key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }}
|
||||
- name: Build
|
||||
working-directory: ${{ matrix.sample }}
|
||||
run: mvn clean package
|
||||
run: mvn clean package --no-transfer-progress
|
||||
|
36
.github/workflows/samples-spring.yaml
vendored
36
.github/workflows/samples-spring.yaml
vendored
@ -25,40 +25,40 @@ jobs:
|
||||
sample:
|
||||
# clients
|
||||
- samples/client/petstore/spring-cloud
|
||||
- samples/openapi3/client/petstore/spring-cloud
|
||||
- samples/client/petstore/spring-cloud-auth
|
||||
- samples/client/petstore/spring-cloud-date-time
|
||||
- samples/client/petstore/spring-cloud-deprecated
|
||||
- samples/client/petstore/spring-cloud-tags
|
||||
- samples/openapi3/client/petstore/spring-cloud
|
||||
- samples/openapi3/client/petstore/spring-cloud-async
|
||||
- samples/openapi3/client/petstore/spring-cloud-date-time
|
||||
- samples/openapi3/client/petstore/spring-cloud-http-basic
|
||||
- samples/openapi3/client/petstore/spring-cloud-spring-pageable
|
||||
- samples/openapi3/client/petstore/spring-stubs
|
||||
- samples/openapi3/client/petstore/spring-stubs-skip-default-interface
|
||||
- samples/openapi3/client/petstore/spring-cloud-async
|
||||
- samples/openapi3/client/petstore/spring-cloud-spring-pageable
|
||||
- samples/client/petstore/spring-cloud-tags
|
||||
- samples/client/petstore/spring-cloud-auth
|
||||
- samples/client/petstore/spring-cloud-deprecated
|
||||
# servers
|
||||
- samples/server/petstore/springboot
|
||||
- samples/openapi3/server/petstore/springboot
|
||||
- samples/server/petstore/springboot-beanvalidation
|
||||
- samples/server/petstore/springboot-useoptional
|
||||
- samples/server/petstore/springboot-reactive
|
||||
- samples/server/petstore/springboot-reactive-noResponseEntity
|
||||
- samples/server/petstore/springboot-implicitHeaders
|
||||
- samples/openapi3/server/petstore/springboot-implicitHeaders
|
||||
- samples/server/petstore/springboot-delegate
|
||||
- samples/server/petstore/springboot-delegate-no-response-entity
|
||||
- samples/openapi3/server/petstore/springboot-delegate
|
||||
- samples/openapi3/server/petstore/spring-boot-oneof
|
||||
- samples/server/petstore/spring-boot-nullable-set
|
||||
- samples/server/petstore/spring-boot-defaultInterface-unhandledException
|
||||
- samples/openapi3/server/petstore/spring-boot-oneof
|
||||
- samples/server/petstore/springboot-virtualan
|
||||
- samples/server/petstore/springboot
|
||||
- samples/server/petstore/springboot-beanvalidation
|
||||
- samples/server/petstore/springboot-delegate
|
||||
- samples/server/petstore/springboot-delegate-no-response-entity
|
||||
- samples/server/petstore/springboot-implicitHeaders
|
||||
- samples/server/petstore/springboot-implicitHeaders-annotationLibrary
|
||||
- samples/server/petstore/springboot-lombok-data
|
||||
- samples/server/petstore/springboot-reactive
|
||||
- samples/server/petstore/springboot-reactive-noResponseEntity
|
||||
- samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8
|
||||
- samples/server/petstore/springboot-spring-pageable-delegatePattern
|
||||
- samples/server/petstore/springboot-spring-pageable-without-j8
|
||||
- samples/server/petstore/springboot-spring-pageable
|
||||
- samples/server/petstore/springboot-spring-provide-args
|
||||
- samples/server/petstore/springboot-lombok-data
|
||||
- samples/server/petstore/springboot-useoptional
|
||||
- samples/server/petstore/springboot-virtualan
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-java@v4
|
||||
@ -75,4 +75,4 @@ jobs:
|
||||
key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }}
|
||||
- name: Build
|
||||
working-directory: ${{ matrix.sample }}
|
||||
run: mvn clean package
|
||||
run: mvn clean package --no-transfer-progress
|
||||
|
@ -28,9 +28,6 @@
|
||||
this.instance.{{name}}({{name}});
|
||||
return this;
|
||||
}
|
||||
{{#deprecated}}
|
||||
@Deprecated
|
||||
{{/deprecated}}
|
||||
{{#openApiNullable}}{{#isNullable}}
|
||||
public {{classname}}.Builder {{name}}(JsonNullable<{{{datatypeWithEnum}}}> {{name}}) {
|
||||
this.instance.{{name}} = {{name}};
|
||||
|
@ -4980,4 +4980,26 @@ public class SpringCodegenTest {
|
||||
.hasAnnotation("JacksonXmlProperty", Map.of("localName", "\"item\""))
|
||||
.hasAnnotation("JacksonXmlElementWrapper", Map.of("localName", "\"activities-array\""));
|
||||
}
|
||||
|
||||
/**
|
||||
* Regression test for <a href="https://github.com/OpenAPITools/openapi-generator/issues/12804">#12804</a>
|
||||
*/
|
||||
@Test public void shouldGenerateSingleDeprecatedAnnotation() {
|
||||
final var tempDir = TestUtils.newTempFolder();
|
||||
final CodegenConfigurator configurator = new CodegenConfigurator()
|
||||
.addAdditionalProperty(GENERATE_BUILDERS, true)
|
||||
.addGlobalProperty(CodegenConstants.MODELS, "Pet")
|
||||
.setInputSpec("src/test/resources/3_0/petstore.yaml")
|
||||
.setGeneratorName("spring")
|
||||
.setOutputDir(tempDir.toString());
|
||||
|
||||
new DefaultGenerator().opts(configurator.toClientOptInput()).generate();
|
||||
|
||||
JavaFileAssert.assertThat(tempDir.resolve("src/main/java/org/openapitools/model/Pet.java"))
|
||||
.assertInnerClass("Builder")
|
||||
.assertMethod("status").hasAnnotation("Deprecated")
|
||||
.toInnerClassAssert()
|
||||
.assertMethod("build")
|
||||
.doesNotHaveAnnotation("Deprecated");
|
||||
}
|
||||
}
|
||||
|
@ -368,7 +368,6 @@ public class Pet {
|
||||
this.instance.status(status);
|
||||
return this;
|
||||
}
|
||||
@Deprecated
|
||||
|
||||
/**
|
||||
* returns a built Pet instance.
|
||||
|
@ -337,7 +337,6 @@ public class Pet {
|
||||
this.instance.status(status);
|
||||
return this;
|
||||
}
|
||||
@Deprecated
|
||||
|
||||
/**
|
||||
* returns a built Pet instance.
|
||||
|
Loading…
x
Reference in New Issue
Block a user