Skip to content

Commit 75983de

Browse files
committed
[18929] fix missing JsonIgnorePropertiesimport in oneOf interface file
1 parent 21d3cfe commit 75983de

185 files changed

Lines changed: 12421 additions & 37 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2301,7 +2301,7 @@ private boolean shouldBeImplicitHeader(CodegenParameter parameter) {
23012301
@Override
23022302
public void addImportsToOneOfInterface(List<Map<String, String>> imports) {
23032303
if (jackson) {
2304-
for (String i : Arrays.asList("JsonSubTypes", "JsonTypeInfo")) {
2304+
for (String i : Arrays.asList("JsonSubTypes", "JsonTypeInfo", "JsonIgnoreProperties")) {
23052305
Map<String, String> oneImport = new HashMap<>();
23062306
oneImport.put("import", importMapping.get(i));
23072307
if (!imports.contains(oneImport)) {

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1155,17 +1155,6 @@ public String toApiVarName(String name) {
11551155
return apiVarName;
11561156
}
11571157

1158-
@Override
1159-
public void addImportsToOneOfInterface(List<Map<String, String>> imports) {
1160-
for (String i : Arrays.asList("JsonSubTypes", "JsonTypeInfo", "JsonIgnoreProperties")) {
1161-
Map<String, String> oneImport = new HashMap<>();
1162-
oneImport.put("import", importMapping.get(i));
1163-
if (!imports.contains(oneImport)) {
1164-
imports.add(oneImport);
1165-
}
1166-
}
1167-
}
1168-
11691158
@Override
11701159
public List<VendorExtension> getSupportedVendorExtensions() {
11711160
List<VendorExtension> extensions = super.getSupportedVendorExtensions();

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaHelidonClientCodegen.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import java.nio.file.Path;
2222
import java.nio.file.Paths;
2323
import java.util.ArrayList;
24-
import java.util.Arrays;
2524
import java.util.HashMap;
2625
import java.util.HashSet;
2726
import java.util.List;
@@ -488,17 +487,6 @@ public String toApiVarName(String name) {
488487
return apiVarName;
489488
}
490489

491-
@Override
492-
public void addImportsToOneOfInterface(List<Map<String, String>> imports) {
493-
for (String i : Arrays.asList("JsonSubTypes", "JsonTypeInfo", "JsonIgnoreProperties")) {
494-
Map<String, String> oneImport = new HashMap<>();
495-
oneImport.put("import", importMapping.get(i));
496-
if (!imports.contains(oneImport)) {
497-
imports.add(oneImport);
498-
}
499-
}
500-
}
501-
502490
@Override
503491
public List<VendorExtension> getSupportedVendorExtensions() {
504492
List<VendorExtension> extensions = super.getSupportedVendorExtensions();

modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5103,4 +5103,14 @@ public void testEnumUnknownDefaultCaseDeserializationNotSet_issue13241() throws
51035103
.assertMethod("build")
51045104
.doesNotHaveAnnotation("Deprecated");
51055105
}
5106+
5107+
@Test
5108+
public void shouldAddJsonIgnorePropertiesImportWhenUsingOneOfWithinOneOf_issue18929() throws IOException {
5109+
final SpringCodegen codegen = new SpringCodegen();
5110+
5111+
final Map<String, File> files = generateFiles(codegen, "src/test/resources/3_0/spring/issue_18929.yaml");
5112+
5113+
JavaFileAssert.assertThat(files.get("RequestTwoSchemaNestedOneOf.java"))
5114+
.hasImports("com.fasterxml.jackson.annotation.JsonIgnoreProperties");
5115+
}
51065116
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
openapi: 3.0.3
2+
info:
3+
title: oneOf within oneOf
4+
version: 7.7.0-SNAPSHOT
5+
paths:
6+
/oneOf-within-oneOf-test:
7+
post:
8+
operationId: 'oneOfWithinOneOfTest'
9+
requestBody:
10+
content:
11+
application/json:
12+
schema:
13+
oneOf:
14+
- $ref: '#/components/schemas/RequestTwoSchema'
15+
- $ref: '#/components/schemas/RequestOneSchema'
16+
responses:
17+
'201':
18+
description: The request was successful and the resource has been created.
19+
content:
20+
application/json:
21+
schema:
22+
type: string
23+
components:
24+
schemas:
25+
AbstractNestedSchema:
26+
type: object
27+
discriminator:
28+
propertyName: type
29+
mapping:
30+
NESTED_ONE: '#/components/schemas/NestedOneSchema'
31+
NESTED_TWO: '#/components/schemas/NestedTwoSchema'
32+
required:
33+
- type
34+
properties:
35+
type:
36+
type: string
37+
NestedOneSchema:
38+
type: object
39+
allOf:
40+
- $ref: '#/components/schemas/AbstractNestedSchema'
41+
AbstractRequestSchema:
42+
type: object
43+
discriminator:
44+
propertyName: type
45+
mapping:
46+
REQUEST_ONE: '#/components/schemas/RequestOneSchema'
47+
REQUEST_TWO: '#/components/schemas/RequestTwoSchema'
48+
required:
49+
- type
50+
properties:
51+
type:
52+
type: string
53+
RequestTwoSchema:
54+
type: object
55+
allOf:
56+
- $ref: '#/components/schemas/AbstractRequestSchema'
57+
required:
58+
- nested
59+
properties:
60+
nested:
61+
oneOf:
62+
- $ref: '#/components/schemas/NestedTwoSchema'
63+
- $ref: '#/components/schemas/NestedOneSchema'
64+
RequestOneSchema:
65+
type: object
66+
allOf:
67+
- $ref: '#/components/schemas/AbstractRequestSchema'
68+
NestedTwoSchema:
69+
type: object
70+
allOf:
71+
- $ref: '#/components/schemas/AbstractNestedSchema'

modules/openapi-generator/src/test/resources/3_0/spring/petstore-with-fake-endpoints-models-for-testing.yaml

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1142,6 +1142,27 @@ paths:
11421142
application/json:
11431143
schema:
11441144
$ref: "#/components/schemas/ResponseObjectWithDifferentFieldNames"
1145+
/fake/one-of-within-one-of-park-persons:
1146+
post:
1147+
tags:
1148+
- PerkPerson
1149+
summary: Create a Park Person
1150+
operationId: createParkPerson
1151+
requestBody:
1152+
required: true
1153+
content:
1154+
'application/json':
1155+
schema:
1156+
oneOf:
1157+
- $ref: '#/components/schemas/CreateParkAnimalCarerPerson'
1158+
- $ref: '#/components/schemas/CreateParkVisitorPerson'
1159+
responses:
1160+
201:
1161+
description: Park Person created
1162+
content:
1163+
'application/json':
1164+
schema:
1165+
type: string
11451166
servers:
11461167
- url: http://petstore.swagger.io:80/v2
11471168
components:
@@ -2096,3 +2117,50 @@ components:
20962117
type: object
20972118
additionalProperties:
20982119
type: string
2120+
OneOfWithinOneOfAbstractAnimal:
2121+
type: object
2122+
discriminator:
2123+
propertyName: type
2124+
mapping:
2125+
CAT: '#/components/schemas/OneOfWithinOneOfCat'
2126+
DOG: '#/components/schemas/OneOfWithinOneOfDog'
2127+
required:
2128+
- type
2129+
properties:
2130+
type:
2131+
type: string
2132+
OneOfWithinOneOfCat:
2133+
type: object
2134+
allOf:
2135+
- $ref: '#/components/schemas/OneOfWithinOneOfAbstractAnimal'
2136+
AbstractCreateParkPerson:
2137+
type: object
2138+
discriminator:
2139+
propertyName: type
2140+
mapping:
2141+
VISITOR: '#/components/schemas/CreateParkVisitorPerson'
2142+
ANIMAL_CARER: '#/components/schemas/CreateParkAnimalCarerPerson'
2143+
required:
2144+
- type
2145+
properties:
2146+
type:
2147+
type: string
2148+
CreateParkAnimalCarerPerson:
2149+
type: object
2150+
allOf:
2151+
- $ref: '#/components/schemas/AbstractCreateParkPerson'
2152+
required:
2153+
- responsibleFor
2154+
properties:
2155+
responsibleFor:
2156+
oneOf:
2157+
- $ref: '#/components/schemas/OneOfWithinOneOfDog'
2158+
- $ref: '#/components/schemas/OneOfWithinOneOfCat'
2159+
CreateParkVisitorPerson:
2160+
type: object
2161+
allOf:
2162+
- $ref: '#/components/schemas/AbstractCreateParkPerson'
2163+
OneOfWithinOneOfDog:
2164+
type: object
2165+
allOf:
2166+
- $ref: '#/components/schemas/OneOfWithinOneOfAbstractAnimal'

samples/client/petstore/spring-http-interface-reactive/.openapi-generator/FILES

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@ pom.xml
33
src/main/java/org/openapitools/api/AnotherFakeApi.java
44
src/main/java/org/openapitools/api/FakeApi.java
55
src/main/java/org/openapitools/api/FakeClassnameTags123Api.java
6+
src/main/java/org/openapitools/api/PerkPersonApi.java
67
src/main/java/org/openapitools/api/PetApi.java
78
src/main/java/org/openapitools/api/StoreApi.java
89
src/main/java/org/openapitools/api/UserApi.java
910
src/main/java/org/openapitools/configuration/HttpInterfacesAbstractConfigurator.java
11+
src/main/java/org/openapitools/model/AbstractCreateParkPerson.java
1012
src/main/java/org/openapitools/model/AdditionalPropertiesAnyType.java
1113
src/main/java/org/openapitools/model/AdditionalPropertiesArray.java
1214
src/main/java/org/openapitools/model/AdditionalPropertiesBoolean.java
@@ -27,6 +29,10 @@ src/main/java/org/openapitools/model/ChildWithNullable.java
2729
src/main/java/org/openapitools/model/ClassModel.java
2830
src/main/java/org/openapitools/model/Client.java
2931
src/main/java/org/openapitools/model/ContainerDefaultValue.java
32+
src/main/java/org/openapitools/model/CreateParkAnimalCarerPerson.java
33+
src/main/java/org/openapitools/model/CreateParkAnimalCarerPersonResponsibleForOneOf.java
34+
src/main/java/org/openapitools/model/CreateParkPersonRequest.java
35+
src/main/java/org/openapitools/model/CreateParkVisitorPerson.java
3036
src/main/java/org/openapitools/model/Dog.java
3137
src/main/java/org/openapitools/model/EnumArrays.java
3238
src/main/java/org/openapitools/model/EnumClass.java
@@ -44,6 +50,9 @@ src/main/java/org/openapitools/model/ModelReturn.java
4450
src/main/java/org/openapitools/model/Name.java
4551
src/main/java/org/openapitools/model/NullableMapProperty.java
4652
src/main/java/org/openapitools/model/NumberOnly.java
53+
src/main/java/org/openapitools/model/OneOfWithinOneOfAbstractAnimal.java
54+
src/main/java/org/openapitools/model/OneOfWithinOneOfCat.java
55+
src/main/java/org/openapitools/model/OneOfWithinOneOfDog.java
4756
src/main/java/org/openapitools/model/Order.java
4857
src/main/java/org/openapitools/model/OuterComposite.java
4958
src/main/java/org/openapitools/model/OuterEnum.java
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/**
2+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.7.0-SNAPSHOT).
3+
* https://openapi-generator.tech
4+
* Do not edit the class manually.
5+
*/
6+
package org.openapitools.api;
7+
8+
import org.openapitools.model.CreateParkPersonRequest;
9+
import org.springframework.http.ResponseEntity;
10+
import org.springframework.web.bind.annotation.*;
11+
import org.springframework.web.service.annotation.*;
12+
import org.springframework.web.multipart.MultipartFile;
13+
14+
import org.springframework.http.codec.multipart.Part;
15+
import reactor.core.publisher.Flux;
16+
import reactor.core.publisher.Mono;
17+
18+
import java.util.List;
19+
import java.util.Map;
20+
import java.util.Optional;
21+
import jakarta.annotation.Generated;
22+
23+
24+
@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.7.0-SNAPSHOT")
25+
public interface PerkPersonApi {
26+
27+
/**
28+
* POST /fake/one-of-within-one-of-park-persons : Create a Park Person
29+
*
30+
* @param createParkPersonRequest (required)
31+
* @return Park Person created (status code 201)
32+
*/
33+
@HttpExchange(
34+
method = "POST",
35+
value = "/fake/one-of-within-one-of-park-persons",
36+
accept = { "application/json" },
37+
contentType = "application/json"
38+
)
39+
Mono<ResponseEntity<String>> createParkPerson(
40+
@RequestBody Mono<CreateParkPersonRequest> createParkPersonRequest
41+
);
42+
43+
}

samples/client/petstore/spring-http-interface-reactive/src/main/java/org/openapitools/configuration/HttpInterfacesAbstractConfigurator.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.openapitools.api.AnotherFakeApi;
99
import org.openapitools.api.FakeApi;
1010
import org.openapitools.api.FakeClassnameTags123Api;
11+
import org.openapitools.api.PerkPersonApi;
1112
import org.openapitools.api.PetApi;
1213
import org.openapitools.api.StoreApi;
1314
import org.openapitools.api.UserApi;
@@ -43,6 +44,12 @@ FakeClassnameTags123Api fakeClassnameTags123HttpProxy() {
4344
return factory.createClient(FakeClassnameTags123Api.class);
4445
}
4546

47+
@Bean(name = "org.openapitools.configuration.HttpInterfacesAbstractConfigurator.perkPerson")
48+
PerkPersonApi perkPersonHttpProxy() {
49+
HttpServiceProxyFactory factory = HttpServiceProxyFactory.builder(WebClientAdapter.forClient(webClient)).build();
50+
return factory.createClient(PerkPersonApi.class);
51+
}
52+
4653
@Bean(name = "org.openapitools.configuration.HttpInterfacesAbstractConfigurator.pet")
4754
PetApi petHttpProxy() {
4855
HttpServiceProxyFactory factory = HttpServiceProxyFactory.builder(WebClientAdapter.forClient(webClient)).build();

0 commit comments

Comments
 (0)