From 57809f301bc03936f48646f1f15ebfb7552582ab Mon Sep 17 00:00:00 2001 From: Ross Sullivan Date: Sat, 15 Mar 2025 22:37:57 +0900 Subject: [PATCH 1/4] Fix for allof multi model with only metadata fields --- .../codegen/InlineModelResolver.java | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java index 565cda9194d0..c2d8612976e7 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java @@ -417,7 +417,18 @@ private void gatherInlineModels(Schema schema, String modelPrefix) { if (schema.getAllOf().size() == 1) { // handle earlier in this function when looping through properties } else if (schema.getAllOf().size() > 1) { - LOGGER.warn("allOf schema `{}` containing multiple types (not model) is not supported at the moment.", schema.getName()); + // Check if there is only one "non metadata" schema. + // For example, there may be an `description` only schema that is used to override the descrption. + // In these cases, we can simply discard those schemas. + List nonMetadataOnlySchemas = schema.getAllOf().stream() + .filter(v -> isMetadataOnlySchema((Schema) v)) + .toList(); + + if (nonMetadataOnlySchemas.size() == 1) { + schema.setAllOf(nonMetadataOnlySchemas); + } else { + LOGGER.warn("allOf schema `{}` containing multiple types (not model) is not supported at the moment.", schema.getName()); + } } else { LOGGER.error("allOf schema `{}` contains no items.", schema.getName()); } @@ -473,6 +484,31 @@ private void gatherInlineModels(Schema schema, String modelPrefix) { } } + /** + * Returns true if a schema is only metadata and not an actual type. + * For example, a schema that only has a `description` without any `properties` or `$ref` defined. + * + * @param schema the schema + * @return if the schema is only metadata and not an actual type + */ + boolean isMetadataOnlySchema(Schema schema) { + return schema.get$ref() != null || + schema.getProperties() != null || + schema.getType() != null || + schema.getAdditionalProperties() != null || + schema.getAllOf() != null || + schema.getAnyOf() != null || + schema.getOneOf() != null || + schema.getPrefixItems() != null || + schema.getItems() != null || + schema.getTypes() != null || + schema.getPatternProperties() != null || + schema.getContains() != null || + schema.get$dynamicAnchor() != null || + schema.get$anchor() != null || + schema.getContentSchema() != null; + } + /** * Flatten inline models in content * From 9630c6c142ed7169ce6cd177e3b56f6f8d0cc0d9 Mon Sep 17 00:00:00 2001 From: Ross Sullivan Date: Sat, 15 Mar 2025 22:42:31 +0900 Subject: [PATCH 2/4] Update samples --- .../src/test/resources/3_0/rust/petstore.yaml | 20 +++++++++++- .../models/DemoActionContainerModel.gd | 4 +-- .../hyper/petstore/.openapi-generator/FILES | 2 ++ .../petstore/rust/hyper/petstore/README.md | 1 + .../docs/TestAllOfWithMultiMetadataOnly.md | 12 +++++++ .../petstore/src/models/action_container.rs | 4 +-- .../rust/hyper/petstore/src/models/mod.rs | 2 ++ .../test_all_of_with_multi_metadata_only.rs | 31 +++++++++++++++++++ .../hyper0x/petstore/.openapi-generator/FILES | 2 ++ .../petstore/rust/hyper0x/petstore/README.md | 1 + .../docs/TestAllOfWithMultiMetadataOnly.md | 12 +++++++ .../petstore/src/models/action_container.rs | 4 +-- .../rust/hyper0x/petstore/src/models/mod.rs | 2 ++ .../test_all_of_with_multi_metadata_only.rs | 31 +++++++++++++++++++ .../petstore/.openapi-generator/FILES | 2 ++ .../rust/reqwest-trait/petstore/README.md | 1 + .../docs/TestAllOfWithMultiMetadataOnly.md | 12 +++++++ .../petstore/src/models/action_container.rs | 4 +-- .../reqwest-trait/petstore/src/models/mod.rs | 2 ++ .../test_all_of_with_multi_metadata_only.rs | 31 +++++++++++++++++++ .../.openapi-generator/FILES | 2 ++ .../petstore-async-middleware/README.md | 1 + .../docs/TestAllOfWithMultiMetadataOnly.md | 12 +++++++ .../src/models/action_container.rs | 4 +-- .../src/models/mod.rs | 2 ++ .../test_all_of_with_multi_metadata_only.rs | 31 +++++++++++++++++++ .../.openapi-generator/FILES | 2 ++ .../petstore-async-tokensource/README.md | 1 + .../docs/TestAllOfWithMultiMetadataOnly.md | 12 +++++++ .../src/models/action_container.rs | 4 +-- .../src/models/mod.rs | 2 ++ .../test_all_of_with_multi_metadata_only.rs | 31 +++++++++++++++++++ .../petstore-async/.openapi-generator/FILES | 2 ++ .../rust/reqwest/petstore-async/README.md | 1 + .../docs/TestAllOfWithMultiMetadataOnly.md | 12 +++++++ .../src/models/action_container.rs | 4 +-- .../reqwest/petstore-async/src/models/mod.rs | 2 ++ .../test_all_of_with_multi_metadata_only.rs | 31 +++++++++++++++++++ .../.openapi-generator/FILES | 2 ++ .../rust/reqwest/petstore-avoid-box/README.md | 1 + .../docs/TestAllOfWithMultiMetadataOnly.md | 12 +++++++ .../petstore-avoid-box/src/models/mod.rs | 2 ++ .../test_all_of_with_multi_metadata_only.rs | 31 +++++++++++++++++++ .../.openapi-generator/FILES | 2 ++ .../reqwest/petstore-awsv4signature/README.md | 1 + .../docs/TestAllOfWithMultiMetadataOnly.md | 12 +++++++ .../src/models/action_container.rs | 4 +-- .../petstore-awsv4signature/src/models/mod.rs | 2 ++ .../test_all_of_with_multi_metadata_only.rs | 31 +++++++++++++++++++ .../.openapi-generator/FILES | 2 ++ .../petstore-model-name-prefix/README.md | 1 + .../docs/FooTestAllOfWithMultiMetadataOnly.md | 12 +++++++ .../src/models/foo_action_container.rs | 4 +-- ...oo_test_all_of_with_multi_metadata_only.rs | 31 +++++++++++++++++++ .../src/models/mod.rs | 2 ++ .../reqwest/petstore/.openapi-generator/FILES | 2 ++ .../petstore/rust/reqwest/petstore/README.md | 1 + .../docs/TestAllOfWithMultiMetadataOnly.md | 12 +++++++ .../petstore/src/models/action_container.rs | 4 +-- .../rust/reqwest/petstore/src/models/mod.rs | 2 ++ .../test_all_of_with_multi_metadata_only.rs | 31 +++++++++++++++++++ .../builds/composed-schemas/DefaultApi.md | 2 +- 62 files changed, 520 insertions(+), 22 deletions(-) create mode 100644 samples/client/petstore/rust/hyper/petstore/docs/TestAllOfWithMultiMetadataOnly.md create mode 100644 samples/client/petstore/rust/hyper/petstore/src/models/test_all_of_with_multi_metadata_only.rs create mode 100644 samples/client/petstore/rust/hyper0x/petstore/docs/TestAllOfWithMultiMetadataOnly.md create mode 100644 samples/client/petstore/rust/hyper0x/petstore/src/models/test_all_of_with_multi_metadata_only.rs create mode 100644 samples/client/petstore/rust/reqwest-trait/petstore/docs/TestAllOfWithMultiMetadataOnly.md create mode 100644 samples/client/petstore/rust/reqwest-trait/petstore/src/models/test_all_of_with_multi_metadata_only.rs create mode 100644 samples/client/petstore/rust/reqwest/petstore-async-middleware/docs/TestAllOfWithMultiMetadataOnly.md create mode 100644 samples/client/petstore/rust/reqwest/petstore-async-middleware/src/models/test_all_of_with_multi_metadata_only.rs create mode 100644 samples/client/petstore/rust/reqwest/petstore-async-tokensource/docs/TestAllOfWithMultiMetadataOnly.md create mode 100644 samples/client/petstore/rust/reqwest/petstore-async-tokensource/src/models/test_all_of_with_multi_metadata_only.rs create mode 100644 samples/client/petstore/rust/reqwest/petstore-async/docs/TestAllOfWithMultiMetadataOnly.md create mode 100644 samples/client/petstore/rust/reqwest/petstore-async/src/models/test_all_of_with_multi_metadata_only.rs create mode 100644 samples/client/petstore/rust/reqwest/petstore-avoid-box/docs/TestAllOfWithMultiMetadataOnly.md create mode 100644 samples/client/petstore/rust/reqwest/petstore-avoid-box/src/models/test_all_of_with_multi_metadata_only.rs create mode 100644 samples/client/petstore/rust/reqwest/petstore-awsv4signature/docs/TestAllOfWithMultiMetadataOnly.md create mode 100644 samples/client/petstore/rust/reqwest/petstore-awsv4signature/src/models/test_all_of_with_multi_metadata_only.rs create mode 100644 samples/client/petstore/rust/reqwest/petstore-model-name-prefix/docs/FooTestAllOfWithMultiMetadataOnly.md create mode 100644 samples/client/petstore/rust/reqwest/petstore-model-name-prefix/src/models/foo_test_all_of_with_multi_metadata_only.rs create mode 100644 samples/client/petstore/rust/reqwest/petstore/docs/TestAllOfWithMultiMetadataOnly.md create mode 100644 samples/client/petstore/rust/reqwest/petstore/src/models/test_all_of_with_multi_metadata_only.rs diff --git a/modules/openapi-generator/src/test/resources/3_0/rust/petstore.yaml b/modules/openapi-generator/src/test/resources/3_0/rust/petstore.yaml index ced7450529e0..96260b0cb5b6 100644 --- a/modules/openapi-generator/src/test/resources/3_0/rust/petstore.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/rust/petstore.yaml @@ -1074,4 +1074,22 @@ components: required: - type - speed - + existing_tags_array: + type: array + items: + type: string + nullable: true + description: 'existing_tags_array' + example: + - base-image + - prod + TestAllOfWithMultiMetadataOnly: + type: object + properties: + id: + type: integer + format: int64 + foo: + allOf: + - $ref: '#/components/schemas/existing_tags_array' + - description: This is a test for allOf with metadata only fields diff --git a/samples/client/petstore/gdscript/addons/oas.petstore.client/models/DemoActionContainerModel.gd b/samples/client/petstore/gdscript/addons/oas.petstore.client/models/DemoActionContainerModel.gd index 7abe3a2a4622..146b652507f7 100644 --- a/samples/client/petstore/gdscript/addons/oas.petstore.client/models/DemoActionContainerModel.gd +++ b/samples/client/petstore/gdscript/addons/oas.petstore.client/models/DemoActionContainerModel.gd @@ -12,7 +12,7 @@ class_name DemoActionContainerModel # Required: True # isArray: false -@export var action: DemoBazModel: +@export var action: Baz: set(value): __action__was__set = true action = value @@ -37,7 +37,7 @@ func bzz_normalize() -> Dictionary: static func bzz_denormalize_single(from_dict: Dictionary): var me := new() if from_dict.has("action"): - me.action = DemoBazModel.bzz_denormalize_single(from_dict["action"]) + me.action = from_dict["action"] return me diff --git a/samples/client/petstore/rust/hyper/petstore/.openapi-generator/FILES b/samples/client/petstore/rust/hyper/petstore/.openapi-generator/FILES index b493e74d9ef8..150996cc9cf7 100644 --- a/samples/client/petstore/rust/hyper/petstore/.openapi-generator/FILES +++ b/samples/client/petstore/rust/hyper/petstore/.openapi-generator/FILES @@ -22,6 +22,7 @@ docs/Ref.md docs/Return.md docs/StoreApi.md docs/Tag.md +docs/TestAllOfWithMultiMetadataOnly.md docs/TestingApi.md docs/TestsDiscriminatorDuplicateEnumsGet200Response.md docs/TypeTesting.md @@ -59,6 +60,7 @@ src/models/person.rs src/models/pet.rs src/models/property_test.rs src/models/tag.rs +src/models/test_all_of_with_multi_metadata_only.rs src/models/type_testing.rs src/models/unique_item_array_testing.rs src/models/user.rs diff --git a/samples/client/petstore/rust/hyper/petstore/README.md b/samples/client/petstore/rust/hyper/petstore/README.md index 967ae70f6e58..eea920d3af20 100644 --- a/samples/client/petstore/rust/hyper/petstore/README.md +++ b/samples/client/petstore/rust/hyper/petstore/README.md @@ -72,6 +72,7 @@ Class | Method | HTTP request | Description - [Ref](docs/Ref.md) - [Return](docs/Return.md) - [Tag](docs/Tag.md) + - [TestAllOfWithMultiMetadataOnly](docs/TestAllOfWithMultiMetadataOnly.md) - [TestsDiscriminatorDuplicateEnumsGet200Response](docs/TestsDiscriminatorDuplicateEnumsGet200Response.md) - [TypeTesting](docs/TypeTesting.md) - [UniqueItemArrayTesting](docs/UniqueItemArrayTesting.md) diff --git a/samples/client/petstore/rust/hyper/petstore/docs/TestAllOfWithMultiMetadataOnly.md b/samples/client/petstore/rust/hyper/petstore/docs/TestAllOfWithMultiMetadataOnly.md new file mode 100644 index 000000000000..e460a9470534 --- /dev/null +++ b/samples/client/petstore/rust/hyper/petstore/docs/TestAllOfWithMultiMetadataOnly.md @@ -0,0 +1,12 @@ +# TestAllOfWithMultiMetadataOnly + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | Option<**i64**> | | [optional] +**foo** | Option<**Vec**> | existing_tags_array | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/rust/hyper/petstore/src/models/action_container.rs b/samples/client/petstore/rust/hyper/petstore/src/models/action_container.rs index 11d2f0b87124..0dd27c0e5c84 100644 --- a/samples/client/petstore/rust/hyper/petstore/src/models/action_container.rs +++ b/samples/client/petstore/rust/hyper/petstore/src/models/action_container.rs @@ -14,13 +14,13 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct ActionContainer { #[serde(rename = "action")] - pub action: Box, + pub action: models::Baz, } impl ActionContainer { pub fn new(action: models::Baz) -> ActionContainer { ActionContainer { - action: Box::new(action), + action, } } } diff --git a/samples/client/petstore/rust/hyper/petstore/src/models/mod.rs b/samples/client/petstore/rust/hyper/petstore/src/models/mod.rs index ee02ccdd5303..f72b1007f3e8 100644 --- a/samples/client/petstore/rust/hyper/petstore/src/models/mod.rs +++ b/samples/client/petstore/rust/hyper/petstore/src/models/mod.rs @@ -32,6 +32,8 @@ pub mod model_return; pub use self::model_return::Return; pub mod tag; pub use self::tag::Tag; +pub mod test_all_of_with_multi_metadata_only; +pub use self::test_all_of_with_multi_metadata_only::TestAllOfWithMultiMetadataOnly; pub mod _tests_discriminator_duplicate_enums_get_200_response; pub use self::_tests_discriminator_duplicate_enums_get_200_response::TestsDiscriminatorDuplicateEnumsGet200Response; pub mod type_testing; diff --git a/samples/client/petstore/rust/hyper/petstore/src/models/test_all_of_with_multi_metadata_only.rs b/samples/client/petstore/rust/hyper/petstore/src/models/test_all_of_with_multi_metadata_only.rs new file mode 100644 index 000000000000..a19b2e1b2882 --- /dev/null +++ b/samples/client/petstore/rust/hyper/petstore/src/models/test_all_of_with_multi_metadata_only.rs @@ -0,0 +1,31 @@ +/* + * OpenAPI Petstore + * + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct TestAllOfWithMultiMetadataOnly { + #[serde(rename = "id", skip_serializing_if = "Option::is_none")] + pub id: Option, + /// existing_tags_array + #[serde(rename = "foo", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")] + pub foo: Option>>, +} + +impl TestAllOfWithMultiMetadataOnly { + pub fn new() -> TestAllOfWithMultiMetadataOnly { + TestAllOfWithMultiMetadataOnly { + id: None, + foo: None, + } + } +} + diff --git a/samples/client/petstore/rust/hyper0x/petstore/.openapi-generator/FILES b/samples/client/petstore/rust/hyper0x/petstore/.openapi-generator/FILES index b4b855f56c7b..d91146d125f7 100644 --- a/samples/client/petstore/rust/hyper0x/petstore/.openapi-generator/FILES +++ b/samples/client/petstore/rust/hyper0x/petstore/.openapi-generator/FILES @@ -22,6 +22,7 @@ docs/Ref.md docs/Return.md docs/StoreApi.md docs/Tag.md +docs/TestAllOfWithMultiMetadataOnly.md docs/TestingApi.md docs/TestsDiscriminatorDuplicateEnumsGet200Response.md docs/TypeTesting.md @@ -57,6 +58,7 @@ src/models/person.rs src/models/pet.rs src/models/property_test.rs src/models/tag.rs +src/models/test_all_of_with_multi_metadata_only.rs src/models/type_testing.rs src/models/unique_item_array_testing.rs src/models/user.rs diff --git a/samples/client/petstore/rust/hyper0x/petstore/README.md b/samples/client/petstore/rust/hyper0x/petstore/README.md index dccdf732f43b..6cab626fc3aa 100644 --- a/samples/client/petstore/rust/hyper0x/petstore/README.md +++ b/samples/client/petstore/rust/hyper0x/petstore/README.md @@ -72,6 +72,7 @@ Class | Method | HTTP request | Description - [Ref](docs/Ref.md) - [Return](docs/Return.md) - [Tag](docs/Tag.md) + - [TestAllOfWithMultiMetadataOnly](docs/TestAllOfWithMultiMetadataOnly.md) - [TestsDiscriminatorDuplicateEnumsGet200Response](docs/TestsDiscriminatorDuplicateEnumsGet200Response.md) - [TypeTesting](docs/TypeTesting.md) - [UniqueItemArrayTesting](docs/UniqueItemArrayTesting.md) diff --git a/samples/client/petstore/rust/hyper0x/petstore/docs/TestAllOfWithMultiMetadataOnly.md b/samples/client/petstore/rust/hyper0x/petstore/docs/TestAllOfWithMultiMetadataOnly.md new file mode 100644 index 000000000000..e460a9470534 --- /dev/null +++ b/samples/client/petstore/rust/hyper0x/petstore/docs/TestAllOfWithMultiMetadataOnly.md @@ -0,0 +1,12 @@ +# TestAllOfWithMultiMetadataOnly + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | Option<**i64**> | | [optional] +**foo** | Option<**Vec**> | existing_tags_array | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/rust/hyper0x/petstore/src/models/action_container.rs b/samples/client/petstore/rust/hyper0x/petstore/src/models/action_container.rs index 11d2f0b87124..0dd27c0e5c84 100644 --- a/samples/client/petstore/rust/hyper0x/petstore/src/models/action_container.rs +++ b/samples/client/petstore/rust/hyper0x/petstore/src/models/action_container.rs @@ -14,13 +14,13 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct ActionContainer { #[serde(rename = "action")] - pub action: Box, + pub action: models::Baz, } impl ActionContainer { pub fn new(action: models::Baz) -> ActionContainer { ActionContainer { - action: Box::new(action), + action, } } } diff --git a/samples/client/petstore/rust/hyper0x/petstore/src/models/mod.rs b/samples/client/petstore/rust/hyper0x/petstore/src/models/mod.rs index ee02ccdd5303..f72b1007f3e8 100644 --- a/samples/client/petstore/rust/hyper0x/petstore/src/models/mod.rs +++ b/samples/client/petstore/rust/hyper0x/petstore/src/models/mod.rs @@ -32,6 +32,8 @@ pub mod model_return; pub use self::model_return::Return; pub mod tag; pub use self::tag::Tag; +pub mod test_all_of_with_multi_metadata_only; +pub use self::test_all_of_with_multi_metadata_only::TestAllOfWithMultiMetadataOnly; pub mod _tests_discriminator_duplicate_enums_get_200_response; pub use self::_tests_discriminator_duplicate_enums_get_200_response::TestsDiscriminatorDuplicateEnumsGet200Response; pub mod type_testing; diff --git a/samples/client/petstore/rust/hyper0x/petstore/src/models/test_all_of_with_multi_metadata_only.rs b/samples/client/petstore/rust/hyper0x/petstore/src/models/test_all_of_with_multi_metadata_only.rs new file mode 100644 index 000000000000..a19b2e1b2882 --- /dev/null +++ b/samples/client/petstore/rust/hyper0x/petstore/src/models/test_all_of_with_multi_metadata_only.rs @@ -0,0 +1,31 @@ +/* + * OpenAPI Petstore + * + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct TestAllOfWithMultiMetadataOnly { + #[serde(rename = "id", skip_serializing_if = "Option::is_none")] + pub id: Option, + /// existing_tags_array + #[serde(rename = "foo", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")] + pub foo: Option>>, +} + +impl TestAllOfWithMultiMetadataOnly { + pub fn new() -> TestAllOfWithMultiMetadataOnly { + TestAllOfWithMultiMetadataOnly { + id: None, + foo: None, + } + } +} + diff --git a/samples/client/petstore/rust/reqwest-trait/petstore/.openapi-generator/FILES b/samples/client/petstore/rust/reqwest-trait/petstore/.openapi-generator/FILES index b4b855f56c7b..d91146d125f7 100644 --- a/samples/client/petstore/rust/reqwest-trait/petstore/.openapi-generator/FILES +++ b/samples/client/petstore/rust/reqwest-trait/petstore/.openapi-generator/FILES @@ -22,6 +22,7 @@ docs/Ref.md docs/Return.md docs/StoreApi.md docs/Tag.md +docs/TestAllOfWithMultiMetadataOnly.md docs/TestingApi.md docs/TestsDiscriminatorDuplicateEnumsGet200Response.md docs/TypeTesting.md @@ -57,6 +58,7 @@ src/models/person.rs src/models/pet.rs src/models/property_test.rs src/models/tag.rs +src/models/test_all_of_with_multi_metadata_only.rs src/models/type_testing.rs src/models/unique_item_array_testing.rs src/models/user.rs diff --git a/samples/client/petstore/rust/reqwest-trait/petstore/README.md b/samples/client/petstore/rust/reqwest-trait/petstore/README.md index f9c2b6161645..a0aeca7fd76f 100644 --- a/samples/client/petstore/rust/reqwest-trait/petstore/README.md +++ b/samples/client/petstore/rust/reqwest-trait/petstore/README.md @@ -72,6 +72,7 @@ Class | Method | HTTP request | Description - [Ref](docs/Ref.md) - [Return](docs/Return.md) - [Tag](docs/Tag.md) + - [TestAllOfWithMultiMetadataOnly](docs/TestAllOfWithMultiMetadataOnly.md) - [TestsDiscriminatorDuplicateEnumsGet200Response](docs/TestsDiscriminatorDuplicateEnumsGet200Response.md) - [TypeTesting](docs/TypeTesting.md) - [UniqueItemArrayTesting](docs/UniqueItemArrayTesting.md) diff --git a/samples/client/petstore/rust/reqwest-trait/petstore/docs/TestAllOfWithMultiMetadataOnly.md b/samples/client/petstore/rust/reqwest-trait/petstore/docs/TestAllOfWithMultiMetadataOnly.md new file mode 100644 index 000000000000..e460a9470534 --- /dev/null +++ b/samples/client/petstore/rust/reqwest-trait/petstore/docs/TestAllOfWithMultiMetadataOnly.md @@ -0,0 +1,12 @@ +# TestAllOfWithMultiMetadataOnly + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | Option<**i64**> | | [optional] +**foo** | Option<**Vec**> | existing_tags_array | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/rust/reqwest-trait/petstore/src/models/action_container.rs b/samples/client/petstore/rust/reqwest-trait/petstore/src/models/action_container.rs index 11d2f0b87124..0dd27c0e5c84 100644 --- a/samples/client/petstore/rust/reqwest-trait/petstore/src/models/action_container.rs +++ b/samples/client/petstore/rust/reqwest-trait/petstore/src/models/action_container.rs @@ -14,13 +14,13 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct ActionContainer { #[serde(rename = "action")] - pub action: Box, + pub action: models::Baz, } impl ActionContainer { pub fn new(action: models::Baz) -> ActionContainer { ActionContainer { - action: Box::new(action), + action, } } } diff --git a/samples/client/petstore/rust/reqwest-trait/petstore/src/models/mod.rs b/samples/client/petstore/rust/reqwest-trait/petstore/src/models/mod.rs index ee02ccdd5303..f72b1007f3e8 100644 --- a/samples/client/petstore/rust/reqwest-trait/petstore/src/models/mod.rs +++ b/samples/client/petstore/rust/reqwest-trait/petstore/src/models/mod.rs @@ -32,6 +32,8 @@ pub mod model_return; pub use self::model_return::Return; pub mod tag; pub use self::tag::Tag; +pub mod test_all_of_with_multi_metadata_only; +pub use self::test_all_of_with_multi_metadata_only::TestAllOfWithMultiMetadataOnly; pub mod _tests_discriminator_duplicate_enums_get_200_response; pub use self::_tests_discriminator_duplicate_enums_get_200_response::TestsDiscriminatorDuplicateEnumsGet200Response; pub mod type_testing; diff --git a/samples/client/petstore/rust/reqwest-trait/petstore/src/models/test_all_of_with_multi_metadata_only.rs b/samples/client/petstore/rust/reqwest-trait/petstore/src/models/test_all_of_with_multi_metadata_only.rs new file mode 100644 index 000000000000..a19b2e1b2882 --- /dev/null +++ b/samples/client/petstore/rust/reqwest-trait/petstore/src/models/test_all_of_with_multi_metadata_only.rs @@ -0,0 +1,31 @@ +/* + * OpenAPI Petstore + * + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct TestAllOfWithMultiMetadataOnly { + #[serde(rename = "id", skip_serializing_if = "Option::is_none")] + pub id: Option, + /// existing_tags_array + #[serde(rename = "foo", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")] + pub foo: Option>>, +} + +impl TestAllOfWithMultiMetadataOnly { + pub fn new() -> TestAllOfWithMultiMetadataOnly { + TestAllOfWithMultiMetadataOnly { + id: None, + foo: None, + } + } +} + diff --git a/samples/client/petstore/rust/reqwest/petstore-async-middleware/.openapi-generator/FILES b/samples/client/petstore/rust/reqwest/petstore-async-middleware/.openapi-generator/FILES index b4b855f56c7b..d91146d125f7 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async-middleware/.openapi-generator/FILES +++ b/samples/client/petstore/rust/reqwest/petstore-async-middleware/.openapi-generator/FILES @@ -22,6 +22,7 @@ docs/Ref.md docs/Return.md docs/StoreApi.md docs/Tag.md +docs/TestAllOfWithMultiMetadataOnly.md docs/TestingApi.md docs/TestsDiscriminatorDuplicateEnumsGet200Response.md docs/TypeTesting.md @@ -57,6 +58,7 @@ src/models/person.rs src/models/pet.rs src/models/property_test.rs src/models/tag.rs +src/models/test_all_of_with_multi_metadata_only.rs src/models/type_testing.rs src/models/unique_item_array_testing.rs src/models/user.rs diff --git a/samples/client/petstore/rust/reqwest/petstore-async-middleware/README.md b/samples/client/petstore/rust/reqwest/petstore-async-middleware/README.md index 51cb02c3880a..eaea5552827d 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async-middleware/README.md +++ b/samples/client/petstore/rust/reqwest/petstore-async-middleware/README.md @@ -72,6 +72,7 @@ Class | Method | HTTP request | Description - [Ref](docs/Ref.md) - [Return](docs/Return.md) - [Tag](docs/Tag.md) + - [TestAllOfWithMultiMetadataOnly](docs/TestAllOfWithMultiMetadataOnly.md) - [TestsDiscriminatorDuplicateEnumsGet200Response](docs/TestsDiscriminatorDuplicateEnumsGet200Response.md) - [TypeTesting](docs/TypeTesting.md) - [UniqueItemArrayTesting](docs/UniqueItemArrayTesting.md) diff --git a/samples/client/petstore/rust/reqwest/petstore-async-middleware/docs/TestAllOfWithMultiMetadataOnly.md b/samples/client/petstore/rust/reqwest/petstore-async-middleware/docs/TestAllOfWithMultiMetadataOnly.md new file mode 100644 index 000000000000..e460a9470534 --- /dev/null +++ b/samples/client/petstore/rust/reqwest/petstore-async-middleware/docs/TestAllOfWithMultiMetadataOnly.md @@ -0,0 +1,12 @@ +# TestAllOfWithMultiMetadataOnly + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | Option<**i64**> | | [optional] +**foo** | Option<**Vec**> | existing_tags_array | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/rust/reqwest/petstore-async-middleware/src/models/action_container.rs b/samples/client/petstore/rust/reqwest/petstore-async-middleware/src/models/action_container.rs index 11d2f0b87124..0dd27c0e5c84 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async-middleware/src/models/action_container.rs +++ b/samples/client/petstore/rust/reqwest/petstore-async-middleware/src/models/action_container.rs @@ -14,13 +14,13 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct ActionContainer { #[serde(rename = "action")] - pub action: Box, + pub action: models::Baz, } impl ActionContainer { pub fn new(action: models::Baz) -> ActionContainer { ActionContainer { - action: Box::new(action), + action, } } } diff --git a/samples/client/petstore/rust/reqwest/petstore-async-middleware/src/models/mod.rs b/samples/client/petstore/rust/reqwest/petstore-async-middleware/src/models/mod.rs index ee02ccdd5303..f72b1007f3e8 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async-middleware/src/models/mod.rs +++ b/samples/client/petstore/rust/reqwest/petstore-async-middleware/src/models/mod.rs @@ -32,6 +32,8 @@ pub mod model_return; pub use self::model_return::Return; pub mod tag; pub use self::tag::Tag; +pub mod test_all_of_with_multi_metadata_only; +pub use self::test_all_of_with_multi_metadata_only::TestAllOfWithMultiMetadataOnly; pub mod _tests_discriminator_duplicate_enums_get_200_response; pub use self::_tests_discriminator_duplicate_enums_get_200_response::TestsDiscriminatorDuplicateEnumsGet200Response; pub mod type_testing; diff --git a/samples/client/petstore/rust/reqwest/petstore-async-middleware/src/models/test_all_of_with_multi_metadata_only.rs b/samples/client/petstore/rust/reqwest/petstore-async-middleware/src/models/test_all_of_with_multi_metadata_only.rs new file mode 100644 index 000000000000..a19b2e1b2882 --- /dev/null +++ b/samples/client/petstore/rust/reqwest/petstore-async-middleware/src/models/test_all_of_with_multi_metadata_only.rs @@ -0,0 +1,31 @@ +/* + * OpenAPI Petstore + * + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct TestAllOfWithMultiMetadataOnly { + #[serde(rename = "id", skip_serializing_if = "Option::is_none")] + pub id: Option, + /// existing_tags_array + #[serde(rename = "foo", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")] + pub foo: Option>>, +} + +impl TestAllOfWithMultiMetadataOnly { + pub fn new() -> TestAllOfWithMultiMetadataOnly { + TestAllOfWithMultiMetadataOnly { + id: None, + foo: None, + } + } +} + diff --git a/samples/client/petstore/rust/reqwest/petstore-async-tokensource/.openapi-generator/FILES b/samples/client/petstore/rust/reqwest/petstore-async-tokensource/.openapi-generator/FILES index b4b855f56c7b..d91146d125f7 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async-tokensource/.openapi-generator/FILES +++ b/samples/client/petstore/rust/reqwest/petstore-async-tokensource/.openapi-generator/FILES @@ -22,6 +22,7 @@ docs/Ref.md docs/Return.md docs/StoreApi.md docs/Tag.md +docs/TestAllOfWithMultiMetadataOnly.md docs/TestingApi.md docs/TestsDiscriminatorDuplicateEnumsGet200Response.md docs/TypeTesting.md @@ -57,6 +58,7 @@ src/models/person.rs src/models/pet.rs src/models/property_test.rs src/models/tag.rs +src/models/test_all_of_with_multi_metadata_only.rs src/models/type_testing.rs src/models/unique_item_array_testing.rs src/models/user.rs diff --git a/samples/client/petstore/rust/reqwest/petstore-async-tokensource/README.md b/samples/client/petstore/rust/reqwest/petstore-async-tokensource/README.md index 037cbd978d4e..48867687d4ba 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async-tokensource/README.md +++ b/samples/client/petstore/rust/reqwest/petstore-async-tokensource/README.md @@ -72,6 +72,7 @@ Class | Method | HTTP request | Description - [Ref](docs/Ref.md) - [Return](docs/Return.md) - [Tag](docs/Tag.md) + - [TestAllOfWithMultiMetadataOnly](docs/TestAllOfWithMultiMetadataOnly.md) - [TestsDiscriminatorDuplicateEnumsGet200Response](docs/TestsDiscriminatorDuplicateEnumsGet200Response.md) - [TypeTesting](docs/TypeTesting.md) - [UniqueItemArrayTesting](docs/UniqueItemArrayTesting.md) diff --git a/samples/client/petstore/rust/reqwest/petstore-async-tokensource/docs/TestAllOfWithMultiMetadataOnly.md b/samples/client/petstore/rust/reqwest/petstore-async-tokensource/docs/TestAllOfWithMultiMetadataOnly.md new file mode 100644 index 000000000000..e460a9470534 --- /dev/null +++ b/samples/client/petstore/rust/reqwest/petstore-async-tokensource/docs/TestAllOfWithMultiMetadataOnly.md @@ -0,0 +1,12 @@ +# TestAllOfWithMultiMetadataOnly + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | Option<**i64**> | | [optional] +**foo** | Option<**Vec**> | existing_tags_array | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/rust/reqwest/petstore-async-tokensource/src/models/action_container.rs b/samples/client/petstore/rust/reqwest/petstore-async-tokensource/src/models/action_container.rs index 11d2f0b87124..0dd27c0e5c84 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async-tokensource/src/models/action_container.rs +++ b/samples/client/petstore/rust/reqwest/petstore-async-tokensource/src/models/action_container.rs @@ -14,13 +14,13 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct ActionContainer { #[serde(rename = "action")] - pub action: Box, + pub action: models::Baz, } impl ActionContainer { pub fn new(action: models::Baz) -> ActionContainer { ActionContainer { - action: Box::new(action), + action, } } } diff --git a/samples/client/petstore/rust/reqwest/petstore-async-tokensource/src/models/mod.rs b/samples/client/petstore/rust/reqwest/petstore-async-tokensource/src/models/mod.rs index ee02ccdd5303..f72b1007f3e8 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async-tokensource/src/models/mod.rs +++ b/samples/client/petstore/rust/reqwest/petstore-async-tokensource/src/models/mod.rs @@ -32,6 +32,8 @@ pub mod model_return; pub use self::model_return::Return; pub mod tag; pub use self::tag::Tag; +pub mod test_all_of_with_multi_metadata_only; +pub use self::test_all_of_with_multi_metadata_only::TestAllOfWithMultiMetadataOnly; pub mod _tests_discriminator_duplicate_enums_get_200_response; pub use self::_tests_discriminator_duplicate_enums_get_200_response::TestsDiscriminatorDuplicateEnumsGet200Response; pub mod type_testing; diff --git a/samples/client/petstore/rust/reqwest/petstore-async-tokensource/src/models/test_all_of_with_multi_metadata_only.rs b/samples/client/petstore/rust/reqwest/petstore-async-tokensource/src/models/test_all_of_with_multi_metadata_only.rs new file mode 100644 index 000000000000..a19b2e1b2882 --- /dev/null +++ b/samples/client/petstore/rust/reqwest/petstore-async-tokensource/src/models/test_all_of_with_multi_metadata_only.rs @@ -0,0 +1,31 @@ +/* + * OpenAPI Petstore + * + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct TestAllOfWithMultiMetadataOnly { + #[serde(rename = "id", skip_serializing_if = "Option::is_none")] + pub id: Option, + /// existing_tags_array + #[serde(rename = "foo", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")] + pub foo: Option>>, +} + +impl TestAllOfWithMultiMetadataOnly { + pub fn new() -> TestAllOfWithMultiMetadataOnly { + TestAllOfWithMultiMetadataOnly { + id: None, + foo: None, + } + } +} + diff --git a/samples/client/petstore/rust/reqwest/petstore-async/.openapi-generator/FILES b/samples/client/petstore/rust/reqwest/petstore-async/.openapi-generator/FILES index b4b855f56c7b..d91146d125f7 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async/.openapi-generator/FILES +++ b/samples/client/petstore/rust/reqwest/petstore-async/.openapi-generator/FILES @@ -22,6 +22,7 @@ docs/Ref.md docs/Return.md docs/StoreApi.md docs/Tag.md +docs/TestAllOfWithMultiMetadataOnly.md docs/TestingApi.md docs/TestsDiscriminatorDuplicateEnumsGet200Response.md docs/TypeTesting.md @@ -57,6 +58,7 @@ src/models/person.rs src/models/pet.rs src/models/property_test.rs src/models/tag.rs +src/models/test_all_of_with_multi_metadata_only.rs src/models/type_testing.rs src/models/unique_item_array_testing.rs src/models/user.rs diff --git a/samples/client/petstore/rust/reqwest/petstore-async/README.md b/samples/client/petstore/rust/reqwest/petstore-async/README.md index 515d5641216a..85ce6ff0273b 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async/README.md +++ b/samples/client/petstore/rust/reqwest/petstore-async/README.md @@ -72,6 +72,7 @@ Class | Method | HTTP request | Description - [Ref](docs/Ref.md) - [Return](docs/Return.md) - [Tag](docs/Tag.md) + - [TestAllOfWithMultiMetadataOnly](docs/TestAllOfWithMultiMetadataOnly.md) - [TestsDiscriminatorDuplicateEnumsGet200Response](docs/TestsDiscriminatorDuplicateEnumsGet200Response.md) - [TypeTesting](docs/TypeTesting.md) - [UniqueItemArrayTesting](docs/UniqueItemArrayTesting.md) diff --git a/samples/client/petstore/rust/reqwest/petstore-async/docs/TestAllOfWithMultiMetadataOnly.md b/samples/client/petstore/rust/reqwest/petstore-async/docs/TestAllOfWithMultiMetadataOnly.md new file mode 100644 index 000000000000..e460a9470534 --- /dev/null +++ b/samples/client/petstore/rust/reqwest/petstore-async/docs/TestAllOfWithMultiMetadataOnly.md @@ -0,0 +1,12 @@ +# TestAllOfWithMultiMetadataOnly + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | Option<**i64**> | | [optional] +**foo** | Option<**Vec**> | existing_tags_array | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/rust/reqwest/petstore-async/src/models/action_container.rs b/samples/client/petstore/rust/reqwest/petstore-async/src/models/action_container.rs index 11d2f0b87124..0dd27c0e5c84 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async/src/models/action_container.rs +++ b/samples/client/petstore/rust/reqwest/petstore-async/src/models/action_container.rs @@ -14,13 +14,13 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct ActionContainer { #[serde(rename = "action")] - pub action: Box, + pub action: models::Baz, } impl ActionContainer { pub fn new(action: models::Baz) -> ActionContainer { ActionContainer { - action: Box::new(action), + action, } } } diff --git a/samples/client/petstore/rust/reqwest/petstore-async/src/models/mod.rs b/samples/client/petstore/rust/reqwest/petstore-async/src/models/mod.rs index ee02ccdd5303..f72b1007f3e8 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async/src/models/mod.rs +++ b/samples/client/petstore/rust/reqwest/petstore-async/src/models/mod.rs @@ -32,6 +32,8 @@ pub mod model_return; pub use self::model_return::Return; pub mod tag; pub use self::tag::Tag; +pub mod test_all_of_with_multi_metadata_only; +pub use self::test_all_of_with_multi_metadata_only::TestAllOfWithMultiMetadataOnly; pub mod _tests_discriminator_duplicate_enums_get_200_response; pub use self::_tests_discriminator_duplicate_enums_get_200_response::TestsDiscriminatorDuplicateEnumsGet200Response; pub mod type_testing; diff --git a/samples/client/petstore/rust/reqwest/petstore-async/src/models/test_all_of_with_multi_metadata_only.rs b/samples/client/petstore/rust/reqwest/petstore-async/src/models/test_all_of_with_multi_metadata_only.rs new file mode 100644 index 000000000000..a19b2e1b2882 --- /dev/null +++ b/samples/client/petstore/rust/reqwest/petstore-async/src/models/test_all_of_with_multi_metadata_only.rs @@ -0,0 +1,31 @@ +/* + * OpenAPI Petstore + * + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct TestAllOfWithMultiMetadataOnly { + #[serde(rename = "id", skip_serializing_if = "Option::is_none")] + pub id: Option, + /// existing_tags_array + #[serde(rename = "foo", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")] + pub foo: Option>>, +} + +impl TestAllOfWithMultiMetadataOnly { + pub fn new() -> TestAllOfWithMultiMetadataOnly { + TestAllOfWithMultiMetadataOnly { + id: None, + foo: None, + } + } +} + diff --git a/samples/client/petstore/rust/reqwest/petstore-avoid-box/.openapi-generator/FILES b/samples/client/petstore/rust/reqwest/petstore-avoid-box/.openapi-generator/FILES index b4b855f56c7b..d91146d125f7 100644 --- a/samples/client/petstore/rust/reqwest/petstore-avoid-box/.openapi-generator/FILES +++ b/samples/client/petstore/rust/reqwest/petstore-avoid-box/.openapi-generator/FILES @@ -22,6 +22,7 @@ docs/Ref.md docs/Return.md docs/StoreApi.md docs/Tag.md +docs/TestAllOfWithMultiMetadataOnly.md docs/TestingApi.md docs/TestsDiscriminatorDuplicateEnumsGet200Response.md docs/TypeTesting.md @@ -57,6 +58,7 @@ src/models/person.rs src/models/pet.rs src/models/property_test.rs src/models/tag.rs +src/models/test_all_of_with_multi_metadata_only.rs src/models/type_testing.rs src/models/unique_item_array_testing.rs src/models/user.rs diff --git a/samples/client/petstore/rust/reqwest/petstore-avoid-box/README.md b/samples/client/petstore/rust/reqwest/petstore-avoid-box/README.md index 31c136905c0e..20f0b71cccc8 100644 --- a/samples/client/petstore/rust/reqwest/petstore-avoid-box/README.md +++ b/samples/client/petstore/rust/reqwest/petstore-avoid-box/README.md @@ -72,6 +72,7 @@ Class | Method | HTTP request | Description - [Ref](docs/Ref.md) - [Return](docs/Return.md) - [Tag](docs/Tag.md) + - [TestAllOfWithMultiMetadataOnly](docs/TestAllOfWithMultiMetadataOnly.md) - [TestsDiscriminatorDuplicateEnumsGet200Response](docs/TestsDiscriminatorDuplicateEnumsGet200Response.md) - [TypeTesting](docs/TypeTesting.md) - [UniqueItemArrayTesting](docs/UniqueItemArrayTesting.md) diff --git a/samples/client/petstore/rust/reqwest/petstore-avoid-box/docs/TestAllOfWithMultiMetadataOnly.md b/samples/client/petstore/rust/reqwest/petstore-avoid-box/docs/TestAllOfWithMultiMetadataOnly.md new file mode 100644 index 000000000000..e460a9470534 --- /dev/null +++ b/samples/client/petstore/rust/reqwest/petstore-avoid-box/docs/TestAllOfWithMultiMetadataOnly.md @@ -0,0 +1,12 @@ +# TestAllOfWithMultiMetadataOnly + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | Option<**i64**> | | [optional] +**foo** | Option<**Vec**> | existing_tags_array | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/rust/reqwest/petstore-avoid-box/src/models/mod.rs b/samples/client/petstore/rust/reqwest/petstore-avoid-box/src/models/mod.rs index ee02ccdd5303..f72b1007f3e8 100644 --- a/samples/client/petstore/rust/reqwest/petstore-avoid-box/src/models/mod.rs +++ b/samples/client/petstore/rust/reqwest/petstore-avoid-box/src/models/mod.rs @@ -32,6 +32,8 @@ pub mod model_return; pub use self::model_return::Return; pub mod tag; pub use self::tag::Tag; +pub mod test_all_of_with_multi_metadata_only; +pub use self::test_all_of_with_multi_metadata_only::TestAllOfWithMultiMetadataOnly; pub mod _tests_discriminator_duplicate_enums_get_200_response; pub use self::_tests_discriminator_duplicate_enums_get_200_response::TestsDiscriminatorDuplicateEnumsGet200Response; pub mod type_testing; diff --git a/samples/client/petstore/rust/reqwest/petstore-avoid-box/src/models/test_all_of_with_multi_metadata_only.rs b/samples/client/petstore/rust/reqwest/petstore-avoid-box/src/models/test_all_of_with_multi_metadata_only.rs new file mode 100644 index 000000000000..a19b2e1b2882 --- /dev/null +++ b/samples/client/petstore/rust/reqwest/petstore-avoid-box/src/models/test_all_of_with_multi_metadata_only.rs @@ -0,0 +1,31 @@ +/* + * OpenAPI Petstore + * + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct TestAllOfWithMultiMetadataOnly { + #[serde(rename = "id", skip_serializing_if = "Option::is_none")] + pub id: Option, + /// existing_tags_array + #[serde(rename = "foo", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")] + pub foo: Option>>, +} + +impl TestAllOfWithMultiMetadataOnly { + pub fn new() -> TestAllOfWithMultiMetadataOnly { + TestAllOfWithMultiMetadataOnly { + id: None, + foo: None, + } + } +} + diff --git a/samples/client/petstore/rust/reqwest/petstore-awsv4signature/.openapi-generator/FILES b/samples/client/petstore/rust/reqwest/petstore-awsv4signature/.openapi-generator/FILES index b4b855f56c7b..d91146d125f7 100644 --- a/samples/client/petstore/rust/reqwest/petstore-awsv4signature/.openapi-generator/FILES +++ b/samples/client/petstore/rust/reqwest/petstore-awsv4signature/.openapi-generator/FILES @@ -22,6 +22,7 @@ docs/Ref.md docs/Return.md docs/StoreApi.md docs/Tag.md +docs/TestAllOfWithMultiMetadataOnly.md docs/TestingApi.md docs/TestsDiscriminatorDuplicateEnumsGet200Response.md docs/TypeTesting.md @@ -57,6 +58,7 @@ src/models/person.rs src/models/pet.rs src/models/property_test.rs src/models/tag.rs +src/models/test_all_of_with_multi_metadata_only.rs src/models/type_testing.rs src/models/unique_item_array_testing.rs src/models/user.rs diff --git a/samples/client/petstore/rust/reqwest/petstore-awsv4signature/README.md b/samples/client/petstore/rust/reqwest/petstore-awsv4signature/README.md index 9ee940fa0bda..2eb8cc7512ca 100644 --- a/samples/client/petstore/rust/reqwest/petstore-awsv4signature/README.md +++ b/samples/client/petstore/rust/reqwest/petstore-awsv4signature/README.md @@ -72,6 +72,7 @@ Class | Method | HTTP request | Description - [Ref](docs/Ref.md) - [Return](docs/Return.md) - [Tag](docs/Tag.md) + - [TestAllOfWithMultiMetadataOnly](docs/TestAllOfWithMultiMetadataOnly.md) - [TestsDiscriminatorDuplicateEnumsGet200Response](docs/TestsDiscriminatorDuplicateEnumsGet200Response.md) - [TypeTesting](docs/TypeTesting.md) - [UniqueItemArrayTesting](docs/UniqueItemArrayTesting.md) diff --git a/samples/client/petstore/rust/reqwest/petstore-awsv4signature/docs/TestAllOfWithMultiMetadataOnly.md b/samples/client/petstore/rust/reqwest/petstore-awsv4signature/docs/TestAllOfWithMultiMetadataOnly.md new file mode 100644 index 000000000000..e460a9470534 --- /dev/null +++ b/samples/client/petstore/rust/reqwest/petstore-awsv4signature/docs/TestAllOfWithMultiMetadataOnly.md @@ -0,0 +1,12 @@ +# TestAllOfWithMultiMetadataOnly + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | Option<**i64**> | | [optional] +**foo** | Option<**Vec**> | existing_tags_array | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/rust/reqwest/petstore-awsv4signature/src/models/action_container.rs b/samples/client/petstore/rust/reqwest/petstore-awsv4signature/src/models/action_container.rs index 11d2f0b87124..0dd27c0e5c84 100644 --- a/samples/client/petstore/rust/reqwest/petstore-awsv4signature/src/models/action_container.rs +++ b/samples/client/petstore/rust/reqwest/petstore-awsv4signature/src/models/action_container.rs @@ -14,13 +14,13 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct ActionContainer { #[serde(rename = "action")] - pub action: Box, + pub action: models::Baz, } impl ActionContainer { pub fn new(action: models::Baz) -> ActionContainer { ActionContainer { - action: Box::new(action), + action, } } } diff --git a/samples/client/petstore/rust/reqwest/petstore-awsv4signature/src/models/mod.rs b/samples/client/petstore/rust/reqwest/petstore-awsv4signature/src/models/mod.rs index ee02ccdd5303..f72b1007f3e8 100644 --- a/samples/client/petstore/rust/reqwest/petstore-awsv4signature/src/models/mod.rs +++ b/samples/client/petstore/rust/reqwest/petstore-awsv4signature/src/models/mod.rs @@ -32,6 +32,8 @@ pub mod model_return; pub use self::model_return::Return; pub mod tag; pub use self::tag::Tag; +pub mod test_all_of_with_multi_metadata_only; +pub use self::test_all_of_with_multi_metadata_only::TestAllOfWithMultiMetadataOnly; pub mod _tests_discriminator_duplicate_enums_get_200_response; pub use self::_tests_discriminator_duplicate_enums_get_200_response::TestsDiscriminatorDuplicateEnumsGet200Response; pub mod type_testing; diff --git a/samples/client/petstore/rust/reqwest/petstore-awsv4signature/src/models/test_all_of_with_multi_metadata_only.rs b/samples/client/petstore/rust/reqwest/petstore-awsv4signature/src/models/test_all_of_with_multi_metadata_only.rs new file mode 100644 index 000000000000..a19b2e1b2882 --- /dev/null +++ b/samples/client/petstore/rust/reqwest/petstore-awsv4signature/src/models/test_all_of_with_multi_metadata_only.rs @@ -0,0 +1,31 @@ +/* + * OpenAPI Petstore + * + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct TestAllOfWithMultiMetadataOnly { + #[serde(rename = "id", skip_serializing_if = "Option::is_none")] + pub id: Option, + /// existing_tags_array + #[serde(rename = "foo", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")] + pub foo: Option>>, +} + +impl TestAllOfWithMultiMetadataOnly { + pub fn new() -> TestAllOfWithMultiMetadataOnly { + TestAllOfWithMultiMetadataOnly { + id: None, + foo: None, + } + } +} + diff --git a/samples/client/petstore/rust/reqwest/petstore-model-name-prefix/.openapi-generator/FILES b/samples/client/petstore/rust/reqwest/petstore-model-name-prefix/.openapi-generator/FILES index 4b93759e4644..0be6c8fe8e43 100644 --- a/samples/client/petstore/rust/reqwest/petstore-model-name-prefix/.openapi-generator/FILES +++ b/samples/client/petstore/rust/reqwest/petstore-model-name-prefix/.openapi-generator/FILES @@ -20,6 +20,7 @@ docs/FooPropertyTest.md docs/FooRef.md docs/FooReturn.md docs/FooTag.md +docs/FooTestAllOfWithMultiMetadataOnly.md docs/FooTestsDiscriminatorDuplicateEnumsGet200Response.md docs/FooTypeTesting.md docs/FooUniqueItemArrayTesting.md @@ -56,6 +57,7 @@ src/models/foo_property_test.rs src/models/foo_ref.rs src/models/foo_return.rs src/models/foo_tag.rs +src/models/foo_test_all_of_with_multi_metadata_only.rs src/models/foo_type_testing.rs src/models/foo_unique_item_array_testing.rs src/models/foo_user.rs diff --git a/samples/client/petstore/rust/reqwest/petstore-model-name-prefix/README.md b/samples/client/petstore/rust/reqwest/petstore-model-name-prefix/README.md index 7f4ea765bf78..e8adcbd67245 100644 --- a/samples/client/petstore/rust/reqwest/petstore-model-name-prefix/README.md +++ b/samples/client/petstore/rust/reqwest/petstore-model-name-prefix/README.md @@ -72,6 +72,7 @@ Class | Method | HTTP request | Description - [FooRef](docs/FooRef.md) - [FooReturn](docs/FooReturn.md) - [FooTag](docs/FooTag.md) + - [FooTestAllOfWithMultiMetadataOnly](docs/FooTestAllOfWithMultiMetadataOnly.md) - [FooTestsDiscriminatorDuplicateEnumsGet200Response](docs/FooTestsDiscriminatorDuplicateEnumsGet200Response.md) - [FooTypeTesting](docs/FooTypeTesting.md) - [FooUniqueItemArrayTesting](docs/FooUniqueItemArrayTesting.md) diff --git a/samples/client/petstore/rust/reqwest/petstore-model-name-prefix/docs/FooTestAllOfWithMultiMetadataOnly.md b/samples/client/petstore/rust/reqwest/petstore-model-name-prefix/docs/FooTestAllOfWithMultiMetadataOnly.md new file mode 100644 index 000000000000..ea6c80aab59f --- /dev/null +++ b/samples/client/petstore/rust/reqwest/petstore-model-name-prefix/docs/FooTestAllOfWithMultiMetadataOnly.md @@ -0,0 +1,12 @@ +# FooTestAllOfWithMultiMetadataOnly + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | Option<**i64**> | | [optional] +**foo** | Option<**Vec**> | existing_tags_array | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/rust/reqwest/petstore-model-name-prefix/src/models/foo_action_container.rs b/samples/client/petstore/rust/reqwest/petstore-model-name-prefix/src/models/foo_action_container.rs index 986f7013e3aa..25ba31f646e0 100644 --- a/samples/client/petstore/rust/reqwest/petstore-model-name-prefix/src/models/foo_action_container.rs +++ b/samples/client/petstore/rust/reqwest/petstore-model-name-prefix/src/models/foo_action_container.rs @@ -14,13 +14,13 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct FooActionContainer { #[serde(rename = "action")] - pub action: Box, + pub action: models::FooBaz, } impl FooActionContainer { pub fn new(action: models::FooBaz) -> FooActionContainer { FooActionContainer { - action: Box::new(action), + action, } } } diff --git a/samples/client/petstore/rust/reqwest/petstore-model-name-prefix/src/models/foo_test_all_of_with_multi_metadata_only.rs b/samples/client/petstore/rust/reqwest/petstore-model-name-prefix/src/models/foo_test_all_of_with_multi_metadata_only.rs new file mode 100644 index 000000000000..50ea98b4954b --- /dev/null +++ b/samples/client/petstore/rust/reqwest/petstore-model-name-prefix/src/models/foo_test_all_of_with_multi_metadata_only.rs @@ -0,0 +1,31 @@ +/* + * OpenAPI Petstore + * + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct FooTestAllOfWithMultiMetadataOnly { + #[serde(rename = "id", skip_serializing_if = "Option::is_none")] + pub id: Option, + /// existing_tags_array + #[serde(rename = "foo", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")] + pub foo: Option>>, +} + +impl FooTestAllOfWithMultiMetadataOnly { + pub fn new() -> FooTestAllOfWithMultiMetadataOnly { + FooTestAllOfWithMultiMetadataOnly { + id: None, + foo: None, + } + } +} + diff --git a/samples/client/petstore/rust/reqwest/petstore-model-name-prefix/src/models/mod.rs b/samples/client/petstore/rust/reqwest/petstore-model-name-prefix/src/models/mod.rs index 6eb5170bcb75..2ef73c8bd903 100644 --- a/samples/client/petstore/rust/reqwest/petstore-model-name-prefix/src/models/mod.rs +++ b/samples/client/petstore/rust/reqwest/petstore-model-name-prefix/src/models/mod.rs @@ -32,6 +32,8 @@ pub mod foo_return; pub use self::foo_return::FooReturn; pub mod foo_tag; pub use self::foo_tag::FooTag; +pub mod foo_test_all_of_with_multi_metadata_only; +pub use self::foo_test_all_of_with_multi_metadata_only::FooTestAllOfWithMultiMetadataOnly; pub mod foo__tests_discriminator_duplicate_enums_get_200_response; pub use self::foo__tests_discriminator_duplicate_enums_get_200_response::FooTestsDiscriminatorDuplicateEnumsGet200Response; pub mod foo_type_testing; diff --git a/samples/client/petstore/rust/reqwest/petstore/.openapi-generator/FILES b/samples/client/petstore/rust/reqwest/petstore/.openapi-generator/FILES index b4b855f56c7b..d91146d125f7 100644 --- a/samples/client/petstore/rust/reqwest/petstore/.openapi-generator/FILES +++ b/samples/client/petstore/rust/reqwest/petstore/.openapi-generator/FILES @@ -22,6 +22,7 @@ docs/Ref.md docs/Return.md docs/StoreApi.md docs/Tag.md +docs/TestAllOfWithMultiMetadataOnly.md docs/TestingApi.md docs/TestsDiscriminatorDuplicateEnumsGet200Response.md docs/TypeTesting.md @@ -57,6 +58,7 @@ src/models/person.rs src/models/pet.rs src/models/property_test.rs src/models/tag.rs +src/models/test_all_of_with_multi_metadata_only.rs src/models/type_testing.rs src/models/unique_item_array_testing.rs src/models/user.rs diff --git a/samples/client/petstore/rust/reqwest/petstore/README.md b/samples/client/petstore/rust/reqwest/petstore/README.md index f9c2b6161645..a0aeca7fd76f 100644 --- a/samples/client/petstore/rust/reqwest/petstore/README.md +++ b/samples/client/petstore/rust/reqwest/petstore/README.md @@ -72,6 +72,7 @@ Class | Method | HTTP request | Description - [Ref](docs/Ref.md) - [Return](docs/Return.md) - [Tag](docs/Tag.md) + - [TestAllOfWithMultiMetadataOnly](docs/TestAllOfWithMultiMetadataOnly.md) - [TestsDiscriminatorDuplicateEnumsGet200Response](docs/TestsDiscriminatorDuplicateEnumsGet200Response.md) - [TypeTesting](docs/TypeTesting.md) - [UniqueItemArrayTesting](docs/UniqueItemArrayTesting.md) diff --git a/samples/client/petstore/rust/reqwest/petstore/docs/TestAllOfWithMultiMetadataOnly.md b/samples/client/petstore/rust/reqwest/petstore/docs/TestAllOfWithMultiMetadataOnly.md new file mode 100644 index 000000000000..e460a9470534 --- /dev/null +++ b/samples/client/petstore/rust/reqwest/petstore/docs/TestAllOfWithMultiMetadataOnly.md @@ -0,0 +1,12 @@ +# TestAllOfWithMultiMetadataOnly + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | Option<**i64**> | | [optional] +**foo** | Option<**Vec**> | existing_tags_array | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/rust/reqwest/petstore/src/models/action_container.rs b/samples/client/petstore/rust/reqwest/petstore/src/models/action_container.rs index 11d2f0b87124..0dd27c0e5c84 100644 --- a/samples/client/petstore/rust/reqwest/petstore/src/models/action_container.rs +++ b/samples/client/petstore/rust/reqwest/petstore/src/models/action_container.rs @@ -14,13 +14,13 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct ActionContainer { #[serde(rename = "action")] - pub action: Box, + pub action: models::Baz, } impl ActionContainer { pub fn new(action: models::Baz) -> ActionContainer { ActionContainer { - action: Box::new(action), + action, } } } diff --git a/samples/client/petstore/rust/reqwest/petstore/src/models/mod.rs b/samples/client/petstore/rust/reqwest/petstore/src/models/mod.rs index ee02ccdd5303..f72b1007f3e8 100644 --- a/samples/client/petstore/rust/reqwest/petstore/src/models/mod.rs +++ b/samples/client/petstore/rust/reqwest/petstore/src/models/mod.rs @@ -32,6 +32,8 @@ pub mod model_return; pub use self::model_return::Return; pub mod tag; pub use self::tag::Tag; +pub mod test_all_of_with_multi_metadata_only; +pub use self::test_all_of_with_multi_metadata_only::TestAllOfWithMultiMetadataOnly; pub mod _tests_discriminator_duplicate_enums_get_200_response; pub use self::_tests_discriminator_duplicate_enums_get_200_response::TestsDiscriminatorDuplicateEnumsGet200Response; pub mod type_testing; diff --git a/samples/client/petstore/rust/reqwest/petstore/src/models/test_all_of_with_multi_metadata_only.rs b/samples/client/petstore/rust/reqwest/petstore/src/models/test_all_of_with_multi_metadata_only.rs new file mode 100644 index 000000000000..a19b2e1b2882 --- /dev/null +++ b/samples/client/petstore/rust/reqwest/petstore/src/models/test_all_of_with_multi_metadata_only.rs @@ -0,0 +1,31 @@ +/* + * OpenAPI Petstore + * + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * Generated by: https://openapi-generator.tech + */ + +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct TestAllOfWithMultiMetadataOnly { + #[serde(rename = "id", skip_serializing_if = "Option::is_none")] + pub id: Option, + /// existing_tags_array + #[serde(rename = "foo", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")] + pub foo: Option>>, +} + +impl TestAllOfWithMultiMetadataOnly { + pub fn new() -> TestAllOfWithMultiMetadataOnly { + TestAllOfWithMultiMetadataOnly { + id: None, + foo: None, + } + } +} + diff --git a/samples/openapi3/client/petstore/typescript/builds/composed-schemas/DefaultApi.md b/samples/openapi3/client/petstore/typescript/builds/composed-schemas/DefaultApi.md index 113ee9f3d03c..2ba40d8b1c5e 100644 --- a/samples/openapi3/client/petstore/typescript/builds/composed-schemas/DefaultApi.md +++ b/samples/openapi3/client/petstore/typescript/builds/composed-schemas/DefaultApi.md @@ -26,7 +26,7 @@ const apiInstance = new DefaultApi(configuration); const request: DefaultApiFilePostRequest = { filePostRequest: { - file: null, +null, }, }; From 9244d676e6d064988fa2adf07e0cd5e2df3e4b63 Mon Sep 17 00:00:00 2001 From: Ross Sullivan Date: Sat, 15 Mar 2025 23:07:32 +0900 Subject: [PATCH 3/4] fixed compiler errors in java 17 and lower --- .../java/org/openapitools/codegen/InlineModelResolver.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java index c2d8612976e7..89ae6824911c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java @@ -30,6 +30,7 @@ import io.swagger.v3.oas.models.parameters.RequestBody; import io.swagger.v3.oas.models.responses.ApiResponse; import io.swagger.v3.oas.models.responses.ApiResponses; +import java.util.stream.Collectors; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; @@ -420,9 +421,9 @@ private void gatherInlineModels(Schema schema, String modelPrefix) { // Check if there is only one "non metadata" schema. // For example, there may be an `description` only schema that is used to override the descrption. // In these cases, we can simply discard those schemas. - List nonMetadataOnlySchemas = schema.getAllOf().stream() + List nonMetadataOnlySchemas = (List) schema.getAllOf().stream() .filter(v -> isMetadataOnlySchema((Schema) v)) - .toList(); + .collect(Collectors.toList()); if (nonMetadataOnlySchemas.size() == 1) { schema.setAllOf(nonMetadataOnlySchemas); From e5d7abfa35841c1920a51ded79c0496ab3a6e1e7 Mon Sep 17 00:00:00 2001 From: Ross Sullivan Date: Tue, 8 Apr 2025 12:36:40 +0900 Subject: [PATCH 4/4] refactored isMetadataOnlySchema to ModelUtils.java --- .../codegen/InlineModelResolver.java | 27 +------------------ .../codegen/utils/ModelUtils.java | 26 ++++++++++++++++++ 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java index 89ae6824911c..623ad634ae1f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java @@ -422,7 +422,7 @@ private void gatherInlineModels(Schema schema, String modelPrefix) { // For example, there may be an `description` only schema that is used to override the descrption. // In these cases, we can simply discard those schemas. List nonMetadataOnlySchemas = (List) schema.getAllOf().stream() - .filter(v -> isMetadataOnlySchema((Schema) v)) + .filter(v -> ModelUtils.isMetadataOnlySchema((Schema) v)) .collect(Collectors.toList()); if (nonMetadataOnlySchemas.size() == 1) { @@ -485,31 +485,6 @@ private void gatherInlineModels(Schema schema, String modelPrefix) { } } - /** - * Returns true if a schema is only metadata and not an actual type. - * For example, a schema that only has a `description` without any `properties` or `$ref` defined. - * - * @param schema the schema - * @return if the schema is only metadata and not an actual type - */ - boolean isMetadataOnlySchema(Schema schema) { - return schema.get$ref() != null || - schema.getProperties() != null || - schema.getType() != null || - schema.getAdditionalProperties() != null || - schema.getAllOf() != null || - schema.getAnyOf() != null || - schema.getOneOf() != null || - schema.getPrefixItems() != null || - schema.getItems() != null || - schema.getTypes() != null || - schema.getPatternProperties() != null || - schema.getContains() != null || - schema.get$dynamicAnchor() != null || - schema.get$anchor() != null || - schema.getContentSchema() != null; - } - /** * Flatten inline models in content * diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java index 92b4330dbdda..16d96f59aee6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java @@ -2312,6 +2312,32 @@ public static boolean isUnsupportedSchema(OpenAPI openAPI, Schema schema) { return false; } + /** + * Returns true if a schema is only metadata and not an actual type. + * For example, a schema that only has a `description` without any `properties` or `$ref` defined. + * + * @param schema the schema + * @return if the schema is only metadata and not an actual type + */ + public static boolean isMetadataOnlySchema(Schema schema) { + return schema.get$ref() != null || + schema.getProperties() != null || + schema.getType() != null || + schema.getAdditionalProperties() != null || + schema.getAllOf() != null || + schema.getAnyOf() != null || + schema.getOneOf() != null || + schema.getPrefixItems() != null || + schema.getItems() != null || + schema.getTypes() != null || + schema.getPatternProperties() != null || + schema.getContains() != null || + schema.get$dynamicAnchor() != null || + schema.get$anchor() != null || + schema.getContentSchema() != null; + } + + @FunctionalInterface private interface OpenAPISchemaVisitor {