[JAVA] OkHttp-GSON deprecated field only deprecates getter method (#15287)

* Deprecate build and setter methods

* Test with deprecated property

* Update samples

* Remove extra line

* Regenerate samples
This commit is contained in:
Beppe Catanese
2023-04-26 05:40:30 +02:00
committed by GitHub
parent de27749047
commit 6f24ad3625
7 changed files with 122 additions and 1 deletions

View File

@@ -87,6 +87,9 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
{{/isXmlAttribute}} {{/isXmlAttribute}}
{{/withXml}} {{/withXml}}
{{#gson}} {{#gson}}
{{#deprecated}}
@Deprecated
{{/deprecated}}
@SerializedName(SERIALIZED_NAME_{{nameInSnakeCase}}) @SerializedName(SERIALIZED_NAME_{{nameInSnakeCase}})
{{/gson}} {{/gson}}
{{#vendorExtensions.x-field-extra-annotation}} {{#vendorExtensions.x-field-extra-annotation}}
@@ -138,6 +141,9 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
{{#vars}} {{#vars}}
{{^isReadOnly}} {{^isReadOnly}}
{{#deprecated}}
@Deprecated
{{/deprecated}}
public {{classname}} {{name}}({{{datatypeWithEnum}}} {{name}}) { public {{classname}} {{name}}({{{datatypeWithEnum}}} {{name}}) {
{{#vendorExtensions.x-is-jackson-optional-nullable}}this.{{name}} = JsonNullable.<{{{datatypeWithEnum}}}>of({{name}});{{/vendorExtensions.x-is-jackson-optional-nullable}} {{#vendorExtensions.x-is-jackson-optional-nullable}}this.{{name}} = JsonNullable.<{{{datatypeWithEnum}}}>of({{name}});{{/vendorExtensions.x-is-jackson-optional-nullable}}
{{^vendorExtensions.x-is-jackson-optional-nullable}}this.{{name}} = {{name}};{{/vendorExtensions.x-is-jackson-optional-nullable}} {{^vendorExtensions.x-is-jackson-optional-nullable}}this.{{name}} = {{name}};{{/vendorExtensions.x-is-jackson-optional-nullable}}
@@ -269,7 +275,8 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens
{{^isReadOnly}} {{^isReadOnly}}
{{#vendorExtensions.x-setter-extra-annotation}} {{{vendorExtensions.x-setter-extra-annotation}}} {{#vendorExtensions.x-setter-extra-annotation}} {{{vendorExtensions.x-setter-extra-annotation}}}
{{/vendorExtensions.x-setter-extra-annotation}}{{#jackson}}{{^vendorExtensions.x-is-jackson-optional-nullable}}{{> jackson_annotations}}{{/vendorExtensions.x-is-jackson-optional-nullable}}{{/jackson}} public void {{setter}}({{{datatypeWithEnum}}} {{name}}) { {{/vendorExtensions.x-setter-extra-annotation}}{{#jackson}}{{^vendorExtensions.x-is-jackson-optional-nullable}}{{> jackson_annotations}}{{/vendorExtensions.x-is-jackson-optional-nullable}}{{/jackson}}{{#deprecated}} @Deprecated
{{/deprecated}} public void {{setter}}({{{datatypeWithEnum}}} {{name}}) {
{{#vendorExtensions.x-is-jackson-optional-nullable}} {{#vendorExtensions.x-is-jackson-optional-nullable}}
this.{{name}} = JsonNullable.<{{{datatypeWithEnum}}}>of({{name}}); this.{{name}} = JsonNullable.<{{{datatypeWithEnum}}}>of({{name}});
{{/vendorExtensions.x-is-jackson-optional-nullable}} {{/vendorExtensions.x-is-jackson-optional-nullable}}

View File

@@ -1982,4 +1982,41 @@ public class JavaClientCodegenTest {
" public Pet petType(String petType) {\n"); " public Pet petType(String petType) {\n");
} }
@Test
public void testDeprecatedProperty() throws Exception {
File output = Files.createTempDirectory("test").toFile();
final CodegenConfigurator configurator = new CodegenConfigurator()
.setGeneratorName("java")
.setLibrary(JavaClientCodegen.OKHTTP_GSON)
.setInputSpec("src/test/resources/3_0/deprecated-properties.yaml")
.setOutputDir(output.getAbsolutePath().replace("\\", "/"));
final ClientOptInput clientOptInput = configurator.toClientOptInput();
DefaultGenerator generator = new DefaultGenerator();
List<File> files = generator.opts(clientOptInput).generate();
validateJavaSourceFiles(files);
// deprecated builder method
TestUtils.assertFileContains(Paths.get(output + "/src/main/java/org/openapitools/client/model/BigDog.java"),
"@Deprecated\n" +
" public BigDog declawed(Boolean declawed) {");
// deprecated getter
TestUtils.assertFileContains(Paths.get(output + "/src/main/java/org/openapitools/client/model/BigDog.java"),
"@Deprecated\n" +
" @javax.annotation.Nullable\n" +
"\n" +
" public Boolean getDeclawed() {");
// deprecated setter
TestUtils.assertFileContains(Paths.get(output + "/src/main/java/org/openapitools/client/model/BigDog.java"),
"@Deprecated\n" +
" public void setDeclawed(Boolean declawed) {");
output.deleteOnExit();
}
} }

View File

@@ -0,0 +1,59 @@
openapi: 3.0.0
info:
title: Sample API
description: API description in Markdown.
version: 1.0.0
paths:
/animals:
get:
summary: Returns all animals.
description: Optional extended description in Markdown.
responses:
200:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Animal'
components:
schemas:
Dog:
allOf:
- $ref: '#/components/schemas/Animal'
- type: object
properties:
breed:
type: string
Cat:
allOf:
- $ref: '#/components/schemas/Animal'
- type: object
properties:
breed:
type: string
BigDog:
allOf:
- $ref: '#/components/schemas/Dog'
- type: object
discriminator:
propertyName: dogType
required:
- dogType
properties:
dogType:
type: string
declawed:
deprecated: true
type: boolean
Animal:
type: object
discriminator:
propertyName: className
required:
- className
properties:
className:
type: string
color:
type: string
default: red

View File

@@ -122,6 +122,7 @@ public class Pet {
} }
public static final String SERIALIZED_NAME_STATUS = "status"; public static final String SERIALIZED_NAME_STATUS = "status";
@Deprecated
@SerializedName(SERIALIZED_NAME_STATUS) @SerializedName(SERIALIZED_NAME_STATUS)
private StatusEnum status; private StatusEnum status;
@@ -254,6 +255,7 @@ public class Pet {
} }
@Deprecated
public Pet status(StatusEnum status) { public Pet status(StatusEnum status) {
this.status = status; this.status = status;
@@ -273,6 +275,7 @@ public class Pet {
} }
@Deprecated
public void setStatus(StatusEnum status) { public void setStatus(StatusEnum status) {
this.status = status; this.status = status;
} }

View File

@@ -122,6 +122,7 @@ public class Pet {
} }
public static final String SERIALIZED_NAME_STATUS = "status"; public static final String SERIALIZED_NAME_STATUS = "status";
@Deprecated
@SerializedName(SERIALIZED_NAME_STATUS) @SerializedName(SERIALIZED_NAME_STATUS)
private StatusEnum status; private StatusEnum status;
@@ -254,6 +255,7 @@ public class Pet {
} }
@Deprecated
public Pet status(StatusEnum status) { public Pet status(StatusEnum status) {
this.status = status; this.status = status;
@@ -273,6 +275,7 @@ public class Pet {
} }
@Deprecated
public void setStatus(StatusEnum status) { public void setStatus(StatusEnum status) {
this.status = status; this.status = status;
} }

View File

@@ -125,6 +125,7 @@ public class Pet {
} }
public static final String SERIALIZED_NAME_STATUS = "status"; public static final String SERIALIZED_NAME_STATUS = "status";
@Deprecated
@SerializedName(SERIALIZED_NAME_STATUS) @SerializedName(SERIALIZED_NAME_STATUS)
private StatusEnum status; private StatusEnum status;
@@ -262,6 +263,7 @@ public class Pet {
} }
@Deprecated
public Pet status(StatusEnum status) { public Pet status(StatusEnum status) {
this.status = status; this.status = status;
@@ -282,6 +284,7 @@ public class Pet {
} }
@Deprecated
public void setStatus(StatusEnum status) { public void setStatus(StatusEnum status) {
this.status = status; this.status = status;
} }

View File

@@ -57,14 +57,17 @@ public class ObjectWithDeprecatedFields {
private String uuid; private String uuid;
public static final String SERIALIZED_NAME_ID = "id"; public static final String SERIALIZED_NAME_ID = "id";
@Deprecated
@SerializedName(SERIALIZED_NAME_ID) @SerializedName(SERIALIZED_NAME_ID)
private BigDecimal id; private BigDecimal id;
public static final String SERIALIZED_NAME_DEPRECATED_REF = "deprecatedRef"; public static final String SERIALIZED_NAME_DEPRECATED_REF = "deprecatedRef";
@Deprecated
@SerializedName(SERIALIZED_NAME_DEPRECATED_REF) @SerializedName(SERIALIZED_NAME_DEPRECATED_REF)
private DeprecatedObject deprecatedRef; private DeprecatedObject deprecatedRef;
public static final String SERIALIZED_NAME_BARS = "bars"; public static final String SERIALIZED_NAME_BARS = "bars";
@Deprecated
@SerializedName(SERIALIZED_NAME_BARS) @SerializedName(SERIALIZED_NAME_BARS)
private List<String> bars; private List<String> bars;
@@ -93,6 +96,7 @@ public class ObjectWithDeprecatedFields {
} }
@Deprecated
public ObjectWithDeprecatedFields id(BigDecimal id) { public ObjectWithDeprecatedFields id(BigDecimal id) {
this.id = id; this.id = id;
@@ -112,11 +116,13 @@ public class ObjectWithDeprecatedFields {
} }
@Deprecated
public void setId(BigDecimal id) { public void setId(BigDecimal id) {
this.id = id; this.id = id;
} }
@Deprecated
public ObjectWithDeprecatedFields deprecatedRef(DeprecatedObject deprecatedRef) { public ObjectWithDeprecatedFields deprecatedRef(DeprecatedObject deprecatedRef) {
this.deprecatedRef = deprecatedRef; this.deprecatedRef = deprecatedRef;
@@ -136,11 +142,13 @@ public class ObjectWithDeprecatedFields {
} }
@Deprecated
public void setDeprecatedRef(DeprecatedObject deprecatedRef) { public void setDeprecatedRef(DeprecatedObject deprecatedRef) {
this.deprecatedRef = deprecatedRef; this.deprecatedRef = deprecatedRef;
} }
@Deprecated
public ObjectWithDeprecatedFields bars(List<String> bars) { public ObjectWithDeprecatedFields bars(List<String> bars) {
this.bars = bars; this.bars = bars;
@@ -168,6 +176,7 @@ public class ObjectWithDeprecatedFields {
} }
@Deprecated
public void setBars(List<String> bars) { public void setBars(List<String> bars) {
this.bars = bars; this.bars = bars;
} }