Skip to content

Commit ba437f3

Browse files
committed
refactor: Moved oneOf deduplication to OpenAPINormalizer
1 parent af498c5 commit ba437f3

52 files changed

Lines changed: 23 additions & 128 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/DefaultCodegen.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1009,14 +1009,6 @@ public void postProcessParameter(CodegenParameter parameter) {
10091009
@Override
10101010
@SuppressWarnings("unused")
10111011
public void preprocessOpenAPI(OpenAPI openAPI) {
1012-
if (openAPI.getComponents() != null && openAPI.getComponents().getSchemas() != null) {
1013-
// Remove duplicate oneOf
1014-
Map<String, Schema> schemas = new HashMap<>(openAPI.getComponents().getSchemas());
1015-
for (var schema : schemas.values()) {
1016-
ModelUtils.deduplicateOneOfSchema(schema);
1017-
}
1018-
}
1019-
10201012
if (useOneOfInterfaces && openAPI.getComponents() != null) {
10211013
// we process the openapi schema here to find oneOf schemas and create interface models for them
10221014
Map<String, Schema> schemas = new HashMap<>(openAPI.getComponents().getSchemas());

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -922,6 +922,9 @@ protected Schema normalizeAllOfWithProperties(Schema schema, Set<Schema> visited
922922
}
923923

924924
protected Schema normalizeOneOf(Schema schema, Set<Schema> visitedSchemas) {
925+
// Remove duplicate oneOf entries
926+
ModelUtils.deduplicateOneOfSchema(schema);
927+
925928
// simplify first as the schema may no longer be a oneOf after processing the rule below
926929
schema = processSimplifyOneOf(schema);
927930

samples/client/petstore/rust/hyper/petstore/.openapi-generator/FILES

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ docs/ApiResponse.md
88
docs/ArrayItemRefTest.md
99
docs/Baz.md
1010
docs/Category.md
11-
docs/DuplicateOneOf.md
1211
docs/DuplicateTest.md
1312
docs/Duplicatetest.md
1413
docs/EnumArrayTesting.md
@@ -34,7 +33,6 @@ docs/User.md
3433
docs/UserApi.md
3534
docs/Vehicle.md
3635
docs/WithInnerOneOf.md
37-
docs/WithInnerOneOfFoo.md
3836
git_push.sh
3937
src/apis/client.rs
4038
src/apis/configuration.rs
@@ -53,7 +51,6 @@ src/models/api_response.rs
5351
src/models/array_item_ref_test.rs
5452
src/models/baz.rs
5553
src/models/category.rs
56-
src/models/duplicate_one_of.rs
5754
src/models/duplicate_test.rs
5855
src/models/duplicatetest.rs
5956
src/models/enum_array_testing.rs
@@ -74,4 +71,3 @@ src/models/unique_item_array_testing.rs
7471
src/models/user.rs
7572
src/models/vehicle.rs
7673
src/models/with_inner_one_of.rs
77-
src/models/with_inner_one_of_foo.rs

samples/client/petstore/rust/hyper/petstore/README.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ Class | Method | HTTP request | Description
6161
- [ArrayItemRefTest](docs/ArrayItemRefTest.md)
6262
- [Baz](docs/Baz.md)
6363
- [Category](docs/Category.md)
64-
- [DuplicateOneOf](docs/DuplicateOneOf.md)
6564
- [DuplicateTest](docs/DuplicateTest.md)
6665
- [Duplicatetest](docs/Duplicatetest.md)
6766
- [EnumArrayTesting](docs/EnumArrayTesting.md)
@@ -82,7 +81,6 @@ Class | Method | HTTP request | Description
8281
- [User](docs/User.md)
8382
- [Vehicle](docs/Vehicle.md)
8483
- [WithInnerOneOf](docs/WithInnerOneOf.md)
85-
- [WithInnerOneOfFoo](docs/WithInnerOneOfFoo.md)
8684

8785

8886
To get access to the crate's generated documentation, use:

samples/client/petstore/rust/hyper/petstore/docs/WithInnerOneOf.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
Name | Type | Description | Notes
66
------------ | ------------- | ------------- | -------------
7-
**foo** | Option<[**models::WithInnerOneOfFoo**](WithInnerOneOf_foo.md)> | | [optional]
7+
**foo** | Option<[**models::Order**](Order.md)> | | [optional]
88

99
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
1010

samples/client/petstore/rust/hyper/petstore/src/models/mod.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ pub mod baz;
1010
pub use self::baz::Baz;
1111
pub mod category;
1212
pub use self::category::Category;
13-
pub mod duplicate_one_of;
14-
pub use self::duplicate_one_of::DuplicateOneOf;
1513
pub mod duplicate_test;
1614
pub use self::duplicate_test::DuplicateTest;
1715
pub mod duplicatetest;
@@ -52,8 +50,6 @@ pub mod vehicle;
5250
pub use self::vehicle::Vehicle;
5351
pub mod with_inner_one_of;
5452
pub use self::with_inner_one_of::WithInnerOneOf;
55-
pub mod with_inner_one_of_foo;
56-
pub use self::with_inner_one_of_foo::WithInnerOneOfFoo;
5753
use serde::{Deserialize, Deserializer, Serializer};
5854
use serde_with::{de::DeserializeAsWrap, ser::SerializeAsWrap, DeserializeAs, SerializeAs};
5955
use std::marker::PhantomData;

samples/client/petstore/rust/hyper/petstore/src/models/with_inner_one_of.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use serde::{Deserialize, Serialize};
1414
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
1515
pub struct WithInnerOneOf {
1616
#[serde(rename = "foo", skip_serializing_if = "Option::is_none")]
17-
pub foo: Option<Box<models::WithInnerOneOfFoo>>,
17+
pub foo: Option<Box<models::Order>>,
1818
}
1919

2020
impl WithInnerOneOf {

samples/client/petstore/rust/hyper0x/petstore/.openapi-generator/FILES

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ docs/ApiResponse.md
88
docs/ArrayItemRefTest.md
99
docs/Baz.md
1010
docs/Category.md
11-
docs/DuplicateOneOf.md
1211
docs/DuplicateTest.md
1312
docs/Duplicatetest.md
1413
docs/EnumArrayTesting.md
@@ -34,7 +33,6 @@ docs/User.md
3433
docs/UserApi.md
3534
docs/Vehicle.md
3635
docs/WithInnerOneOf.md
37-
docs/WithInnerOneOfFoo.md
3836
git_push.sh
3937
src/apis/configuration.rs
4038
src/apis/fake_api.rs
@@ -51,7 +49,6 @@ src/models/api_response.rs
5149
src/models/array_item_ref_test.rs
5250
src/models/baz.rs
5351
src/models/category.rs
54-
src/models/duplicate_one_of.rs
5552
src/models/duplicate_test.rs
5653
src/models/duplicatetest.rs
5754
src/models/enum_array_testing.rs
@@ -72,4 +69,3 @@ src/models/unique_item_array_testing.rs
7269
src/models/user.rs
7370
src/models/vehicle.rs
7471
src/models/with_inner_one_of.rs
75-
src/models/with_inner_one_of_foo.rs

samples/client/petstore/rust/hyper0x/petstore/README.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ Class | Method | HTTP request | Description
6161
- [ArrayItemRefTest](docs/ArrayItemRefTest.md)
6262
- [Baz](docs/Baz.md)
6363
- [Category](docs/Category.md)
64-
- [DuplicateOneOf](docs/DuplicateOneOf.md)
6564
- [DuplicateTest](docs/DuplicateTest.md)
6665
- [Duplicatetest](docs/Duplicatetest.md)
6766
- [EnumArrayTesting](docs/EnumArrayTesting.md)
@@ -82,7 +81,6 @@ Class | Method | HTTP request | Description
8281
- [User](docs/User.md)
8382
- [Vehicle](docs/Vehicle.md)
8483
- [WithInnerOneOf](docs/WithInnerOneOf.md)
85-
- [WithInnerOneOfFoo](docs/WithInnerOneOfFoo.md)
8684

8785

8886
To get access to the crate's generated documentation, use:

samples/client/petstore/rust/hyper0x/petstore/docs/WithInnerOneOf.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
Name | Type | Description | Notes
66
------------ | ------------- | ------------- | -------------
7-
**foo** | Option<[**models::WithInnerOneOfFoo**](WithInnerOneOf_foo.md)> | | [optional]
7+
**foo** | Option<[**models::Order**](Order.md)> | | [optional]
88

99
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
1010

0 commit comments

Comments
 (0)