Skip to content

Commit cefeded

Browse files
authored
[BUG][JAVA] oneOf/anyOf multiple constructors with same erasure #18548 (#18645)
* [BUG][JAVA] oneOf/anyOf multiple constructors with same erasure #18548 * [BUG][JAVA] oneOf/anyOf multiple constructors with same erasure #18548
1 parent 0e05cf2 commit cefeded

37 files changed

+1049
-167
lines changed

modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/anyof_model.mustache

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im
5454
{{/isArray}}
5555
{{#isArray}}
5656

57-
final Type typeInstance = new TypeToken<{{{dataType}}}>(){}.getType();
58-
final TypeAdapter<{{{dataType}}}> adapter{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}} = (TypeAdapter<{{{dataType}}}>) gson.getDelegateAdapter(this, TypeToken.get(typeInstance));
57+
final Type typeInstance{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}} = new TypeToken<{{{dataType}}}>(){}.getType();
58+
final TypeAdapter<{{{dataType}}}> adapter{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}} = (TypeAdapter<{{{dataType}}}>) gson.getDelegateAdapter(this, TypeToken.get(typeInstance{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}}));
5959
{{/isArray}}
6060
{{/anyOf}}
6161
{{/composedSchemas}}
@@ -210,13 +210,11 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im
210210
super("anyOf", {{#isNullable}}Boolean.TRUE{{/isNullable}}{{^isNullable}}Boolean.FALSE{{/isNullable}});
211211
}
212212

213-
{{#anyOf}}
214-
public {{classname}}({{{.}}} o) {
213+
public {{classname}}(Object o) {
215214
super("anyOf", {{#isNullable}}Boolean.TRUE{{/isNullable}}{{^isNullable}}Boolean.FALSE{{/isNullable}});
216215
setActualInstance(o);
217216
}
218217

219-
{{/anyOf}}
220218
static {
221219
{{#composedSchemas}}
222220
{{#anyOf}}

modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/oneof_model.mustache

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,12 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im
5656
{{/isArray}}
5757
{{#isArray}}
5858

59-
final Type typeInstance = new TypeToken<{{{dataType}}}>(){}.getType();
60-
final TypeAdapter<{{{dataType}}}> adapter{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}} = (TypeAdapter<{{{dataType}}}>) gson.getDelegateAdapter(this, TypeToken.get(typeInstance));
59+
final Type typeInstance{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}} = new TypeToken<{{{dataType}}}>(){}.getType();
60+
final TypeAdapter<{{{dataType}}}> adapter{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}} = (TypeAdapter<{{{dataType}}}>) gson.getDelegateAdapter(this, TypeToken.get(typeInstance{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}}));
6161
{{/isArray}}
6262
{{#isMap}}
63-
final Type typeInstance = new TypeToken<{{{dataType}}}>(){}.getType();
64-
final TypeAdapter<{{{dataType}}}> adapter{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}} = (TypeAdapter<{{{dataType}}}>) gson.getDelegateAdapter(this, TypeToken.get(typeInstance));
63+
final Type typeInstance{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}} = new TypeToken<{{{dataType}}}>(){}.getType();
64+
final TypeAdapter<{{{dataType}}}> adapter{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}} = (TypeAdapter<{{{dataType}}}>) gson.getDelegateAdapter(this, TypeToken.get(typeInstance{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}}));
6565
{{/isMap}}
6666
{{/oneOf}}
6767
{{/composedSchemas}}
@@ -288,13 +288,11 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im
288288
super("oneOf", {{#isNullable}}Boolean.TRUE{{/isNullable}}{{^isNullable}}Boolean.FALSE{{/isNullable}});
289289
}
290290

291-
{{#oneOf}}
292-
public {{classname}}({{{.}}} o) {
291+
public {{classname}}(Object o) {
293292
super("oneOf", {{#isNullable}}Boolean.TRUE{{/isNullable}}{{^isNullable}}Boolean.FALSE{{/isNullable}});
294293
setActualInstance(o);
295294
}
296295

297-
{{/oneOf}}
298296
static {
299297
{{#composedSchemas}}
300298
{{#oneOf}}

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

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -938,6 +938,38 @@ paths:
938938
$ref: '#/components/schemas/FreeFormObject'
939939
description: request body
940940
required: true
941+
/fake/oneOfWIthSameErasure:
942+
get:
943+
description: Test route, this shouldn't cause a compiler error
944+
responses:
945+
200:
946+
description: successful response
947+
content:
948+
application/json:
949+
schema:
950+
oneOf:
951+
- type: array
952+
items:
953+
type: string
954+
- type: array
955+
items:
956+
type: integer
957+
/fake/anyOfWIthSameErasure:
958+
get:
959+
description: Test route, this shouldn't cause a compiler error
960+
responses:
961+
200:
962+
description: successful response
963+
content:
964+
application/json:
965+
schema:
966+
anyOf:
967+
- type: array
968+
items:
969+
type: string
970+
- type: array
971+
items:
972+
type: integer
941973
/fake/stringMap-reference:
942974
post:
943975
tags:

samples/client/others/java/okhttp-gson-oneOf/src/main/java/org/openapitools/client/model/MyExamplePostRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ public MyExamplePostRequest() {
124124
super("oneOf", Boolean.FALSE);
125125
}
126126

127-
public MyExamplePostRequest(String o) {
127+
public MyExamplePostRequest(Object o) {
128128
super("oneOf", Boolean.FALSE);
129129
setActualInstance(o);
130130
}

samples/client/others/java/okhttp-gson-streaming/src/main/java/org/openapitools/client/model/SimpleOneOf.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -146,12 +146,7 @@ public SimpleOneOf() {
146146
super("oneOf", Boolean.FALSE);
147147
}
148148

149-
public SimpleOneOf(Integer o) {
150-
super("oneOf", Boolean.FALSE);
151-
setActualInstance(o);
152-
}
153-
154-
public SimpleOneOf(String o) {
149+
public SimpleOneOf(Object o) {
155150
super("oneOf", Boolean.FALSE);
156151
setActualInstance(o);
157152
}

samples/client/petstore/java/okhttp-gson-3.1/src/main/java/org/openapitools/client/model/OneOfStringOrInt.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -145,12 +145,7 @@ public OneOfStringOrInt() {
145145
super("oneOf", Boolean.FALSE);
146146
}
147147

148-
public OneOfStringOrInt(Integer o) {
149-
super("oneOf", Boolean.FALSE);
150-
setActualInstance(o);
151-
}
152-
153-
public OneOfStringOrInt(String o) {
148+
public OneOfStringOrInt(Object o) {
154149
super("oneOf", Boolean.FALSE);
155150
setActualInstance(o);
156151
}

samples/client/petstore/java/okhttp-gson-3.1/src/main/java/org/openapitools/client/model/StringOrInt.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -140,12 +140,7 @@ public StringOrInt() {
140140
super("anyOf", Boolean.FALSE);
141141
}
142142

143-
public StringOrInt(Integer o) {
144-
super("anyOf", Boolean.FALSE);
145-
setActualInstance(o);
146-
}
147-
148-
public StringOrInt(String o) {
143+
public StringOrInt(Object o) {
149144
super("anyOf", Boolean.FALSE);
150145
setActualInstance(o);
151146
}

samples/client/petstore/java/okhttp-gson/.openapi-generator/FILES

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,10 @@ docs/EnumClass.md
4242
docs/EnumStringDiscriminator.md
4343
docs/EnumTest.md
4444
docs/EquilateralTriangle.md
45+
docs/FakeAnyOfWIthSameErasureGet200Response.md
4546
docs/FakeApi.md
4647
docs/FakeClassnameTags123Api.md
48+
docs/FakeOneOfWIthSameErasureGet200Response.md
4749
docs/FileSchemaTestClass.md
4850
docs/Foo.md
4951
docs/FooGetDefaultResponse.md
@@ -185,6 +187,8 @@ src/main/java/org/openapitools/client/model/EnumClass.java
185187
src/main/java/org/openapitools/client/model/EnumStringDiscriminator.java
186188
src/main/java/org/openapitools/client/model/EnumTest.java
187189
src/main/java/org/openapitools/client/model/EquilateralTriangle.java
190+
src/main/java/org/openapitools/client/model/FakeAnyOfWIthSameErasureGet200Response.java
191+
src/main/java/org/openapitools/client/model/FakeOneOfWIthSameErasureGet200Response.java
188192
src/main/java/org/openapitools/client/model/FileSchemaTestClass.java
189193
src/main/java/org/openapitools/client/model/Foo.java
190194
src/main/java/org/openapitools/client/model/FooGetDefaultResponse.java

samples/client/petstore/java/okhttp-gson/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,8 @@ Class | Method | HTTP request | Description
118118
*AnotherFakeApi* | [**getParameterArrayNumber**](docs/AnotherFakeApi.md#getParameterArrayNumber) | **GET** /fake/parameter-array-number | parameter array number default value
119119
*AnotherFakeApi* | [**getParameterStringNumber**](docs/AnotherFakeApi.md#getParameterStringNumber) | **GET** /fake/parameter-string-number | parameter string number
120120
*AnotherFakeApi* | [**nullRequestBody**](docs/AnotherFakeApi.md#nullRequestBody) | **GET** /fake/null-request-body | null request body
121+
*DefaultApi* | [**fakeAnyOfWIthSameErasureGet**](docs/DefaultApi.md#fakeAnyOfWIthSameErasureGet) | **GET** /fake/anyOfWIthSameErasure |
122+
*DefaultApi* | [**fakeOneOfWIthSameErasureGet**](docs/DefaultApi.md#fakeOneOfWIthSameErasureGet) | **GET** /fake/oneOfWIthSameErasure |
121123
*DefaultApi* | [**fooGet**](docs/DefaultApi.md#fooGet) | **GET** /foo |
122124
*FakeApi* | [**fakeGetFreeFormObjectGet**](docs/FakeApi.md#fakeGetFreeFormObjectGet) | **GET** /fake/get-free-form-object |
123125
*FakeApi* | [**fakeOuterBooleanSerialize**](docs/FakeApi.md#fakeOuterBooleanSerialize) | **POST** /fake/outer/boolean |
@@ -202,6 +204,8 @@ Class | Method | HTTP request | Description
202204
- [EnumStringDiscriminator](docs/EnumStringDiscriminator.md)
203205
- [EnumTest](docs/EnumTest.md)
204206
- [EquilateralTriangle](docs/EquilateralTriangle.md)
207+
- [FakeAnyOfWIthSameErasureGet200Response](docs/FakeAnyOfWIthSameErasureGet200Response.md)
208+
- [FakeOneOfWIthSameErasureGet200Response](docs/FakeOneOfWIthSameErasureGet200Response.md)
205209
- [FileSchemaTestClass](docs/FileSchemaTestClass.md)
206210
- [Foo](docs/Foo.md)
207211
- [FooGetDefaultResponse](docs/FooGetDefaultResponse.md)

samples/client/petstore/java/okhttp-gson/api/openapi.yaml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -992,6 +992,30 @@ paths:
992992
x-content-type: application/json
993993
x-accepts:
994994
- application/json
995+
/fake/oneOfWIthSameErasure:
996+
get:
997+
description: "Test route, this shouldn't cause a compiler error"
998+
responses:
999+
"200":
1000+
content:
1001+
application/json:
1002+
schema:
1003+
$ref: '#/components/schemas/_fake_oneOfWIthSameErasure_get_200_response'
1004+
description: successful response
1005+
x-accepts:
1006+
- application/json
1007+
/fake/anyOfWIthSameErasure:
1008+
get:
1009+
description: "Test route, this shouldn't cause a compiler error"
1010+
responses:
1011+
"200":
1012+
content:
1013+
application/json:
1014+
schema:
1015+
$ref: '#/components/schemas/_fake_anyOfWIthSameErasure_get_200_response'
1016+
description: successful response
1017+
x-accepts:
1018+
- application/json
9951019
/fake/stringMap-reference:
9961020
post:
9971021
description: ""
@@ -2887,6 +2911,22 @@ components:
28872911
- param
28882912
- param2
28892913
type: object
2914+
_fake_oneOfWIthSameErasure_get_200_response:
2915+
oneOf:
2916+
- items:
2917+
type: string
2918+
type: array
2919+
- items:
2920+
type: integer
2921+
type: array
2922+
_fake_anyOfWIthSameErasure_get_200_response:
2923+
anyOf:
2924+
- items:
2925+
type: string
2926+
type: array
2927+
- items:
2928+
type: integer
2929+
type: array
28902930
testInlineFreeformAdditionalProperties_request:
28912931
additionalProperties: true
28922932
properties:

0 commit comments

Comments
 (0)