From aa616161b436ab279e27ac379b15cb0beba44e4e Mon Sep 17 00:00:00 2001 From: devhl-labs Date: Sat, 8 Aug 2026 05:46:26 -0400 Subject: [PATCH 1/7] give clients a way to inject vendor overrides (#24571) --- bin/configs/csharp-generichost-net10.yaml | 4 + .../openapitools/codegen/cmd/Generate.java | 10 + .../codegen/config/GeneratorSettings.java | 43 +++ .../openapitools/codegen/CodegenConfig.java | 2 + .../openapitools/codegen/DefaultCodegen.java | 43 +++ .../codegen/config/CodegenConfigurator.java | 17 + .../config/CodegenConfiguratorUtils.java | 13 + .../languages/AbstractCSharpCodegen.java | 13 + .../generichost/modelGeneric.mustache | 18 +- ...odels-for-testing-with-http-signature.yaml | 15 + .../.openapi-generator/FILES | 2 + .../latest/UseDateTimeOffset/api/openapi.yaml | 15 + .../models/InjectedVendorExtensionsTest.md | 13 + .../InjectedVendorExtensionsTestTests.cs | 92 +++++ .../Client/HostConfiguration.cs | 1 + .../Model/InjectedVendorExtensionsTest.cs | 265 ++++++++++++++ .../net10/FormModels/.openapi-generator/FILES | 2 + .../net10/FormModels/api/openapi.yaml | 15 + .../models/InjectedVendorExtensionsTest.md | 13 + .../InjectedVendorExtensionsTestTests.cs | 92 +++++ .../Client/HostConfiguration.cs | 1 + .../Model/InjectedVendorExtensionsTest.cs | 318 +++++++++++++++++ .../.openapi-generator/FILES | 2 + .../net10/NullReferenceTypes/api/openapi.yaml | 15 + .../models/InjectedVendorExtensionsTest.md | 13 + .../InjectedVendorExtensionsTestTests.cs | 92 +++++ .../Client/HostConfiguration.cs | 1 + .../Model/InjectedVendorExtensionsTest.cs | 320 +++++++++++++++++ .../net10/Petstore/.openapi-generator/FILES | 2 + .../net10/Petstore/api/openapi.yaml | 15 + .../models/InjectedVendorExtensionsTest.md | 13 + .../InjectedVendorExtensionsTestTests.cs | 92 +++++ .../Client/HostConfiguration.cs | 1 + .../Model/InjectedVendorExtensionsTest.cs | 318 +++++++++++++++++ .../SourceGeneration/.openapi-generator/FILES | 2 + .../net10/SourceGeneration/api/openapi.yaml | 15 + .../models/InjectedVendorExtensionsTest.md | 13 + .../InjectedVendorExtensionsTestTests.cs | 92 +++++ .../Client/HostConfiguration.cs | 2 + .../Model/InjectedVendorExtensionsTest.cs | 328 ++++++++++++++++++ .../FormModels/.openapi-generator/FILES | 2 + .../net4.7/FormModels/api/openapi.yaml | 15 + .../models/InjectedVendorExtensionsTest.md | 13 + .../InjectedVendorExtensionsTestTests.cs | 92 +++++ .../Client/HostConfiguration.cs | 1 + .../Model/InjectedVendorExtensionsTest.cs | 318 +++++++++++++++++ .../net4.7/Petstore/.openapi-generator/FILES | 2 + .../net4.7/Petstore/api/openapi.yaml | 15 + .../models/InjectedVendorExtensionsTest.md | 13 + .../InjectedVendorExtensionsTestTests.cs | 92 +++++ .../Client/HostConfiguration.cs | 1 + .../Model/InjectedVendorExtensionsTest.cs | 318 +++++++++++++++++ .../FormModels/.openapi-generator/FILES | 2 + .../net4.8/FormModels/api/openapi.yaml | 15 + .../models/InjectedVendorExtensionsTest.md | 13 + .../InjectedVendorExtensionsTestTests.cs | 92 +++++ .../Client/HostConfiguration.cs | 1 + .../Model/InjectedVendorExtensionsTest.cs | 318 +++++++++++++++++ .../net4.8/Petstore/.openapi-generator/FILES | 2 + .../net4.8/Petstore/api/openapi.yaml | 15 + .../models/InjectedVendorExtensionsTest.md | 13 + .../InjectedVendorExtensionsTestTests.cs | 92 +++++ .../Client/HostConfiguration.cs | 1 + .../Model/InjectedVendorExtensionsTest.cs | 318 +++++++++++++++++ .../net8/FormModels/.openapi-generator/FILES | 2 + .../net8/FormModels/api/openapi.yaml | 15 + .../models/InjectedVendorExtensionsTest.md | 13 + .../InjectedVendorExtensionsTestTests.cs | 92 +++++ .../Client/HostConfiguration.cs | 1 + .../Model/InjectedVendorExtensionsTest.cs | 318 +++++++++++++++++ .../.openapi-generator/FILES | 2 + .../net8/NullReferenceTypes/api/openapi.yaml | 15 + .../models/InjectedVendorExtensionsTest.md | 13 + .../InjectedVendorExtensionsTestTests.cs | 92 +++++ .../Client/HostConfiguration.cs | 1 + .../Model/InjectedVendorExtensionsTest.cs | 320 +++++++++++++++++ .../net8/Petstore/.openapi-generator/FILES | 2 + .../net8/Petstore/api/openapi.yaml | 15 + .../models/InjectedVendorExtensionsTest.md | 13 + .../InjectedVendorExtensionsTestTests.cs | 92 +++++ .../Client/HostConfiguration.cs | 1 + .../Model/InjectedVendorExtensionsTest.cs | 318 +++++++++++++++++ .../SourceGeneration/.openapi-generator/FILES | 2 + .../net8/SourceGeneration/api/openapi.yaml | 15 + .../models/InjectedVendorExtensionsTest.md | 13 + .../InjectedVendorExtensionsTestTests.cs | 92 +++++ .../Client/HostConfiguration.cs | 2 + .../Model/InjectedVendorExtensionsTest.cs | 328 ++++++++++++++++++ .../net9/FormModels/.openapi-generator/FILES | 2 + .../net9/FormModels/api/openapi.yaml | 15 + .../models/InjectedVendorExtensionsTest.md | 13 + .../InjectedVendorExtensionsTestTests.cs | 92 +++++ .../Client/HostConfiguration.cs | 1 + .../Model/InjectedVendorExtensionsTest.cs | 318 +++++++++++++++++ .../.openapi-generator/FILES | 2 + .../net9/NullReferenceTypes/api/openapi.yaml | 15 + .../models/InjectedVendorExtensionsTest.md | 13 + .../InjectedVendorExtensionsTestTests.cs | 92 +++++ .../Client/HostConfiguration.cs | 1 + .../Model/InjectedVendorExtensionsTest.cs | 320 +++++++++++++++++ .../net9/Petstore/.openapi-generator/FILES | 2 + .../net9/Petstore/api/openapi.yaml | 15 + .../models/InjectedVendorExtensionsTest.md | 13 + .../InjectedVendorExtensionsTestTests.cs | 92 +++++ .../Client/HostConfiguration.cs | 1 + .../Model/InjectedVendorExtensionsTest.cs | 318 +++++++++++++++++ .../SourceGeneration/.openapi-generator/FILES | 2 + .../net9/SourceGeneration/api/openapi.yaml | 15 + .../models/InjectedVendorExtensionsTest.md | 13 + .../InjectedVendorExtensionsTestTests.cs | 92 +++++ .../Client/HostConfiguration.cs | 2 + .../Model/InjectedVendorExtensionsTest.cs | 328 ++++++++++++++++++ .../Petstore/.openapi-generator/FILES | 2 + .../standard2.0/Petstore/api/openapi.yaml | 15 + .../models/InjectedVendorExtensionsTest.md | 13 + .../InjectedVendorExtensionsTestTests.cs | 92 +++++ .../Client/HostConfiguration.cs | 1 + .../Model/InjectedVendorExtensionsTest.cs | 318 +++++++++++++++++ .../net10/Petstore/.openapi-generator/FILES | 2 + .../httpclient/net10/Petstore/README.md | 1 + .../net10/Petstore/api/openapi.yaml | 15 + .../docs/InjectedVendorExtensionsTest.md | 13 + .../InjectedVendorExtensionsTestTests.cs | 93 +++++ .../Model/InjectedVendorExtensionsTest.cs | 197 +++++++++++ .../net9/Petstore/.openapi-generator/FILES | 2 + .../csharp/httpclient/net9/Petstore/README.md | 1 + .../httpclient/net9/Petstore/api/openapi.yaml | 15 + .../docs/InjectedVendorExtensionsTest.md | 13 + .../InjectedVendorExtensionsTestTests.cs | 93 +++++ .../Model/InjectedVendorExtensionsTest.cs | 197 +++++++++++ .../Petstore/.openapi-generator/FILES | 2 + .../httpclient/standard2.0/Petstore/README.md | 1 + .../standard2.0/Petstore/api/openapi.yaml | 15 + .../docs/InjectedVendorExtensionsTest.md | 13 + .../InjectedVendorExtensionsTestTests.cs | 93 +++++ .../Model/InjectedVendorExtensionsTest.cs | 197 +++++++++++ .../net8/Petstore/.openapi-generator/FILES | 2 + .../csharp/restsharp/net8/Petstore/README.md | 1 + .../restsharp/net8/Petstore/api/openapi.yaml | 15 + .../docs/InjectedVendorExtensionsTest.md | 13 + .../InjectedVendorExtensionsTestTests.cs | 93 +++++ .../Model/InjectedVendorExtensionsTest.cs | 184 ++++++++++ .../.openapi-generator/FILES | 2 + .../ConditionalSerialization/README.md | 1 + .../ConditionalSerialization/api/openapi.yaml | 15 + .../docs/InjectedVendorExtensionsTest.md | 13 + .../InjectedVendorExtensionsTestTests.cs | 93 +++++ .../Model/InjectedVendorExtensionsTest.cs | 196 +++++++++++ .../net10/Petstore/.openapi-generator/FILES | 2 + .../unityWebRequest/net10/Petstore/README.md | 1 + .../net10/Petstore/api/openapi.yaml | 15 + .../docs/InjectedVendorExtensionsTest.md | 13 + .../InjectedVendorExtensionsTestTests.cs | 90 +++++ .../Model/InjectedVendorExtensionsTest.cs | 197 +++++++++++ .../net9/Petstore/.openapi-generator/FILES | 2 + .../unityWebRequest/net9/Petstore/README.md | 1 + .../net9/Petstore/api/openapi.yaml | 15 + .../docs/InjectedVendorExtensionsTest.md | 13 + .../InjectedVendorExtensionsTestTests.cs | 90 +++++ .../Model/InjectedVendorExtensionsTest.cs | 197 +++++++++++ .../Petstore/.openapi-generator/FILES | 2 + .../standard2.0/Petstore/README.md | 1 + .../standard2.0/Petstore/api/openapi.yaml | 15 + .../docs/InjectedVendorExtensionsTest.md | 13 + .../InjectedVendorExtensionsTestTests.cs | 90 +++++ .../Model/InjectedVendorExtensionsTest.cs | 197 +++++++++++ 166 files changed, 10638 insertions(+), 9 deletions(-) create mode 100644 samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/docs/models/InjectedVendorExtensionsTest.md create mode 100644 samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs create mode 100644 samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs create mode 100644 samples/client/petstore/csharp/generichost/net10/FormModels/docs/models/InjectedVendorExtensionsTest.md create mode 100644 samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs create mode 100644 samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs create mode 100644 samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/docs/models/InjectedVendorExtensionsTest.md create mode 100644 samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs create mode 100644 samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs create mode 100644 samples/client/petstore/csharp/generichost/net10/Petstore/docs/models/InjectedVendorExtensionsTest.md create mode 100644 samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs create mode 100644 samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs create mode 100644 samples/client/petstore/csharp/generichost/net10/SourceGeneration/docs/models/InjectedVendorExtensionsTest.md create mode 100644 samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs create mode 100644 samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs create mode 100644 samples/client/petstore/csharp/generichost/net4.7/FormModels/docs/models/InjectedVendorExtensionsTest.md create mode 100644 samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs create mode 100644 samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs create mode 100644 samples/client/petstore/csharp/generichost/net4.7/Petstore/docs/models/InjectedVendorExtensionsTest.md create mode 100644 samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs create mode 100644 samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs create mode 100644 samples/client/petstore/csharp/generichost/net4.8/FormModels/docs/models/InjectedVendorExtensionsTest.md create mode 100644 samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs create mode 100644 samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs create mode 100644 samples/client/petstore/csharp/generichost/net4.8/Petstore/docs/models/InjectedVendorExtensionsTest.md create mode 100644 samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs create mode 100644 samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/FormModels/docs/models/InjectedVendorExtensionsTest.md create mode 100644 samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/docs/models/InjectedVendorExtensionsTest.md create mode 100644 samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/Petstore/docs/models/InjectedVendorExtensionsTest.md create mode 100644 samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/SourceGeneration/docs/models/InjectedVendorExtensionsTest.md create mode 100644 samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs create mode 100644 samples/client/petstore/csharp/generichost/net9/FormModels/docs/models/InjectedVendorExtensionsTest.md create mode 100644 samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs create mode 100644 samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs create mode 100644 samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/docs/models/InjectedVendorExtensionsTest.md create mode 100644 samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs create mode 100644 samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs create mode 100644 samples/client/petstore/csharp/generichost/net9/Petstore/docs/models/InjectedVendorExtensionsTest.md create mode 100644 samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs create mode 100644 samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs create mode 100644 samples/client/petstore/csharp/generichost/net9/SourceGeneration/docs/models/InjectedVendorExtensionsTest.md create mode 100644 samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs create mode 100644 samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs create mode 100644 samples/client/petstore/csharp/generichost/standard2.0/Petstore/docs/models/InjectedVendorExtensionsTest.md create mode 100644 samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs create mode 100644 samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs create mode 100644 samples/client/petstore/csharp/httpclient/net10/Petstore/docs/InjectedVendorExtensionsTest.md create mode 100644 samples/client/petstore/csharp/httpclient/net10/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs create mode 100644 samples/client/petstore/csharp/httpclient/net10/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs create mode 100644 samples/client/petstore/csharp/httpclient/net9/Petstore/docs/InjectedVendorExtensionsTest.md create mode 100644 samples/client/petstore/csharp/httpclient/net9/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs create mode 100644 samples/client/petstore/csharp/httpclient/net9/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs create mode 100644 samples/client/petstore/csharp/httpclient/standard2.0/Petstore/docs/InjectedVendorExtensionsTest.md create mode 100644 samples/client/petstore/csharp/httpclient/standard2.0/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs create mode 100644 samples/client/petstore/csharp/httpclient/standard2.0/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs create mode 100644 samples/client/petstore/csharp/restsharp/net8/Petstore/docs/InjectedVendorExtensionsTest.md create mode 100644 samples/client/petstore/csharp/restsharp/net8/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs create mode 100644 samples/client/petstore/csharp/restsharp/net8/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs create mode 100644 samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/docs/InjectedVendorExtensionsTest.md create mode 100644 samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs create mode 100644 samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs create mode 100644 samples/client/petstore/csharp/unityWebRequest/net10/Petstore/docs/InjectedVendorExtensionsTest.md create mode 100644 samples/client/petstore/csharp/unityWebRequest/net10/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs create mode 100644 samples/client/petstore/csharp/unityWebRequest/net10/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs create mode 100644 samples/client/petstore/csharp/unityWebRequest/net9/Petstore/docs/InjectedVendorExtensionsTest.md create mode 100644 samples/client/petstore/csharp/unityWebRequest/net9/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs create mode 100644 samples/client/petstore/csharp/unityWebRequest/net9/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs create mode 100644 samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/docs/InjectedVendorExtensionsTest.md create mode 100644 samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs create mode 100644 samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs diff --git a/bin/configs/csharp-generichost-net10.yaml b/bin/configs/csharp-generichost-net10.yaml index fcf8ca343808..32541048e59b 100644 --- a/bin/configs/csharp-generichost-net10.yaml +++ b/bin/configs/csharp-generichost-net10.yaml @@ -14,3 +14,7 @@ additionalProperties: operationParameterSorting: alphabetical treatWarningsAsErrors: true warningsNotAsErrors: CS0612 +injectModelVendorExtensions: + InjectedVendorExtensionsTest.potentiallyOverriddenPropertyToPrivate.x-setter-visibility: private + InjectedVendorExtensionsTest.potentiallyOverriddenPropertyToInternal.x-setter-visibility: internal + InjectedVendorExtensionsTest.potentiallyOverriddenPropertyToPublic.x-setter-visibility: public diff --git a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Generate.java b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Generate.java index 420d557cfdef..d0707f90388b 100644 --- a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Generate.java +++ b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Generate.java @@ -259,6 +259,15 @@ public class Generate extends OpenApiGeneratorCommand { + " You can also have multiple occurrences of this option.") private List operationIdNameMappings = new ArrayList<>(); + @Option( + name = {"--inject-model-vendor-extensions"}, + title = "inject model vendor extensions", + description = "injects vendor extensions into model classes or their properties." + + " Class-level format: ModelName.x-extension-name=value." + + " Property-level format: ModelName.propertyBaseName.x-extension-name=value." + + " You can also have multiple occurrences of this option.") + private List injectModelVendorExtensions = new ArrayList<>(); + @Option( name = {"--openapi-normalizer"}, title = "OpenAPI normalizer rules", @@ -606,6 +615,7 @@ public void execute() { applyModelNameMappingsKvpList(modelNameMappings, configurator); applyEnumNameMappingsKvpList(enumNameMappings, configurator); applyOperationIdNameMappingsKvpList(operationIdNameMappings, configurator); + applyInjectModelVendorExtensionsKvpList(injectModelVendorExtensions, configurator); applyOpenapiNormalizerKvpList(openapiNormalizer, configurator); applyTypeMappingsKvpList(typeMappings, configurator); applyAdditionalPropertiesKvpList(additionalProperties, configurator); diff --git a/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/GeneratorSettings.java b/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/GeneratorSettings.java index 52b03ff06e36..9f18c8b85afb 100644 --- a/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/GeneratorSettings.java +++ b/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/GeneratorSettings.java @@ -59,6 +59,7 @@ public final class GeneratorSettings implements Serializable { private final Map modelNameMappings; private final Map enumNameMappings; private final Map operationIdNameMappings; + private final Map injectModelVendorExtensions; private final Map openapiNormalizer; private final Set languageSpecificPrimitives; private final Set openapiGeneratorIgnoreList; @@ -327,6 +328,15 @@ public Map getOperationIdNameMappings() { return operationIdNameMappings; } + /** + * Gets inject model vendor extensions. + * + * @return a map of ModelName.x-extension-name or ModelName.propertyBaseName.x-extension-name to extension value + */ + public Map getInjectModelVendorExtensions() { + return injectModelVendorExtensions; + } + /** * Gets OpenAPI normalizer rules * @@ -469,6 +479,7 @@ private GeneratorSettings(Builder builder) { modelNameMappings = Collections.unmodifiableMap(builder.modelNameMappings); enumNameMappings = Collections.unmodifiableMap(builder.enumNameMappings); operationIdNameMappings = Collections.unmodifiableMap(builder.operationIdNameMappings); + injectModelVendorExtensions = Collections.unmodifiableMap(builder.injectModelVendorExtensions); openapiNormalizer = Collections.unmodifiableMap(builder.openapiNormalizer); languageSpecificPrimitives = Collections.unmodifiableSet(builder.languageSpecificPrimitives); openapiGeneratorIgnoreList = Collections.unmodifiableSet(builder.openapiGeneratorIgnoreList); @@ -550,6 +561,7 @@ public GeneratorSettings() { modelNameMappings = Collections.unmodifiableMap(new HashMap<>(0)); enumNameMappings = Collections.unmodifiableMap(new HashMap<>(0)); operationIdNameMappings = Collections.unmodifiableMap(new HashMap<>(0)); + injectModelVendorExtensions = Collections.unmodifiableMap(new HashMap<>(0)); openapiNormalizer = Collections.unmodifiableMap(new HashMap<>(0)); languageSpecificPrimitives = Collections.unmodifiableSet(new HashSet<>(0)); openapiGeneratorIgnoreList = Collections.unmodifiableSet(new HashSet<>(0)); @@ -630,6 +642,9 @@ public static Builder newBuilder(GeneratorSettings copy) { if (copy.getOperationIdNameMappings() != null) { builder.operationIdNameMappings.putAll(copy.getOperationIdNameMappings()); } + if (copy.getInjectModelVendorExtensions() != null) { + builder.injectModelVendorExtensions.putAll(copy.getInjectModelVendorExtensions()); + } if (copy.getOpenapiNormalizer() != null) { builder.openapiNormalizer.putAll(copy.getOpenapiNormalizer()); } @@ -684,6 +699,7 @@ public static final class Builder { private Map modelNameMappings; private Map enumNameMappings; private Map operationIdNameMappings; + private Map injectModelVendorExtensions; private Map openapiNormalizer; private Set languageSpecificPrimitives; private Set openapiGeneratorIgnoreList; @@ -712,6 +728,7 @@ public Builder() { modelNameMappings = new HashMap<>(); enumNameMappings = new HashMap<>(); operationIdNameMappings = new HashMap<>(); + injectModelVendorExtensions = new HashMap<>(); openapiNormalizer = new HashMap<>(); languageSpecificPrimitives = new HashSet<>(); openapiGeneratorIgnoreList = new HashSet<>(); @@ -1193,6 +1210,32 @@ public Builder withOperationIdNameMapping(String key, String value) { return this; } + /** + * Sets the {@code injectModelExtensions} and returns a reference to this Builder so that the methods can be chained together. + * + * @param injectModelExtensions the {@code injectModelExtensions} to set + * @return a reference to this Builder + */ + public Builder withInjectModelVendorExtensions(Map injectModelVendorExtensions) { + this.injectModelVendorExtensions = injectModelVendorExtensions; + return this; + } + + /** + * Sets a single {@code injectModelVendorExtension} and returns a reference to this Builder so that the methods can be chained together. + * + * @param key A key in the format ModelName.x-extension-name or ModelName.propertyBaseName.x-extension-name + * @param value The extension value + * @return a reference to this Builder + */ + public Builder withInjectModelVendorExtension(String key, String value) { + if (this.injectModelVendorExtensions == null) { + this.injectModelVendorExtensions = new HashMap<>(); + } + this.injectModelVendorExtensions.put(key, value); + return this; + } + /** * Sets the {@code openapiNormalizer} and returns a reference to this Builder so that the methods can be chained together. * diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java index bc775c432d7f..5e305231bbca 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java @@ -169,6 +169,8 @@ public interface CodegenConfig { Map operationIdNameMapping(); + Map injectModelVendorExtensions(); + Map openapiNormalizer(); Map apiTemplateFiles(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index 945d828d9295..e3356d34becf 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -199,6 +199,8 @@ public class DefaultCodegen implements CodegenConfig { protected Map enumNameMapping = new HashMap<>(); // a map to store the mapping between operation id name and the name provided by the user protected Map operationIdNameMapping = new HashMap<>(); + // a map to inject vendor extensions into model classes or their properties: key=ModelName.x-extension-name or ModelName.propertyBaseName.x-extension-name, value=extensionValue + protected Map injectModelVendorExtensions = new HashMap<>(); // a map to store the rules in OpenAPI Normalizer protected Map openapiNormalizer = new HashMap<>(); @Setter @@ -547,6 +549,42 @@ public Map postProcessAllModels(Map objs) } } + // Inject vendor extensions from --inject-property-extensions into matching schema properties + if (!injectModelVendorExtensions.isEmpty()) { + for (Map.Entry entry : objs.entrySet()) { + CodegenModel model = ModelUtils.getModelByName(entry.getKey(), objs); + if (model == null) continue; + + for (Map.Entry extEntry : injectModelVendorExtensions.entrySet()) { + String[] parts = extEntry.getKey().split("\\.", 3); + if (parts.length < 2) continue; + String modelName = parts[0]; + String extensionValue = extEntry.getValue(); + + if (!modelName.equals(entry.getKey())) continue; + + if (parts.length == 2) { + // class-level extension: ModelName.x-extension-name + model.vendorExtensions.put(parts[1], extensionValue); + } else { + // property-level extension: ModelName.propertyBaseName.x-extension-name + String propertyBaseName = parts[1]; + String extensionName = parts[2]; + List> allPropertyLists = Arrays.asList( + model.vars, model.allVars, model.readWriteVars, model.requiredVars, + model.optionalVars, model.parentVars, model.readOnlyVars, model.nonNullableVars); + for (List properties : allPropertyLists) { + for (CodegenProperty property : properties) { + if (propertyBaseName.equals(property.baseName)) { + property.vendorExtensions.put(extensionName, extensionValue); + } + } + } + } + } + } + } + if (this.useOneOfInterfaces) { // First, add newly created oneOf interfaces for (CodegenModel cm : addOneOfInterfaces) { @@ -1366,6 +1404,11 @@ public Map operationIdNameMapping() { return operationIdNameMapping; } + @Override + public Map injectModelVendorExtensions() { + return injectModelVendorExtensions; + } + @Override public Map openapiNormalizer() { return openapiNormalizer; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfigurator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfigurator.java index 655d54710312..ab15c320b2cd 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfigurator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfigurator.java @@ -77,6 +77,7 @@ public class CodegenConfigurator { private Map modelNameMappings = new HashMap<>(); private Map enumNameMappings = new HashMap<>(); private Map operationIdNameMappings = new HashMap<>(); + private Map injectModelVendorExtensions = new HashMap<>(); private Map openapiNormalizer = new HashMap<>(); private Set languageSpecificPrimitives = new HashSet<>(); private Set openapiGeneratorIgnoreList = new HashSet<>(); @@ -149,6 +150,9 @@ public static CodegenConfigurator fromFile(String configFile, Module... modules) if (generatorSettings.getOperationIdNameMappings() != null) { configurator.operationIdNameMappings.putAll(generatorSettings.getOperationIdNameMappings()); } + if (generatorSettings.getInjectModelVendorExtensions() != null) { + configurator.injectModelVendorExtensions.putAll(generatorSettings.getInjectModelVendorExtensions()); + } if (generatorSettings.getOpenapiNormalizer() != null) { configurator.openapiNormalizer.putAll(generatorSettings.getOpenapiNormalizer()); } @@ -295,6 +299,18 @@ public CodegenConfigurator addOperationIdNameMapping(String key, String value) { return this; } + public CodegenConfigurator addInjectModelVendorExtension(String key, String value) { + this.injectModelVendorExtensions.put(key, value); + generatorSettingsBuilder.withInjectModelVendorExtension(key, value); + return this; + } + + public CodegenConfigurator setInjectModelVendorExtensions(Map extensions) { + this.injectModelVendorExtensions = extensions; + generatorSettingsBuilder.withInjectModelVendorExtensions(extensions); + return this; + } + public CodegenConfigurator addOpenapiNormalizer(String key, String value) { this.openapiNormalizer.put(key, value); generatorSettingsBuilder.withOpenapiNormalizer(key, value); @@ -815,6 +831,7 @@ public ClientOptInput toClientOptInput() { config.modelNameMapping().putAll(generatorSettings.getModelNameMappings()); config.enumNameMapping().putAll(generatorSettings.getEnumNameMappings()); config.operationIdNameMapping().putAll(generatorSettings.getOperationIdNameMappings()); + config.injectModelVendorExtensions().putAll(generatorSettings.getInjectModelVendorExtensions()); config.openapiNormalizer().putAll(generatorSettings.getOpenapiNormalizer()); config.languageSpecificPrimitives().addAll(generatorSettings.getLanguageSpecificPrimitives()); config.openapiGeneratorIgnoreList().addAll(generatorSettings.getOpenapiGeneratorIgnoreList()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfiguratorUtils.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfiguratorUtils.java index 3a0391da3adc..eabae28f67b6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfiguratorUtils.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfiguratorUtils.java @@ -204,6 +204,19 @@ public static void applyOpenapiNormalizerKvp(String openapiNormalizer, CodegenCo } } + public static void applyInjectModelVendorExtensionsKvpList(List injectModelVendorExtensions, CodegenConfigurator configurator) { + for (String propString : injectModelVendorExtensions) { + applyInjectModelVendorExtensionsKvp(propString, configurator); + } + } + + public static void applyInjectModelVendorExtensionsKvp(String injectModelVendorExtensions, CodegenConfigurator configurator) { + final Map map = createMapFromKeyValuePairs(injectModelVendorExtensions); + for (Map.Entry entry : map.entrySet()) { + configurator.addInjectModelVendorExtension(entry.getKey().trim(), entry.getValue().trim()); + } + } + public static void applyTypeMappingsKvpList(List typeMappings, CodegenConfigurator configurator) { for (String propString : typeMappings) { applyTypeMappingsKvp(propString, configurator); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java index 7c5e9117e36a..269afedcd981 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java @@ -883,6 +883,19 @@ protected void patchProperty(Map enumRefs, CodegenModel mo if (property.datatypeWithEnum.equals("decimal")) { property.isDecimal = true; } + + // Normalize x-setter-visibility: + // "public" -> remove extension, set isReadOnly=false (public setter = default, no modifier needed) + // any other value -> set isReadOnly=true (template emits "{{.}} set;" using the extension value) + Object setterVisibilityObj = property.vendorExtensions.get("x-setter-visibility"); + if (setterVisibilityObj instanceof String) { + if ("public".equals(setterVisibilityObj)) { + property.vendorExtensions.remove("x-setter-visibility"); + property.isReadOnly = false; + } else { + property.isReadOnly = true; + } + } } @Override diff --git a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/modelGeneric.mustache b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/modelGeneric.mustache index da018d3c7bf2..fb4dfe875313 100644 --- a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/modelGeneric.mustache +++ b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/modelGeneric.mustache @@ -115,7 +115,7 @@ /// [JsonIgnore] [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] - public {{#isNew}}new {{/isNew}}Option<{{{datatypeWithEnum}}}{{>NullConditionalProperty}}> {{name}}Option { get; {{^isReadOnly}}private set; {{/isReadOnly}}} + public {{#isNew}}new {{/isNew}}Option<{{{datatypeWithEnum}}}{{>NullConditionalProperty}}> {{name}}Option { get; {{^isReadOnly}}private set; {{/isReadOnly}}{{#isReadOnly}}{{#vendorExtensions.x-setter-visibility}}private set; {{/vendorExtensions.x-setter-visibility}}{{/isReadOnly}}} {{/required}} /// @@ -131,7 +131,7 @@ {{#deprecated}} [Obsolete] {{/deprecated}} - public {{#isNew}}new {{/isNew}}{{{datatypeWithEnum}}}{{#lambda.first}}{{#isNullable}}{{>NullConditionalProperty}} {{/isNullable}}{{^required}}{{nrt?}}{{^nrt}}{{#vendorExtensions.x-is-value-type}}?{{/vendorExtensions.x-is-value-type}}{{/nrt}} {{/required}}{{/lambda.first}} {{name}} {{#required}}{ get; {{^isReadOnly}}set; {{/isReadOnly}}}{{/required}}{{^required}}{ get { return this.{{name}}Option.Value; } {{^isReadOnly}}set { this.{{name}}Option = new{{^net70OrLater}} Option<{{{datatypeWithEnum}}}{{>NullConditionalProperty}}>{{/net70OrLater}}(value); } {{/isReadOnly}}}{{/required}} + public {{#isNew}}new {{/isNew}}{{{datatypeWithEnum}}}{{#lambda.first}}{{#isNullable}}{{>NullConditionalProperty}} {{/isNullable}}{{^required}}{{nrt?}}{{^nrt}}{{#vendorExtensions.x-is-value-type}}?{{/vendorExtensions.x-is-value-type}}{{/nrt}} {{/required}}{{/lambda.first}} {{name}} {{#required}}{ get; {{^isReadOnly}}set; {{/isReadOnly}}{{#vendorExtensions.x-setter-visibility}}{{.}} set; {{/vendorExtensions.x-setter-visibility}}}{{/required}}{{^required}}{ get { return this.{{name}}Option.Value; } {{^isReadOnly}}set { this.{{name}}Option = new{{^net70OrLater}} Option<{{{datatypeWithEnum}}}{{>NullConditionalProperty}}>{{/net70OrLater}}(value); } {{/isReadOnly}}{{#vendorExtensions.x-setter-visibility}}{{.}} set { this.{{name}}Option = new{{^net70OrLater}} Option<{{{datatypeWithEnum}}}{{>NullConditionalProperty}}>{{/net70OrLater}}(value); } {{/vendorExtensions.x-setter-visibility}}}{{/required}} {{/isEnum}} {{/isDiscriminator}} @@ -144,7 +144,7 @@ /// [JsonIgnore] [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] - public {{#isNew}}new {{/isNew}}Option<{{{datatypeWithEnum}}}{{>NullConditionalProperty}}> {{#lambda.titlecase}}{{name}}{{/lambda.titlecase}}Option { get; {{^isReadOnly}}private set; {{/isReadOnly}}} + public {{#isNew}}new {{/isNew}}Option<{{{datatypeWithEnum}}}{{>NullConditionalProperty}}> {{#lambda.titlecase}}{{name}}{{/lambda.titlecase}}Option { get; {{^isReadOnly}}private set; {{/isReadOnly}}{{#isReadOnly}}{{#vendorExtensions.x-setter-visibility}}private set; {{/vendorExtensions.x-setter-visibility}}{{/isReadOnly}}} {{/required}} /// @@ -157,7 +157,7 @@ {{#deprecated}} [Obsolete] {{/deprecated}} - public {{{datatypeWithEnum}}}{{#lambda.first}}{{#isNullable}}{{>NullConditionalProperty}} {{/isNullable}}{{^required}}{{nrt?}}{{^nrt}}{{#vendorExtensions.x-is-value-type}}?{{/vendorExtensions.x-is-value-type}}{{/nrt}} {{/required}}{{/lambda.first}} {{#lambda.titlecase}}{{baseType}}{{/lambda.titlecase}} {{#required}}{ get; {{^isReadOnly}}set; {{/isReadOnly}}}{{/required}}{{^required}}{ get { return this.{{#lambda.titlecase}}{{name}}{{/lambda.titlecase}}Option.Value; } {{^isReadOnly}}set { this.{{#lambda.titlecase}}{{name}}{{/lambda.titlecase}}Option = new{{^net70OrLater}} Option<{{{datatypeWithEnum}}}{{>NullConditionalProperty}}>{{/net70OrLater}}(value); } {{/isReadOnly}}}{{/required}} + public {{{datatypeWithEnum}}}{{#lambda.first}}{{#isNullable}}{{>NullConditionalProperty}} {{/isNullable}}{{^required}}{{nrt?}}{{^nrt}}{{#vendorExtensions.x-is-value-type}}?{{/vendorExtensions.x-is-value-type}}{{/nrt}} {{/required}}{{/lambda.first}} {{#lambda.titlecase}}{{baseType}}{{/lambda.titlecase}} {{#required}}{ get; {{^isReadOnly}}set; {{/isReadOnly}}{{#vendorExtensions.x-setter-visibility}}{{.}} set; {{/vendorExtensions.x-setter-visibility}}}{{/required}}{{^required}}{ get { return this.{{#lambda.titlecase}}{{name}}{{/lambda.titlecase}}Option.Value; } {{^isReadOnly}}set { this.{{#lambda.titlecase}}{{name}}{{/lambda.titlecase}}Option = new{{^net70OrLater}} Option<{{{datatypeWithEnum}}}{{>NullConditionalProperty}}>{{/net70OrLater}}(value); } {{/isReadOnly}}{{#vendorExtensions.x-setter-visibility}}{{.}} set { this.{{#lambda.titlecase}}{{name}}{{/lambda.titlecase}}Option = new{{^net70OrLater}} Option<{{{datatypeWithEnum}}}{{>NullConditionalProperty}}>{{/net70OrLater}}(value); } {{/vendorExtensions.x-setter-visibility}}}{{/required}} {{/vendorExtensions.x-duplicated-data-type}} {{/composedSchemas.anyOf}} @@ -173,7 +173,7 @@ {{#deprecated}} [Obsolete] {{/deprecated}} - public {{{dataType}}}{{>NullConditionalProperty}} {{#lambda.titlecase}}{{name}}{{/lambda.titlecase}} { get; {{^isReadOnly}}set; {{/isReadOnly}}} + public {{{dataType}}}{{>NullConditionalProperty}} {{#lambda.titlecase}}{{name}}{{/lambda.titlecase}} { get; {{^isReadOnly}}set; {{/isReadOnly}}{{#vendorExtensions.x-setter-visibility}}{{.}} set; {{/vendorExtensions.x-setter-visibility}}} {{/vendorExtensions.x-duplicated-data-type}} {{/composedSchemas.oneOf}} @@ -201,7 +201,7 @@ /// [JsonIgnore] [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] - public new Option<{{{datatypeWithEnum}}}{{>NullConditionalProperty}}> {{name}}Option { get; {{^isReadOnly}}private set; {{/isReadOnly}}} + public new Option<{{{datatypeWithEnum}}}{{>NullConditionalProperty}}> {{name}}Option { get; {{^isReadOnly}}private set; {{/isReadOnly}}{{#isReadOnly}}{{#vendorExtensions.x-setter-visibility}}private set; {{/vendorExtensions.x-setter-visibility}}{{/isReadOnly}}} {{/required}} /// @@ -215,7 +215,7 @@ {{#deprecated}} [Obsolete] {{/deprecated}} - public new {{{datatypeWithEnum}}}{{#lambda.first}}{{#isNullable}}{{>NullConditionalProperty}} {{/isNullable}}{{^required}}{{nrt?}}{{^nrt}}{{#vendorExtensions.x-is-value-type}}?{{/vendorExtensions.x-is-value-type}}{{/nrt}} {{/required}}{{/lambda.first}} {{name}} {{#required}}{ get; {{^isReadOnly}}set; {{/isReadOnly}}}{{/required}}{{^required}}{ get { return this.{{name}}Option.Value; } {{^isReadOnly}}set { this.{{name}}Option = new{{^net70OrLater}} Option<{{{datatypeWithEnum}}}{{>NullConditionalProperty}}>{{/net70OrLater}}(value); } {{/isReadOnly}}}{{/required}} + public new {{{datatypeWithEnum}}}{{#lambda.first}}{{#isNullable}}{{>NullConditionalProperty}} {{/isNullable}}{{^required}}{{nrt?}}{{^nrt}}{{#vendorExtensions.x-is-value-type}}?{{/vendorExtensions.x-is-value-type}}{{/nrt}} {{/required}}{{/lambda.first}} {{name}} {{#required}}{ get; {{^isReadOnly}}set; {{/isReadOnly}}{{#vendorExtensions.x-setter-visibility}}{{.}} set; {{/vendorExtensions.x-setter-visibility}}}{{/required}}{{^required}}{ get { return this.{{name}}Option.Value; } {{^isReadOnly}}set { this.{{name}}Option = new{{^net70OrLater}} Option<{{{datatypeWithEnum}}}{{>NullConditionalProperty}}>{{/net70OrLater}}(value); } {{/isReadOnly}}{{#vendorExtensions.x-setter-visibility}}{{.}} set { this.{{name}}Option = new{{^net70OrLater}} Option<{{{datatypeWithEnum}}}{{>NullConditionalProperty}}>{{/net70OrLater}}(value); } {{/vendorExtensions.x-setter-visibility}}}{{/required}} {{/isNew}} {{/isInherited}} @@ -226,7 +226,7 @@ /// [JsonIgnore] [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] - public Option<{{{datatypeWithEnum}}}{{>NullConditionalProperty}}> {{name}}Option { get; {{^isReadOnly}}private set; {{/isReadOnly}}} + public Option<{{{datatypeWithEnum}}}{{>NullConditionalProperty}}> {{name}}Option { get; {{^isReadOnly}}private set; {{/isReadOnly}}{{#isReadOnly}}{{#vendorExtensions.x-setter-visibility}}private set; {{/vendorExtensions.x-setter-visibility}}{{/isReadOnly}}} {{/required}} /// @@ -240,7 +240,7 @@ {{#deprecated}} [Obsolete] {{/deprecated}} - public {{{datatypeWithEnum}}}{{#lambda.first}}{{#isNullable}}{{>NullConditionalProperty}} {{/isNullable}}{{^required}}{{nrt?}}{{^nrt}}{{#vendorExtensions.x-is-value-type}}?{{/vendorExtensions.x-is-value-type}}{{/nrt}} {{/required}}{{/lambda.first}} {{name}} {{#required}}{ get; {{^isReadOnly}}set; {{/isReadOnly}}}{{/required}}{{^required}}{ get { return this.{{name}}Option.Value; } {{^isReadOnly}}set { this.{{name}}Option = new{{^net70OrLater}} Option<{{{datatypeWithEnum}}}{{>NullConditionalProperty}}>{{/net70OrLater}}(value); } {{/isReadOnly}}}{{/required}} + public {{{datatypeWithEnum}}}{{#lambda.first}}{{#isNullable}}{{>NullConditionalProperty}} {{/isNullable}}{{^required}}{{nrt?}}{{^nrt}}{{#vendorExtensions.x-is-value-type}}?{{/vendorExtensions.x-is-value-type}}{{/nrt}} {{/required}}{{/lambda.first}} {{name}} {{#required}}{ get; {{^isReadOnly}}set; {{/isReadOnly}}{{#vendorExtensions.x-setter-visibility}}{{.}} set; {{/vendorExtensions.x-setter-visibility}}}{{/required}}{{^required}}{ get { return this.{{name}}Option.Value; } {{^isReadOnly}}set { this.{{name}}Option = new{{^net70OrLater}} Option<{{{datatypeWithEnum}}}{{>NullConditionalProperty}}>{{/net70OrLater}}(value); } {{/isReadOnly}}{{#vendorExtensions.x-setter-visibility}}{{.}} set { this.{{name}}Option = new{{^net70OrLater}} Option<{{{datatypeWithEnum}}}{{>NullConditionalProperty}}>{{/net70OrLater}}(value); } {{/vendorExtensions.x-setter-visibility}}}{{/required}} {{/isInherited}} {{/isEnum}} diff --git a/modules/openapi-generator/src/test/resources/3_0/csharp/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml b/modules/openapi-generator/src/test/resources/3_0/csharp/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml index 2abbde0932ad..160222f1398b 100644 --- a/modules/openapi-generator/src/test/resources/3_0/csharp/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/csharp/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml @@ -1468,6 +1468,21 @@ components: type: array items: $ref: '#/components/schemas/RolesReportsHash' + InjectedVendorExtensionsTest: + type: object + properties: + unalteredProperty: + type: string + readOnly: true + potentiallyOverriddenPropertyToPrivate: + type: string + readOnly: true + potentiallyOverriddenPropertyToInternal: + type: string + readOnly: true + potentiallyOverriddenPropertyToPublic: + type: string + readOnly: true RolesReportsHash: description: Role report Hash type: object diff --git a/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/.openapi-generator/FILES b/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/.openapi-generator/FILES index 3a66c0df35db..0698a2042def 100644 --- a/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/.openapi-generator/FILES +++ b/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/.openapi-generator/FILES @@ -53,6 +53,7 @@ docs/models/GmFruit.md docs/models/GrandparentAnimal.md docs/models/HasOnlyReadOnly.md docs/models/HealthCheckResult.md +docs/models/InjectedVendorExtensionsTest.md docs/models/IsoscelesTriangle.md docs/models/List.md docs/models/LiteralStringClass.md @@ -198,6 +199,7 @@ src/Org.OpenAPITools/Model/GmFruit.cs src/Org.OpenAPITools/Model/GrandparentAnimal.cs src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs src/Org.OpenAPITools/Model/IsoscelesTriangle.cs src/Org.OpenAPITools/Model/List.cs src/Org.OpenAPITools/Model/LiteralStringClass.cs diff --git a/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/api/openapi.yaml b/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/api/openapi.yaml index a179b6cfdd29..586178fe4189 100644 --- a/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/api/openapi.yaml +++ b/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/api/openapi.yaml @@ -1355,6 +1355,21 @@ components: items: $ref: "#/components/schemas/RolesReportsHash" type: array + InjectedVendorExtensionsTest: + properties: + unalteredProperty: + readOnly: true + type: string + potentiallyOverriddenPropertyToPrivate: + readOnly: true + type: string + potentiallyOverriddenPropertyToInternal: + readOnly: true + type: string + potentiallyOverriddenPropertyToPublic: + readOnly: true + type: string + type: object RolesReportsHash: description: Role report Hash example: diff --git a/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/docs/models/InjectedVendorExtensionsTest.md b/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/docs/models/InjectedVendorExtensionsTest.md new file mode 100644 index 000000000000..6e5e74e659a5 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/docs/models/InjectedVendorExtensionsTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.InjectedVendorExtensionsTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**PotentiallyOverriddenPropertyToInternal** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPrivate** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPublic** | **string** | | [optional] [readonly] +**UnalteredProperty** | **string** | | [optional] [readonly] + +[[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/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs b/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs new file mode 100644 index 000000000000..19c09e9df56c --- /dev/null +++ b/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs @@ -0,0 +1,92 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InjectedVendorExtensionsTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InjectedVendorExtensionsTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InjectedVendorExtensionsTest + //private InjectedVendorExtensionsTest instance; + + public InjectedVendorExtensionsTestTests() + { + // TODO uncomment below to create an instance of InjectedVendorExtensionsTest + //instance = new InjectedVendorExtensionsTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InjectedVendorExtensionsTest + /// + [Fact] + public void InjectedVendorExtensionsTestInstanceTest() + { + // TODO uncomment below to test "IsType" InjectedVendorExtensionsTest + //Assert.IsType(instance); + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToInternal' + /// + [Fact] + public void PotentiallyOverriddenPropertyToInternalTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToInternal' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPrivate' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPrivateTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPrivate' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPublic' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPublicTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPublic' + } + + /// + /// Test the property 'UnalteredProperty' + /// + [Fact] + public void UnalteredPropertyTest() + { + // TODO unit test for the property 'UnalteredProperty' + } + } +} diff --git a/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Client/HostConfiguration.cs b/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Client/HostConfiguration.cs index a86b16b05f28..ca8d0743deab 100644 --- a/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Client/HostConfiguration.cs +++ b/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Client/HostConfiguration.cs @@ -87,6 +87,7 @@ public HostConfiguration(IServiceCollection services) _jsonOptions.Converters.Add(new GrandparentAnimalJsonConverter()); _jsonOptions.Converters.Add(new HasOnlyReadOnlyJsonConverter()); _jsonOptions.Converters.Add(new HealthCheckResultJsonConverter()); + _jsonOptions.Converters.Add(new InjectedVendorExtensionsTestJsonConverter()); _jsonOptions.Converters.Add(new IsoscelesTriangleJsonConverter()); _jsonOptions.Converters.Add(new ListJsonConverter()); _jsonOptions.Converters.Add(new LiteralStringClassJsonConverter()); diff --git a/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs b/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs new file mode 100644 index 000000000000..ad17f29555b7 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/latest/UseDateTimeOffset/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs @@ -0,0 +1,265 @@ +// +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +#nullable enable + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Text; +using System.Text.RegularExpressions; +using System.Text.Json; +using System.Text.Json.Serialization; +using System.ComponentModel.DataAnnotations; +using Org.OpenAPITools.Client; + +namespace Org.OpenAPITools.Model +{ + /// + /// InjectedVendorExtensionsTest + /// + public partial class InjectedVendorExtensionsTest : IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// potentiallyOverriddenPropertyToInternal + /// potentiallyOverriddenPropertyToPrivate + /// potentiallyOverriddenPropertyToPublic + /// unalteredProperty + [JsonConstructor] + internal InjectedVendorExtensionsTest(Option potentiallyOverriddenPropertyToInternal = default, Option potentiallyOverriddenPropertyToPrivate = default, Option potentiallyOverriddenPropertyToPublic = default, Option unalteredProperty = default) + { + PotentiallyOverriddenPropertyToInternalOption = potentiallyOverriddenPropertyToInternal; + PotentiallyOverriddenPropertyToPrivateOption = potentiallyOverriddenPropertyToPrivate; + PotentiallyOverriddenPropertyToPublicOption = potentiallyOverriddenPropertyToPublic; + UnalteredPropertyOption = unalteredProperty; + OnCreated(); + } + + partial void OnCreated(); + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToInternal + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToInternalOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToInternal + /// + [JsonPropertyName("potentiallyOverriddenPropertyToInternal")] + public string? PotentiallyOverriddenPropertyToInternal { get { return this.PotentiallyOverriddenPropertyToInternalOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPrivate + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPrivateOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPrivate + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPrivate")] + public string? PotentiallyOverriddenPropertyToPrivate { get { return this.PotentiallyOverriddenPropertyToPrivateOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPublic + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPublicOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPublic + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPublic")] + public string? PotentiallyOverriddenPropertyToPublic { get { return this.PotentiallyOverriddenPropertyToPublicOption.Value; } } + + /// + /// Used to track the state of UnalteredProperty + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option UnalteredPropertyOption { get; } + + /// + /// Gets or Sets UnalteredProperty + /// + [JsonPropertyName("unalteredProperty")] + public string? UnalteredProperty { get { return this.UnalteredPropertyOption.Value; } } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InjectedVendorExtensionsTest {\n"); + sb.Append(" PotentiallyOverriddenPropertyToInternal: ").Append(PotentiallyOverriddenPropertyToInternal).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPrivate: ").Append(PotentiallyOverriddenPropertyToPrivate).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPublic: ").Append(PotentiallyOverriddenPropertyToPublic).Append("\n"); + sb.Append(" UnalteredProperty: ").Append(UnalteredProperty).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// A Json converter for type + /// + public partial class InjectedVendorExtensionsTestJsonConverter : JsonConverter + { + partial void OnCreated(); + + /// + /// Initializes a new instance of the class. + /// + public InjectedVendorExtensionsTestJsonConverter() + { + OnCreated(); + } + + /// + /// Deserializes json to + /// + /// + /// + /// + /// + /// + public override InjectedVendorExtensionsTest Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions) + { + int currentDepth = utf8JsonReader.CurrentDepth; + + if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) + throw new JsonException(); + + JsonTokenType startingTokenType = utf8JsonReader.TokenType; + + Option potentiallyOverriddenPropertyToInternal = default; + Option potentiallyOverriddenPropertyToPrivate = default; + Option potentiallyOverriddenPropertyToPublic = default; + Option unalteredProperty = default; + + while (utf8JsonReader.Read()) + { + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1) + { + string? localVarJsonPropertyName = utf8JsonReader.GetString(); + utf8JsonReader.Read(); + + switch (localVarJsonPropertyName) + { + case "potentiallyOverriddenPropertyToInternal": + potentiallyOverriddenPropertyToInternal = new Option(utf8JsonReader.GetString()!); + break; + case "potentiallyOverriddenPropertyToPrivate": + potentiallyOverriddenPropertyToPrivate = new Option(utf8JsonReader.GetString()!); + break; + case "potentiallyOverriddenPropertyToPublic": + potentiallyOverriddenPropertyToPublic = new Option(utf8JsonReader.GetString()!); + break; + case "unalteredProperty": + unalteredProperty = new Option(utf8JsonReader.GetString()!); + break; + default: + break; + } + } + } + + if (potentiallyOverriddenPropertyToInternal.IsSet && potentiallyOverriddenPropertyToInternal.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToInternal), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPrivate.IsSet && potentiallyOverriddenPropertyToPrivate.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPrivate), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPublic.IsSet && potentiallyOverriddenPropertyToPublic.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPublic), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (unalteredProperty.IsSet && unalteredProperty.Value == null) + throw new ArgumentNullException(nameof(unalteredProperty), "Property is not nullable for class InjectedVendorExtensionsTest."); + + return new InjectedVendorExtensionsTest(potentiallyOverriddenPropertyToInternal, potentiallyOverriddenPropertyToPrivate, potentiallyOverriddenPropertyToPublic, unalteredProperty); + } + + /// + /// Serializes a + /// + /// + /// + /// + /// + public override void Write(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + writer.WriteStartObject(); + + WriteProperties(writer, injectedVendorExtensionsTest, jsonSerializerOptions); + writer.WriteEndObject(); + } + + /// + /// Serializes the properties of + /// + /// + /// + /// + /// + public void WriteProperties(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet && injectedVendorExtensionsTest.UnalteredProperty == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.UnalteredProperty), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToInternal", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPrivate", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPublic", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet) + writer.WriteString("unalteredProperty", injectedVendorExtensionsTest.UnalteredProperty); + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net10/FormModels/.openapi-generator/FILES b/samples/client/petstore/csharp/generichost/net10/FormModels/.openapi-generator/FILES index fd2691eb4794..b3b6081185ca 100644 --- a/samples/client/petstore/csharp/generichost/net10/FormModels/.openapi-generator/FILES +++ b/samples/client/petstore/csharp/generichost/net10/FormModels/.openapi-generator/FILES @@ -61,6 +61,7 @@ docs/models/GmFruit.md docs/models/GrandparentAnimal.md docs/models/HasOnlyReadOnly.md docs/models/HealthCheckResult.md +docs/models/InjectedVendorExtensionsTest.md docs/models/IsoscelesTriangle.md docs/models/List.md docs/models/LiteralStringClass.md @@ -231,6 +232,7 @@ src/Org.OpenAPITools/Model/GmFruit.cs src/Org.OpenAPITools/Model/GrandparentAnimal.cs src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs src/Org.OpenAPITools/Model/IsoscelesTriangle.cs src/Org.OpenAPITools/Model/List.cs src/Org.OpenAPITools/Model/LiteralStringClass.cs diff --git a/samples/client/petstore/csharp/generichost/net10/FormModels/api/openapi.yaml b/samples/client/petstore/csharp/generichost/net10/FormModels/api/openapi.yaml index 6dae7b5ccbd3..7ba3a76f8f16 100644 --- a/samples/client/petstore/csharp/generichost/net10/FormModels/api/openapi.yaml +++ b/samples/client/petstore/csharp/generichost/net10/FormModels/api/openapi.yaml @@ -1324,6 +1324,21 @@ components: items: $ref: "#/components/schemas/RolesReportsHash" type: array + InjectedVendorExtensionsTest: + properties: + unalteredProperty: + readOnly: true + type: string + potentiallyOverriddenPropertyToPrivate: + readOnly: true + type: string + potentiallyOverriddenPropertyToInternal: + readOnly: true + type: string + potentiallyOverriddenPropertyToPublic: + readOnly: true + type: string + type: object RolesReportsHash: description: Role report Hash example: diff --git a/samples/client/petstore/csharp/generichost/net10/FormModels/docs/models/InjectedVendorExtensionsTest.md b/samples/client/petstore/csharp/generichost/net10/FormModels/docs/models/InjectedVendorExtensionsTest.md new file mode 100644 index 000000000000..6e5e74e659a5 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net10/FormModels/docs/models/InjectedVendorExtensionsTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.InjectedVendorExtensionsTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**PotentiallyOverriddenPropertyToInternal** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPrivate** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPublic** | **string** | | [optional] [readonly] +**UnalteredProperty** | **string** | | [optional] [readonly] + +[[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/csharp/generichost/net10/FormModels/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs b/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs new file mode 100644 index 000000000000..19c09e9df56c --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs @@ -0,0 +1,92 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InjectedVendorExtensionsTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InjectedVendorExtensionsTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InjectedVendorExtensionsTest + //private InjectedVendorExtensionsTest instance; + + public InjectedVendorExtensionsTestTests() + { + // TODO uncomment below to create an instance of InjectedVendorExtensionsTest + //instance = new InjectedVendorExtensionsTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InjectedVendorExtensionsTest + /// + [Fact] + public void InjectedVendorExtensionsTestInstanceTest() + { + // TODO uncomment below to test "IsType" InjectedVendorExtensionsTest + //Assert.IsType(instance); + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToInternal' + /// + [Fact] + public void PotentiallyOverriddenPropertyToInternalTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToInternal' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPrivate' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPrivateTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPrivate' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPublic' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPublicTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPublic' + } + + /// + /// Test the property 'UnalteredProperty' + /// + [Fact] + public void UnalteredPropertyTest() + { + // TODO unit test for the property 'UnalteredProperty' + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Client/HostConfiguration.cs b/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Client/HostConfiguration.cs index 5c409ac9f5ba..4ddab463d26a 100644 --- a/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Client/HostConfiguration.cs +++ b/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Client/HostConfiguration.cs @@ -101,6 +101,7 @@ public HostConfiguration(IServiceCollection services) _jsonOptions.Converters.Add(new GrandparentAnimalJsonConverter()); _jsonOptions.Converters.Add(new HasOnlyReadOnlyJsonConverter()); _jsonOptions.Converters.Add(new HealthCheckResultJsonConverter()); + _jsonOptions.Converters.Add(new InjectedVendorExtensionsTestJsonConverter()); _jsonOptions.Converters.Add(new IsoscelesTriangleJsonConverter()); _jsonOptions.Converters.Add(new ListJsonConverter()); _jsonOptions.Converters.Add(new LiteralStringClassJsonConverter()); diff --git a/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs b/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs new file mode 100644 index 000000000000..53cbb5268a33 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net10/FormModels/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs @@ -0,0 +1,318 @@ +// +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Text; +using System.Text.RegularExpressions; +using System.Text.Json; +using System.Text.Json.Serialization; +using System.ComponentModel.DataAnnotations; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using Org.OpenAPITools.Client; + +namespace Org.OpenAPITools.Model +{ + /// + /// InjectedVendorExtensionsTest + /// + public partial class InjectedVendorExtensionsTest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// potentiallyOverriddenPropertyToInternal + /// potentiallyOverriddenPropertyToPrivate + /// potentiallyOverriddenPropertyToPublic + /// unalteredProperty + [JsonConstructor] + internal InjectedVendorExtensionsTest(Option potentiallyOverriddenPropertyToInternal = default, Option potentiallyOverriddenPropertyToPrivate = default, Option potentiallyOverriddenPropertyToPublic = default, Option unalteredProperty = default) + { + PotentiallyOverriddenPropertyToInternalOption = potentiallyOverriddenPropertyToInternal; + PotentiallyOverriddenPropertyToPrivateOption = potentiallyOverriddenPropertyToPrivate; + PotentiallyOverriddenPropertyToPublicOption = potentiallyOverriddenPropertyToPublic; + UnalteredPropertyOption = unalteredProperty; + OnCreated(); + } + + partial void OnCreated(); + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToInternal + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToInternalOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToInternal + /// + [JsonPropertyName("potentiallyOverriddenPropertyToInternal")] + public string PotentiallyOverriddenPropertyToInternal { get { return this.PotentiallyOverriddenPropertyToInternalOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPrivate + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPrivateOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPrivate + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPrivate")] + public string PotentiallyOverriddenPropertyToPrivate { get { return this.PotentiallyOverriddenPropertyToPrivateOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPublic + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPublicOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPublic + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPublic")] + public string PotentiallyOverriddenPropertyToPublic { get { return this.PotentiallyOverriddenPropertyToPublicOption.Value; } } + + /// + /// Used to track the state of UnalteredProperty + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option UnalteredPropertyOption { get; } + + /// + /// Gets or Sets UnalteredProperty + /// + [JsonPropertyName("unalteredProperty")] + public string UnalteredProperty { get { return this.UnalteredPropertyOption.Value; } } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public Dictionary AdditionalProperties { get; } = new Dictionary(); + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InjectedVendorExtensionsTest {\n"); + sb.Append(" PotentiallyOverriddenPropertyToInternal: ").Append(PotentiallyOverriddenPropertyToInternal).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPrivate: ").Append(PotentiallyOverriddenPropertyToPrivate).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPublic: ").Append(PotentiallyOverriddenPropertyToPublic).Append("\n"); + sb.Append(" UnalteredProperty: ").Append(UnalteredProperty).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as InjectedVendorExtensionsTest).AreEqual; + } + + /// + /// Returns true if InjectedVendorExtensionsTest instances are equal + /// + /// Instance of InjectedVendorExtensionsTest to be compared + /// Boolean + public bool Equals(InjectedVendorExtensionsTest input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (PotentiallyOverriddenPropertyToInternal != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToInternal.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPrivate != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPrivate.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPublic != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPublic.GetHashCode(); + + if (UnalteredProperty != null) + hashCode = (hashCode * 59) + UnalteredProperty.GetHashCode(); + + hashCode = (hashCode * 59) + AdditionalProperties.GetHashCode(); + + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// A Json converter for type + /// + public partial class InjectedVendorExtensionsTestJsonConverter : JsonConverter + { + partial void OnCreated(); + + /// + /// Initializes a new instance of the class. + /// + public InjectedVendorExtensionsTestJsonConverter() + { + OnCreated(); + } + + /// + /// Deserializes json to + /// + /// + /// + /// + /// + /// + public override InjectedVendorExtensionsTest Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions) + { + int currentDepth = utf8JsonReader.CurrentDepth; + + if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) + throw new JsonException(); + + JsonTokenType startingTokenType = utf8JsonReader.TokenType; + + Option potentiallyOverriddenPropertyToInternal = default; + Option potentiallyOverriddenPropertyToPrivate = default; + Option potentiallyOverriddenPropertyToPublic = default; + Option unalteredProperty = default; + + while (utf8JsonReader.Read()) + { + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1) + { + string localVarJsonPropertyName = utf8JsonReader.GetString(); + utf8JsonReader.Read(); + + switch (localVarJsonPropertyName) + { + case "potentiallyOverriddenPropertyToInternal": + potentiallyOverriddenPropertyToInternal = new Option(utf8JsonReader.GetString()); + break; + case "potentiallyOverriddenPropertyToPrivate": + potentiallyOverriddenPropertyToPrivate = new Option(utf8JsonReader.GetString()); + break; + case "potentiallyOverriddenPropertyToPublic": + potentiallyOverriddenPropertyToPublic = new Option(utf8JsonReader.GetString()); + break; + case "unalteredProperty": + unalteredProperty = new Option(utf8JsonReader.GetString()); + break; + default: + break; + } + } + } + + if (potentiallyOverriddenPropertyToInternal.IsSet && potentiallyOverriddenPropertyToInternal.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToInternal), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPrivate.IsSet && potentiallyOverriddenPropertyToPrivate.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPrivate), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPublic.IsSet && potentiallyOverriddenPropertyToPublic.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPublic), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (unalteredProperty.IsSet && unalteredProperty.Value == null) + throw new ArgumentNullException(nameof(unalteredProperty), "Property is not nullable for class InjectedVendorExtensionsTest."); + + return new InjectedVendorExtensionsTest(potentiallyOverriddenPropertyToInternal, potentiallyOverriddenPropertyToPrivate, potentiallyOverriddenPropertyToPublic, unalteredProperty); + } + + /// + /// Serializes a + /// + /// + /// + /// + /// + public override void Write(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + writer.WriteStartObject(); + + WriteProperties(writer, injectedVendorExtensionsTest, jsonSerializerOptions); + writer.WriteEndObject(); + } + + /// + /// Serializes the properties of + /// + /// + /// + /// + /// + public void WriteProperties(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet && injectedVendorExtensionsTest.UnalteredProperty == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.UnalteredProperty), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToInternal", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPrivate", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPublic", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet) + writer.WriteString("unalteredProperty", injectedVendorExtensionsTest.UnalteredProperty); + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/.openapi-generator/FILES b/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/.openapi-generator/FILES index 3a66c0df35db..0698a2042def 100644 --- a/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/.openapi-generator/FILES +++ b/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/.openapi-generator/FILES @@ -53,6 +53,7 @@ docs/models/GmFruit.md docs/models/GrandparentAnimal.md docs/models/HasOnlyReadOnly.md docs/models/HealthCheckResult.md +docs/models/InjectedVendorExtensionsTest.md docs/models/IsoscelesTriangle.md docs/models/List.md docs/models/LiteralStringClass.md @@ -198,6 +199,7 @@ src/Org.OpenAPITools/Model/GmFruit.cs src/Org.OpenAPITools/Model/GrandparentAnimal.cs src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs src/Org.OpenAPITools/Model/IsoscelesTriangle.cs src/Org.OpenAPITools/Model/List.cs src/Org.OpenAPITools/Model/LiteralStringClass.cs diff --git a/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/api/openapi.yaml b/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/api/openapi.yaml index a179b6cfdd29..586178fe4189 100644 --- a/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/api/openapi.yaml +++ b/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/api/openapi.yaml @@ -1355,6 +1355,21 @@ components: items: $ref: "#/components/schemas/RolesReportsHash" type: array + InjectedVendorExtensionsTest: + properties: + unalteredProperty: + readOnly: true + type: string + potentiallyOverriddenPropertyToPrivate: + readOnly: true + type: string + potentiallyOverriddenPropertyToInternal: + readOnly: true + type: string + potentiallyOverriddenPropertyToPublic: + readOnly: true + type: string + type: object RolesReportsHash: description: Role report Hash example: diff --git a/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/docs/models/InjectedVendorExtensionsTest.md b/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/docs/models/InjectedVendorExtensionsTest.md new file mode 100644 index 000000000000..6e5e74e659a5 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/docs/models/InjectedVendorExtensionsTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.InjectedVendorExtensionsTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**PotentiallyOverriddenPropertyToInternal** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPrivate** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPublic** | **string** | | [optional] [readonly] +**UnalteredProperty** | **string** | | [optional] [readonly] + +[[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/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs b/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs new file mode 100644 index 000000000000..19c09e9df56c --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs @@ -0,0 +1,92 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InjectedVendorExtensionsTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InjectedVendorExtensionsTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InjectedVendorExtensionsTest + //private InjectedVendorExtensionsTest instance; + + public InjectedVendorExtensionsTestTests() + { + // TODO uncomment below to create an instance of InjectedVendorExtensionsTest + //instance = new InjectedVendorExtensionsTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InjectedVendorExtensionsTest + /// + [Fact] + public void InjectedVendorExtensionsTestInstanceTest() + { + // TODO uncomment below to test "IsType" InjectedVendorExtensionsTest + //Assert.IsType(instance); + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToInternal' + /// + [Fact] + public void PotentiallyOverriddenPropertyToInternalTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToInternal' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPrivate' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPrivateTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPrivate' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPublic' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPublicTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPublic' + } + + /// + /// Test the property 'UnalteredProperty' + /// + [Fact] + public void UnalteredPropertyTest() + { + // TODO unit test for the property 'UnalteredProperty' + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Client/HostConfiguration.cs b/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Client/HostConfiguration.cs index a86b16b05f28..ca8d0743deab 100644 --- a/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Client/HostConfiguration.cs +++ b/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Client/HostConfiguration.cs @@ -87,6 +87,7 @@ public HostConfiguration(IServiceCollection services) _jsonOptions.Converters.Add(new GrandparentAnimalJsonConverter()); _jsonOptions.Converters.Add(new HasOnlyReadOnlyJsonConverter()); _jsonOptions.Converters.Add(new HealthCheckResultJsonConverter()); + _jsonOptions.Converters.Add(new InjectedVendorExtensionsTestJsonConverter()); _jsonOptions.Converters.Add(new IsoscelesTriangleJsonConverter()); _jsonOptions.Converters.Add(new ListJsonConverter()); _jsonOptions.Converters.Add(new LiteralStringClassJsonConverter()); diff --git a/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs b/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs new file mode 100644 index 000000000000..c533776fdbcc --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net10/NullReferenceTypes/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs @@ -0,0 +1,320 @@ +// +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +#nullable enable + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Text; +using System.Text.RegularExpressions; +using System.Text.Json; +using System.Text.Json.Serialization; +using System.ComponentModel.DataAnnotations; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using Org.OpenAPITools.Client; + +namespace Org.OpenAPITools.Model +{ + /// + /// InjectedVendorExtensionsTest + /// + public partial class InjectedVendorExtensionsTest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// potentiallyOverriddenPropertyToInternal + /// potentiallyOverriddenPropertyToPrivate + /// potentiallyOverriddenPropertyToPublic + /// unalteredProperty + [JsonConstructor] + internal InjectedVendorExtensionsTest(Option potentiallyOverriddenPropertyToInternal = default, Option potentiallyOverriddenPropertyToPrivate = default, Option potentiallyOverriddenPropertyToPublic = default, Option unalteredProperty = default) + { + PotentiallyOverriddenPropertyToInternalOption = potentiallyOverriddenPropertyToInternal; + PotentiallyOverriddenPropertyToPrivateOption = potentiallyOverriddenPropertyToPrivate; + PotentiallyOverriddenPropertyToPublicOption = potentiallyOverriddenPropertyToPublic; + UnalteredPropertyOption = unalteredProperty; + OnCreated(); + } + + partial void OnCreated(); + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToInternal + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToInternalOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToInternal + /// + [JsonPropertyName("potentiallyOverriddenPropertyToInternal")] + public string? PotentiallyOverriddenPropertyToInternal { get { return this.PotentiallyOverriddenPropertyToInternalOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPrivate + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPrivateOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPrivate + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPrivate")] + public string? PotentiallyOverriddenPropertyToPrivate { get { return this.PotentiallyOverriddenPropertyToPrivateOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPublic + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPublicOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPublic + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPublic")] + public string? PotentiallyOverriddenPropertyToPublic { get { return this.PotentiallyOverriddenPropertyToPublicOption.Value; } } + + /// + /// Used to track the state of UnalteredProperty + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option UnalteredPropertyOption { get; } + + /// + /// Gets or Sets UnalteredProperty + /// + [JsonPropertyName("unalteredProperty")] + public string? UnalteredProperty { get { return this.UnalteredPropertyOption.Value; } } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public Dictionary AdditionalProperties { get; } = new Dictionary(); + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InjectedVendorExtensionsTest {\n"); + sb.Append(" PotentiallyOverriddenPropertyToInternal: ").Append(PotentiallyOverriddenPropertyToInternal).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPrivate: ").Append(PotentiallyOverriddenPropertyToPrivate).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPublic: ").Append(PotentiallyOverriddenPropertyToPublic).Append("\n"); + sb.Append(" UnalteredProperty: ").Append(UnalteredProperty).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object? input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as InjectedVendorExtensionsTest).AreEqual; + } + + /// + /// Returns true if InjectedVendorExtensionsTest instances are equal + /// + /// Instance of InjectedVendorExtensionsTest to be compared + /// Boolean + public bool Equals(InjectedVendorExtensionsTest? input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (PotentiallyOverriddenPropertyToInternal != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToInternal.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPrivate != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPrivate.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPublic != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPublic.GetHashCode(); + + if (UnalteredProperty != null) + hashCode = (hashCode * 59) + UnalteredProperty.GetHashCode(); + + hashCode = (hashCode * 59) + AdditionalProperties.GetHashCode(); + + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// A Json converter for type + /// + public partial class InjectedVendorExtensionsTestJsonConverter : JsonConverter + { + partial void OnCreated(); + + /// + /// Initializes a new instance of the class. + /// + public InjectedVendorExtensionsTestJsonConverter() + { + OnCreated(); + } + + /// + /// Deserializes json to + /// + /// + /// + /// + /// + /// + public override InjectedVendorExtensionsTest Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions) + { + int currentDepth = utf8JsonReader.CurrentDepth; + + if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) + throw new JsonException(); + + JsonTokenType startingTokenType = utf8JsonReader.TokenType; + + Option potentiallyOverriddenPropertyToInternal = default; + Option potentiallyOverriddenPropertyToPrivate = default; + Option potentiallyOverriddenPropertyToPublic = default; + Option unalteredProperty = default; + + while (utf8JsonReader.Read()) + { + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1) + { + string? localVarJsonPropertyName = utf8JsonReader.GetString(); + utf8JsonReader.Read(); + + switch (localVarJsonPropertyName) + { + case "potentiallyOverriddenPropertyToInternal": + potentiallyOverriddenPropertyToInternal = new Option(utf8JsonReader.GetString()!); + break; + case "potentiallyOverriddenPropertyToPrivate": + potentiallyOverriddenPropertyToPrivate = new Option(utf8JsonReader.GetString()!); + break; + case "potentiallyOverriddenPropertyToPublic": + potentiallyOverriddenPropertyToPublic = new Option(utf8JsonReader.GetString()!); + break; + case "unalteredProperty": + unalteredProperty = new Option(utf8JsonReader.GetString()!); + break; + default: + break; + } + } + } + + if (potentiallyOverriddenPropertyToInternal.IsSet && potentiallyOverriddenPropertyToInternal.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToInternal), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPrivate.IsSet && potentiallyOverriddenPropertyToPrivate.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPrivate), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPublic.IsSet && potentiallyOverriddenPropertyToPublic.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPublic), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (unalteredProperty.IsSet && unalteredProperty.Value == null) + throw new ArgumentNullException(nameof(unalteredProperty), "Property is not nullable for class InjectedVendorExtensionsTest."); + + return new InjectedVendorExtensionsTest(potentiallyOverriddenPropertyToInternal, potentiallyOverriddenPropertyToPrivate, potentiallyOverriddenPropertyToPublic, unalteredProperty); + } + + /// + /// Serializes a + /// + /// + /// + /// + /// + public override void Write(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + writer.WriteStartObject(); + + WriteProperties(writer, injectedVendorExtensionsTest, jsonSerializerOptions); + writer.WriteEndObject(); + } + + /// + /// Serializes the properties of + /// + /// + /// + /// + /// + public void WriteProperties(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet && injectedVendorExtensionsTest.UnalteredProperty == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.UnalteredProperty), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToInternal", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPrivate", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPublic", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet) + writer.WriteString("unalteredProperty", injectedVendorExtensionsTest.UnalteredProperty); + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net10/Petstore/.openapi-generator/FILES b/samples/client/petstore/csharp/generichost/net10/Petstore/.openapi-generator/FILES index 3a66c0df35db..0698a2042def 100644 --- a/samples/client/petstore/csharp/generichost/net10/Petstore/.openapi-generator/FILES +++ b/samples/client/petstore/csharp/generichost/net10/Petstore/.openapi-generator/FILES @@ -53,6 +53,7 @@ docs/models/GmFruit.md docs/models/GrandparentAnimal.md docs/models/HasOnlyReadOnly.md docs/models/HealthCheckResult.md +docs/models/InjectedVendorExtensionsTest.md docs/models/IsoscelesTriangle.md docs/models/List.md docs/models/LiteralStringClass.md @@ -198,6 +199,7 @@ src/Org.OpenAPITools/Model/GmFruit.cs src/Org.OpenAPITools/Model/GrandparentAnimal.cs src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs src/Org.OpenAPITools/Model/IsoscelesTriangle.cs src/Org.OpenAPITools/Model/List.cs src/Org.OpenAPITools/Model/LiteralStringClass.cs diff --git a/samples/client/petstore/csharp/generichost/net10/Petstore/api/openapi.yaml b/samples/client/petstore/csharp/generichost/net10/Petstore/api/openapi.yaml index a179b6cfdd29..586178fe4189 100644 --- a/samples/client/petstore/csharp/generichost/net10/Petstore/api/openapi.yaml +++ b/samples/client/petstore/csharp/generichost/net10/Petstore/api/openapi.yaml @@ -1355,6 +1355,21 @@ components: items: $ref: "#/components/schemas/RolesReportsHash" type: array + InjectedVendorExtensionsTest: + properties: + unalteredProperty: + readOnly: true + type: string + potentiallyOverriddenPropertyToPrivate: + readOnly: true + type: string + potentiallyOverriddenPropertyToInternal: + readOnly: true + type: string + potentiallyOverriddenPropertyToPublic: + readOnly: true + type: string + type: object RolesReportsHash: description: Role report Hash example: diff --git a/samples/client/petstore/csharp/generichost/net10/Petstore/docs/models/InjectedVendorExtensionsTest.md b/samples/client/petstore/csharp/generichost/net10/Petstore/docs/models/InjectedVendorExtensionsTest.md new file mode 100644 index 000000000000..ffd299f83bb1 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net10/Petstore/docs/models/InjectedVendorExtensionsTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.InjectedVendorExtensionsTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**PotentiallyOverriddenPropertyToInternal** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPrivate** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPublic** | **string** | | [optional] +**UnalteredProperty** | **string** | | [optional] [readonly] + +[[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/csharp/generichost/net10/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs b/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs new file mode 100644 index 000000000000..19c09e9df56c --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs @@ -0,0 +1,92 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InjectedVendorExtensionsTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InjectedVendorExtensionsTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InjectedVendorExtensionsTest + //private InjectedVendorExtensionsTest instance; + + public InjectedVendorExtensionsTestTests() + { + // TODO uncomment below to create an instance of InjectedVendorExtensionsTest + //instance = new InjectedVendorExtensionsTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InjectedVendorExtensionsTest + /// + [Fact] + public void InjectedVendorExtensionsTestInstanceTest() + { + // TODO uncomment below to test "IsType" InjectedVendorExtensionsTest + //Assert.IsType(instance); + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToInternal' + /// + [Fact] + public void PotentiallyOverriddenPropertyToInternalTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToInternal' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPrivate' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPrivateTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPrivate' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPublic' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPublicTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPublic' + } + + /// + /// Test the property 'UnalteredProperty' + /// + [Fact] + public void UnalteredPropertyTest() + { + // TODO unit test for the property 'UnalteredProperty' + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Client/HostConfiguration.cs b/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Client/HostConfiguration.cs index d52b54c46d14..178446aee993 100644 --- a/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Client/HostConfiguration.cs +++ b/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Client/HostConfiguration.cs @@ -85,6 +85,7 @@ public HostConfiguration(IServiceCollection services) _jsonOptions.Converters.Add(new GrandparentAnimalJsonConverter()); _jsonOptions.Converters.Add(new HasOnlyReadOnlyJsonConverter()); _jsonOptions.Converters.Add(new HealthCheckResultJsonConverter()); + _jsonOptions.Converters.Add(new InjectedVendorExtensionsTestJsonConverter()); _jsonOptions.Converters.Add(new IsoscelesTriangleJsonConverter()); _jsonOptions.Converters.Add(new ListJsonConverter()); _jsonOptions.Converters.Add(new LiteralStringClassJsonConverter()); diff --git a/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs b/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs new file mode 100644 index 000000000000..43211af228b2 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net10/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs @@ -0,0 +1,318 @@ +// +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Text; +using System.Text.RegularExpressions; +using System.Text.Json; +using System.Text.Json.Serialization; +using System.ComponentModel.DataAnnotations; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using Org.OpenAPITools.Client; + +namespace Org.OpenAPITools.Model +{ + /// + /// InjectedVendorExtensionsTest + /// + public partial class InjectedVendorExtensionsTest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// potentiallyOverriddenPropertyToInternal + /// potentiallyOverriddenPropertyToPrivate + /// potentiallyOverriddenPropertyToPublic + /// unalteredProperty + [JsonConstructor] + internal InjectedVendorExtensionsTest(Option potentiallyOverriddenPropertyToInternal = default, Option potentiallyOverriddenPropertyToPrivate = default, Option potentiallyOverriddenPropertyToPublic = default, Option unalteredProperty = default) + { + PotentiallyOverriddenPropertyToInternalOption = potentiallyOverriddenPropertyToInternal; + PotentiallyOverriddenPropertyToPrivateOption = potentiallyOverriddenPropertyToPrivate; + PotentiallyOverriddenPropertyToPublicOption = potentiallyOverriddenPropertyToPublic; + UnalteredPropertyOption = unalteredProperty; + OnCreated(); + } + + partial void OnCreated(); + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToInternal + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToInternalOption { get; private set; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToInternal + /// + [JsonPropertyName("potentiallyOverriddenPropertyToInternal")] + public string PotentiallyOverriddenPropertyToInternal { get { return this.PotentiallyOverriddenPropertyToInternalOption.Value; } internal set { this.PotentiallyOverriddenPropertyToInternalOption = new(value); } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPrivate + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPrivateOption { get; private set; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPrivate + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPrivate")] + public string PotentiallyOverriddenPropertyToPrivate { get { return this.PotentiallyOverriddenPropertyToPrivateOption.Value; } private set { this.PotentiallyOverriddenPropertyToPrivateOption = new(value); } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPublic + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPublicOption { get; private set; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPublic + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPublic")] + public string PotentiallyOverriddenPropertyToPublic { get { return this.PotentiallyOverriddenPropertyToPublicOption.Value; } set { this.PotentiallyOverriddenPropertyToPublicOption = new(value); } } + + /// + /// Used to track the state of UnalteredProperty + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option UnalteredPropertyOption { get; } + + /// + /// Gets or Sets UnalteredProperty + /// + [JsonPropertyName("unalteredProperty")] + public string UnalteredProperty { get { return this.UnalteredPropertyOption.Value; } } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public Dictionary AdditionalProperties { get; } = new Dictionary(); + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InjectedVendorExtensionsTest {\n"); + sb.Append(" PotentiallyOverriddenPropertyToInternal: ").Append(PotentiallyOverriddenPropertyToInternal).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPrivate: ").Append(PotentiallyOverriddenPropertyToPrivate).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPublic: ").Append(PotentiallyOverriddenPropertyToPublic).Append("\n"); + sb.Append(" UnalteredProperty: ").Append(UnalteredProperty).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as InjectedVendorExtensionsTest).AreEqual; + } + + /// + /// Returns true if InjectedVendorExtensionsTest instances are equal + /// + /// Instance of InjectedVendorExtensionsTest to be compared + /// Boolean + public bool Equals(InjectedVendorExtensionsTest input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (PotentiallyOverriddenPropertyToInternal != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToInternal.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPrivate != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPrivate.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPublic != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPublic.GetHashCode(); + + if (UnalteredProperty != null) + hashCode = (hashCode * 59) + UnalteredProperty.GetHashCode(); + + hashCode = (hashCode * 59) + AdditionalProperties.GetHashCode(); + + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// A Json converter for type + /// + public partial class InjectedVendorExtensionsTestJsonConverter : JsonConverter + { + partial void OnCreated(); + + /// + /// Initializes a new instance of the class. + /// + public InjectedVendorExtensionsTestJsonConverter() + { + OnCreated(); + } + + /// + /// Deserializes json to + /// + /// + /// + /// + /// + /// + public override InjectedVendorExtensionsTest Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions) + { + int currentDepth = utf8JsonReader.CurrentDepth; + + if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) + throw new JsonException(); + + JsonTokenType startingTokenType = utf8JsonReader.TokenType; + + Option potentiallyOverriddenPropertyToInternal = default; + Option potentiallyOverriddenPropertyToPrivate = default; + Option potentiallyOverriddenPropertyToPublic = default; + Option unalteredProperty = default; + + while (utf8JsonReader.Read()) + { + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1) + { + string localVarJsonPropertyName = utf8JsonReader.GetString(); + utf8JsonReader.Read(); + + switch (localVarJsonPropertyName) + { + case "potentiallyOverriddenPropertyToInternal": + potentiallyOverriddenPropertyToInternal = new Option(utf8JsonReader.GetString()); + break; + case "potentiallyOverriddenPropertyToPrivate": + potentiallyOverriddenPropertyToPrivate = new Option(utf8JsonReader.GetString()); + break; + case "potentiallyOverriddenPropertyToPublic": + potentiallyOverriddenPropertyToPublic = new Option(utf8JsonReader.GetString()); + break; + case "unalteredProperty": + unalteredProperty = new Option(utf8JsonReader.GetString()); + break; + default: + break; + } + } + } + + if (potentiallyOverriddenPropertyToInternal.IsSet && potentiallyOverriddenPropertyToInternal.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToInternal), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPrivate.IsSet && potentiallyOverriddenPropertyToPrivate.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPrivate), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPublic.IsSet && potentiallyOverriddenPropertyToPublic.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPublic), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (unalteredProperty.IsSet && unalteredProperty.Value == null) + throw new ArgumentNullException(nameof(unalteredProperty), "Property is not nullable for class InjectedVendorExtensionsTest."); + + return new InjectedVendorExtensionsTest(potentiallyOverriddenPropertyToInternal, potentiallyOverriddenPropertyToPrivate, potentiallyOverriddenPropertyToPublic, unalteredProperty); + } + + /// + /// Serializes a + /// + /// + /// + /// + /// + public override void Write(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + writer.WriteStartObject(); + + WriteProperties(writer, injectedVendorExtensionsTest, jsonSerializerOptions); + writer.WriteEndObject(); + } + + /// + /// Serializes the properties of + /// + /// + /// + /// + /// + public void WriteProperties(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet && injectedVendorExtensionsTest.UnalteredProperty == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.UnalteredProperty), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToInternal", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPrivate", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPublic", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet) + writer.WriteString("unalteredProperty", injectedVendorExtensionsTest.UnalteredProperty); + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net10/SourceGeneration/.openapi-generator/FILES b/samples/client/petstore/csharp/generichost/net10/SourceGeneration/.openapi-generator/FILES index 3a66c0df35db..0698a2042def 100644 --- a/samples/client/petstore/csharp/generichost/net10/SourceGeneration/.openapi-generator/FILES +++ b/samples/client/petstore/csharp/generichost/net10/SourceGeneration/.openapi-generator/FILES @@ -53,6 +53,7 @@ docs/models/GmFruit.md docs/models/GrandparentAnimal.md docs/models/HasOnlyReadOnly.md docs/models/HealthCheckResult.md +docs/models/InjectedVendorExtensionsTest.md docs/models/IsoscelesTriangle.md docs/models/List.md docs/models/LiteralStringClass.md @@ -198,6 +199,7 @@ src/Org.OpenAPITools/Model/GmFruit.cs src/Org.OpenAPITools/Model/GrandparentAnimal.cs src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs src/Org.OpenAPITools/Model/IsoscelesTriangle.cs src/Org.OpenAPITools/Model/List.cs src/Org.OpenAPITools/Model/LiteralStringClass.cs diff --git a/samples/client/petstore/csharp/generichost/net10/SourceGeneration/api/openapi.yaml b/samples/client/petstore/csharp/generichost/net10/SourceGeneration/api/openapi.yaml index a179b6cfdd29..586178fe4189 100644 --- a/samples/client/petstore/csharp/generichost/net10/SourceGeneration/api/openapi.yaml +++ b/samples/client/petstore/csharp/generichost/net10/SourceGeneration/api/openapi.yaml @@ -1355,6 +1355,21 @@ components: items: $ref: "#/components/schemas/RolesReportsHash" type: array + InjectedVendorExtensionsTest: + properties: + unalteredProperty: + readOnly: true + type: string + potentiallyOverriddenPropertyToPrivate: + readOnly: true + type: string + potentiallyOverriddenPropertyToInternal: + readOnly: true + type: string + potentiallyOverriddenPropertyToPublic: + readOnly: true + type: string + type: object RolesReportsHash: description: Role report Hash example: diff --git a/samples/client/petstore/csharp/generichost/net10/SourceGeneration/docs/models/InjectedVendorExtensionsTest.md b/samples/client/petstore/csharp/generichost/net10/SourceGeneration/docs/models/InjectedVendorExtensionsTest.md new file mode 100644 index 000000000000..6e5e74e659a5 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net10/SourceGeneration/docs/models/InjectedVendorExtensionsTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.InjectedVendorExtensionsTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**PotentiallyOverriddenPropertyToInternal** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPrivate** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPublic** | **string** | | [optional] [readonly] +**UnalteredProperty** | **string** | | [optional] [readonly] + +[[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/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs b/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs new file mode 100644 index 000000000000..19c09e9df56c --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs @@ -0,0 +1,92 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InjectedVendorExtensionsTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InjectedVendorExtensionsTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InjectedVendorExtensionsTest + //private InjectedVendorExtensionsTest instance; + + public InjectedVendorExtensionsTestTests() + { + // TODO uncomment below to create an instance of InjectedVendorExtensionsTest + //instance = new InjectedVendorExtensionsTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InjectedVendorExtensionsTest + /// + [Fact] + public void InjectedVendorExtensionsTestInstanceTest() + { + // TODO uncomment below to test "IsType" InjectedVendorExtensionsTest + //Assert.IsType(instance); + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToInternal' + /// + [Fact] + public void PotentiallyOverriddenPropertyToInternalTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToInternal' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPrivate' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPrivateTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPrivate' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPublic' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPublicTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPublic' + } + + /// + /// Test the property 'UnalteredProperty' + /// + [Fact] + public void UnalteredPropertyTest() + { + // TODO unit test for the property 'UnalteredProperty' + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Client/HostConfiguration.cs b/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Client/HostConfiguration.cs index 568f84bc3540..83ed5bff9f47 100644 --- a/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Client/HostConfiguration.cs +++ b/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Client/HostConfiguration.cs @@ -87,6 +87,7 @@ public HostConfiguration(IServiceCollection services) _jsonOptions.Converters.Add(new GrandparentAnimalJsonConverter()); _jsonOptions.Converters.Add(new HasOnlyReadOnlyJsonConverter()); _jsonOptions.Converters.Add(new HealthCheckResultJsonConverter()); + _jsonOptions.Converters.Add(new InjectedVendorExtensionsTestJsonConverter()); _jsonOptions.Converters.Add(new IsoscelesTriangleJsonConverter()); _jsonOptions.Converters.Add(new ListJsonConverter()); _jsonOptions.Converters.Add(new LiteralStringClassJsonConverter()); @@ -201,6 +202,7 @@ public HostConfiguration(IServiceCollection services) new GrandparentAnimalSerializationContext(), new HasOnlyReadOnlySerializationContext(), new HealthCheckResultSerializationContext(), + new InjectedVendorExtensionsTestSerializationContext(), new IsoscelesTriangleSerializationContext(), new ListSerializationContext(), new LiteralStringClassSerializationContext(), diff --git a/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs b/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs new file mode 100644 index 000000000000..f5f35a6bebc2 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net10/SourceGeneration/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs @@ -0,0 +1,328 @@ +// +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +#nullable enable + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Text; +using System.Text.RegularExpressions; +using System.Text.Json; +using System.Text.Json.Serialization; +using System.ComponentModel.DataAnnotations; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using System.Text.Json.Serialization.Metadata; +using Org.OpenAPITools.Client; + +namespace Org.OpenAPITools.Model +{ + /// + /// InjectedVendorExtensionsTest + /// + public partial class InjectedVendorExtensionsTest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// potentiallyOverriddenPropertyToInternal + /// potentiallyOverriddenPropertyToPrivate + /// potentiallyOverriddenPropertyToPublic + /// unalteredProperty + [JsonConstructor] + internal InjectedVendorExtensionsTest(Option potentiallyOverriddenPropertyToInternal = default, Option potentiallyOverriddenPropertyToPrivate = default, Option potentiallyOverriddenPropertyToPublic = default, Option unalteredProperty = default) + { + PotentiallyOverriddenPropertyToInternalOption = potentiallyOverriddenPropertyToInternal; + PotentiallyOverriddenPropertyToPrivateOption = potentiallyOverriddenPropertyToPrivate; + PotentiallyOverriddenPropertyToPublicOption = potentiallyOverriddenPropertyToPublic; + UnalteredPropertyOption = unalteredProperty; + OnCreated(); + } + + partial void OnCreated(); + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToInternal + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToInternalOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToInternal + /// + [JsonPropertyName("potentiallyOverriddenPropertyToInternal")] + public string? PotentiallyOverriddenPropertyToInternal { get { return this.PotentiallyOverriddenPropertyToInternalOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPrivate + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPrivateOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPrivate + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPrivate")] + public string? PotentiallyOverriddenPropertyToPrivate { get { return this.PotentiallyOverriddenPropertyToPrivateOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPublic + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPublicOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPublic + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPublic")] + public string? PotentiallyOverriddenPropertyToPublic { get { return this.PotentiallyOverriddenPropertyToPublicOption.Value; } } + + /// + /// Used to track the state of UnalteredProperty + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option UnalteredPropertyOption { get; } + + /// + /// Gets or Sets UnalteredProperty + /// + [JsonPropertyName("unalteredProperty")] + public string? UnalteredProperty { get { return this.UnalteredPropertyOption.Value; } } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public Dictionary AdditionalProperties { get; } = new Dictionary(); + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InjectedVendorExtensionsTest {\n"); + sb.Append(" PotentiallyOverriddenPropertyToInternal: ").Append(PotentiallyOverriddenPropertyToInternal).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPrivate: ").Append(PotentiallyOverriddenPropertyToPrivate).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPublic: ").Append(PotentiallyOverriddenPropertyToPublic).Append("\n"); + sb.Append(" UnalteredProperty: ").Append(UnalteredProperty).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object? input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as InjectedVendorExtensionsTest).AreEqual; + } + + /// + /// Returns true if InjectedVendorExtensionsTest instances are equal + /// + /// Instance of InjectedVendorExtensionsTest to be compared + /// Boolean + public bool Equals(InjectedVendorExtensionsTest? input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (PotentiallyOverriddenPropertyToInternal != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToInternal.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPrivate != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPrivate.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPublic != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPublic.GetHashCode(); + + if (UnalteredProperty != null) + hashCode = (hashCode * 59) + UnalteredProperty.GetHashCode(); + + hashCode = (hashCode * 59) + AdditionalProperties.GetHashCode(); + + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// A Json converter for type + /// + public partial class InjectedVendorExtensionsTestJsonConverter : JsonConverter + { + partial void OnCreated(); + + /// + /// Initializes a new instance of the class. + /// + public InjectedVendorExtensionsTestJsonConverter() + { + OnCreated(); + } + + /// + /// Deserializes json to + /// + /// + /// + /// + /// + /// + public override InjectedVendorExtensionsTest Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions) + { + int currentDepth = utf8JsonReader.CurrentDepth; + + if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) + throw new JsonException(); + + JsonTokenType startingTokenType = utf8JsonReader.TokenType; + + Option potentiallyOverriddenPropertyToInternal = default; + Option potentiallyOverriddenPropertyToPrivate = default; + Option potentiallyOverriddenPropertyToPublic = default; + Option unalteredProperty = default; + + while (utf8JsonReader.Read()) + { + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1) + { + string? localVarJsonPropertyName = utf8JsonReader.GetString(); + utf8JsonReader.Read(); + + switch (localVarJsonPropertyName) + { + case "potentiallyOverriddenPropertyToInternal": + potentiallyOverriddenPropertyToInternal = new Option(utf8JsonReader.GetString()!); + break; + case "potentiallyOverriddenPropertyToPrivate": + potentiallyOverriddenPropertyToPrivate = new Option(utf8JsonReader.GetString()!); + break; + case "potentiallyOverriddenPropertyToPublic": + potentiallyOverriddenPropertyToPublic = new Option(utf8JsonReader.GetString()!); + break; + case "unalteredProperty": + unalteredProperty = new Option(utf8JsonReader.GetString()!); + break; + default: + break; + } + } + } + + if (potentiallyOverriddenPropertyToInternal.IsSet && potentiallyOverriddenPropertyToInternal.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToInternal), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPrivate.IsSet && potentiallyOverriddenPropertyToPrivate.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPrivate), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPublic.IsSet && potentiallyOverriddenPropertyToPublic.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPublic), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (unalteredProperty.IsSet && unalteredProperty.Value == null) + throw new ArgumentNullException(nameof(unalteredProperty), "Property is not nullable for class InjectedVendorExtensionsTest."); + + return new InjectedVendorExtensionsTest(potentiallyOverriddenPropertyToInternal, potentiallyOverriddenPropertyToPrivate, potentiallyOverriddenPropertyToPublic, unalteredProperty); + } + + /// + /// Serializes a + /// + /// + /// + /// + /// + public override void Write(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + writer.WriteStartObject(); + + WriteProperties(writer, injectedVendorExtensionsTest, jsonSerializerOptions); + writer.WriteEndObject(); + } + + /// + /// Serializes the properties of + /// + /// + /// + /// + /// + public void WriteProperties(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet && injectedVendorExtensionsTest.UnalteredProperty == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.UnalteredProperty), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToInternal", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPrivate", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPublic", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet) + writer.WriteString("unalteredProperty", injectedVendorExtensionsTest.UnalteredProperty); + } + } + + /// + /// The InjectedVendorExtensionsTestSerializationContext + /// + [JsonSourceGenerationOptions(WriteIndented = true, GenerationMode = JsonSourceGenerationMode.Metadata | JsonSourceGenerationMode.Serialization)] + [JsonSerializable(typeof(InjectedVendorExtensionsTest))] + public partial class InjectedVendorExtensionsTestSerializationContext : JsonSerializerContext { } +} diff --git a/samples/client/petstore/csharp/generichost/net4.7/FormModels/.openapi-generator/FILES b/samples/client/petstore/csharp/generichost/net4.7/FormModels/.openapi-generator/FILES index a2b6a7db9b46..c9790200e522 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/FormModels/.openapi-generator/FILES +++ b/samples/client/petstore/csharp/generichost/net4.7/FormModels/.openapi-generator/FILES @@ -61,6 +61,7 @@ docs/models/GmFruit.md docs/models/GrandparentAnimal.md docs/models/HasOnlyReadOnly.md docs/models/HealthCheckResult.md +docs/models/InjectedVendorExtensionsTest.md docs/models/IsoscelesTriangle.md docs/models/List.md docs/models/LiteralStringClass.md @@ -229,6 +230,7 @@ src/Org.OpenAPITools/Model/GmFruit.cs src/Org.OpenAPITools/Model/GrandparentAnimal.cs src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs src/Org.OpenAPITools/Model/IsoscelesTriangle.cs src/Org.OpenAPITools/Model/List.cs src/Org.OpenAPITools/Model/LiteralStringClass.cs diff --git a/samples/client/petstore/csharp/generichost/net4.7/FormModels/api/openapi.yaml b/samples/client/petstore/csharp/generichost/net4.7/FormModels/api/openapi.yaml index 6dae7b5ccbd3..7ba3a76f8f16 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/FormModels/api/openapi.yaml +++ b/samples/client/petstore/csharp/generichost/net4.7/FormModels/api/openapi.yaml @@ -1324,6 +1324,21 @@ components: items: $ref: "#/components/schemas/RolesReportsHash" type: array + InjectedVendorExtensionsTest: + properties: + unalteredProperty: + readOnly: true + type: string + potentiallyOverriddenPropertyToPrivate: + readOnly: true + type: string + potentiallyOverriddenPropertyToInternal: + readOnly: true + type: string + potentiallyOverriddenPropertyToPublic: + readOnly: true + type: string + type: object RolesReportsHash: description: Role report Hash example: diff --git a/samples/client/petstore/csharp/generichost/net4.7/FormModels/docs/models/InjectedVendorExtensionsTest.md b/samples/client/petstore/csharp/generichost/net4.7/FormModels/docs/models/InjectedVendorExtensionsTest.md new file mode 100644 index 000000000000..6e5e74e659a5 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net4.7/FormModels/docs/models/InjectedVendorExtensionsTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.InjectedVendorExtensionsTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**PotentiallyOverriddenPropertyToInternal** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPrivate** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPublic** | **string** | | [optional] [readonly] +**UnalteredProperty** | **string** | | [optional] [readonly] + +[[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/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs new file mode 100644 index 000000000000..19c09e9df56c --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs @@ -0,0 +1,92 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InjectedVendorExtensionsTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InjectedVendorExtensionsTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InjectedVendorExtensionsTest + //private InjectedVendorExtensionsTest instance; + + public InjectedVendorExtensionsTestTests() + { + // TODO uncomment below to create an instance of InjectedVendorExtensionsTest + //instance = new InjectedVendorExtensionsTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InjectedVendorExtensionsTest + /// + [Fact] + public void InjectedVendorExtensionsTestInstanceTest() + { + // TODO uncomment below to test "IsType" InjectedVendorExtensionsTest + //Assert.IsType(instance); + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToInternal' + /// + [Fact] + public void PotentiallyOverriddenPropertyToInternalTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToInternal' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPrivate' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPrivateTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPrivate' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPublic' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPublicTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPublic' + } + + /// + /// Test the property 'UnalteredProperty' + /// + [Fact] + public void UnalteredPropertyTest() + { + // TODO unit test for the property 'UnalteredProperty' + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/HostConfiguration.cs b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/HostConfiguration.cs index 64e4c78c8173..50d7edc31f79 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/HostConfiguration.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Client/HostConfiguration.cs @@ -99,6 +99,7 @@ public HostConfiguration(IServiceCollection services) _jsonOptions.Converters.Add(new GrandparentAnimalJsonConverter()); _jsonOptions.Converters.Add(new HasOnlyReadOnlyJsonConverter()); _jsonOptions.Converters.Add(new HealthCheckResultJsonConverter()); + _jsonOptions.Converters.Add(new InjectedVendorExtensionsTestJsonConverter()); _jsonOptions.Converters.Add(new IsoscelesTriangleJsonConverter()); _jsonOptions.Converters.Add(new ListJsonConverter()); _jsonOptions.Converters.Add(new LiteralStringClassJsonConverter()); diff --git a/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs new file mode 100644 index 000000000000..53cbb5268a33 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs @@ -0,0 +1,318 @@ +// +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Text; +using System.Text.RegularExpressions; +using System.Text.Json; +using System.Text.Json.Serialization; +using System.ComponentModel.DataAnnotations; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using Org.OpenAPITools.Client; + +namespace Org.OpenAPITools.Model +{ + /// + /// InjectedVendorExtensionsTest + /// + public partial class InjectedVendorExtensionsTest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// potentiallyOverriddenPropertyToInternal + /// potentiallyOverriddenPropertyToPrivate + /// potentiallyOverriddenPropertyToPublic + /// unalteredProperty + [JsonConstructor] + internal InjectedVendorExtensionsTest(Option potentiallyOverriddenPropertyToInternal = default, Option potentiallyOverriddenPropertyToPrivate = default, Option potentiallyOverriddenPropertyToPublic = default, Option unalteredProperty = default) + { + PotentiallyOverriddenPropertyToInternalOption = potentiallyOverriddenPropertyToInternal; + PotentiallyOverriddenPropertyToPrivateOption = potentiallyOverriddenPropertyToPrivate; + PotentiallyOverriddenPropertyToPublicOption = potentiallyOverriddenPropertyToPublic; + UnalteredPropertyOption = unalteredProperty; + OnCreated(); + } + + partial void OnCreated(); + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToInternal + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToInternalOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToInternal + /// + [JsonPropertyName("potentiallyOverriddenPropertyToInternal")] + public string PotentiallyOverriddenPropertyToInternal { get { return this.PotentiallyOverriddenPropertyToInternalOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPrivate + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPrivateOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPrivate + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPrivate")] + public string PotentiallyOverriddenPropertyToPrivate { get { return this.PotentiallyOverriddenPropertyToPrivateOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPublic + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPublicOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPublic + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPublic")] + public string PotentiallyOverriddenPropertyToPublic { get { return this.PotentiallyOverriddenPropertyToPublicOption.Value; } } + + /// + /// Used to track the state of UnalteredProperty + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option UnalteredPropertyOption { get; } + + /// + /// Gets or Sets UnalteredProperty + /// + [JsonPropertyName("unalteredProperty")] + public string UnalteredProperty { get { return this.UnalteredPropertyOption.Value; } } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public Dictionary AdditionalProperties { get; } = new Dictionary(); + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InjectedVendorExtensionsTest {\n"); + sb.Append(" PotentiallyOverriddenPropertyToInternal: ").Append(PotentiallyOverriddenPropertyToInternal).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPrivate: ").Append(PotentiallyOverriddenPropertyToPrivate).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPublic: ").Append(PotentiallyOverriddenPropertyToPublic).Append("\n"); + sb.Append(" UnalteredProperty: ").Append(UnalteredProperty).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as InjectedVendorExtensionsTest).AreEqual; + } + + /// + /// Returns true if InjectedVendorExtensionsTest instances are equal + /// + /// Instance of InjectedVendorExtensionsTest to be compared + /// Boolean + public bool Equals(InjectedVendorExtensionsTest input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (PotentiallyOverriddenPropertyToInternal != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToInternal.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPrivate != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPrivate.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPublic != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPublic.GetHashCode(); + + if (UnalteredProperty != null) + hashCode = (hashCode * 59) + UnalteredProperty.GetHashCode(); + + hashCode = (hashCode * 59) + AdditionalProperties.GetHashCode(); + + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// A Json converter for type + /// + public partial class InjectedVendorExtensionsTestJsonConverter : JsonConverter + { + partial void OnCreated(); + + /// + /// Initializes a new instance of the class. + /// + public InjectedVendorExtensionsTestJsonConverter() + { + OnCreated(); + } + + /// + /// Deserializes json to + /// + /// + /// + /// + /// + /// + public override InjectedVendorExtensionsTest Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions) + { + int currentDepth = utf8JsonReader.CurrentDepth; + + if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) + throw new JsonException(); + + JsonTokenType startingTokenType = utf8JsonReader.TokenType; + + Option potentiallyOverriddenPropertyToInternal = default; + Option potentiallyOverriddenPropertyToPrivate = default; + Option potentiallyOverriddenPropertyToPublic = default; + Option unalteredProperty = default; + + while (utf8JsonReader.Read()) + { + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1) + { + string localVarJsonPropertyName = utf8JsonReader.GetString(); + utf8JsonReader.Read(); + + switch (localVarJsonPropertyName) + { + case "potentiallyOverriddenPropertyToInternal": + potentiallyOverriddenPropertyToInternal = new Option(utf8JsonReader.GetString()); + break; + case "potentiallyOverriddenPropertyToPrivate": + potentiallyOverriddenPropertyToPrivate = new Option(utf8JsonReader.GetString()); + break; + case "potentiallyOverriddenPropertyToPublic": + potentiallyOverriddenPropertyToPublic = new Option(utf8JsonReader.GetString()); + break; + case "unalteredProperty": + unalteredProperty = new Option(utf8JsonReader.GetString()); + break; + default: + break; + } + } + } + + if (potentiallyOverriddenPropertyToInternal.IsSet && potentiallyOverriddenPropertyToInternal.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToInternal), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPrivate.IsSet && potentiallyOverriddenPropertyToPrivate.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPrivate), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPublic.IsSet && potentiallyOverriddenPropertyToPublic.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPublic), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (unalteredProperty.IsSet && unalteredProperty.Value == null) + throw new ArgumentNullException(nameof(unalteredProperty), "Property is not nullable for class InjectedVendorExtensionsTest."); + + return new InjectedVendorExtensionsTest(potentiallyOverriddenPropertyToInternal, potentiallyOverriddenPropertyToPrivate, potentiallyOverriddenPropertyToPublic, unalteredProperty); + } + + /// + /// Serializes a + /// + /// + /// + /// + /// + public override void Write(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + writer.WriteStartObject(); + + WriteProperties(writer, injectedVendorExtensionsTest, jsonSerializerOptions); + writer.WriteEndObject(); + } + + /// + /// Serializes the properties of + /// + /// + /// + /// + /// + public void WriteProperties(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet && injectedVendorExtensionsTest.UnalteredProperty == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.UnalteredProperty), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToInternal", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPrivate", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPublic", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet) + writer.WriteString("unalteredProperty", injectedVendorExtensionsTest.UnalteredProperty); + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net4.7/Petstore/.openapi-generator/FILES b/samples/client/petstore/csharp/generichost/net4.7/Petstore/.openapi-generator/FILES index 20a67a4fabae..d8f84eb7f575 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/Petstore/.openapi-generator/FILES +++ b/samples/client/petstore/csharp/generichost/net4.7/Petstore/.openapi-generator/FILES @@ -53,6 +53,7 @@ docs/models/GmFruit.md docs/models/GrandparentAnimal.md docs/models/HasOnlyReadOnly.md docs/models/HealthCheckResult.md +docs/models/InjectedVendorExtensionsTest.md docs/models/IsoscelesTriangle.md docs/models/List.md docs/models/LiteralStringClass.md @@ -196,6 +197,7 @@ src/Org.OpenAPITools/Model/GmFruit.cs src/Org.OpenAPITools/Model/GrandparentAnimal.cs src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs src/Org.OpenAPITools/Model/IsoscelesTriangle.cs src/Org.OpenAPITools/Model/List.cs src/Org.OpenAPITools/Model/LiteralStringClass.cs diff --git a/samples/client/petstore/csharp/generichost/net4.7/Petstore/api/openapi.yaml b/samples/client/petstore/csharp/generichost/net4.7/Petstore/api/openapi.yaml index a179b6cfdd29..586178fe4189 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/Petstore/api/openapi.yaml +++ b/samples/client/petstore/csharp/generichost/net4.7/Petstore/api/openapi.yaml @@ -1355,6 +1355,21 @@ components: items: $ref: "#/components/schemas/RolesReportsHash" type: array + InjectedVendorExtensionsTest: + properties: + unalteredProperty: + readOnly: true + type: string + potentiallyOverriddenPropertyToPrivate: + readOnly: true + type: string + potentiallyOverriddenPropertyToInternal: + readOnly: true + type: string + potentiallyOverriddenPropertyToPublic: + readOnly: true + type: string + type: object RolesReportsHash: description: Role report Hash example: diff --git a/samples/client/petstore/csharp/generichost/net4.7/Petstore/docs/models/InjectedVendorExtensionsTest.md b/samples/client/petstore/csharp/generichost/net4.7/Petstore/docs/models/InjectedVendorExtensionsTest.md new file mode 100644 index 000000000000..6e5e74e659a5 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net4.7/Petstore/docs/models/InjectedVendorExtensionsTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.InjectedVendorExtensionsTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**PotentiallyOverriddenPropertyToInternal** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPrivate** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPublic** | **string** | | [optional] [readonly] +**UnalteredProperty** | **string** | | [optional] [readonly] + +[[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/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs new file mode 100644 index 000000000000..19c09e9df56c --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs @@ -0,0 +1,92 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InjectedVendorExtensionsTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InjectedVendorExtensionsTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InjectedVendorExtensionsTest + //private InjectedVendorExtensionsTest instance; + + public InjectedVendorExtensionsTestTests() + { + // TODO uncomment below to create an instance of InjectedVendorExtensionsTest + //instance = new InjectedVendorExtensionsTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InjectedVendorExtensionsTest + /// + [Fact] + public void InjectedVendorExtensionsTestInstanceTest() + { + // TODO uncomment below to test "IsType" InjectedVendorExtensionsTest + //Assert.IsType(instance); + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToInternal' + /// + [Fact] + public void PotentiallyOverriddenPropertyToInternalTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToInternal' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPrivate' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPrivateTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPrivate' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPublic' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPublicTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPublic' + } + + /// + /// Test the property 'UnalteredProperty' + /// + [Fact] + public void UnalteredPropertyTest() + { + // TODO unit test for the property 'UnalteredProperty' + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/HostConfiguration.cs b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/HostConfiguration.cs index ba26668131ce..c87cde5cb400 100644 --- a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/HostConfiguration.cs +++ b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Client/HostConfiguration.cs @@ -83,6 +83,7 @@ public HostConfiguration(IServiceCollection services) _jsonOptions.Converters.Add(new GrandparentAnimalJsonConverter()); _jsonOptions.Converters.Add(new HasOnlyReadOnlyJsonConverter()); _jsonOptions.Converters.Add(new HealthCheckResultJsonConverter()); + _jsonOptions.Converters.Add(new InjectedVendorExtensionsTestJsonConverter()); _jsonOptions.Converters.Add(new IsoscelesTriangleJsonConverter()); _jsonOptions.Converters.Add(new ListJsonConverter()); _jsonOptions.Converters.Add(new LiteralStringClassJsonConverter()); diff --git a/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs new file mode 100644 index 000000000000..53cbb5268a33 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net4.7/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs @@ -0,0 +1,318 @@ +// +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Text; +using System.Text.RegularExpressions; +using System.Text.Json; +using System.Text.Json.Serialization; +using System.ComponentModel.DataAnnotations; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using Org.OpenAPITools.Client; + +namespace Org.OpenAPITools.Model +{ + /// + /// InjectedVendorExtensionsTest + /// + public partial class InjectedVendorExtensionsTest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// potentiallyOverriddenPropertyToInternal + /// potentiallyOverriddenPropertyToPrivate + /// potentiallyOverriddenPropertyToPublic + /// unalteredProperty + [JsonConstructor] + internal InjectedVendorExtensionsTest(Option potentiallyOverriddenPropertyToInternal = default, Option potentiallyOverriddenPropertyToPrivate = default, Option potentiallyOverriddenPropertyToPublic = default, Option unalteredProperty = default) + { + PotentiallyOverriddenPropertyToInternalOption = potentiallyOverriddenPropertyToInternal; + PotentiallyOverriddenPropertyToPrivateOption = potentiallyOverriddenPropertyToPrivate; + PotentiallyOverriddenPropertyToPublicOption = potentiallyOverriddenPropertyToPublic; + UnalteredPropertyOption = unalteredProperty; + OnCreated(); + } + + partial void OnCreated(); + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToInternal + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToInternalOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToInternal + /// + [JsonPropertyName("potentiallyOverriddenPropertyToInternal")] + public string PotentiallyOverriddenPropertyToInternal { get { return this.PotentiallyOverriddenPropertyToInternalOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPrivate + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPrivateOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPrivate + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPrivate")] + public string PotentiallyOverriddenPropertyToPrivate { get { return this.PotentiallyOverriddenPropertyToPrivateOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPublic + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPublicOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPublic + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPublic")] + public string PotentiallyOverriddenPropertyToPublic { get { return this.PotentiallyOverriddenPropertyToPublicOption.Value; } } + + /// + /// Used to track the state of UnalteredProperty + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option UnalteredPropertyOption { get; } + + /// + /// Gets or Sets UnalteredProperty + /// + [JsonPropertyName("unalteredProperty")] + public string UnalteredProperty { get { return this.UnalteredPropertyOption.Value; } } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public Dictionary AdditionalProperties { get; } = new Dictionary(); + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InjectedVendorExtensionsTest {\n"); + sb.Append(" PotentiallyOverriddenPropertyToInternal: ").Append(PotentiallyOverriddenPropertyToInternal).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPrivate: ").Append(PotentiallyOverriddenPropertyToPrivate).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPublic: ").Append(PotentiallyOverriddenPropertyToPublic).Append("\n"); + sb.Append(" UnalteredProperty: ").Append(UnalteredProperty).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as InjectedVendorExtensionsTest).AreEqual; + } + + /// + /// Returns true if InjectedVendorExtensionsTest instances are equal + /// + /// Instance of InjectedVendorExtensionsTest to be compared + /// Boolean + public bool Equals(InjectedVendorExtensionsTest input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (PotentiallyOverriddenPropertyToInternal != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToInternal.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPrivate != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPrivate.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPublic != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPublic.GetHashCode(); + + if (UnalteredProperty != null) + hashCode = (hashCode * 59) + UnalteredProperty.GetHashCode(); + + hashCode = (hashCode * 59) + AdditionalProperties.GetHashCode(); + + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// A Json converter for type + /// + public partial class InjectedVendorExtensionsTestJsonConverter : JsonConverter + { + partial void OnCreated(); + + /// + /// Initializes a new instance of the class. + /// + public InjectedVendorExtensionsTestJsonConverter() + { + OnCreated(); + } + + /// + /// Deserializes json to + /// + /// + /// + /// + /// + /// + public override InjectedVendorExtensionsTest Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions) + { + int currentDepth = utf8JsonReader.CurrentDepth; + + if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) + throw new JsonException(); + + JsonTokenType startingTokenType = utf8JsonReader.TokenType; + + Option potentiallyOverriddenPropertyToInternal = default; + Option potentiallyOverriddenPropertyToPrivate = default; + Option potentiallyOverriddenPropertyToPublic = default; + Option unalteredProperty = default; + + while (utf8JsonReader.Read()) + { + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1) + { + string localVarJsonPropertyName = utf8JsonReader.GetString(); + utf8JsonReader.Read(); + + switch (localVarJsonPropertyName) + { + case "potentiallyOverriddenPropertyToInternal": + potentiallyOverriddenPropertyToInternal = new Option(utf8JsonReader.GetString()); + break; + case "potentiallyOverriddenPropertyToPrivate": + potentiallyOverriddenPropertyToPrivate = new Option(utf8JsonReader.GetString()); + break; + case "potentiallyOverriddenPropertyToPublic": + potentiallyOverriddenPropertyToPublic = new Option(utf8JsonReader.GetString()); + break; + case "unalteredProperty": + unalteredProperty = new Option(utf8JsonReader.GetString()); + break; + default: + break; + } + } + } + + if (potentiallyOverriddenPropertyToInternal.IsSet && potentiallyOverriddenPropertyToInternal.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToInternal), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPrivate.IsSet && potentiallyOverriddenPropertyToPrivate.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPrivate), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPublic.IsSet && potentiallyOverriddenPropertyToPublic.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPublic), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (unalteredProperty.IsSet && unalteredProperty.Value == null) + throw new ArgumentNullException(nameof(unalteredProperty), "Property is not nullable for class InjectedVendorExtensionsTest."); + + return new InjectedVendorExtensionsTest(potentiallyOverriddenPropertyToInternal, potentiallyOverriddenPropertyToPrivate, potentiallyOverriddenPropertyToPublic, unalteredProperty); + } + + /// + /// Serializes a + /// + /// + /// + /// + /// + public override void Write(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + writer.WriteStartObject(); + + WriteProperties(writer, injectedVendorExtensionsTest, jsonSerializerOptions); + writer.WriteEndObject(); + } + + /// + /// Serializes the properties of + /// + /// + /// + /// + /// + public void WriteProperties(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet && injectedVendorExtensionsTest.UnalteredProperty == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.UnalteredProperty), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToInternal", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPrivate", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPublic", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet) + writer.WriteString("unalteredProperty", injectedVendorExtensionsTest.UnalteredProperty); + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net4.8/FormModels/.openapi-generator/FILES b/samples/client/petstore/csharp/generichost/net4.8/FormModels/.openapi-generator/FILES index a2b6a7db9b46..c9790200e522 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/FormModels/.openapi-generator/FILES +++ b/samples/client/petstore/csharp/generichost/net4.8/FormModels/.openapi-generator/FILES @@ -61,6 +61,7 @@ docs/models/GmFruit.md docs/models/GrandparentAnimal.md docs/models/HasOnlyReadOnly.md docs/models/HealthCheckResult.md +docs/models/InjectedVendorExtensionsTest.md docs/models/IsoscelesTriangle.md docs/models/List.md docs/models/LiteralStringClass.md @@ -229,6 +230,7 @@ src/Org.OpenAPITools/Model/GmFruit.cs src/Org.OpenAPITools/Model/GrandparentAnimal.cs src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs src/Org.OpenAPITools/Model/IsoscelesTriangle.cs src/Org.OpenAPITools/Model/List.cs src/Org.OpenAPITools/Model/LiteralStringClass.cs diff --git a/samples/client/petstore/csharp/generichost/net4.8/FormModels/api/openapi.yaml b/samples/client/petstore/csharp/generichost/net4.8/FormModels/api/openapi.yaml index 6dae7b5ccbd3..7ba3a76f8f16 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/FormModels/api/openapi.yaml +++ b/samples/client/petstore/csharp/generichost/net4.8/FormModels/api/openapi.yaml @@ -1324,6 +1324,21 @@ components: items: $ref: "#/components/schemas/RolesReportsHash" type: array + InjectedVendorExtensionsTest: + properties: + unalteredProperty: + readOnly: true + type: string + potentiallyOverriddenPropertyToPrivate: + readOnly: true + type: string + potentiallyOverriddenPropertyToInternal: + readOnly: true + type: string + potentiallyOverriddenPropertyToPublic: + readOnly: true + type: string + type: object RolesReportsHash: description: Role report Hash example: diff --git a/samples/client/petstore/csharp/generichost/net4.8/FormModels/docs/models/InjectedVendorExtensionsTest.md b/samples/client/petstore/csharp/generichost/net4.8/FormModels/docs/models/InjectedVendorExtensionsTest.md new file mode 100644 index 000000000000..6e5e74e659a5 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net4.8/FormModels/docs/models/InjectedVendorExtensionsTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.InjectedVendorExtensionsTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**PotentiallyOverriddenPropertyToInternal** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPrivate** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPublic** | **string** | | [optional] [readonly] +**UnalteredProperty** | **string** | | [optional] [readonly] + +[[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/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs new file mode 100644 index 000000000000..19c09e9df56c --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs @@ -0,0 +1,92 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InjectedVendorExtensionsTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InjectedVendorExtensionsTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InjectedVendorExtensionsTest + //private InjectedVendorExtensionsTest instance; + + public InjectedVendorExtensionsTestTests() + { + // TODO uncomment below to create an instance of InjectedVendorExtensionsTest + //instance = new InjectedVendorExtensionsTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InjectedVendorExtensionsTest + /// + [Fact] + public void InjectedVendorExtensionsTestInstanceTest() + { + // TODO uncomment below to test "IsType" InjectedVendorExtensionsTest + //Assert.IsType(instance); + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToInternal' + /// + [Fact] + public void PotentiallyOverriddenPropertyToInternalTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToInternal' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPrivate' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPrivateTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPrivate' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPublic' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPublicTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPublic' + } + + /// + /// Test the property 'UnalteredProperty' + /// + [Fact] + public void UnalteredPropertyTest() + { + // TODO unit test for the property 'UnalteredProperty' + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/HostConfiguration.cs b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/HostConfiguration.cs index 64e4c78c8173..50d7edc31f79 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/HostConfiguration.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Client/HostConfiguration.cs @@ -99,6 +99,7 @@ public HostConfiguration(IServiceCollection services) _jsonOptions.Converters.Add(new GrandparentAnimalJsonConverter()); _jsonOptions.Converters.Add(new HasOnlyReadOnlyJsonConverter()); _jsonOptions.Converters.Add(new HealthCheckResultJsonConverter()); + _jsonOptions.Converters.Add(new InjectedVendorExtensionsTestJsonConverter()); _jsonOptions.Converters.Add(new IsoscelesTriangleJsonConverter()); _jsonOptions.Converters.Add(new ListJsonConverter()); _jsonOptions.Converters.Add(new LiteralStringClassJsonConverter()); diff --git a/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs new file mode 100644 index 000000000000..53cbb5268a33 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net4.8/FormModels/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs @@ -0,0 +1,318 @@ +// +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Text; +using System.Text.RegularExpressions; +using System.Text.Json; +using System.Text.Json.Serialization; +using System.ComponentModel.DataAnnotations; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using Org.OpenAPITools.Client; + +namespace Org.OpenAPITools.Model +{ + /// + /// InjectedVendorExtensionsTest + /// + public partial class InjectedVendorExtensionsTest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// potentiallyOverriddenPropertyToInternal + /// potentiallyOverriddenPropertyToPrivate + /// potentiallyOverriddenPropertyToPublic + /// unalteredProperty + [JsonConstructor] + internal InjectedVendorExtensionsTest(Option potentiallyOverriddenPropertyToInternal = default, Option potentiallyOverriddenPropertyToPrivate = default, Option potentiallyOverriddenPropertyToPublic = default, Option unalteredProperty = default) + { + PotentiallyOverriddenPropertyToInternalOption = potentiallyOverriddenPropertyToInternal; + PotentiallyOverriddenPropertyToPrivateOption = potentiallyOverriddenPropertyToPrivate; + PotentiallyOverriddenPropertyToPublicOption = potentiallyOverriddenPropertyToPublic; + UnalteredPropertyOption = unalteredProperty; + OnCreated(); + } + + partial void OnCreated(); + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToInternal + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToInternalOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToInternal + /// + [JsonPropertyName("potentiallyOverriddenPropertyToInternal")] + public string PotentiallyOverriddenPropertyToInternal { get { return this.PotentiallyOverriddenPropertyToInternalOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPrivate + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPrivateOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPrivate + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPrivate")] + public string PotentiallyOverriddenPropertyToPrivate { get { return this.PotentiallyOverriddenPropertyToPrivateOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPublic + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPublicOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPublic + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPublic")] + public string PotentiallyOverriddenPropertyToPublic { get { return this.PotentiallyOverriddenPropertyToPublicOption.Value; } } + + /// + /// Used to track the state of UnalteredProperty + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option UnalteredPropertyOption { get; } + + /// + /// Gets or Sets UnalteredProperty + /// + [JsonPropertyName("unalteredProperty")] + public string UnalteredProperty { get { return this.UnalteredPropertyOption.Value; } } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public Dictionary AdditionalProperties { get; } = new Dictionary(); + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InjectedVendorExtensionsTest {\n"); + sb.Append(" PotentiallyOverriddenPropertyToInternal: ").Append(PotentiallyOverriddenPropertyToInternal).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPrivate: ").Append(PotentiallyOverriddenPropertyToPrivate).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPublic: ").Append(PotentiallyOverriddenPropertyToPublic).Append("\n"); + sb.Append(" UnalteredProperty: ").Append(UnalteredProperty).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as InjectedVendorExtensionsTest).AreEqual; + } + + /// + /// Returns true if InjectedVendorExtensionsTest instances are equal + /// + /// Instance of InjectedVendorExtensionsTest to be compared + /// Boolean + public bool Equals(InjectedVendorExtensionsTest input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (PotentiallyOverriddenPropertyToInternal != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToInternal.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPrivate != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPrivate.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPublic != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPublic.GetHashCode(); + + if (UnalteredProperty != null) + hashCode = (hashCode * 59) + UnalteredProperty.GetHashCode(); + + hashCode = (hashCode * 59) + AdditionalProperties.GetHashCode(); + + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// A Json converter for type + /// + public partial class InjectedVendorExtensionsTestJsonConverter : JsonConverter + { + partial void OnCreated(); + + /// + /// Initializes a new instance of the class. + /// + public InjectedVendorExtensionsTestJsonConverter() + { + OnCreated(); + } + + /// + /// Deserializes json to + /// + /// + /// + /// + /// + /// + public override InjectedVendorExtensionsTest Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions) + { + int currentDepth = utf8JsonReader.CurrentDepth; + + if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) + throw new JsonException(); + + JsonTokenType startingTokenType = utf8JsonReader.TokenType; + + Option potentiallyOverriddenPropertyToInternal = default; + Option potentiallyOverriddenPropertyToPrivate = default; + Option potentiallyOverriddenPropertyToPublic = default; + Option unalteredProperty = default; + + while (utf8JsonReader.Read()) + { + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1) + { + string localVarJsonPropertyName = utf8JsonReader.GetString(); + utf8JsonReader.Read(); + + switch (localVarJsonPropertyName) + { + case "potentiallyOverriddenPropertyToInternal": + potentiallyOverriddenPropertyToInternal = new Option(utf8JsonReader.GetString()); + break; + case "potentiallyOverriddenPropertyToPrivate": + potentiallyOverriddenPropertyToPrivate = new Option(utf8JsonReader.GetString()); + break; + case "potentiallyOverriddenPropertyToPublic": + potentiallyOverriddenPropertyToPublic = new Option(utf8JsonReader.GetString()); + break; + case "unalteredProperty": + unalteredProperty = new Option(utf8JsonReader.GetString()); + break; + default: + break; + } + } + } + + if (potentiallyOverriddenPropertyToInternal.IsSet && potentiallyOverriddenPropertyToInternal.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToInternal), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPrivate.IsSet && potentiallyOverriddenPropertyToPrivate.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPrivate), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPublic.IsSet && potentiallyOverriddenPropertyToPublic.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPublic), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (unalteredProperty.IsSet && unalteredProperty.Value == null) + throw new ArgumentNullException(nameof(unalteredProperty), "Property is not nullable for class InjectedVendorExtensionsTest."); + + return new InjectedVendorExtensionsTest(potentiallyOverriddenPropertyToInternal, potentiallyOverriddenPropertyToPrivate, potentiallyOverriddenPropertyToPublic, unalteredProperty); + } + + /// + /// Serializes a + /// + /// + /// + /// + /// + public override void Write(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + writer.WriteStartObject(); + + WriteProperties(writer, injectedVendorExtensionsTest, jsonSerializerOptions); + writer.WriteEndObject(); + } + + /// + /// Serializes the properties of + /// + /// + /// + /// + /// + public void WriteProperties(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet && injectedVendorExtensionsTest.UnalteredProperty == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.UnalteredProperty), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToInternal", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPrivate", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPublic", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet) + writer.WriteString("unalteredProperty", injectedVendorExtensionsTest.UnalteredProperty); + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net4.8/Petstore/.openapi-generator/FILES b/samples/client/petstore/csharp/generichost/net4.8/Petstore/.openapi-generator/FILES index 20a67a4fabae..d8f84eb7f575 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/Petstore/.openapi-generator/FILES +++ b/samples/client/petstore/csharp/generichost/net4.8/Petstore/.openapi-generator/FILES @@ -53,6 +53,7 @@ docs/models/GmFruit.md docs/models/GrandparentAnimal.md docs/models/HasOnlyReadOnly.md docs/models/HealthCheckResult.md +docs/models/InjectedVendorExtensionsTest.md docs/models/IsoscelesTriangle.md docs/models/List.md docs/models/LiteralStringClass.md @@ -196,6 +197,7 @@ src/Org.OpenAPITools/Model/GmFruit.cs src/Org.OpenAPITools/Model/GrandparentAnimal.cs src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs src/Org.OpenAPITools/Model/IsoscelesTriangle.cs src/Org.OpenAPITools/Model/List.cs src/Org.OpenAPITools/Model/LiteralStringClass.cs diff --git a/samples/client/petstore/csharp/generichost/net4.8/Petstore/api/openapi.yaml b/samples/client/petstore/csharp/generichost/net4.8/Petstore/api/openapi.yaml index a179b6cfdd29..586178fe4189 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/Petstore/api/openapi.yaml +++ b/samples/client/petstore/csharp/generichost/net4.8/Petstore/api/openapi.yaml @@ -1355,6 +1355,21 @@ components: items: $ref: "#/components/schemas/RolesReportsHash" type: array + InjectedVendorExtensionsTest: + properties: + unalteredProperty: + readOnly: true + type: string + potentiallyOverriddenPropertyToPrivate: + readOnly: true + type: string + potentiallyOverriddenPropertyToInternal: + readOnly: true + type: string + potentiallyOverriddenPropertyToPublic: + readOnly: true + type: string + type: object RolesReportsHash: description: Role report Hash example: diff --git a/samples/client/petstore/csharp/generichost/net4.8/Petstore/docs/models/InjectedVendorExtensionsTest.md b/samples/client/petstore/csharp/generichost/net4.8/Petstore/docs/models/InjectedVendorExtensionsTest.md new file mode 100644 index 000000000000..6e5e74e659a5 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net4.8/Petstore/docs/models/InjectedVendorExtensionsTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.InjectedVendorExtensionsTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**PotentiallyOverriddenPropertyToInternal** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPrivate** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPublic** | **string** | | [optional] [readonly] +**UnalteredProperty** | **string** | | [optional] [readonly] + +[[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/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs new file mode 100644 index 000000000000..19c09e9df56c --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs @@ -0,0 +1,92 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InjectedVendorExtensionsTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InjectedVendorExtensionsTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InjectedVendorExtensionsTest + //private InjectedVendorExtensionsTest instance; + + public InjectedVendorExtensionsTestTests() + { + // TODO uncomment below to create an instance of InjectedVendorExtensionsTest + //instance = new InjectedVendorExtensionsTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InjectedVendorExtensionsTest + /// + [Fact] + public void InjectedVendorExtensionsTestInstanceTest() + { + // TODO uncomment below to test "IsType" InjectedVendorExtensionsTest + //Assert.IsType(instance); + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToInternal' + /// + [Fact] + public void PotentiallyOverriddenPropertyToInternalTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToInternal' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPrivate' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPrivateTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPrivate' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPublic' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPublicTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPublic' + } + + /// + /// Test the property 'UnalteredProperty' + /// + [Fact] + public void UnalteredPropertyTest() + { + // TODO unit test for the property 'UnalteredProperty' + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/HostConfiguration.cs b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/HostConfiguration.cs index ba26668131ce..c87cde5cb400 100644 --- a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/HostConfiguration.cs +++ b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Client/HostConfiguration.cs @@ -83,6 +83,7 @@ public HostConfiguration(IServiceCollection services) _jsonOptions.Converters.Add(new GrandparentAnimalJsonConverter()); _jsonOptions.Converters.Add(new HasOnlyReadOnlyJsonConverter()); _jsonOptions.Converters.Add(new HealthCheckResultJsonConverter()); + _jsonOptions.Converters.Add(new InjectedVendorExtensionsTestJsonConverter()); _jsonOptions.Converters.Add(new IsoscelesTriangleJsonConverter()); _jsonOptions.Converters.Add(new ListJsonConverter()); _jsonOptions.Converters.Add(new LiteralStringClassJsonConverter()); diff --git a/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs new file mode 100644 index 000000000000..53cbb5268a33 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net4.8/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs @@ -0,0 +1,318 @@ +// +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Text; +using System.Text.RegularExpressions; +using System.Text.Json; +using System.Text.Json.Serialization; +using System.ComponentModel.DataAnnotations; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using Org.OpenAPITools.Client; + +namespace Org.OpenAPITools.Model +{ + /// + /// InjectedVendorExtensionsTest + /// + public partial class InjectedVendorExtensionsTest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// potentiallyOverriddenPropertyToInternal + /// potentiallyOverriddenPropertyToPrivate + /// potentiallyOverriddenPropertyToPublic + /// unalteredProperty + [JsonConstructor] + internal InjectedVendorExtensionsTest(Option potentiallyOverriddenPropertyToInternal = default, Option potentiallyOverriddenPropertyToPrivate = default, Option potentiallyOverriddenPropertyToPublic = default, Option unalteredProperty = default) + { + PotentiallyOverriddenPropertyToInternalOption = potentiallyOverriddenPropertyToInternal; + PotentiallyOverriddenPropertyToPrivateOption = potentiallyOverriddenPropertyToPrivate; + PotentiallyOverriddenPropertyToPublicOption = potentiallyOverriddenPropertyToPublic; + UnalteredPropertyOption = unalteredProperty; + OnCreated(); + } + + partial void OnCreated(); + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToInternal + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToInternalOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToInternal + /// + [JsonPropertyName("potentiallyOverriddenPropertyToInternal")] + public string PotentiallyOverriddenPropertyToInternal { get { return this.PotentiallyOverriddenPropertyToInternalOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPrivate + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPrivateOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPrivate + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPrivate")] + public string PotentiallyOverriddenPropertyToPrivate { get { return this.PotentiallyOverriddenPropertyToPrivateOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPublic + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPublicOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPublic + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPublic")] + public string PotentiallyOverriddenPropertyToPublic { get { return this.PotentiallyOverriddenPropertyToPublicOption.Value; } } + + /// + /// Used to track the state of UnalteredProperty + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option UnalteredPropertyOption { get; } + + /// + /// Gets or Sets UnalteredProperty + /// + [JsonPropertyName("unalteredProperty")] + public string UnalteredProperty { get { return this.UnalteredPropertyOption.Value; } } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public Dictionary AdditionalProperties { get; } = new Dictionary(); + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InjectedVendorExtensionsTest {\n"); + sb.Append(" PotentiallyOverriddenPropertyToInternal: ").Append(PotentiallyOverriddenPropertyToInternal).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPrivate: ").Append(PotentiallyOverriddenPropertyToPrivate).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPublic: ").Append(PotentiallyOverriddenPropertyToPublic).Append("\n"); + sb.Append(" UnalteredProperty: ").Append(UnalteredProperty).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as InjectedVendorExtensionsTest).AreEqual; + } + + /// + /// Returns true if InjectedVendorExtensionsTest instances are equal + /// + /// Instance of InjectedVendorExtensionsTest to be compared + /// Boolean + public bool Equals(InjectedVendorExtensionsTest input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (PotentiallyOverriddenPropertyToInternal != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToInternal.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPrivate != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPrivate.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPublic != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPublic.GetHashCode(); + + if (UnalteredProperty != null) + hashCode = (hashCode * 59) + UnalteredProperty.GetHashCode(); + + hashCode = (hashCode * 59) + AdditionalProperties.GetHashCode(); + + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// A Json converter for type + /// + public partial class InjectedVendorExtensionsTestJsonConverter : JsonConverter + { + partial void OnCreated(); + + /// + /// Initializes a new instance of the class. + /// + public InjectedVendorExtensionsTestJsonConverter() + { + OnCreated(); + } + + /// + /// Deserializes json to + /// + /// + /// + /// + /// + /// + public override InjectedVendorExtensionsTest Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions) + { + int currentDepth = utf8JsonReader.CurrentDepth; + + if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) + throw new JsonException(); + + JsonTokenType startingTokenType = utf8JsonReader.TokenType; + + Option potentiallyOverriddenPropertyToInternal = default; + Option potentiallyOverriddenPropertyToPrivate = default; + Option potentiallyOverriddenPropertyToPublic = default; + Option unalteredProperty = default; + + while (utf8JsonReader.Read()) + { + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1) + { + string localVarJsonPropertyName = utf8JsonReader.GetString(); + utf8JsonReader.Read(); + + switch (localVarJsonPropertyName) + { + case "potentiallyOverriddenPropertyToInternal": + potentiallyOverriddenPropertyToInternal = new Option(utf8JsonReader.GetString()); + break; + case "potentiallyOverriddenPropertyToPrivate": + potentiallyOverriddenPropertyToPrivate = new Option(utf8JsonReader.GetString()); + break; + case "potentiallyOverriddenPropertyToPublic": + potentiallyOverriddenPropertyToPublic = new Option(utf8JsonReader.GetString()); + break; + case "unalteredProperty": + unalteredProperty = new Option(utf8JsonReader.GetString()); + break; + default: + break; + } + } + } + + if (potentiallyOverriddenPropertyToInternal.IsSet && potentiallyOverriddenPropertyToInternal.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToInternal), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPrivate.IsSet && potentiallyOverriddenPropertyToPrivate.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPrivate), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPublic.IsSet && potentiallyOverriddenPropertyToPublic.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPublic), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (unalteredProperty.IsSet && unalteredProperty.Value == null) + throw new ArgumentNullException(nameof(unalteredProperty), "Property is not nullable for class InjectedVendorExtensionsTest."); + + return new InjectedVendorExtensionsTest(potentiallyOverriddenPropertyToInternal, potentiallyOverriddenPropertyToPrivate, potentiallyOverriddenPropertyToPublic, unalteredProperty); + } + + /// + /// Serializes a + /// + /// + /// + /// + /// + public override void Write(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + writer.WriteStartObject(); + + WriteProperties(writer, injectedVendorExtensionsTest, jsonSerializerOptions); + writer.WriteEndObject(); + } + + /// + /// Serializes the properties of + /// + /// + /// + /// + /// + public void WriteProperties(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet && injectedVendorExtensionsTest.UnalteredProperty == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.UnalteredProperty), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToInternal", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPrivate", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPublic", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet) + writer.WriteString("unalteredProperty", injectedVendorExtensionsTest.UnalteredProperty); + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/.openapi-generator/FILES b/samples/client/petstore/csharp/generichost/net8/FormModels/.openapi-generator/FILES index fd2691eb4794..b3b6081185ca 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/.openapi-generator/FILES +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/.openapi-generator/FILES @@ -61,6 +61,7 @@ docs/models/GmFruit.md docs/models/GrandparentAnimal.md docs/models/HasOnlyReadOnly.md docs/models/HealthCheckResult.md +docs/models/InjectedVendorExtensionsTest.md docs/models/IsoscelesTriangle.md docs/models/List.md docs/models/LiteralStringClass.md @@ -231,6 +232,7 @@ src/Org.OpenAPITools/Model/GmFruit.cs src/Org.OpenAPITools/Model/GrandparentAnimal.cs src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs src/Org.OpenAPITools/Model/IsoscelesTriangle.cs src/Org.OpenAPITools/Model/List.cs src/Org.OpenAPITools/Model/LiteralStringClass.cs diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/api/openapi.yaml b/samples/client/petstore/csharp/generichost/net8/FormModels/api/openapi.yaml index 6dae7b5ccbd3..7ba3a76f8f16 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/api/openapi.yaml +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/api/openapi.yaml @@ -1324,6 +1324,21 @@ components: items: $ref: "#/components/schemas/RolesReportsHash" type: array + InjectedVendorExtensionsTest: + properties: + unalteredProperty: + readOnly: true + type: string + potentiallyOverriddenPropertyToPrivate: + readOnly: true + type: string + potentiallyOverriddenPropertyToInternal: + readOnly: true + type: string + potentiallyOverriddenPropertyToPublic: + readOnly: true + type: string + type: object RolesReportsHash: description: Role report Hash example: diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/docs/models/InjectedVendorExtensionsTest.md b/samples/client/petstore/csharp/generichost/net8/FormModels/docs/models/InjectedVendorExtensionsTest.md new file mode 100644 index 000000000000..6e5e74e659a5 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/docs/models/InjectedVendorExtensionsTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.InjectedVendorExtensionsTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**PotentiallyOverriddenPropertyToInternal** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPrivate** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPublic** | **string** | | [optional] [readonly] +**UnalteredProperty** | **string** | | [optional] [readonly] + +[[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/csharp/generichost/net8/FormModels/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs new file mode 100644 index 000000000000..19c09e9df56c --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs @@ -0,0 +1,92 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InjectedVendorExtensionsTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InjectedVendorExtensionsTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InjectedVendorExtensionsTest + //private InjectedVendorExtensionsTest instance; + + public InjectedVendorExtensionsTestTests() + { + // TODO uncomment below to create an instance of InjectedVendorExtensionsTest + //instance = new InjectedVendorExtensionsTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InjectedVendorExtensionsTest + /// + [Fact] + public void InjectedVendorExtensionsTestInstanceTest() + { + // TODO uncomment below to test "IsType" InjectedVendorExtensionsTest + //Assert.IsType(instance); + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToInternal' + /// + [Fact] + public void PotentiallyOverriddenPropertyToInternalTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToInternal' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPrivate' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPrivateTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPrivate' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPublic' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPublicTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPublic' + } + + /// + /// Test the property 'UnalteredProperty' + /// + [Fact] + public void UnalteredPropertyTest() + { + // TODO unit test for the property 'UnalteredProperty' + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/HostConfiguration.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/HostConfiguration.cs index 5c409ac9f5ba..4ddab463d26a 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/HostConfiguration.cs +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Client/HostConfiguration.cs @@ -101,6 +101,7 @@ public HostConfiguration(IServiceCollection services) _jsonOptions.Converters.Add(new GrandparentAnimalJsonConverter()); _jsonOptions.Converters.Add(new HasOnlyReadOnlyJsonConverter()); _jsonOptions.Converters.Add(new HealthCheckResultJsonConverter()); + _jsonOptions.Converters.Add(new InjectedVendorExtensionsTestJsonConverter()); _jsonOptions.Converters.Add(new IsoscelesTriangleJsonConverter()); _jsonOptions.Converters.Add(new ListJsonConverter()); _jsonOptions.Converters.Add(new LiteralStringClassJsonConverter()); diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs new file mode 100644 index 000000000000..53cbb5268a33 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs @@ -0,0 +1,318 @@ +// +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Text; +using System.Text.RegularExpressions; +using System.Text.Json; +using System.Text.Json.Serialization; +using System.ComponentModel.DataAnnotations; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using Org.OpenAPITools.Client; + +namespace Org.OpenAPITools.Model +{ + /// + /// InjectedVendorExtensionsTest + /// + public partial class InjectedVendorExtensionsTest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// potentiallyOverriddenPropertyToInternal + /// potentiallyOverriddenPropertyToPrivate + /// potentiallyOverriddenPropertyToPublic + /// unalteredProperty + [JsonConstructor] + internal InjectedVendorExtensionsTest(Option potentiallyOverriddenPropertyToInternal = default, Option potentiallyOverriddenPropertyToPrivate = default, Option potentiallyOverriddenPropertyToPublic = default, Option unalteredProperty = default) + { + PotentiallyOverriddenPropertyToInternalOption = potentiallyOverriddenPropertyToInternal; + PotentiallyOverriddenPropertyToPrivateOption = potentiallyOverriddenPropertyToPrivate; + PotentiallyOverriddenPropertyToPublicOption = potentiallyOverriddenPropertyToPublic; + UnalteredPropertyOption = unalteredProperty; + OnCreated(); + } + + partial void OnCreated(); + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToInternal + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToInternalOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToInternal + /// + [JsonPropertyName("potentiallyOverriddenPropertyToInternal")] + public string PotentiallyOverriddenPropertyToInternal { get { return this.PotentiallyOverriddenPropertyToInternalOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPrivate + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPrivateOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPrivate + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPrivate")] + public string PotentiallyOverriddenPropertyToPrivate { get { return this.PotentiallyOverriddenPropertyToPrivateOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPublic + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPublicOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPublic + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPublic")] + public string PotentiallyOverriddenPropertyToPublic { get { return this.PotentiallyOverriddenPropertyToPublicOption.Value; } } + + /// + /// Used to track the state of UnalteredProperty + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option UnalteredPropertyOption { get; } + + /// + /// Gets or Sets UnalteredProperty + /// + [JsonPropertyName("unalteredProperty")] + public string UnalteredProperty { get { return this.UnalteredPropertyOption.Value; } } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public Dictionary AdditionalProperties { get; } = new Dictionary(); + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InjectedVendorExtensionsTest {\n"); + sb.Append(" PotentiallyOverriddenPropertyToInternal: ").Append(PotentiallyOverriddenPropertyToInternal).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPrivate: ").Append(PotentiallyOverriddenPropertyToPrivate).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPublic: ").Append(PotentiallyOverriddenPropertyToPublic).Append("\n"); + sb.Append(" UnalteredProperty: ").Append(UnalteredProperty).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as InjectedVendorExtensionsTest).AreEqual; + } + + /// + /// Returns true if InjectedVendorExtensionsTest instances are equal + /// + /// Instance of InjectedVendorExtensionsTest to be compared + /// Boolean + public bool Equals(InjectedVendorExtensionsTest input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (PotentiallyOverriddenPropertyToInternal != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToInternal.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPrivate != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPrivate.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPublic != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPublic.GetHashCode(); + + if (UnalteredProperty != null) + hashCode = (hashCode * 59) + UnalteredProperty.GetHashCode(); + + hashCode = (hashCode * 59) + AdditionalProperties.GetHashCode(); + + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// A Json converter for type + /// + public partial class InjectedVendorExtensionsTestJsonConverter : JsonConverter + { + partial void OnCreated(); + + /// + /// Initializes a new instance of the class. + /// + public InjectedVendorExtensionsTestJsonConverter() + { + OnCreated(); + } + + /// + /// Deserializes json to + /// + /// + /// + /// + /// + /// + public override InjectedVendorExtensionsTest Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions) + { + int currentDepth = utf8JsonReader.CurrentDepth; + + if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) + throw new JsonException(); + + JsonTokenType startingTokenType = utf8JsonReader.TokenType; + + Option potentiallyOverriddenPropertyToInternal = default; + Option potentiallyOverriddenPropertyToPrivate = default; + Option potentiallyOverriddenPropertyToPublic = default; + Option unalteredProperty = default; + + while (utf8JsonReader.Read()) + { + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1) + { + string localVarJsonPropertyName = utf8JsonReader.GetString(); + utf8JsonReader.Read(); + + switch (localVarJsonPropertyName) + { + case "potentiallyOverriddenPropertyToInternal": + potentiallyOverriddenPropertyToInternal = new Option(utf8JsonReader.GetString()); + break; + case "potentiallyOverriddenPropertyToPrivate": + potentiallyOverriddenPropertyToPrivate = new Option(utf8JsonReader.GetString()); + break; + case "potentiallyOverriddenPropertyToPublic": + potentiallyOverriddenPropertyToPublic = new Option(utf8JsonReader.GetString()); + break; + case "unalteredProperty": + unalteredProperty = new Option(utf8JsonReader.GetString()); + break; + default: + break; + } + } + } + + if (potentiallyOverriddenPropertyToInternal.IsSet && potentiallyOverriddenPropertyToInternal.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToInternal), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPrivate.IsSet && potentiallyOverriddenPropertyToPrivate.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPrivate), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPublic.IsSet && potentiallyOverriddenPropertyToPublic.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPublic), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (unalteredProperty.IsSet && unalteredProperty.Value == null) + throw new ArgumentNullException(nameof(unalteredProperty), "Property is not nullable for class InjectedVendorExtensionsTest."); + + return new InjectedVendorExtensionsTest(potentiallyOverriddenPropertyToInternal, potentiallyOverriddenPropertyToPrivate, potentiallyOverriddenPropertyToPublic, unalteredProperty); + } + + /// + /// Serializes a + /// + /// + /// + /// + /// + public override void Write(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + writer.WriteStartObject(); + + WriteProperties(writer, injectedVendorExtensionsTest, jsonSerializerOptions); + writer.WriteEndObject(); + } + + /// + /// Serializes the properties of + /// + /// + /// + /// + /// + public void WriteProperties(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet && injectedVendorExtensionsTest.UnalteredProperty == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.UnalteredProperty), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToInternal", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPrivate", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPublic", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet) + writer.WriteString("unalteredProperty", injectedVendorExtensionsTest.UnalteredProperty); + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/.openapi-generator/FILES b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/.openapi-generator/FILES index 3a66c0df35db..0698a2042def 100644 --- a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/.openapi-generator/FILES +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/.openapi-generator/FILES @@ -53,6 +53,7 @@ docs/models/GmFruit.md docs/models/GrandparentAnimal.md docs/models/HasOnlyReadOnly.md docs/models/HealthCheckResult.md +docs/models/InjectedVendorExtensionsTest.md docs/models/IsoscelesTriangle.md docs/models/List.md docs/models/LiteralStringClass.md @@ -198,6 +199,7 @@ src/Org.OpenAPITools/Model/GmFruit.cs src/Org.OpenAPITools/Model/GrandparentAnimal.cs src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs src/Org.OpenAPITools/Model/IsoscelesTriangle.cs src/Org.OpenAPITools/Model/List.cs src/Org.OpenAPITools/Model/LiteralStringClass.cs diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/api/openapi.yaml b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/api/openapi.yaml index a179b6cfdd29..586178fe4189 100644 --- a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/api/openapi.yaml +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/api/openapi.yaml @@ -1355,6 +1355,21 @@ components: items: $ref: "#/components/schemas/RolesReportsHash" type: array + InjectedVendorExtensionsTest: + properties: + unalteredProperty: + readOnly: true + type: string + potentiallyOverriddenPropertyToPrivate: + readOnly: true + type: string + potentiallyOverriddenPropertyToInternal: + readOnly: true + type: string + potentiallyOverriddenPropertyToPublic: + readOnly: true + type: string + type: object RolesReportsHash: description: Role report Hash example: diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/docs/models/InjectedVendorExtensionsTest.md b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/docs/models/InjectedVendorExtensionsTest.md new file mode 100644 index 000000000000..6e5e74e659a5 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/docs/models/InjectedVendorExtensionsTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.InjectedVendorExtensionsTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**PotentiallyOverriddenPropertyToInternal** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPrivate** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPublic** | **string** | | [optional] [readonly] +**UnalteredProperty** | **string** | | [optional] [readonly] + +[[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/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs new file mode 100644 index 000000000000..19c09e9df56c --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs @@ -0,0 +1,92 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InjectedVendorExtensionsTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InjectedVendorExtensionsTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InjectedVendorExtensionsTest + //private InjectedVendorExtensionsTest instance; + + public InjectedVendorExtensionsTestTests() + { + // TODO uncomment below to create an instance of InjectedVendorExtensionsTest + //instance = new InjectedVendorExtensionsTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InjectedVendorExtensionsTest + /// + [Fact] + public void InjectedVendorExtensionsTestInstanceTest() + { + // TODO uncomment below to test "IsType" InjectedVendorExtensionsTest + //Assert.IsType(instance); + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToInternal' + /// + [Fact] + public void PotentiallyOverriddenPropertyToInternalTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToInternal' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPrivate' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPrivateTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPrivate' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPublic' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPublicTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPublic' + } + + /// + /// Test the property 'UnalteredProperty' + /// + [Fact] + public void UnalteredPropertyTest() + { + // TODO unit test for the property 'UnalteredProperty' + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/HostConfiguration.cs b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/HostConfiguration.cs index a86b16b05f28..ca8d0743deab 100644 --- a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/HostConfiguration.cs +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Client/HostConfiguration.cs @@ -87,6 +87,7 @@ public HostConfiguration(IServiceCollection services) _jsonOptions.Converters.Add(new GrandparentAnimalJsonConverter()); _jsonOptions.Converters.Add(new HasOnlyReadOnlyJsonConverter()); _jsonOptions.Converters.Add(new HealthCheckResultJsonConverter()); + _jsonOptions.Converters.Add(new InjectedVendorExtensionsTestJsonConverter()); _jsonOptions.Converters.Add(new IsoscelesTriangleJsonConverter()); _jsonOptions.Converters.Add(new ListJsonConverter()); _jsonOptions.Converters.Add(new LiteralStringClassJsonConverter()); diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs new file mode 100644 index 000000000000..c533776fdbcc --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs @@ -0,0 +1,320 @@ +// +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +#nullable enable + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Text; +using System.Text.RegularExpressions; +using System.Text.Json; +using System.Text.Json.Serialization; +using System.ComponentModel.DataAnnotations; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using Org.OpenAPITools.Client; + +namespace Org.OpenAPITools.Model +{ + /// + /// InjectedVendorExtensionsTest + /// + public partial class InjectedVendorExtensionsTest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// potentiallyOverriddenPropertyToInternal + /// potentiallyOverriddenPropertyToPrivate + /// potentiallyOverriddenPropertyToPublic + /// unalteredProperty + [JsonConstructor] + internal InjectedVendorExtensionsTest(Option potentiallyOverriddenPropertyToInternal = default, Option potentiallyOverriddenPropertyToPrivate = default, Option potentiallyOverriddenPropertyToPublic = default, Option unalteredProperty = default) + { + PotentiallyOverriddenPropertyToInternalOption = potentiallyOverriddenPropertyToInternal; + PotentiallyOverriddenPropertyToPrivateOption = potentiallyOverriddenPropertyToPrivate; + PotentiallyOverriddenPropertyToPublicOption = potentiallyOverriddenPropertyToPublic; + UnalteredPropertyOption = unalteredProperty; + OnCreated(); + } + + partial void OnCreated(); + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToInternal + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToInternalOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToInternal + /// + [JsonPropertyName("potentiallyOverriddenPropertyToInternal")] + public string? PotentiallyOverriddenPropertyToInternal { get { return this.PotentiallyOverriddenPropertyToInternalOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPrivate + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPrivateOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPrivate + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPrivate")] + public string? PotentiallyOverriddenPropertyToPrivate { get { return this.PotentiallyOverriddenPropertyToPrivateOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPublic + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPublicOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPublic + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPublic")] + public string? PotentiallyOverriddenPropertyToPublic { get { return this.PotentiallyOverriddenPropertyToPublicOption.Value; } } + + /// + /// Used to track the state of UnalteredProperty + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option UnalteredPropertyOption { get; } + + /// + /// Gets or Sets UnalteredProperty + /// + [JsonPropertyName("unalteredProperty")] + public string? UnalteredProperty { get { return this.UnalteredPropertyOption.Value; } } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public Dictionary AdditionalProperties { get; } = new Dictionary(); + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InjectedVendorExtensionsTest {\n"); + sb.Append(" PotentiallyOverriddenPropertyToInternal: ").Append(PotentiallyOverriddenPropertyToInternal).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPrivate: ").Append(PotentiallyOverriddenPropertyToPrivate).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPublic: ").Append(PotentiallyOverriddenPropertyToPublic).Append("\n"); + sb.Append(" UnalteredProperty: ").Append(UnalteredProperty).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object? input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as InjectedVendorExtensionsTest).AreEqual; + } + + /// + /// Returns true if InjectedVendorExtensionsTest instances are equal + /// + /// Instance of InjectedVendorExtensionsTest to be compared + /// Boolean + public bool Equals(InjectedVendorExtensionsTest? input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (PotentiallyOverriddenPropertyToInternal != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToInternal.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPrivate != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPrivate.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPublic != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPublic.GetHashCode(); + + if (UnalteredProperty != null) + hashCode = (hashCode * 59) + UnalteredProperty.GetHashCode(); + + hashCode = (hashCode * 59) + AdditionalProperties.GetHashCode(); + + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// A Json converter for type + /// + public partial class InjectedVendorExtensionsTestJsonConverter : JsonConverter + { + partial void OnCreated(); + + /// + /// Initializes a new instance of the class. + /// + public InjectedVendorExtensionsTestJsonConverter() + { + OnCreated(); + } + + /// + /// Deserializes json to + /// + /// + /// + /// + /// + /// + public override InjectedVendorExtensionsTest Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions) + { + int currentDepth = utf8JsonReader.CurrentDepth; + + if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) + throw new JsonException(); + + JsonTokenType startingTokenType = utf8JsonReader.TokenType; + + Option potentiallyOverriddenPropertyToInternal = default; + Option potentiallyOverriddenPropertyToPrivate = default; + Option potentiallyOverriddenPropertyToPublic = default; + Option unalteredProperty = default; + + while (utf8JsonReader.Read()) + { + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1) + { + string? localVarJsonPropertyName = utf8JsonReader.GetString(); + utf8JsonReader.Read(); + + switch (localVarJsonPropertyName) + { + case "potentiallyOverriddenPropertyToInternal": + potentiallyOverriddenPropertyToInternal = new Option(utf8JsonReader.GetString()!); + break; + case "potentiallyOverriddenPropertyToPrivate": + potentiallyOverriddenPropertyToPrivate = new Option(utf8JsonReader.GetString()!); + break; + case "potentiallyOverriddenPropertyToPublic": + potentiallyOverriddenPropertyToPublic = new Option(utf8JsonReader.GetString()!); + break; + case "unalteredProperty": + unalteredProperty = new Option(utf8JsonReader.GetString()!); + break; + default: + break; + } + } + } + + if (potentiallyOverriddenPropertyToInternal.IsSet && potentiallyOverriddenPropertyToInternal.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToInternal), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPrivate.IsSet && potentiallyOverriddenPropertyToPrivate.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPrivate), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPublic.IsSet && potentiallyOverriddenPropertyToPublic.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPublic), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (unalteredProperty.IsSet && unalteredProperty.Value == null) + throw new ArgumentNullException(nameof(unalteredProperty), "Property is not nullable for class InjectedVendorExtensionsTest."); + + return new InjectedVendorExtensionsTest(potentiallyOverriddenPropertyToInternal, potentiallyOverriddenPropertyToPrivate, potentiallyOverriddenPropertyToPublic, unalteredProperty); + } + + /// + /// Serializes a + /// + /// + /// + /// + /// + public override void Write(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + writer.WriteStartObject(); + + WriteProperties(writer, injectedVendorExtensionsTest, jsonSerializerOptions); + writer.WriteEndObject(); + } + + /// + /// Serializes the properties of + /// + /// + /// + /// + /// + public void WriteProperties(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet && injectedVendorExtensionsTest.UnalteredProperty == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.UnalteredProperty), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToInternal", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPrivate", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPublic", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet) + writer.WriteString("unalteredProperty", injectedVendorExtensionsTest.UnalteredProperty); + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/.openapi-generator/FILES b/samples/client/petstore/csharp/generichost/net8/Petstore/.openapi-generator/FILES index 3a66c0df35db..0698a2042def 100644 --- a/samples/client/petstore/csharp/generichost/net8/Petstore/.openapi-generator/FILES +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/.openapi-generator/FILES @@ -53,6 +53,7 @@ docs/models/GmFruit.md docs/models/GrandparentAnimal.md docs/models/HasOnlyReadOnly.md docs/models/HealthCheckResult.md +docs/models/InjectedVendorExtensionsTest.md docs/models/IsoscelesTriangle.md docs/models/List.md docs/models/LiteralStringClass.md @@ -198,6 +199,7 @@ src/Org.OpenAPITools/Model/GmFruit.cs src/Org.OpenAPITools/Model/GrandparentAnimal.cs src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs src/Org.OpenAPITools/Model/IsoscelesTriangle.cs src/Org.OpenAPITools/Model/List.cs src/Org.OpenAPITools/Model/LiteralStringClass.cs diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/api/openapi.yaml b/samples/client/petstore/csharp/generichost/net8/Petstore/api/openapi.yaml index a179b6cfdd29..586178fe4189 100644 --- a/samples/client/petstore/csharp/generichost/net8/Petstore/api/openapi.yaml +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/api/openapi.yaml @@ -1355,6 +1355,21 @@ components: items: $ref: "#/components/schemas/RolesReportsHash" type: array + InjectedVendorExtensionsTest: + properties: + unalteredProperty: + readOnly: true + type: string + potentiallyOverriddenPropertyToPrivate: + readOnly: true + type: string + potentiallyOverriddenPropertyToInternal: + readOnly: true + type: string + potentiallyOverriddenPropertyToPublic: + readOnly: true + type: string + type: object RolesReportsHash: description: Role report Hash example: diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/docs/models/InjectedVendorExtensionsTest.md b/samples/client/petstore/csharp/generichost/net8/Petstore/docs/models/InjectedVendorExtensionsTest.md new file mode 100644 index 000000000000..6e5e74e659a5 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/docs/models/InjectedVendorExtensionsTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.InjectedVendorExtensionsTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**PotentiallyOverriddenPropertyToInternal** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPrivate** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPublic** | **string** | | [optional] [readonly] +**UnalteredProperty** | **string** | | [optional] [readonly] + +[[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/csharp/generichost/net8/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs new file mode 100644 index 000000000000..19c09e9df56c --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs @@ -0,0 +1,92 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InjectedVendorExtensionsTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InjectedVendorExtensionsTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InjectedVendorExtensionsTest + //private InjectedVendorExtensionsTest instance; + + public InjectedVendorExtensionsTestTests() + { + // TODO uncomment below to create an instance of InjectedVendorExtensionsTest + //instance = new InjectedVendorExtensionsTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InjectedVendorExtensionsTest + /// + [Fact] + public void InjectedVendorExtensionsTestInstanceTest() + { + // TODO uncomment below to test "IsType" InjectedVendorExtensionsTest + //Assert.IsType(instance); + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToInternal' + /// + [Fact] + public void PotentiallyOverriddenPropertyToInternalTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToInternal' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPrivate' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPrivateTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPrivate' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPublic' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPublicTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPublic' + } + + /// + /// Test the property 'UnalteredProperty' + /// + [Fact] + public void UnalteredPropertyTest() + { + // TODO unit test for the property 'UnalteredProperty' + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/HostConfiguration.cs b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/HostConfiguration.cs index d52b54c46d14..178446aee993 100644 --- a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/HostConfiguration.cs +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Client/HostConfiguration.cs @@ -85,6 +85,7 @@ public HostConfiguration(IServiceCollection services) _jsonOptions.Converters.Add(new GrandparentAnimalJsonConverter()); _jsonOptions.Converters.Add(new HasOnlyReadOnlyJsonConverter()); _jsonOptions.Converters.Add(new HealthCheckResultJsonConverter()); + _jsonOptions.Converters.Add(new InjectedVendorExtensionsTestJsonConverter()); _jsonOptions.Converters.Add(new IsoscelesTriangleJsonConverter()); _jsonOptions.Converters.Add(new ListJsonConverter()); _jsonOptions.Converters.Add(new LiteralStringClassJsonConverter()); diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs new file mode 100644 index 000000000000..53cbb5268a33 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs @@ -0,0 +1,318 @@ +// +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Text; +using System.Text.RegularExpressions; +using System.Text.Json; +using System.Text.Json.Serialization; +using System.ComponentModel.DataAnnotations; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using Org.OpenAPITools.Client; + +namespace Org.OpenAPITools.Model +{ + /// + /// InjectedVendorExtensionsTest + /// + public partial class InjectedVendorExtensionsTest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// potentiallyOverriddenPropertyToInternal + /// potentiallyOverriddenPropertyToPrivate + /// potentiallyOverriddenPropertyToPublic + /// unalteredProperty + [JsonConstructor] + internal InjectedVendorExtensionsTest(Option potentiallyOverriddenPropertyToInternal = default, Option potentiallyOverriddenPropertyToPrivate = default, Option potentiallyOverriddenPropertyToPublic = default, Option unalteredProperty = default) + { + PotentiallyOverriddenPropertyToInternalOption = potentiallyOverriddenPropertyToInternal; + PotentiallyOverriddenPropertyToPrivateOption = potentiallyOverriddenPropertyToPrivate; + PotentiallyOverriddenPropertyToPublicOption = potentiallyOverriddenPropertyToPublic; + UnalteredPropertyOption = unalteredProperty; + OnCreated(); + } + + partial void OnCreated(); + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToInternal + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToInternalOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToInternal + /// + [JsonPropertyName("potentiallyOverriddenPropertyToInternal")] + public string PotentiallyOverriddenPropertyToInternal { get { return this.PotentiallyOverriddenPropertyToInternalOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPrivate + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPrivateOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPrivate + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPrivate")] + public string PotentiallyOverriddenPropertyToPrivate { get { return this.PotentiallyOverriddenPropertyToPrivateOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPublic + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPublicOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPublic + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPublic")] + public string PotentiallyOverriddenPropertyToPublic { get { return this.PotentiallyOverriddenPropertyToPublicOption.Value; } } + + /// + /// Used to track the state of UnalteredProperty + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option UnalteredPropertyOption { get; } + + /// + /// Gets or Sets UnalteredProperty + /// + [JsonPropertyName("unalteredProperty")] + public string UnalteredProperty { get { return this.UnalteredPropertyOption.Value; } } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public Dictionary AdditionalProperties { get; } = new Dictionary(); + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InjectedVendorExtensionsTest {\n"); + sb.Append(" PotentiallyOverriddenPropertyToInternal: ").Append(PotentiallyOverriddenPropertyToInternal).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPrivate: ").Append(PotentiallyOverriddenPropertyToPrivate).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPublic: ").Append(PotentiallyOverriddenPropertyToPublic).Append("\n"); + sb.Append(" UnalteredProperty: ").Append(UnalteredProperty).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as InjectedVendorExtensionsTest).AreEqual; + } + + /// + /// Returns true if InjectedVendorExtensionsTest instances are equal + /// + /// Instance of InjectedVendorExtensionsTest to be compared + /// Boolean + public bool Equals(InjectedVendorExtensionsTest input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (PotentiallyOverriddenPropertyToInternal != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToInternal.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPrivate != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPrivate.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPublic != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPublic.GetHashCode(); + + if (UnalteredProperty != null) + hashCode = (hashCode * 59) + UnalteredProperty.GetHashCode(); + + hashCode = (hashCode * 59) + AdditionalProperties.GetHashCode(); + + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// A Json converter for type + /// + public partial class InjectedVendorExtensionsTestJsonConverter : JsonConverter + { + partial void OnCreated(); + + /// + /// Initializes a new instance of the class. + /// + public InjectedVendorExtensionsTestJsonConverter() + { + OnCreated(); + } + + /// + /// Deserializes json to + /// + /// + /// + /// + /// + /// + public override InjectedVendorExtensionsTest Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions) + { + int currentDepth = utf8JsonReader.CurrentDepth; + + if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) + throw new JsonException(); + + JsonTokenType startingTokenType = utf8JsonReader.TokenType; + + Option potentiallyOverriddenPropertyToInternal = default; + Option potentiallyOverriddenPropertyToPrivate = default; + Option potentiallyOverriddenPropertyToPublic = default; + Option unalteredProperty = default; + + while (utf8JsonReader.Read()) + { + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1) + { + string localVarJsonPropertyName = utf8JsonReader.GetString(); + utf8JsonReader.Read(); + + switch (localVarJsonPropertyName) + { + case "potentiallyOverriddenPropertyToInternal": + potentiallyOverriddenPropertyToInternal = new Option(utf8JsonReader.GetString()); + break; + case "potentiallyOverriddenPropertyToPrivate": + potentiallyOverriddenPropertyToPrivate = new Option(utf8JsonReader.GetString()); + break; + case "potentiallyOverriddenPropertyToPublic": + potentiallyOverriddenPropertyToPublic = new Option(utf8JsonReader.GetString()); + break; + case "unalteredProperty": + unalteredProperty = new Option(utf8JsonReader.GetString()); + break; + default: + break; + } + } + } + + if (potentiallyOverriddenPropertyToInternal.IsSet && potentiallyOverriddenPropertyToInternal.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToInternal), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPrivate.IsSet && potentiallyOverriddenPropertyToPrivate.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPrivate), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPublic.IsSet && potentiallyOverriddenPropertyToPublic.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPublic), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (unalteredProperty.IsSet && unalteredProperty.Value == null) + throw new ArgumentNullException(nameof(unalteredProperty), "Property is not nullable for class InjectedVendorExtensionsTest."); + + return new InjectedVendorExtensionsTest(potentiallyOverriddenPropertyToInternal, potentiallyOverriddenPropertyToPrivate, potentiallyOverriddenPropertyToPublic, unalteredProperty); + } + + /// + /// Serializes a + /// + /// + /// + /// + /// + public override void Write(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + writer.WriteStartObject(); + + WriteProperties(writer, injectedVendorExtensionsTest, jsonSerializerOptions); + writer.WriteEndObject(); + } + + /// + /// Serializes the properties of + /// + /// + /// + /// + /// + public void WriteProperties(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet && injectedVendorExtensionsTest.UnalteredProperty == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.UnalteredProperty), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToInternal", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPrivate", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPublic", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet) + writer.WriteString("unalteredProperty", injectedVendorExtensionsTest.UnalteredProperty); + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/.openapi-generator/FILES b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/.openapi-generator/FILES index 3a66c0df35db..0698a2042def 100644 --- a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/.openapi-generator/FILES +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/.openapi-generator/FILES @@ -53,6 +53,7 @@ docs/models/GmFruit.md docs/models/GrandparentAnimal.md docs/models/HasOnlyReadOnly.md docs/models/HealthCheckResult.md +docs/models/InjectedVendorExtensionsTest.md docs/models/IsoscelesTriangle.md docs/models/List.md docs/models/LiteralStringClass.md @@ -198,6 +199,7 @@ src/Org.OpenAPITools/Model/GmFruit.cs src/Org.OpenAPITools/Model/GrandparentAnimal.cs src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs src/Org.OpenAPITools/Model/IsoscelesTriangle.cs src/Org.OpenAPITools/Model/List.cs src/Org.OpenAPITools/Model/LiteralStringClass.cs diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/api/openapi.yaml b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/api/openapi.yaml index a179b6cfdd29..586178fe4189 100644 --- a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/api/openapi.yaml +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/api/openapi.yaml @@ -1355,6 +1355,21 @@ components: items: $ref: "#/components/schemas/RolesReportsHash" type: array + InjectedVendorExtensionsTest: + properties: + unalteredProperty: + readOnly: true + type: string + potentiallyOverriddenPropertyToPrivate: + readOnly: true + type: string + potentiallyOverriddenPropertyToInternal: + readOnly: true + type: string + potentiallyOverriddenPropertyToPublic: + readOnly: true + type: string + type: object RolesReportsHash: description: Role report Hash example: diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/docs/models/InjectedVendorExtensionsTest.md b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/docs/models/InjectedVendorExtensionsTest.md new file mode 100644 index 000000000000..6e5e74e659a5 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/docs/models/InjectedVendorExtensionsTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.InjectedVendorExtensionsTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**PotentiallyOverriddenPropertyToInternal** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPrivate** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPublic** | **string** | | [optional] [readonly] +**UnalteredProperty** | **string** | | [optional] [readonly] + +[[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/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs new file mode 100644 index 000000000000..19c09e9df56c --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs @@ -0,0 +1,92 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InjectedVendorExtensionsTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InjectedVendorExtensionsTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InjectedVendorExtensionsTest + //private InjectedVendorExtensionsTest instance; + + public InjectedVendorExtensionsTestTests() + { + // TODO uncomment below to create an instance of InjectedVendorExtensionsTest + //instance = new InjectedVendorExtensionsTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InjectedVendorExtensionsTest + /// + [Fact] + public void InjectedVendorExtensionsTestInstanceTest() + { + // TODO uncomment below to test "IsType" InjectedVendorExtensionsTest + //Assert.IsType(instance); + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToInternal' + /// + [Fact] + public void PotentiallyOverriddenPropertyToInternalTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToInternal' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPrivate' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPrivateTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPrivate' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPublic' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPublicTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPublic' + } + + /// + /// Test the property 'UnalteredProperty' + /// + [Fact] + public void UnalteredPropertyTest() + { + // TODO unit test for the property 'UnalteredProperty' + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/HostConfiguration.cs b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/HostConfiguration.cs index 568f84bc3540..83ed5bff9f47 100644 --- a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/HostConfiguration.cs +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Client/HostConfiguration.cs @@ -87,6 +87,7 @@ public HostConfiguration(IServiceCollection services) _jsonOptions.Converters.Add(new GrandparentAnimalJsonConverter()); _jsonOptions.Converters.Add(new HasOnlyReadOnlyJsonConverter()); _jsonOptions.Converters.Add(new HealthCheckResultJsonConverter()); + _jsonOptions.Converters.Add(new InjectedVendorExtensionsTestJsonConverter()); _jsonOptions.Converters.Add(new IsoscelesTriangleJsonConverter()); _jsonOptions.Converters.Add(new ListJsonConverter()); _jsonOptions.Converters.Add(new LiteralStringClassJsonConverter()); @@ -201,6 +202,7 @@ public HostConfiguration(IServiceCollection services) new GrandparentAnimalSerializationContext(), new HasOnlyReadOnlySerializationContext(), new HealthCheckResultSerializationContext(), + new InjectedVendorExtensionsTestSerializationContext(), new IsoscelesTriangleSerializationContext(), new ListSerializationContext(), new LiteralStringClassSerializationContext(), diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs new file mode 100644 index 000000000000..f5f35a6bebc2 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs @@ -0,0 +1,328 @@ +// +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +#nullable enable + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Text; +using System.Text.RegularExpressions; +using System.Text.Json; +using System.Text.Json.Serialization; +using System.ComponentModel.DataAnnotations; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using System.Text.Json.Serialization.Metadata; +using Org.OpenAPITools.Client; + +namespace Org.OpenAPITools.Model +{ + /// + /// InjectedVendorExtensionsTest + /// + public partial class InjectedVendorExtensionsTest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// potentiallyOverriddenPropertyToInternal + /// potentiallyOverriddenPropertyToPrivate + /// potentiallyOverriddenPropertyToPublic + /// unalteredProperty + [JsonConstructor] + internal InjectedVendorExtensionsTest(Option potentiallyOverriddenPropertyToInternal = default, Option potentiallyOverriddenPropertyToPrivate = default, Option potentiallyOverriddenPropertyToPublic = default, Option unalteredProperty = default) + { + PotentiallyOverriddenPropertyToInternalOption = potentiallyOverriddenPropertyToInternal; + PotentiallyOverriddenPropertyToPrivateOption = potentiallyOverriddenPropertyToPrivate; + PotentiallyOverriddenPropertyToPublicOption = potentiallyOverriddenPropertyToPublic; + UnalteredPropertyOption = unalteredProperty; + OnCreated(); + } + + partial void OnCreated(); + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToInternal + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToInternalOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToInternal + /// + [JsonPropertyName("potentiallyOverriddenPropertyToInternal")] + public string? PotentiallyOverriddenPropertyToInternal { get { return this.PotentiallyOverriddenPropertyToInternalOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPrivate + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPrivateOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPrivate + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPrivate")] + public string? PotentiallyOverriddenPropertyToPrivate { get { return this.PotentiallyOverriddenPropertyToPrivateOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPublic + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPublicOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPublic + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPublic")] + public string? PotentiallyOverriddenPropertyToPublic { get { return this.PotentiallyOverriddenPropertyToPublicOption.Value; } } + + /// + /// Used to track the state of UnalteredProperty + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option UnalteredPropertyOption { get; } + + /// + /// Gets or Sets UnalteredProperty + /// + [JsonPropertyName("unalteredProperty")] + public string? UnalteredProperty { get { return this.UnalteredPropertyOption.Value; } } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public Dictionary AdditionalProperties { get; } = new Dictionary(); + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InjectedVendorExtensionsTest {\n"); + sb.Append(" PotentiallyOverriddenPropertyToInternal: ").Append(PotentiallyOverriddenPropertyToInternal).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPrivate: ").Append(PotentiallyOverriddenPropertyToPrivate).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPublic: ").Append(PotentiallyOverriddenPropertyToPublic).Append("\n"); + sb.Append(" UnalteredProperty: ").Append(UnalteredProperty).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object? input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as InjectedVendorExtensionsTest).AreEqual; + } + + /// + /// Returns true if InjectedVendorExtensionsTest instances are equal + /// + /// Instance of InjectedVendorExtensionsTest to be compared + /// Boolean + public bool Equals(InjectedVendorExtensionsTest? input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (PotentiallyOverriddenPropertyToInternal != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToInternal.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPrivate != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPrivate.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPublic != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPublic.GetHashCode(); + + if (UnalteredProperty != null) + hashCode = (hashCode * 59) + UnalteredProperty.GetHashCode(); + + hashCode = (hashCode * 59) + AdditionalProperties.GetHashCode(); + + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// A Json converter for type + /// + public partial class InjectedVendorExtensionsTestJsonConverter : JsonConverter + { + partial void OnCreated(); + + /// + /// Initializes a new instance of the class. + /// + public InjectedVendorExtensionsTestJsonConverter() + { + OnCreated(); + } + + /// + /// Deserializes json to + /// + /// + /// + /// + /// + /// + public override InjectedVendorExtensionsTest Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions) + { + int currentDepth = utf8JsonReader.CurrentDepth; + + if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) + throw new JsonException(); + + JsonTokenType startingTokenType = utf8JsonReader.TokenType; + + Option potentiallyOverriddenPropertyToInternal = default; + Option potentiallyOverriddenPropertyToPrivate = default; + Option potentiallyOverriddenPropertyToPublic = default; + Option unalteredProperty = default; + + while (utf8JsonReader.Read()) + { + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1) + { + string? localVarJsonPropertyName = utf8JsonReader.GetString(); + utf8JsonReader.Read(); + + switch (localVarJsonPropertyName) + { + case "potentiallyOverriddenPropertyToInternal": + potentiallyOverriddenPropertyToInternal = new Option(utf8JsonReader.GetString()!); + break; + case "potentiallyOverriddenPropertyToPrivate": + potentiallyOverriddenPropertyToPrivate = new Option(utf8JsonReader.GetString()!); + break; + case "potentiallyOverriddenPropertyToPublic": + potentiallyOverriddenPropertyToPublic = new Option(utf8JsonReader.GetString()!); + break; + case "unalteredProperty": + unalteredProperty = new Option(utf8JsonReader.GetString()!); + break; + default: + break; + } + } + } + + if (potentiallyOverriddenPropertyToInternal.IsSet && potentiallyOverriddenPropertyToInternal.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToInternal), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPrivate.IsSet && potentiallyOverriddenPropertyToPrivate.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPrivate), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPublic.IsSet && potentiallyOverriddenPropertyToPublic.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPublic), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (unalteredProperty.IsSet && unalteredProperty.Value == null) + throw new ArgumentNullException(nameof(unalteredProperty), "Property is not nullable for class InjectedVendorExtensionsTest."); + + return new InjectedVendorExtensionsTest(potentiallyOverriddenPropertyToInternal, potentiallyOverriddenPropertyToPrivate, potentiallyOverriddenPropertyToPublic, unalteredProperty); + } + + /// + /// Serializes a + /// + /// + /// + /// + /// + public override void Write(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + writer.WriteStartObject(); + + WriteProperties(writer, injectedVendorExtensionsTest, jsonSerializerOptions); + writer.WriteEndObject(); + } + + /// + /// Serializes the properties of + /// + /// + /// + /// + /// + public void WriteProperties(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet && injectedVendorExtensionsTest.UnalteredProperty == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.UnalteredProperty), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToInternal", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPrivate", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPublic", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet) + writer.WriteString("unalteredProperty", injectedVendorExtensionsTest.UnalteredProperty); + } + } + + /// + /// The InjectedVendorExtensionsTestSerializationContext + /// + [JsonSourceGenerationOptions(WriteIndented = true, GenerationMode = JsonSourceGenerationMode.Metadata | JsonSourceGenerationMode.Serialization)] + [JsonSerializable(typeof(InjectedVendorExtensionsTest))] + public partial class InjectedVendorExtensionsTestSerializationContext : JsonSerializerContext { } +} diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/.openapi-generator/FILES b/samples/client/petstore/csharp/generichost/net9/FormModels/.openapi-generator/FILES index fd2691eb4794..b3b6081185ca 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/.openapi-generator/FILES +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/.openapi-generator/FILES @@ -61,6 +61,7 @@ docs/models/GmFruit.md docs/models/GrandparentAnimal.md docs/models/HasOnlyReadOnly.md docs/models/HealthCheckResult.md +docs/models/InjectedVendorExtensionsTest.md docs/models/IsoscelesTriangle.md docs/models/List.md docs/models/LiteralStringClass.md @@ -231,6 +232,7 @@ src/Org.OpenAPITools/Model/GmFruit.cs src/Org.OpenAPITools/Model/GrandparentAnimal.cs src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs src/Org.OpenAPITools/Model/IsoscelesTriangle.cs src/Org.OpenAPITools/Model/List.cs src/Org.OpenAPITools/Model/LiteralStringClass.cs diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/api/openapi.yaml b/samples/client/petstore/csharp/generichost/net9/FormModels/api/openapi.yaml index 6dae7b5ccbd3..7ba3a76f8f16 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/api/openapi.yaml +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/api/openapi.yaml @@ -1324,6 +1324,21 @@ components: items: $ref: "#/components/schemas/RolesReportsHash" type: array + InjectedVendorExtensionsTest: + properties: + unalteredProperty: + readOnly: true + type: string + potentiallyOverriddenPropertyToPrivate: + readOnly: true + type: string + potentiallyOverriddenPropertyToInternal: + readOnly: true + type: string + potentiallyOverriddenPropertyToPublic: + readOnly: true + type: string + type: object RolesReportsHash: description: Role report Hash example: diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/docs/models/InjectedVendorExtensionsTest.md b/samples/client/petstore/csharp/generichost/net9/FormModels/docs/models/InjectedVendorExtensionsTest.md new file mode 100644 index 000000000000..6e5e74e659a5 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/docs/models/InjectedVendorExtensionsTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.InjectedVendorExtensionsTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**PotentiallyOverriddenPropertyToInternal** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPrivate** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPublic** | **string** | | [optional] [readonly] +**UnalteredProperty** | **string** | | [optional] [readonly] + +[[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/csharp/generichost/net9/FormModels/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs new file mode 100644 index 000000000000..19c09e9df56c --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs @@ -0,0 +1,92 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InjectedVendorExtensionsTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InjectedVendorExtensionsTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InjectedVendorExtensionsTest + //private InjectedVendorExtensionsTest instance; + + public InjectedVendorExtensionsTestTests() + { + // TODO uncomment below to create an instance of InjectedVendorExtensionsTest + //instance = new InjectedVendorExtensionsTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InjectedVendorExtensionsTest + /// + [Fact] + public void InjectedVendorExtensionsTestInstanceTest() + { + // TODO uncomment below to test "IsType" InjectedVendorExtensionsTest + //Assert.IsType(instance); + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToInternal' + /// + [Fact] + public void PotentiallyOverriddenPropertyToInternalTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToInternal' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPrivate' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPrivateTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPrivate' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPublic' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPublicTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPublic' + } + + /// + /// Test the property 'UnalteredProperty' + /// + [Fact] + public void UnalteredPropertyTest() + { + // TODO unit test for the property 'UnalteredProperty' + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/HostConfiguration.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/HostConfiguration.cs index 5c409ac9f5ba..4ddab463d26a 100644 --- a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/HostConfiguration.cs +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Client/HostConfiguration.cs @@ -101,6 +101,7 @@ public HostConfiguration(IServiceCollection services) _jsonOptions.Converters.Add(new GrandparentAnimalJsonConverter()); _jsonOptions.Converters.Add(new HasOnlyReadOnlyJsonConverter()); _jsonOptions.Converters.Add(new HealthCheckResultJsonConverter()); + _jsonOptions.Converters.Add(new InjectedVendorExtensionsTestJsonConverter()); _jsonOptions.Converters.Add(new IsoscelesTriangleJsonConverter()); _jsonOptions.Converters.Add(new ListJsonConverter()); _jsonOptions.Converters.Add(new LiteralStringClassJsonConverter()); diff --git a/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs new file mode 100644 index 000000000000..53cbb5268a33 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net9/FormModels/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs @@ -0,0 +1,318 @@ +// +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Text; +using System.Text.RegularExpressions; +using System.Text.Json; +using System.Text.Json.Serialization; +using System.ComponentModel.DataAnnotations; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using Org.OpenAPITools.Client; + +namespace Org.OpenAPITools.Model +{ + /// + /// InjectedVendorExtensionsTest + /// + public partial class InjectedVendorExtensionsTest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// potentiallyOverriddenPropertyToInternal + /// potentiallyOverriddenPropertyToPrivate + /// potentiallyOverriddenPropertyToPublic + /// unalteredProperty + [JsonConstructor] + internal InjectedVendorExtensionsTest(Option potentiallyOverriddenPropertyToInternal = default, Option potentiallyOverriddenPropertyToPrivate = default, Option potentiallyOverriddenPropertyToPublic = default, Option unalteredProperty = default) + { + PotentiallyOverriddenPropertyToInternalOption = potentiallyOverriddenPropertyToInternal; + PotentiallyOverriddenPropertyToPrivateOption = potentiallyOverriddenPropertyToPrivate; + PotentiallyOverriddenPropertyToPublicOption = potentiallyOverriddenPropertyToPublic; + UnalteredPropertyOption = unalteredProperty; + OnCreated(); + } + + partial void OnCreated(); + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToInternal + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToInternalOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToInternal + /// + [JsonPropertyName("potentiallyOverriddenPropertyToInternal")] + public string PotentiallyOverriddenPropertyToInternal { get { return this.PotentiallyOverriddenPropertyToInternalOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPrivate + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPrivateOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPrivate + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPrivate")] + public string PotentiallyOverriddenPropertyToPrivate { get { return this.PotentiallyOverriddenPropertyToPrivateOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPublic + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPublicOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPublic + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPublic")] + public string PotentiallyOverriddenPropertyToPublic { get { return this.PotentiallyOverriddenPropertyToPublicOption.Value; } } + + /// + /// Used to track the state of UnalteredProperty + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option UnalteredPropertyOption { get; } + + /// + /// Gets or Sets UnalteredProperty + /// + [JsonPropertyName("unalteredProperty")] + public string UnalteredProperty { get { return this.UnalteredPropertyOption.Value; } } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public Dictionary AdditionalProperties { get; } = new Dictionary(); + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InjectedVendorExtensionsTest {\n"); + sb.Append(" PotentiallyOverriddenPropertyToInternal: ").Append(PotentiallyOverriddenPropertyToInternal).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPrivate: ").Append(PotentiallyOverriddenPropertyToPrivate).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPublic: ").Append(PotentiallyOverriddenPropertyToPublic).Append("\n"); + sb.Append(" UnalteredProperty: ").Append(UnalteredProperty).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as InjectedVendorExtensionsTest).AreEqual; + } + + /// + /// Returns true if InjectedVendorExtensionsTest instances are equal + /// + /// Instance of InjectedVendorExtensionsTest to be compared + /// Boolean + public bool Equals(InjectedVendorExtensionsTest input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (PotentiallyOverriddenPropertyToInternal != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToInternal.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPrivate != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPrivate.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPublic != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPublic.GetHashCode(); + + if (UnalteredProperty != null) + hashCode = (hashCode * 59) + UnalteredProperty.GetHashCode(); + + hashCode = (hashCode * 59) + AdditionalProperties.GetHashCode(); + + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// A Json converter for type + /// + public partial class InjectedVendorExtensionsTestJsonConverter : JsonConverter + { + partial void OnCreated(); + + /// + /// Initializes a new instance of the class. + /// + public InjectedVendorExtensionsTestJsonConverter() + { + OnCreated(); + } + + /// + /// Deserializes json to + /// + /// + /// + /// + /// + /// + public override InjectedVendorExtensionsTest Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions) + { + int currentDepth = utf8JsonReader.CurrentDepth; + + if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) + throw new JsonException(); + + JsonTokenType startingTokenType = utf8JsonReader.TokenType; + + Option potentiallyOverriddenPropertyToInternal = default; + Option potentiallyOverriddenPropertyToPrivate = default; + Option potentiallyOverriddenPropertyToPublic = default; + Option unalteredProperty = default; + + while (utf8JsonReader.Read()) + { + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1) + { + string localVarJsonPropertyName = utf8JsonReader.GetString(); + utf8JsonReader.Read(); + + switch (localVarJsonPropertyName) + { + case "potentiallyOverriddenPropertyToInternal": + potentiallyOverriddenPropertyToInternal = new Option(utf8JsonReader.GetString()); + break; + case "potentiallyOverriddenPropertyToPrivate": + potentiallyOverriddenPropertyToPrivate = new Option(utf8JsonReader.GetString()); + break; + case "potentiallyOverriddenPropertyToPublic": + potentiallyOverriddenPropertyToPublic = new Option(utf8JsonReader.GetString()); + break; + case "unalteredProperty": + unalteredProperty = new Option(utf8JsonReader.GetString()); + break; + default: + break; + } + } + } + + if (potentiallyOverriddenPropertyToInternal.IsSet && potentiallyOverriddenPropertyToInternal.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToInternal), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPrivate.IsSet && potentiallyOverriddenPropertyToPrivate.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPrivate), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPublic.IsSet && potentiallyOverriddenPropertyToPublic.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPublic), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (unalteredProperty.IsSet && unalteredProperty.Value == null) + throw new ArgumentNullException(nameof(unalteredProperty), "Property is not nullable for class InjectedVendorExtensionsTest."); + + return new InjectedVendorExtensionsTest(potentiallyOverriddenPropertyToInternal, potentiallyOverriddenPropertyToPrivate, potentiallyOverriddenPropertyToPublic, unalteredProperty); + } + + /// + /// Serializes a + /// + /// + /// + /// + /// + public override void Write(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + writer.WriteStartObject(); + + WriteProperties(writer, injectedVendorExtensionsTest, jsonSerializerOptions); + writer.WriteEndObject(); + } + + /// + /// Serializes the properties of + /// + /// + /// + /// + /// + public void WriteProperties(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet && injectedVendorExtensionsTest.UnalteredProperty == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.UnalteredProperty), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToInternal", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPrivate", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPublic", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet) + writer.WriteString("unalteredProperty", injectedVendorExtensionsTest.UnalteredProperty); + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/.openapi-generator/FILES b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/.openapi-generator/FILES index 3a66c0df35db..0698a2042def 100644 --- a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/.openapi-generator/FILES +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/.openapi-generator/FILES @@ -53,6 +53,7 @@ docs/models/GmFruit.md docs/models/GrandparentAnimal.md docs/models/HasOnlyReadOnly.md docs/models/HealthCheckResult.md +docs/models/InjectedVendorExtensionsTest.md docs/models/IsoscelesTriangle.md docs/models/List.md docs/models/LiteralStringClass.md @@ -198,6 +199,7 @@ src/Org.OpenAPITools/Model/GmFruit.cs src/Org.OpenAPITools/Model/GrandparentAnimal.cs src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs src/Org.OpenAPITools/Model/IsoscelesTriangle.cs src/Org.OpenAPITools/Model/List.cs src/Org.OpenAPITools/Model/LiteralStringClass.cs diff --git a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/api/openapi.yaml b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/api/openapi.yaml index a179b6cfdd29..586178fe4189 100644 --- a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/api/openapi.yaml +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/api/openapi.yaml @@ -1355,6 +1355,21 @@ components: items: $ref: "#/components/schemas/RolesReportsHash" type: array + InjectedVendorExtensionsTest: + properties: + unalteredProperty: + readOnly: true + type: string + potentiallyOverriddenPropertyToPrivate: + readOnly: true + type: string + potentiallyOverriddenPropertyToInternal: + readOnly: true + type: string + potentiallyOverriddenPropertyToPublic: + readOnly: true + type: string + type: object RolesReportsHash: description: Role report Hash example: diff --git a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/docs/models/InjectedVendorExtensionsTest.md b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/docs/models/InjectedVendorExtensionsTest.md new file mode 100644 index 000000000000..6e5e74e659a5 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/docs/models/InjectedVendorExtensionsTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.InjectedVendorExtensionsTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**PotentiallyOverriddenPropertyToInternal** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPrivate** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPublic** | **string** | | [optional] [readonly] +**UnalteredProperty** | **string** | | [optional] [readonly] + +[[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/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs new file mode 100644 index 000000000000..19c09e9df56c --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs @@ -0,0 +1,92 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InjectedVendorExtensionsTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InjectedVendorExtensionsTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InjectedVendorExtensionsTest + //private InjectedVendorExtensionsTest instance; + + public InjectedVendorExtensionsTestTests() + { + // TODO uncomment below to create an instance of InjectedVendorExtensionsTest + //instance = new InjectedVendorExtensionsTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InjectedVendorExtensionsTest + /// + [Fact] + public void InjectedVendorExtensionsTestInstanceTest() + { + // TODO uncomment below to test "IsType" InjectedVendorExtensionsTest + //Assert.IsType(instance); + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToInternal' + /// + [Fact] + public void PotentiallyOverriddenPropertyToInternalTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToInternal' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPrivate' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPrivateTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPrivate' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPublic' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPublicTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPublic' + } + + /// + /// Test the property 'UnalteredProperty' + /// + [Fact] + public void UnalteredPropertyTest() + { + // TODO unit test for the property 'UnalteredProperty' + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/HostConfiguration.cs b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/HostConfiguration.cs index a86b16b05f28..ca8d0743deab 100644 --- a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/HostConfiguration.cs +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Client/HostConfiguration.cs @@ -87,6 +87,7 @@ public HostConfiguration(IServiceCollection services) _jsonOptions.Converters.Add(new GrandparentAnimalJsonConverter()); _jsonOptions.Converters.Add(new HasOnlyReadOnlyJsonConverter()); _jsonOptions.Converters.Add(new HealthCheckResultJsonConverter()); + _jsonOptions.Converters.Add(new InjectedVendorExtensionsTestJsonConverter()); _jsonOptions.Converters.Add(new IsoscelesTriangleJsonConverter()); _jsonOptions.Converters.Add(new ListJsonConverter()); _jsonOptions.Converters.Add(new LiteralStringClassJsonConverter()); diff --git a/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs new file mode 100644 index 000000000000..c533776fdbcc --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net9/NullReferenceTypes/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs @@ -0,0 +1,320 @@ +// +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +#nullable enable + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Text; +using System.Text.RegularExpressions; +using System.Text.Json; +using System.Text.Json.Serialization; +using System.ComponentModel.DataAnnotations; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using Org.OpenAPITools.Client; + +namespace Org.OpenAPITools.Model +{ + /// + /// InjectedVendorExtensionsTest + /// + public partial class InjectedVendorExtensionsTest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// potentiallyOverriddenPropertyToInternal + /// potentiallyOverriddenPropertyToPrivate + /// potentiallyOverriddenPropertyToPublic + /// unalteredProperty + [JsonConstructor] + internal InjectedVendorExtensionsTest(Option potentiallyOverriddenPropertyToInternal = default, Option potentiallyOverriddenPropertyToPrivate = default, Option potentiallyOverriddenPropertyToPublic = default, Option unalteredProperty = default) + { + PotentiallyOverriddenPropertyToInternalOption = potentiallyOverriddenPropertyToInternal; + PotentiallyOverriddenPropertyToPrivateOption = potentiallyOverriddenPropertyToPrivate; + PotentiallyOverriddenPropertyToPublicOption = potentiallyOverriddenPropertyToPublic; + UnalteredPropertyOption = unalteredProperty; + OnCreated(); + } + + partial void OnCreated(); + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToInternal + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToInternalOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToInternal + /// + [JsonPropertyName("potentiallyOverriddenPropertyToInternal")] + public string? PotentiallyOverriddenPropertyToInternal { get { return this.PotentiallyOverriddenPropertyToInternalOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPrivate + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPrivateOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPrivate + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPrivate")] + public string? PotentiallyOverriddenPropertyToPrivate { get { return this.PotentiallyOverriddenPropertyToPrivateOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPublic + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPublicOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPublic + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPublic")] + public string? PotentiallyOverriddenPropertyToPublic { get { return this.PotentiallyOverriddenPropertyToPublicOption.Value; } } + + /// + /// Used to track the state of UnalteredProperty + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option UnalteredPropertyOption { get; } + + /// + /// Gets or Sets UnalteredProperty + /// + [JsonPropertyName("unalteredProperty")] + public string? UnalteredProperty { get { return this.UnalteredPropertyOption.Value; } } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public Dictionary AdditionalProperties { get; } = new Dictionary(); + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InjectedVendorExtensionsTest {\n"); + sb.Append(" PotentiallyOverriddenPropertyToInternal: ").Append(PotentiallyOverriddenPropertyToInternal).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPrivate: ").Append(PotentiallyOverriddenPropertyToPrivate).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPublic: ").Append(PotentiallyOverriddenPropertyToPublic).Append("\n"); + sb.Append(" UnalteredProperty: ").Append(UnalteredProperty).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object? input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as InjectedVendorExtensionsTest).AreEqual; + } + + /// + /// Returns true if InjectedVendorExtensionsTest instances are equal + /// + /// Instance of InjectedVendorExtensionsTest to be compared + /// Boolean + public bool Equals(InjectedVendorExtensionsTest? input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (PotentiallyOverriddenPropertyToInternal != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToInternal.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPrivate != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPrivate.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPublic != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPublic.GetHashCode(); + + if (UnalteredProperty != null) + hashCode = (hashCode * 59) + UnalteredProperty.GetHashCode(); + + hashCode = (hashCode * 59) + AdditionalProperties.GetHashCode(); + + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// A Json converter for type + /// + public partial class InjectedVendorExtensionsTestJsonConverter : JsonConverter + { + partial void OnCreated(); + + /// + /// Initializes a new instance of the class. + /// + public InjectedVendorExtensionsTestJsonConverter() + { + OnCreated(); + } + + /// + /// Deserializes json to + /// + /// + /// + /// + /// + /// + public override InjectedVendorExtensionsTest Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions) + { + int currentDepth = utf8JsonReader.CurrentDepth; + + if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) + throw new JsonException(); + + JsonTokenType startingTokenType = utf8JsonReader.TokenType; + + Option potentiallyOverriddenPropertyToInternal = default; + Option potentiallyOverriddenPropertyToPrivate = default; + Option potentiallyOverriddenPropertyToPublic = default; + Option unalteredProperty = default; + + while (utf8JsonReader.Read()) + { + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1) + { + string? localVarJsonPropertyName = utf8JsonReader.GetString(); + utf8JsonReader.Read(); + + switch (localVarJsonPropertyName) + { + case "potentiallyOverriddenPropertyToInternal": + potentiallyOverriddenPropertyToInternal = new Option(utf8JsonReader.GetString()!); + break; + case "potentiallyOverriddenPropertyToPrivate": + potentiallyOverriddenPropertyToPrivate = new Option(utf8JsonReader.GetString()!); + break; + case "potentiallyOverriddenPropertyToPublic": + potentiallyOverriddenPropertyToPublic = new Option(utf8JsonReader.GetString()!); + break; + case "unalteredProperty": + unalteredProperty = new Option(utf8JsonReader.GetString()!); + break; + default: + break; + } + } + } + + if (potentiallyOverriddenPropertyToInternal.IsSet && potentiallyOverriddenPropertyToInternal.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToInternal), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPrivate.IsSet && potentiallyOverriddenPropertyToPrivate.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPrivate), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPublic.IsSet && potentiallyOverriddenPropertyToPublic.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPublic), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (unalteredProperty.IsSet && unalteredProperty.Value == null) + throw new ArgumentNullException(nameof(unalteredProperty), "Property is not nullable for class InjectedVendorExtensionsTest."); + + return new InjectedVendorExtensionsTest(potentiallyOverriddenPropertyToInternal, potentiallyOverriddenPropertyToPrivate, potentiallyOverriddenPropertyToPublic, unalteredProperty); + } + + /// + /// Serializes a + /// + /// + /// + /// + /// + public override void Write(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + writer.WriteStartObject(); + + WriteProperties(writer, injectedVendorExtensionsTest, jsonSerializerOptions); + writer.WriteEndObject(); + } + + /// + /// Serializes the properties of + /// + /// + /// + /// + /// + public void WriteProperties(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet && injectedVendorExtensionsTest.UnalteredProperty == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.UnalteredProperty), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToInternal", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPrivate", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPublic", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet) + writer.WriteString("unalteredProperty", injectedVendorExtensionsTest.UnalteredProperty); + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net9/Petstore/.openapi-generator/FILES b/samples/client/petstore/csharp/generichost/net9/Petstore/.openapi-generator/FILES index 3a66c0df35db..0698a2042def 100644 --- a/samples/client/petstore/csharp/generichost/net9/Petstore/.openapi-generator/FILES +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/.openapi-generator/FILES @@ -53,6 +53,7 @@ docs/models/GmFruit.md docs/models/GrandparentAnimal.md docs/models/HasOnlyReadOnly.md docs/models/HealthCheckResult.md +docs/models/InjectedVendorExtensionsTest.md docs/models/IsoscelesTriangle.md docs/models/List.md docs/models/LiteralStringClass.md @@ -198,6 +199,7 @@ src/Org.OpenAPITools/Model/GmFruit.cs src/Org.OpenAPITools/Model/GrandparentAnimal.cs src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs src/Org.OpenAPITools/Model/IsoscelesTriangle.cs src/Org.OpenAPITools/Model/List.cs src/Org.OpenAPITools/Model/LiteralStringClass.cs diff --git a/samples/client/petstore/csharp/generichost/net9/Petstore/api/openapi.yaml b/samples/client/petstore/csharp/generichost/net9/Petstore/api/openapi.yaml index a179b6cfdd29..586178fe4189 100644 --- a/samples/client/petstore/csharp/generichost/net9/Petstore/api/openapi.yaml +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/api/openapi.yaml @@ -1355,6 +1355,21 @@ components: items: $ref: "#/components/schemas/RolesReportsHash" type: array + InjectedVendorExtensionsTest: + properties: + unalteredProperty: + readOnly: true + type: string + potentiallyOverriddenPropertyToPrivate: + readOnly: true + type: string + potentiallyOverriddenPropertyToInternal: + readOnly: true + type: string + potentiallyOverriddenPropertyToPublic: + readOnly: true + type: string + type: object RolesReportsHash: description: Role report Hash example: diff --git a/samples/client/petstore/csharp/generichost/net9/Petstore/docs/models/InjectedVendorExtensionsTest.md b/samples/client/petstore/csharp/generichost/net9/Petstore/docs/models/InjectedVendorExtensionsTest.md new file mode 100644 index 000000000000..6e5e74e659a5 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/docs/models/InjectedVendorExtensionsTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.InjectedVendorExtensionsTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**PotentiallyOverriddenPropertyToInternal** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPrivate** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPublic** | **string** | | [optional] [readonly] +**UnalteredProperty** | **string** | | [optional] [readonly] + +[[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/csharp/generichost/net9/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs new file mode 100644 index 000000000000..19c09e9df56c --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs @@ -0,0 +1,92 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InjectedVendorExtensionsTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InjectedVendorExtensionsTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InjectedVendorExtensionsTest + //private InjectedVendorExtensionsTest instance; + + public InjectedVendorExtensionsTestTests() + { + // TODO uncomment below to create an instance of InjectedVendorExtensionsTest + //instance = new InjectedVendorExtensionsTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InjectedVendorExtensionsTest + /// + [Fact] + public void InjectedVendorExtensionsTestInstanceTest() + { + // TODO uncomment below to test "IsType" InjectedVendorExtensionsTest + //Assert.IsType(instance); + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToInternal' + /// + [Fact] + public void PotentiallyOverriddenPropertyToInternalTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToInternal' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPrivate' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPrivateTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPrivate' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPublic' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPublicTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPublic' + } + + /// + /// Test the property 'UnalteredProperty' + /// + [Fact] + public void UnalteredPropertyTest() + { + // TODO unit test for the property 'UnalteredProperty' + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/HostConfiguration.cs b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/HostConfiguration.cs index d52b54c46d14..178446aee993 100644 --- a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/HostConfiguration.cs +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Client/HostConfiguration.cs @@ -85,6 +85,7 @@ public HostConfiguration(IServiceCollection services) _jsonOptions.Converters.Add(new GrandparentAnimalJsonConverter()); _jsonOptions.Converters.Add(new HasOnlyReadOnlyJsonConverter()); _jsonOptions.Converters.Add(new HealthCheckResultJsonConverter()); + _jsonOptions.Converters.Add(new InjectedVendorExtensionsTestJsonConverter()); _jsonOptions.Converters.Add(new IsoscelesTriangleJsonConverter()); _jsonOptions.Converters.Add(new ListJsonConverter()); _jsonOptions.Converters.Add(new LiteralStringClassJsonConverter()); diff --git a/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs new file mode 100644 index 000000000000..53cbb5268a33 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net9/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs @@ -0,0 +1,318 @@ +// +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Text; +using System.Text.RegularExpressions; +using System.Text.Json; +using System.Text.Json.Serialization; +using System.ComponentModel.DataAnnotations; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using Org.OpenAPITools.Client; + +namespace Org.OpenAPITools.Model +{ + /// + /// InjectedVendorExtensionsTest + /// + public partial class InjectedVendorExtensionsTest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// potentiallyOverriddenPropertyToInternal + /// potentiallyOverriddenPropertyToPrivate + /// potentiallyOverriddenPropertyToPublic + /// unalteredProperty + [JsonConstructor] + internal InjectedVendorExtensionsTest(Option potentiallyOverriddenPropertyToInternal = default, Option potentiallyOverriddenPropertyToPrivate = default, Option potentiallyOverriddenPropertyToPublic = default, Option unalteredProperty = default) + { + PotentiallyOverriddenPropertyToInternalOption = potentiallyOverriddenPropertyToInternal; + PotentiallyOverriddenPropertyToPrivateOption = potentiallyOverriddenPropertyToPrivate; + PotentiallyOverriddenPropertyToPublicOption = potentiallyOverriddenPropertyToPublic; + UnalteredPropertyOption = unalteredProperty; + OnCreated(); + } + + partial void OnCreated(); + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToInternal + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToInternalOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToInternal + /// + [JsonPropertyName("potentiallyOverriddenPropertyToInternal")] + public string PotentiallyOverriddenPropertyToInternal { get { return this.PotentiallyOverriddenPropertyToInternalOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPrivate + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPrivateOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPrivate + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPrivate")] + public string PotentiallyOverriddenPropertyToPrivate { get { return this.PotentiallyOverriddenPropertyToPrivateOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPublic + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPublicOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPublic + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPublic")] + public string PotentiallyOverriddenPropertyToPublic { get { return this.PotentiallyOverriddenPropertyToPublicOption.Value; } } + + /// + /// Used to track the state of UnalteredProperty + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option UnalteredPropertyOption { get; } + + /// + /// Gets or Sets UnalteredProperty + /// + [JsonPropertyName("unalteredProperty")] + public string UnalteredProperty { get { return this.UnalteredPropertyOption.Value; } } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public Dictionary AdditionalProperties { get; } = new Dictionary(); + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InjectedVendorExtensionsTest {\n"); + sb.Append(" PotentiallyOverriddenPropertyToInternal: ").Append(PotentiallyOverriddenPropertyToInternal).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPrivate: ").Append(PotentiallyOverriddenPropertyToPrivate).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPublic: ").Append(PotentiallyOverriddenPropertyToPublic).Append("\n"); + sb.Append(" UnalteredProperty: ").Append(UnalteredProperty).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as InjectedVendorExtensionsTest).AreEqual; + } + + /// + /// Returns true if InjectedVendorExtensionsTest instances are equal + /// + /// Instance of InjectedVendorExtensionsTest to be compared + /// Boolean + public bool Equals(InjectedVendorExtensionsTest input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (PotentiallyOverriddenPropertyToInternal != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToInternal.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPrivate != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPrivate.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPublic != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPublic.GetHashCode(); + + if (UnalteredProperty != null) + hashCode = (hashCode * 59) + UnalteredProperty.GetHashCode(); + + hashCode = (hashCode * 59) + AdditionalProperties.GetHashCode(); + + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// A Json converter for type + /// + public partial class InjectedVendorExtensionsTestJsonConverter : JsonConverter + { + partial void OnCreated(); + + /// + /// Initializes a new instance of the class. + /// + public InjectedVendorExtensionsTestJsonConverter() + { + OnCreated(); + } + + /// + /// Deserializes json to + /// + /// + /// + /// + /// + /// + public override InjectedVendorExtensionsTest Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions) + { + int currentDepth = utf8JsonReader.CurrentDepth; + + if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) + throw new JsonException(); + + JsonTokenType startingTokenType = utf8JsonReader.TokenType; + + Option potentiallyOverriddenPropertyToInternal = default; + Option potentiallyOverriddenPropertyToPrivate = default; + Option potentiallyOverriddenPropertyToPublic = default; + Option unalteredProperty = default; + + while (utf8JsonReader.Read()) + { + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1) + { + string localVarJsonPropertyName = utf8JsonReader.GetString(); + utf8JsonReader.Read(); + + switch (localVarJsonPropertyName) + { + case "potentiallyOverriddenPropertyToInternal": + potentiallyOverriddenPropertyToInternal = new Option(utf8JsonReader.GetString()); + break; + case "potentiallyOverriddenPropertyToPrivate": + potentiallyOverriddenPropertyToPrivate = new Option(utf8JsonReader.GetString()); + break; + case "potentiallyOverriddenPropertyToPublic": + potentiallyOverriddenPropertyToPublic = new Option(utf8JsonReader.GetString()); + break; + case "unalteredProperty": + unalteredProperty = new Option(utf8JsonReader.GetString()); + break; + default: + break; + } + } + } + + if (potentiallyOverriddenPropertyToInternal.IsSet && potentiallyOverriddenPropertyToInternal.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToInternal), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPrivate.IsSet && potentiallyOverriddenPropertyToPrivate.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPrivate), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPublic.IsSet && potentiallyOverriddenPropertyToPublic.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPublic), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (unalteredProperty.IsSet && unalteredProperty.Value == null) + throw new ArgumentNullException(nameof(unalteredProperty), "Property is not nullable for class InjectedVendorExtensionsTest."); + + return new InjectedVendorExtensionsTest(potentiallyOverriddenPropertyToInternal, potentiallyOverriddenPropertyToPrivate, potentiallyOverriddenPropertyToPublic, unalteredProperty); + } + + /// + /// Serializes a + /// + /// + /// + /// + /// + public override void Write(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + writer.WriteStartObject(); + + WriteProperties(writer, injectedVendorExtensionsTest, jsonSerializerOptions); + writer.WriteEndObject(); + } + + /// + /// Serializes the properties of + /// + /// + /// + /// + /// + public void WriteProperties(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet && injectedVendorExtensionsTest.UnalteredProperty == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.UnalteredProperty), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToInternal", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPrivate", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPublic", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet) + writer.WriteString("unalteredProperty", injectedVendorExtensionsTest.UnalteredProperty); + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/.openapi-generator/FILES b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/.openapi-generator/FILES index 3a66c0df35db..0698a2042def 100644 --- a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/.openapi-generator/FILES +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/.openapi-generator/FILES @@ -53,6 +53,7 @@ docs/models/GmFruit.md docs/models/GrandparentAnimal.md docs/models/HasOnlyReadOnly.md docs/models/HealthCheckResult.md +docs/models/InjectedVendorExtensionsTest.md docs/models/IsoscelesTriangle.md docs/models/List.md docs/models/LiteralStringClass.md @@ -198,6 +199,7 @@ src/Org.OpenAPITools/Model/GmFruit.cs src/Org.OpenAPITools/Model/GrandparentAnimal.cs src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs src/Org.OpenAPITools/Model/IsoscelesTriangle.cs src/Org.OpenAPITools/Model/List.cs src/Org.OpenAPITools/Model/LiteralStringClass.cs diff --git a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/api/openapi.yaml b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/api/openapi.yaml index a179b6cfdd29..586178fe4189 100644 --- a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/api/openapi.yaml +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/api/openapi.yaml @@ -1355,6 +1355,21 @@ components: items: $ref: "#/components/schemas/RolesReportsHash" type: array + InjectedVendorExtensionsTest: + properties: + unalteredProperty: + readOnly: true + type: string + potentiallyOverriddenPropertyToPrivate: + readOnly: true + type: string + potentiallyOverriddenPropertyToInternal: + readOnly: true + type: string + potentiallyOverriddenPropertyToPublic: + readOnly: true + type: string + type: object RolesReportsHash: description: Role report Hash example: diff --git a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/docs/models/InjectedVendorExtensionsTest.md b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/docs/models/InjectedVendorExtensionsTest.md new file mode 100644 index 000000000000..6e5e74e659a5 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/docs/models/InjectedVendorExtensionsTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.InjectedVendorExtensionsTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**PotentiallyOverriddenPropertyToInternal** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPrivate** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPublic** | **string** | | [optional] [readonly] +**UnalteredProperty** | **string** | | [optional] [readonly] + +[[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/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs new file mode 100644 index 000000000000..19c09e9df56c --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs @@ -0,0 +1,92 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InjectedVendorExtensionsTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InjectedVendorExtensionsTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InjectedVendorExtensionsTest + //private InjectedVendorExtensionsTest instance; + + public InjectedVendorExtensionsTestTests() + { + // TODO uncomment below to create an instance of InjectedVendorExtensionsTest + //instance = new InjectedVendorExtensionsTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InjectedVendorExtensionsTest + /// + [Fact] + public void InjectedVendorExtensionsTestInstanceTest() + { + // TODO uncomment below to test "IsType" InjectedVendorExtensionsTest + //Assert.IsType(instance); + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToInternal' + /// + [Fact] + public void PotentiallyOverriddenPropertyToInternalTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToInternal' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPrivate' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPrivateTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPrivate' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPublic' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPublicTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPublic' + } + + /// + /// Test the property 'UnalteredProperty' + /// + [Fact] + public void UnalteredPropertyTest() + { + // TODO unit test for the property 'UnalteredProperty' + } + } +} diff --git a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/HostConfiguration.cs b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/HostConfiguration.cs index 568f84bc3540..83ed5bff9f47 100644 --- a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/HostConfiguration.cs +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Client/HostConfiguration.cs @@ -87,6 +87,7 @@ public HostConfiguration(IServiceCollection services) _jsonOptions.Converters.Add(new GrandparentAnimalJsonConverter()); _jsonOptions.Converters.Add(new HasOnlyReadOnlyJsonConverter()); _jsonOptions.Converters.Add(new HealthCheckResultJsonConverter()); + _jsonOptions.Converters.Add(new InjectedVendorExtensionsTestJsonConverter()); _jsonOptions.Converters.Add(new IsoscelesTriangleJsonConverter()); _jsonOptions.Converters.Add(new ListJsonConverter()); _jsonOptions.Converters.Add(new LiteralStringClassJsonConverter()); @@ -201,6 +202,7 @@ public HostConfiguration(IServiceCollection services) new GrandparentAnimalSerializationContext(), new HasOnlyReadOnlySerializationContext(), new HealthCheckResultSerializationContext(), + new InjectedVendorExtensionsTestSerializationContext(), new IsoscelesTriangleSerializationContext(), new ListSerializationContext(), new LiteralStringClassSerializationContext(), diff --git a/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs new file mode 100644 index 000000000000..f5f35a6bebc2 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/net9/SourceGeneration/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs @@ -0,0 +1,328 @@ +// +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +#nullable enable + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Text; +using System.Text.RegularExpressions; +using System.Text.Json; +using System.Text.Json.Serialization; +using System.ComponentModel.DataAnnotations; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using System.Text.Json.Serialization.Metadata; +using Org.OpenAPITools.Client; + +namespace Org.OpenAPITools.Model +{ + /// + /// InjectedVendorExtensionsTest + /// + public partial class InjectedVendorExtensionsTest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// potentiallyOverriddenPropertyToInternal + /// potentiallyOverriddenPropertyToPrivate + /// potentiallyOverriddenPropertyToPublic + /// unalteredProperty + [JsonConstructor] + internal InjectedVendorExtensionsTest(Option potentiallyOverriddenPropertyToInternal = default, Option potentiallyOverriddenPropertyToPrivate = default, Option potentiallyOverriddenPropertyToPublic = default, Option unalteredProperty = default) + { + PotentiallyOverriddenPropertyToInternalOption = potentiallyOverriddenPropertyToInternal; + PotentiallyOverriddenPropertyToPrivateOption = potentiallyOverriddenPropertyToPrivate; + PotentiallyOverriddenPropertyToPublicOption = potentiallyOverriddenPropertyToPublic; + UnalteredPropertyOption = unalteredProperty; + OnCreated(); + } + + partial void OnCreated(); + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToInternal + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToInternalOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToInternal + /// + [JsonPropertyName("potentiallyOverriddenPropertyToInternal")] + public string? PotentiallyOverriddenPropertyToInternal { get { return this.PotentiallyOverriddenPropertyToInternalOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPrivate + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPrivateOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPrivate + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPrivate")] + public string? PotentiallyOverriddenPropertyToPrivate { get { return this.PotentiallyOverriddenPropertyToPrivateOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPublic + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPublicOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPublic + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPublic")] + public string? PotentiallyOverriddenPropertyToPublic { get { return this.PotentiallyOverriddenPropertyToPublicOption.Value; } } + + /// + /// Used to track the state of UnalteredProperty + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option UnalteredPropertyOption { get; } + + /// + /// Gets or Sets UnalteredProperty + /// + [JsonPropertyName("unalteredProperty")] + public string? UnalteredProperty { get { return this.UnalteredPropertyOption.Value; } } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public Dictionary AdditionalProperties { get; } = new Dictionary(); + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InjectedVendorExtensionsTest {\n"); + sb.Append(" PotentiallyOverriddenPropertyToInternal: ").Append(PotentiallyOverriddenPropertyToInternal).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPrivate: ").Append(PotentiallyOverriddenPropertyToPrivate).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPublic: ").Append(PotentiallyOverriddenPropertyToPublic).Append("\n"); + sb.Append(" UnalteredProperty: ").Append(UnalteredProperty).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object? input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as InjectedVendorExtensionsTest).AreEqual; + } + + /// + /// Returns true if InjectedVendorExtensionsTest instances are equal + /// + /// Instance of InjectedVendorExtensionsTest to be compared + /// Boolean + public bool Equals(InjectedVendorExtensionsTest? input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (PotentiallyOverriddenPropertyToInternal != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToInternal.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPrivate != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPrivate.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPublic != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPublic.GetHashCode(); + + if (UnalteredProperty != null) + hashCode = (hashCode * 59) + UnalteredProperty.GetHashCode(); + + hashCode = (hashCode * 59) + AdditionalProperties.GetHashCode(); + + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// A Json converter for type + /// + public partial class InjectedVendorExtensionsTestJsonConverter : JsonConverter + { + partial void OnCreated(); + + /// + /// Initializes a new instance of the class. + /// + public InjectedVendorExtensionsTestJsonConverter() + { + OnCreated(); + } + + /// + /// Deserializes json to + /// + /// + /// + /// + /// + /// + public override InjectedVendorExtensionsTest Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions) + { + int currentDepth = utf8JsonReader.CurrentDepth; + + if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) + throw new JsonException(); + + JsonTokenType startingTokenType = utf8JsonReader.TokenType; + + Option potentiallyOverriddenPropertyToInternal = default; + Option potentiallyOverriddenPropertyToPrivate = default; + Option potentiallyOverriddenPropertyToPublic = default; + Option unalteredProperty = default; + + while (utf8JsonReader.Read()) + { + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1) + { + string? localVarJsonPropertyName = utf8JsonReader.GetString(); + utf8JsonReader.Read(); + + switch (localVarJsonPropertyName) + { + case "potentiallyOverriddenPropertyToInternal": + potentiallyOverriddenPropertyToInternal = new Option(utf8JsonReader.GetString()!); + break; + case "potentiallyOverriddenPropertyToPrivate": + potentiallyOverriddenPropertyToPrivate = new Option(utf8JsonReader.GetString()!); + break; + case "potentiallyOverriddenPropertyToPublic": + potentiallyOverriddenPropertyToPublic = new Option(utf8JsonReader.GetString()!); + break; + case "unalteredProperty": + unalteredProperty = new Option(utf8JsonReader.GetString()!); + break; + default: + break; + } + } + } + + if (potentiallyOverriddenPropertyToInternal.IsSet && potentiallyOverriddenPropertyToInternal.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToInternal), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPrivate.IsSet && potentiallyOverriddenPropertyToPrivate.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPrivate), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPublic.IsSet && potentiallyOverriddenPropertyToPublic.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPublic), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (unalteredProperty.IsSet && unalteredProperty.Value == null) + throw new ArgumentNullException(nameof(unalteredProperty), "Property is not nullable for class InjectedVendorExtensionsTest."); + + return new InjectedVendorExtensionsTest(potentiallyOverriddenPropertyToInternal, potentiallyOverriddenPropertyToPrivate, potentiallyOverriddenPropertyToPublic, unalteredProperty); + } + + /// + /// Serializes a + /// + /// + /// + /// + /// + public override void Write(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + writer.WriteStartObject(); + + WriteProperties(writer, injectedVendorExtensionsTest, jsonSerializerOptions); + writer.WriteEndObject(); + } + + /// + /// Serializes the properties of + /// + /// + /// + /// + /// + public void WriteProperties(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet && injectedVendorExtensionsTest.UnalteredProperty == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.UnalteredProperty), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToInternal", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPrivate", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPublic", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet) + writer.WriteString("unalteredProperty", injectedVendorExtensionsTest.UnalteredProperty); + } + } + + /// + /// The InjectedVendorExtensionsTestSerializationContext + /// + [JsonSourceGenerationOptions(WriteIndented = true, GenerationMode = JsonSourceGenerationMode.Metadata | JsonSourceGenerationMode.Serialization)] + [JsonSerializable(typeof(InjectedVendorExtensionsTest))] + public partial class InjectedVendorExtensionsTestSerializationContext : JsonSerializerContext { } +} diff --git a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/.openapi-generator/FILES b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/.openapi-generator/FILES index 20a67a4fabae..d8f84eb7f575 100644 --- a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/.openapi-generator/FILES +++ b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/.openapi-generator/FILES @@ -53,6 +53,7 @@ docs/models/GmFruit.md docs/models/GrandparentAnimal.md docs/models/HasOnlyReadOnly.md docs/models/HealthCheckResult.md +docs/models/InjectedVendorExtensionsTest.md docs/models/IsoscelesTriangle.md docs/models/List.md docs/models/LiteralStringClass.md @@ -196,6 +197,7 @@ src/Org.OpenAPITools/Model/GmFruit.cs src/Org.OpenAPITools/Model/GrandparentAnimal.cs src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs src/Org.OpenAPITools/Model/IsoscelesTriangle.cs src/Org.OpenAPITools/Model/List.cs src/Org.OpenAPITools/Model/LiteralStringClass.cs diff --git a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/api/openapi.yaml b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/api/openapi.yaml index a179b6cfdd29..586178fe4189 100644 --- a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/api/openapi.yaml +++ b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/api/openapi.yaml @@ -1355,6 +1355,21 @@ components: items: $ref: "#/components/schemas/RolesReportsHash" type: array + InjectedVendorExtensionsTest: + properties: + unalteredProperty: + readOnly: true + type: string + potentiallyOverriddenPropertyToPrivate: + readOnly: true + type: string + potentiallyOverriddenPropertyToInternal: + readOnly: true + type: string + potentiallyOverriddenPropertyToPublic: + readOnly: true + type: string + type: object RolesReportsHash: description: Role report Hash example: diff --git a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/docs/models/InjectedVendorExtensionsTest.md b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/docs/models/InjectedVendorExtensionsTest.md new file mode 100644 index 000000000000..6e5e74e659a5 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/docs/models/InjectedVendorExtensionsTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.InjectedVendorExtensionsTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**PotentiallyOverriddenPropertyToInternal** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPrivate** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPublic** | **string** | | [optional] [readonly] +**UnalteredProperty** | **string** | | [optional] [readonly] + +[[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/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs new file mode 100644 index 000000000000..19c09e9df56c --- /dev/null +++ b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs @@ -0,0 +1,92 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InjectedVendorExtensionsTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InjectedVendorExtensionsTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InjectedVendorExtensionsTest + //private InjectedVendorExtensionsTest instance; + + public InjectedVendorExtensionsTestTests() + { + // TODO uncomment below to create an instance of InjectedVendorExtensionsTest + //instance = new InjectedVendorExtensionsTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InjectedVendorExtensionsTest + /// + [Fact] + public void InjectedVendorExtensionsTestInstanceTest() + { + // TODO uncomment below to test "IsType" InjectedVendorExtensionsTest + //Assert.IsType(instance); + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToInternal' + /// + [Fact] + public void PotentiallyOverriddenPropertyToInternalTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToInternal' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPrivate' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPrivateTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPrivate' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPublic' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPublicTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPublic' + } + + /// + /// Test the property 'UnalteredProperty' + /// + [Fact] + public void UnalteredPropertyTest() + { + // TODO unit test for the property 'UnalteredProperty' + } + } +} diff --git a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/HostConfiguration.cs b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/HostConfiguration.cs index ba26668131ce..c87cde5cb400 100644 --- a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/HostConfiguration.cs +++ b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Client/HostConfiguration.cs @@ -83,6 +83,7 @@ public HostConfiguration(IServiceCollection services) _jsonOptions.Converters.Add(new GrandparentAnimalJsonConverter()); _jsonOptions.Converters.Add(new HasOnlyReadOnlyJsonConverter()); _jsonOptions.Converters.Add(new HealthCheckResultJsonConverter()); + _jsonOptions.Converters.Add(new InjectedVendorExtensionsTestJsonConverter()); _jsonOptions.Converters.Add(new IsoscelesTriangleJsonConverter()); _jsonOptions.Converters.Add(new ListJsonConverter()); _jsonOptions.Converters.Add(new LiteralStringClassJsonConverter()); diff --git a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs new file mode 100644 index 000000000000..53cbb5268a33 --- /dev/null +++ b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs @@ -0,0 +1,318 @@ +// +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Text; +using System.Text.RegularExpressions; +using System.Text.Json; +using System.Text.Json.Serialization; +using System.ComponentModel.DataAnnotations; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using Org.OpenAPITools.Client; + +namespace Org.OpenAPITools.Model +{ + /// + /// InjectedVendorExtensionsTest + /// + public partial class InjectedVendorExtensionsTest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// potentiallyOverriddenPropertyToInternal + /// potentiallyOverriddenPropertyToPrivate + /// potentiallyOverriddenPropertyToPublic + /// unalteredProperty + [JsonConstructor] + internal InjectedVendorExtensionsTest(Option potentiallyOverriddenPropertyToInternal = default, Option potentiallyOverriddenPropertyToPrivate = default, Option potentiallyOverriddenPropertyToPublic = default, Option unalteredProperty = default) + { + PotentiallyOverriddenPropertyToInternalOption = potentiallyOverriddenPropertyToInternal; + PotentiallyOverriddenPropertyToPrivateOption = potentiallyOverriddenPropertyToPrivate; + PotentiallyOverriddenPropertyToPublicOption = potentiallyOverriddenPropertyToPublic; + UnalteredPropertyOption = unalteredProperty; + OnCreated(); + } + + partial void OnCreated(); + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToInternal + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToInternalOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToInternal + /// + [JsonPropertyName("potentiallyOverriddenPropertyToInternal")] + public string PotentiallyOverriddenPropertyToInternal { get { return this.PotentiallyOverriddenPropertyToInternalOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPrivate + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPrivateOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPrivate + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPrivate")] + public string PotentiallyOverriddenPropertyToPrivate { get { return this.PotentiallyOverriddenPropertyToPrivateOption.Value; } } + + /// + /// Used to track the state of PotentiallyOverriddenPropertyToPublic + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option PotentiallyOverriddenPropertyToPublicOption { get; } + + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPublic + /// + [JsonPropertyName("potentiallyOverriddenPropertyToPublic")] + public string PotentiallyOverriddenPropertyToPublic { get { return this.PotentiallyOverriddenPropertyToPublicOption.Value; } } + + /// + /// Used to track the state of UnalteredProperty + /// + [JsonIgnore] + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + public Option UnalteredPropertyOption { get; } + + /// + /// Gets or Sets UnalteredProperty + /// + [JsonPropertyName("unalteredProperty")] + public string UnalteredProperty { get { return this.UnalteredPropertyOption.Value; } } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public Dictionary AdditionalProperties { get; } = new Dictionary(); + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InjectedVendorExtensionsTest {\n"); + sb.Append(" PotentiallyOverriddenPropertyToInternal: ").Append(PotentiallyOverriddenPropertyToInternal).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPrivate: ").Append(PotentiallyOverriddenPropertyToPrivate).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPublic: ").Append(PotentiallyOverriddenPropertyToPublic).Append("\n"); + sb.Append(" UnalteredProperty: ").Append(UnalteredProperty).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as InjectedVendorExtensionsTest).AreEqual; + } + + /// + /// Returns true if InjectedVendorExtensionsTest instances are equal + /// + /// Instance of InjectedVendorExtensionsTest to be compared + /// Boolean + public bool Equals(InjectedVendorExtensionsTest input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (PotentiallyOverriddenPropertyToInternal != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToInternal.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPrivate != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPrivate.GetHashCode(); + + if (PotentiallyOverriddenPropertyToPublic != null) + hashCode = (hashCode * 59) + PotentiallyOverriddenPropertyToPublic.GetHashCode(); + + if (UnalteredProperty != null) + hashCode = (hashCode * 59) + UnalteredProperty.GetHashCode(); + + hashCode = (hashCode * 59) + AdditionalProperties.GetHashCode(); + + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// A Json converter for type + /// + public partial class InjectedVendorExtensionsTestJsonConverter : JsonConverter + { + partial void OnCreated(); + + /// + /// Initializes a new instance of the class. + /// + public InjectedVendorExtensionsTestJsonConverter() + { + OnCreated(); + } + + /// + /// Deserializes json to + /// + /// + /// + /// + /// + /// + public override InjectedVendorExtensionsTest Read(ref Utf8JsonReader utf8JsonReader, Type typeToConvert, JsonSerializerOptions jsonSerializerOptions) + { + int currentDepth = utf8JsonReader.CurrentDepth; + + if (utf8JsonReader.TokenType != JsonTokenType.StartObject && utf8JsonReader.TokenType != JsonTokenType.StartArray) + throw new JsonException(); + + JsonTokenType startingTokenType = utf8JsonReader.TokenType; + + Option potentiallyOverriddenPropertyToInternal = default; + Option potentiallyOverriddenPropertyToPrivate = default; + Option potentiallyOverriddenPropertyToPublic = default; + Option unalteredProperty = default; + + while (utf8JsonReader.Read()) + { + if (startingTokenType == JsonTokenType.StartObject && utf8JsonReader.TokenType == JsonTokenType.EndObject && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (startingTokenType == JsonTokenType.StartArray && utf8JsonReader.TokenType == JsonTokenType.EndArray && currentDepth == utf8JsonReader.CurrentDepth) + break; + + if (utf8JsonReader.TokenType == JsonTokenType.PropertyName && currentDepth == utf8JsonReader.CurrentDepth - 1) + { + string localVarJsonPropertyName = utf8JsonReader.GetString(); + utf8JsonReader.Read(); + + switch (localVarJsonPropertyName) + { + case "potentiallyOverriddenPropertyToInternal": + potentiallyOverriddenPropertyToInternal = new Option(utf8JsonReader.GetString()); + break; + case "potentiallyOverriddenPropertyToPrivate": + potentiallyOverriddenPropertyToPrivate = new Option(utf8JsonReader.GetString()); + break; + case "potentiallyOverriddenPropertyToPublic": + potentiallyOverriddenPropertyToPublic = new Option(utf8JsonReader.GetString()); + break; + case "unalteredProperty": + unalteredProperty = new Option(utf8JsonReader.GetString()); + break; + default: + break; + } + } + } + + if (potentiallyOverriddenPropertyToInternal.IsSet && potentiallyOverriddenPropertyToInternal.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToInternal), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPrivate.IsSet && potentiallyOverriddenPropertyToPrivate.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPrivate), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (potentiallyOverriddenPropertyToPublic.IsSet && potentiallyOverriddenPropertyToPublic.Value == null) + throw new ArgumentNullException(nameof(potentiallyOverriddenPropertyToPublic), "Property is not nullable for class InjectedVendorExtensionsTest."); + + if (unalteredProperty.IsSet && unalteredProperty.Value == null) + throw new ArgumentNullException(nameof(unalteredProperty), "Property is not nullable for class InjectedVendorExtensionsTest."); + + return new InjectedVendorExtensionsTest(potentiallyOverriddenPropertyToInternal, potentiallyOverriddenPropertyToPrivate, potentiallyOverriddenPropertyToPublic, unalteredProperty); + } + + /// + /// Serializes a + /// + /// + /// + /// + /// + public override void Write(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + writer.WriteStartObject(); + + WriteProperties(writer, injectedVendorExtensionsTest, jsonSerializerOptions); + writer.WriteEndObject(); + } + + /// + /// Serializes the properties of + /// + /// + /// + /// + /// + public void WriteProperties(Utf8JsonWriter writer, InjectedVendorExtensionsTest injectedVendorExtensionsTest, JsonSerializerOptions jsonSerializerOptions) + { + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet && injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet && injectedVendorExtensionsTest.UnalteredProperty == null) + throw new ArgumentNullException(nameof(injectedVendorExtensionsTest.UnalteredProperty), "Property is required for class InjectedVendorExtensionsTest."); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternalOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToInternal", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToInternal); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivateOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPrivate", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPrivate); + + if (injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublicOption.IsSet) + writer.WriteString("potentiallyOverriddenPropertyToPublic", injectedVendorExtensionsTest.PotentiallyOverriddenPropertyToPublic); + + if (injectedVendorExtensionsTest.UnalteredPropertyOption.IsSet) + writer.WriteString("unalteredProperty", injectedVendorExtensionsTest.UnalteredProperty); + } + } +} diff --git a/samples/client/petstore/csharp/httpclient/net10/Petstore/.openapi-generator/FILES b/samples/client/petstore/csharp/httpclient/net10/Petstore/.openapi-generator/FILES index 5885f8c71756..2bb20f16c20b 100644 --- a/samples/client/petstore/csharp/httpclient/net10/Petstore/.openapi-generator/FILES +++ b/samples/client/petstore/csharp/httpclient/net10/Petstore/.openapi-generator/FILES @@ -50,6 +50,7 @@ docs/GmFruit.md docs/GrandparentAnimal.md docs/HasOnlyReadOnly.md docs/HealthCheckResult.md +docs/InjectedVendorExtensionsTest.md docs/IsoscelesTriangle.md docs/List.md docs/LiteralStringClass.md @@ -184,6 +185,7 @@ src/Org.OpenAPITools/Model/GmFruit.cs src/Org.OpenAPITools/Model/GrandparentAnimal.cs src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs src/Org.OpenAPITools/Model/IsoscelesTriangle.cs src/Org.OpenAPITools/Model/List.cs src/Org.OpenAPITools/Model/LiteralStringClass.cs diff --git a/samples/client/petstore/csharp/httpclient/net10/Petstore/README.md b/samples/client/petstore/csharp/httpclient/net10/Petstore/README.md index d57e2f6ef0ce..3be2d8c6cc6b 100644 --- a/samples/client/petstore/csharp/httpclient/net10/Petstore/README.md +++ b/samples/client/petstore/csharp/httpclient/net10/Petstore/README.md @@ -239,6 +239,7 @@ Class | Method | HTTP request | Description - [Model.GrandparentAnimal](docs/GrandparentAnimal.md) - [Model.HasOnlyReadOnly](docs/HasOnlyReadOnly.md) - [Model.HealthCheckResult](docs/HealthCheckResult.md) + - [Model.InjectedVendorExtensionsTest](docs/InjectedVendorExtensionsTest.md) - [Model.IsoscelesTriangle](docs/IsoscelesTriangle.md) - [Model.List](docs/List.md) - [Model.LiteralStringClass](docs/LiteralStringClass.md) diff --git a/samples/client/petstore/csharp/httpclient/net10/Petstore/api/openapi.yaml b/samples/client/petstore/csharp/httpclient/net10/Petstore/api/openapi.yaml index a179b6cfdd29..586178fe4189 100644 --- a/samples/client/petstore/csharp/httpclient/net10/Petstore/api/openapi.yaml +++ b/samples/client/petstore/csharp/httpclient/net10/Petstore/api/openapi.yaml @@ -1355,6 +1355,21 @@ components: items: $ref: "#/components/schemas/RolesReportsHash" type: array + InjectedVendorExtensionsTest: + properties: + unalteredProperty: + readOnly: true + type: string + potentiallyOverriddenPropertyToPrivate: + readOnly: true + type: string + potentiallyOverriddenPropertyToInternal: + readOnly: true + type: string + potentiallyOverriddenPropertyToPublic: + readOnly: true + type: string + type: object RolesReportsHash: description: Role report Hash example: diff --git a/samples/client/petstore/csharp/httpclient/net10/Petstore/docs/InjectedVendorExtensionsTest.md b/samples/client/petstore/csharp/httpclient/net10/Petstore/docs/InjectedVendorExtensionsTest.md new file mode 100644 index 000000000000..79e5d2bac086 --- /dev/null +++ b/samples/client/petstore/csharp/httpclient/net10/Petstore/docs/InjectedVendorExtensionsTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.InjectedVendorExtensionsTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**UnalteredProperty** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPrivate** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToInternal** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPublic** | **string** | | [optional] [readonly] + +[[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/csharp/httpclient/net10/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs b/samples/client/petstore/csharp/httpclient/net10/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs new file mode 100644 index 000000000000..d63b2955a13d --- /dev/null +++ b/samples/client/petstore/csharp/httpclient/net10/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs @@ -0,0 +1,93 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InjectedVendorExtensionsTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InjectedVendorExtensionsTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InjectedVendorExtensionsTest + //private InjectedVendorExtensionsTest instance; + + public InjectedVendorExtensionsTestTests() + { + // TODO uncomment below to create an instance of InjectedVendorExtensionsTest + //instance = new InjectedVendorExtensionsTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InjectedVendorExtensionsTest + /// + [Fact] + public void InjectedVendorExtensionsTestInstanceTest() + { + // TODO uncomment below to test "IsType" InjectedVendorExtensionsTest + //Assert.IsType(instance); + } + + /// + /// Test the property 'UnalteredProperty' + /// + [Fact] + public void UnalteredPropertyTest() + { + // TODO unit test for the property 'UnalteredProperty' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPrivate' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPrivateTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPrivate' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToInternal' + /// + [Fact] + public void PotentiallyOverriddenPropertyToInternalTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToInternal' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPublic' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPublicTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPublic' + } + } +} diff --git a/samples/client/petstore/csharp/httpclient/net10/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs b/samples/client/petstore/csharp/httpclient/net10/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs new file mode 100644 index 000000000000..008ae03ec135 --- /dev/null +++ b/samples/client/petstore/csharp/httpclient/net10/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs @@ -0,0 +1,197 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// InjectedVendorExtensionsTest + /// + [DataContract(Name = "InjectedVendorExtensionsTest")] + public partial class InjectedVendorExtensionsTest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + public InjectedVendorExtensionsTest() + { + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets UnalteredProperty + /// + [DataMember(Name = "unalteredProperty", EmitDefaultValue = false)] + public string UnalteredProperty { get; private set; } + + /// + /// Returns false as UnalteredProperty should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeUnalteredProperty() + { + return false; + } + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPrivate + /// + [DataMember(Name = "potentiallyOverriddenPropertyToPrivate", EmitDefaultValue = false)] + public string PotentiallyOverriddenPropertyToPrivate { get; private set; } + + /// + /// Returns false as PotentiallyOverriddenPropertyToPrivate should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePotentiallyOverriddenPropertyToPrivate() + { + return false; + } + /// + /// Gets or Sets PotentiallyOverriddenPropertyToInternal + /// + [DataMember(Name = "potentiallyOverriddenPropertyToInternal", EmitDefaultValue = false)] + public string PotentiallyOverriddenPropertyToInternal { get; private set; } + + /// + /// Returns false as PotentiallyOverriddenPropertyToInternal should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePotentiallyOverriddenPropertyToInternal() + { + return false; + } + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPublic + /// + [DataMember(Name = "potentiallyOverriddenPropertyToPublic", EmitDefaultValue = false)] + public string PotentiallyOverriddenPropertyToPublic { get; private set; } + + /// + /// Returns false as PotentiallyOverriddenPropertyToPublic should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePotentiallyOverriddenPropertyToPublic() + { + return false; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InjectedVendorExtensionsTest {\n"); + sb.Append(" UnalteredProperty: ").Append(UnalteredProperty).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPrivate: ").Append(PotentiallyOverriddenPropertyToPrivate).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToInternal: ").Append(PotentiallyOverriddenPropertyToInternal).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPublic: ").Append(PotentiallyOverriddenPropertyToPublic).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as InjectedVendorExtensionsTest).AreEqual; + } + + /// + /// Returns true if InjectedVendorExtensionsTest instances are equal + /// + /// Instance of InjectedVendorExtensionsTest to be compared + /// Boolean + public bool Equals(InjectedVendorExtensionsTest input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.UnalteredProperty != null) + { + hashCode = (hashCode * 59) + this.UnalteredProperty.GetHashCode(); + } + if (this.PotentiallyOverriddenPropertyToPrivate != null) + { + hashCode = (hashCode * 59) + this.PotentiallyOverriddenPropertyToPrivate.GetHashCode(); + } + if (this.PotentiallyOverriddenPropertyToInternal != null) + { + hashCode = (hashCode * 59) + this.PotentiallyOverriddenPropertyToInternal.GetHashCode(); + } + if (this.PotentiallyOverriddenPropertyToPublic != null) + { + hashCode = (hashCode * 59) + this.PotentiallyOverriddenPropertyToPublic.GetHashCode(); + } + if (this.AdditionalProperties != null) + { + hashCode = (hashCode * 59) + this.AdditionalProperties.GetHashCode(); + } + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp/httpclient/net9/Petstore/.openapi-generator/FILES b/samples/client/petstore/csharp/httpclient/net9/Petstore/.openapi-generator/FILES index 5885f8c71756..2bb20f16c20b 100644 --- a/samples/client/petstore/csharp/httpclient/net9/Petstore/.openapi-generator/FILES +++ b/samples/client/petstore/csharp/httpclient/net9/Petstore/.openapi-generator/FILES @@ -50,6 +50,7 @@ docs/GmFruit.md docs/GrandparentAnimal.md docs/HasOnlyReadOnly.md docs/HealthCheckResult.md +docs/InjectedVendorExtensionsTest.md docs/IsoscelesTriangle.md docs/List.md docs/LiteralStringClass.md @@ -184,6 +185,7 @@ src/Org.OpenAPITools/Model/GmFruit.cs src/Org.OpenAPITools/Model/GrandparentAnimal.cs src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs src/Org.OpenAPITools/Model/IsoscelesTriangle.cs src/Org.OpenAPITools/Model/List.cs src/Org.OpenAPITools/Model/LiteralStringClass.cs diff --git a/samples/client/petstore/csharp/httpclient/net9/Petstore/README.md b/samples/client/petstore/csharp/httpclient/net9/Petstore/README.md index d57e2f6ef0ce..3be2d8c6cc6b 100644 --- a/samples/client/petstore/csharp/httpclient/net9/Petstore/README.md +++ b/samples/client/petstore/csharp/httpclient/net9/Petstore/README.md @@ -239,6 +239,7 @@ Class | Method | HTTP request | Description - [Model.GrandparentAnimal](docs/GrandparentAnimal.md) - [Model.HasOnlyReadOnly](docs/HasOnlyReadOnly.md) - [Model.HealthCheckResult](docs/HealthCheckResult.md) + - [Model.InjectedVendorExtensionsTest](docs/InjectedVendorExtensionsTest.md) - [Model.IsoscelesTriangle](docs/IsoscelesTriangle.md) - [Model.List](docs/List.md) - [Model.LiteralStringClass](docs/LiteralStringClass.md) diff --git a/samples/client/petstore/csharp/httpclient/net9/Petstore/api/openapi.yaml b/samples/client/petstore/csharp/httpclient/net9/Petstore/api/openapi.yaml index a179b6cfdd29..586178fe4189 100644 --- a/samples/client/petstore/csharp/httpclient/net9/Petstore/api/openapi.yaml +++ b/samples/client/petstore/csharp/httpclient/net9/Petstore/api/openapi.yaml @@ -1355,6 +1355,21 @@ components: items: $ref: "#/components/schemas/RolesReportsHash" type: array + InjectedVendorExtensionsTest: + properties: + unalteredProperty: + readOnly: true + type: string + potentiallyOverriddenPropertyToPrivate: + readOnly: true + type: string + potentiallyOverriddenPropertyToInternal: + readOnly: true + type: string + potentiallyOverriddenPropertyToPublic: + readOnly: true + type: string + type: object RolesReportsHash: description: Role report Hash example: diff --git a/samples/client/petstore/csharp/httpclient/net9/Petstore/docs/InjectedVendorExtensionsTest.md b/samples/client/petstore/csharp/httpclient/net9/Petstore/docs/InjectedVendorExtensionsTest.md new file mode 100644 index 000000000000..79e5d2bac086 --- /dev/null +++ b/samples/client/petstore/csharp/httpclient/net9/Petstore/docs/InjectedVendorExtensionsTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.InjectedVendorExtensionsTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**UnalteredProperty** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPrivate** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToInternal** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPublic** | **string** | | [optional] [readonly] + +[[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/csharp/httpclient/net9/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs b/samples/client/petstore/csharp/httpclient/net9/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs new file mode 100644 index 000000000000..d63b2955a13d --- /dev/null +++ b/samples/client/petstore/csharp/httpclient/net9/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs @@ -0,0 +1,93 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InjectedVendorExtensionsTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InjectedVendorExtensionsTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InjectedVendorExtensionsTest + //private InjectedVendorExtensionsTest instance; + + public InjectedVendorExtensionsTestTests() + { + // TODO uncomment below to create an instance of InjectedVendorExtensionsTest + //instance = new InjectedVendorExtensionsTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InjectedVendorExtensionsTest + /// + [Fact] + public void InjectedVendorExtensionsTestInstanceTest() + { + // TODO uncomment below to test "IsType" InjectedVendorExtensionsTest + //Assert.IsType(instance); + } + + /// + /// Test the property 'UnalteredProperty' + /// + [Fact] + public void UnalteredPropertyTest() + { + // TODO unit test for the property 'UnalteredProperty' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPrivate' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPrivateTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPrivate' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToInternal' + /// + [Fact] + public void PotentiallyOverriddenPropertyToInternalTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToInternal' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPublic' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPublicTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPublic' + } + } +} diff --git a/samples/client/petstore/csharp/httpclient/net9/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs b/samples/client/petstore/csharp/httpclient/net9/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs new file mode 100644 index 000000000000..008ae03ec135 --- /dev/null +++ b/samples/client/petstore/csharp/httpclient/net9/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs @@ -0,0 +1,197 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// InjectedVendorExtensionsTest + /// + [DataContract(Name = "InjectedVendorExtensionsTest")] + public partial class InjectedVendorExtensionsTest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + public InjectedVendorExtensionsTest() + { + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets UnalteredProperty + /// + [DataMember(Name = "unalteredProperty", EmitDefaultValue = false)] + public string UnalteredProperty { get; private set; } + + /// + /// Returns false as UnalteredProperty should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeUnalteredProperty() + { + return false; + } + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPrivate + /// + [DataMember(Name = "potentiallyOverriddenPropertyToPrivate", EmitDefaultValue = false)] + public string PotentiallyOverriddenPropertyToPrivate { get; private set; } + + /// + /// Returns false as PotentiallyOverriddenPropertyToPrivate should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePotentiallyOverriddenPropertyToPrivate() + { + return false; + } + /// + /// Gets or Sets PotentiallyOverriddenPropertyToInternal + /// + [DataMember(Name = "potentiallyOverriddenPropertyToInternal", EmitDefaultValue = false)] + public string PotentiallyOverriddenPropertyToInternal { get; private set; } + + /// + /// Returns false as PotentiallyOverriddenPropertyToInternal should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePotentiallyOverriddenPropertyToInternal() + { + return false; + } + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPublic + /// + [DataMember(Name = "potentiallyOverriddenPropertyToPublic", EmitDefaultValue = false)] + public string PotentiallyOverriddenPropertyToPublic { get; private set; } + + /// + /// Returns false as PotentiallyOverriddenPropertyToPublic should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePotentiallyOverriddenPropertyToPublic() + { + return false; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InjectedVendorExtensionsTest {\n"); + sb.Append(" UnalteredProperty: ").Append(UnalteredProperty).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPrivate: ").Append(PotentiallyOverriddenPropertyToPrivate).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToInternal: ").Append(PotentiallyOverriddenPropertyToInternal).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPublic: ").Append(PotentiallyOverriddenPropertyToPublic).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as InjectedVendorExtensionsTest).AreEqual; + } + + /// + /// Returns true if InjectedVendorExtensionsTest instances are equal + /// + /// Instance of InjectedVendorExtensionsTest to be compared + /// Boolean + public bool Equals(InjectedVendorExtensionsTest input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.UnalteredProperty != null) + { + hashCode = (hashCode * 59) + this.UnalteredProperty.GetHashCode(); + } + if (this.PotentiallyOverriddenPropertyToPrivate != null) + { + hashCode = (hashCode * 59) + this.PotentiallyOverriddenPropertyToPrivate.GetHashCode(); + } + if (this.PotentiallyOverriddenPropertyToInternal != null) + { + hashCode = (hashCode * 59) + this.PotentiallyOverriddenPropertyToInternal.GetHashCode(); + } + if (this.PotentiallyOverriddenPropertyToPublic != null) + { + hashCode = (hashCode * 59) + this.PotentiallyOverriddenPropertyToPublic.GetHashCode(); + } + if (this.AdditionalProperties != null) + { + hashCode = (hashCode * 59) + this.AdditionalProperties.GetHashCode(); + } + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp/httpclient/standard2.0/Petstore/.openapi-generator/FILES b/samples/client/petstore/csharp/httpclient/standard2.0/Petstore/.openapi-generator/FILES index 8fc05aa72028..b84ade6b0799 100644 --- a/samples/client/petstore/csharp/httpclient/standard2.0/Petstore/.openapi-generator/FILES +++ b/samples/client/petstore/csharp/httpclient/standard2.0/Petstore/.openapi-generator/FILES @@ -50,6 +50,7 @@ docs/GmFruit.md docs/GrandparentAnimal.md docs/HasOnlyReadOnly.md docs/HealthCheckResult.md +docs/InjectedVendorExtensionsTest.md docs/IsoscelesTriangle.md docs/List.md docs/LiteralStringClass.md @@ -183,6 +184,7 @@ src/Org.OpenAPITools/Model/GmFruit.cs src/Org.OpenAPITools/Model/GrandparentAnimal.cs src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs src/Org.OpenAPITools/Model/IsoscelesTriangle.cs src/Org.OpenAPITools/Model/List.cs src/Org.OpenAPITools/Model/LiteralStringClass.cs diff --git a/samples/client/petstore/csharp/httpclient/standard2.0/Petstore/README.md b/samples/client/petstore/csharp/httpclient/standard2.0/Petstore/README.md index a1e315504587..1f830b5408d7 100644 --- a/samples/client/petstore/csharp/httpclient/standard2.0/Petstore/README.md +++ b/samples/client/petstore/csharp/httpclient/standard2.0/Petstore/README.md @@ -227,6 +227,7 @@ Class | Method | HTTP request | Description - [Model.GrandparentAnimal](docs/GrandparentAnimal.md) - [Model.HasOnlyReadOnly](docs/HasOnlyReadOnly.md) - [Model.HealthCheckResult](docs/HealthCheckResult.md) + - [Model.InjectedVendorExtensionsTest](docs/InjectedVendorExtensionsTest.md) - [Model.IsoscelesTriangle](docs/IsoscelesTriangle.md) - [Model.List](docs/List.md) - [Model.LiteralStringClass](docs/LiteralStringClass.md) diff --git a/samples/client/petstore/csharp/httpclient/standard2.0/Petstore/api/openapi.yaml b/samples/client/petstore/csharp/httpclient/standard2.0/Petstore/api/openapi.yaml index a179b6cfdd29..586178fe4189 100644 --- a/samples/client/petstore/csharp/httpclient/standard2.0/Petstore/api/openapi.yaml +++ b/samples/client/petstore/csharp/httpclient/standard2.0/Petstore/api/openapi.yaml @@ -1355,6 +1355,21 @@ components: items: $ref: "#/components/schemas/RolesReportsHash" type: array + InjectedVendorExtensionsTest: + properties: + unalteredProperty: + readOnly: true + type: string + potentiallyOverriddenPropertyToPrivate: + readOnly: true + type: string + potentiallyOverriddenPropertyToInternal: + readOnly: true + type: string + potentiallyOverriddenPropertyToPublic: + readOnly: true + type: string + type: object RolesReportsHash: description: Role report Hash example: diff --git a/samples/client/petstore/csharp/httpclient/standard2.0/Petstore/docs/InjectedVendorExtensionsTest.md b/samples/client/petstore/csharp/httpclient/standard2.0/Petstore/docs/InjectedVendorExtensionsTest.md new file mode 100644 index 000000000000..79e5d2bac086 --- /dev/null +++ b/samples/client/petstore/csharp/httpclient/standard2.0/Petstore/docs/InjectedVendorExtensionsTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.InjectedVendorExtensionsTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**UnalteredProperty** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPrivate** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToInternal** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPublic** | **string** | | [optional] [readonly] + +[[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/csharp/httpclient/standard2.0/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs b/samples/client/petstore/csharp/httpclient/standard2.0/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs new file mode 100644 index 000000000000..d63b2955a13d --- /dev/null +++ b/samples/client/petstore/csharp/httpclient/standard2.0/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs @@ -0,0 +1,93 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InjectedVendorExtensionsTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InjectedVendorExtensionsTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InjectedVendorExtensionsTest + //private InjectedVendorExtensionsTest instance; + + public InjectedVendorExtensionsTestTests() + { + // TODO uncomment below to create an instance of InjectedVendorExtensionsTest + //instance = new InjectedVendorExtensionsTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InjectedVendorExtensionsTest + /// + [Fact] + public void InjectedVendorExtensionsTestInstanceTest() + { + // TODO uncomment below to test "IsType" InjectedVendorExtensionsTest + //Assert.IsType(instance); + } + + /// + /// Test the property 'UnalteredProperty' + /// + [Fact] + public void UnalteredPropertyTest() + { + // TODO unit test for the property 'UnalteredProperty' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPrivate' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPrivateTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPrivate' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToInternal' + /// + [Fact] + public void PotentiallyOverriddenPropertyToInternalTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToInternal' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPublic' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPublicTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPublic' + } + } +} diff --git a/samples/client/petstore/csharp/httpclient/standard2.0/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs b/samples/client/petstore/csharp/httpclient/standard2.0/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs new file mode 100644 index 000000000000..008ae03ec135 --- /dev/null +++ b/samples/client/petstore/csharp/httpclient/standard2.0/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs @@ -0,0 +1,197 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// InjectedVendorExtensionsTest + /// + [DataContract(Name = "InjectedVendorExtensionsTest")] + public partial class InjectedVendorExtensionsTest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + public InjectedVendorExtensionsTest() + { + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets UnalteredProperty + /// + [DataMember(Name = "unalteredProperty", EmitDefaultValue = false)] + public string UnalteredProperty { get; private set; } + + /// + /// Returns false as UnalteredProperty should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeUnalteredProperty() + { + return false; + } + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPrivate + /// + [DataMember(Name = "potentiallyOverriddenPropertyToPrivate", EmitDefaultValue = false)] + public string PotentiallyOverriddenPropertyToPrivate { get; private set; } + + /// + /// Returns false as PotentiallyOverriddenPropertyToPrivate should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePotentiallyOverriddenPropertyToPrivate() + { + return false; + } + /// + /// Gets or Sets PotentiallyOverriddenPropertyToInternal + /// + [DataMember(Name = "potentiallyOverriddenPropertyToInternal", EmitDefaultValue = false)] + public string PotentiallyOverriddenPropertyToInternal { get; private set; } + + /// + /// Returns false as PotentiallyOverriddenPropertyToInternal should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePotentiallyOverriddenPropertyToInternal() + { + return false; + } + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPublic + /// + [DataMember(Name = "potentiallyOverriddenPropertyToPublic", EmitDefaultValue = false)] + public string PotentiallyOverriddenPropertyToPublic { get; private set; } + + /// + /// Returns false as PotentiallyOverriddenPropertyToPublic should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePotentiallyOverriddenPropertyToPublic() + { + return false; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InjectedVendorExtensionsTest {\n"); + sb.Append(" UnalteredProperty: ").Append(UnalteredProperty).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPrivate: ").Append(PotentiallyOverriddenPropertyToPrivate).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToInternal: ").Append(PotentiallyOverriddenPropertyToInternal).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPublic: ").Append(PotentiallyOverriddenPropertyToPublic).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as InjectedVendorExtensionsTest).AreEqual; + } + + /// + /// Returns true if InjectedVendorExtensionsTest instances are equal + /// + /// Instance of InjectedVendorExtensionsTest to be compared + /// Boolean + public bool Equals(InjectedVendorExtensionsTest input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.UnalteredProperty != null) + { + hashCode = (hashCode * 59) + this.UnalteredProperty.GetHashCode(); + } + if (this.PotentiallyOverriddenPropertyToPrivate != null) + { + hashCode = (hashCode * 59) + this.PotentiallyOverriddenPropertyToPrivate.GetHashCode(); + } + if (this.PotentiallyOverriddenPropertyToInternal != null) + { + hashCode = (hashCode * 59) + this.PotentiallyOverriddenPropertyToInternal.GetHashCode(); + } + if (this.PotentiallyOverriddenPropertyToPublic != null) + { + hashCode = (hashCode * 59) + this.PotentiallyOverriddenPropertyToPublic.GetHashCode(); + } + if (this.AdditionalProperties != null) + { + hashCode = (hashCode * 59) + this.AdditionalProperties.GetHashCode(); + } + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp/restsharp/net8/Petstore/.openapi-generator/FILES b/samples/client/petstore/csharp/restsharp/net8/Petstore/.openapi-generator/FILES index 0ddde99ff436..6665035ea2e4 100644 --- a/samples/client/petstore/csharp/restsharp/net8/Petstore/.openapi-generator/FILES +++ b/samples/client/petstore/csharp/restsharp/net8/Petstore/.openapi-generator/FILES @@ -50,6 +50,7 @@ docs/GmFruit.md docs/GrandparentAnimal.md docs/HasOnlyReadOnly.md docs/HealthCheckResult.md +docs/InjectedVendorExtensionsTest.md docs/IsoscelesTriangle.md docs/List.md docs/LiteralStringClass.md @@ -186,6 +187,7 @@ src/Org.OpenAPITools/Model/GmFruit.cs src/Org.OpenAPITools/Model/GrandparentAnimal.cs src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs src/Org.OpenAPITools/Model/IsoscelesTriangle.cs src/Org.OpenAPITools/Model/List.cs src/Org.OpenAPITools/Model/LiteralStringClass.cs diff --git a/samples/client/petstore/csharp/restsharp/net8/Petstore/README.md b/samples/client/petstore/csharp/restsharp/net8/Petstore/README.md index d006dde668c9..518d9ce8c20b 100644 --- a/samples/client/petstore/csharp/restsharp/net8/Petstore/README.md +++ b/samples/client/petstore/csharp/restsharp/net8/Petstore/README.md @@ -214,6 +214,7 @@ Class | Method | HTTP request | Description - [Model.GrandparentAnimal](docs/GrandparentAnimal.md) - [Model.HasOnlyReadOnly](docs/HasOnlyReadOnly.md) - [Model.HealthCheckResult](docs/HealthCheckResult.md) + - [Model.InjectedVendorExtensionsTest](docs/InjectedVendorExtensionsTest.md) - [Model.IsoscelesTriangle](docs/IsoscelesTriangle.md) - [Model.List](docs/List.md) - [Model.LiteralStringClass](docs/LiteralStringClass.md) diff --git a/samples/client/petstore/csharp/restsharp/net8/Petstore/api/openapi.yaml b/samples/client/petstore/csharp/restsharp/net8/Petstore/api/openapi.yaml index a179b6cfdd29..586178fe4189 100644 --- a/samples/client/petstore/csharp/restsharp/net8/Petstore/api/openapi.yaml +++ b/samples/client/petstore/csharp/restsharp/net8/Petstore/api/openapi.yaml @@ -1355,6 +1355,21 @@ components: items: $ref: "#/components/schemas/RolesReportsHash" type: array + InjectedVendorExtensionsTest: + properties: + unalteredProperty: + readOnly: true + type: string + potentiallyOverriddenPropertyToPrivate: + readOnly: true + type: string + potentiallyOverriddenPropertyToInternal: + readOnly: true + type: string + potentiallyOverriddenPropertyToPublic: + readOnly: true + type: string + type: object RolesReportsHash: description: Role report Hash example: diff --git a/samples/client/petstore/csharp/restsharp/net8/Petstore/docs/InjectedVendorExtensionsTest.md b/samples/client/petstore/csharp/restsharp/net8/Petstore/docs/InjectedVendorExtensionsTest.md new file mode 100644 index 000000000000..79e5d2bac086 --- /dev/null +++ b/samples/client/petstore/csharp/restsharp/net8/Petstore/docs/InjectedVendorExtensionsTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.InjectedVendorExtensionsTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**UnalteredProperty** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPrivate** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToInternal** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPublic** | **string** | | [optional] [readonly] + +[[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/csharp/restsharp/net8/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs b/samples/client/petstore/csharp/restsharp/net8/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs new file mode 100644 index 000000000000..d63b2955a13d --- /dev/null +++ b/samples/client/petstore/csharp/restsharp/net8/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs @@ -0,0 +1,93 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InjectedVendorExtensionsTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InjectedVendorExtensionsTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InjectedVendorExtensionsTest + //private InjectedVendorExtensionsTest instance; + + public InjectedVendorExtensionsTestTests() + { + // TODO uncomment below to create an instance of InjectedVendorExtensionsTest + //instance = new InjectedVendorExtensionsTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InjectedVendorExtensionsTest + /// + [Fact] + public void InjectedVendorExtensionsTestInstanceTest() + { + // TODO uncomment below to test "IsType" InjectedVendorExtensionsTest + //Assert.IsType(instance); + } + + /// + /// Test the property 'UnalteredProperty' + /// + [Fact] + public void UnalteredPropertyTest() + { + // TODO unit test for the property 'UnalteredProperty' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPrivate' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPrivateTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPrivate' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToInternal' + /// + [Fact] + public void PotentiallyOverriddenPropertyToInternalTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToInternal' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPublic' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPublicTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPublic' + } + } +} diff --git a/samples/client/petstore/csharp/restsharp/net8/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs b/samples/client/petstore/csharp/restsharp/net8/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs new file mode 100644 index 000000000000..d8e338f39eb8 --- /dev/null +++ b/samples/client/petstore/csharp/restsharp/net8/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs @@ -0,0 +1,184 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// InjectedVendorExtensionsTest + /// + [DataContract(Name = "InjectedVendorExtensionsTest")] + public partial class InjectedVendorExtensionsTest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + public InjectedVendorExtensionsTest() + { + } + + /// + /// Gets or Sets UnalteredProperty + /// + [DataMember(Name = "unalteredProperty", EmitDefaultValue = false)] + public string UnalteredProperty { get; private set; } + + /// + /// Returns false as UnalteredProperty should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeUnalteredProperty() + { + return false; + } + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPrivate + /// + [DataMember(Name = "potentiallyOverriddenPropertyToPrivate", EmitDefaultValue = false)] + public string PotentiallyOverriddenPropertyToPrivate { get; private set; } + + /// + /// Returns false as PotentiallyOverriddenPropertyToPrivate should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePotentiallyOverriddenPropertyToPrivate() + { + return false; + } + /// + /// Gets or Sets PotentiallyOverriddenPropertyToInternal + /// + [DataMember(Name = "potentiallyOverriddenPropertyToInternal", EmitDefaultValue = false)] + public string PotentiallyOverriddenPropertyToInternal { get; private set; } + + /// + /// Returns false as PotentiallyOverriddenPropertyToInternal should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePotentiallyOverriddenPropertyToInternal() + { + return false; + } + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPublic + /// + [DataMember(Name = "potentiallyOverriddenPropertyToPublic", EmitDefaultValue = false)] + public string PotentiallyOverriddenPropertyToPublic { get; private set; } + + /// + /// Returns false as PotentiallyOverriddenPropertyToPublic should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePotentiallyOverriddenPropertyToPublic() + { + return false; + } + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InjectedVendorExtensionsTest {\n"); + sb.Append(" UnalteredProperty: ").Append(UnalteredProperty).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPrivate: ").Append(PotentiallyOverriddenPropertyToPrivate).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToInternal: ").Append(PotentiallyOverriddenPropertyToInternal).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPublic: ").Append(PotentiallyOverriddenPropertyToPublic).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as InjectedVendorExtensionsTest).AreEqual; + } + + /// + /// Returns true if InjectedVendorExtensionsTest instances are equal + /// + /// Instance of InjectedVendorExtensionsTest to be compared + /// Boolean + public bool Equals(InjectedVendorExtensionsTest input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.UnalteredProperty != null) + { + hashCode = (hashCode * 59) + this.UnalteredProperty.GetHashCode(); + } + if (this.PotentiallyOverriddenPropertyToPrivate != null) + { + hashCode = (hashCode * 59) + this.PotentiallyOverriddenPropertyToPrivate.GetHashCode(); + } + if (this.PotentiallyOverriddenPropertyToInternal != null) + { + hashCode = (hashCode * 59) + this.PotentiallyOverriddenPropertyToInternal.GetHashCode(); + } + if (this.PotentiallyOverriddenPropertyToPublic != null) + { + hashCode = (hashCode * 59) + this.PotentiallyOverriddenPropertyToPublic.GetHashCode(); + } + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/.openapi-generator/FILES b/samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/.openapi-generator/FILES index 0ddde99ff436..6665035ea2e4 100644 --- a/samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/.openapi-generator/FILES +++ b/samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/.openapi-generator/FILES @@ -50,6 +50,7 @@ docs/GmFruit.md docs/GrandparentAnimal.md docs/HasOnlyReadOnly.md docs/HealthCheckResult.md +docs/InjectedVendorExtensionsTest.md docs/IsoscelesTriangle.md docs/List.md docs/LiteralStringClass.md @@ -186,6 +187,7 @@ src/Org.OpenAPITools/Model/GmFruit.cs src/Org.OpenAPITools/Model/GrandparentAnimal.cs src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs src/Org.OpenAPITools/Model/IsoscelesTriangle.cs src/Org.OpenAPITools/Model/List.cs src/Org.OpenAPITools/Model/LiteralStringClass.cs diff --git a/samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/README.md b/samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/README.md index 1c12fa4cbf28..e9a3b3c7e57a 100644 --- a/samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/README.md +++ b/samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/README.md @@ -202,6 +202,7 @@ Class | Method | HTTP request | Description - [Model.GrandparentAnimal](docs/GrandparentAnimal.md) - [Model.HasOnlyReadOnly](docs/HasOnlyReadOnly.md) - [Model.HealthCheckResult](docs/HealthCheckResult.md) + - [Model.InjectedVendorExtensionsTest](docs/InjectedVendorExtensionsTest.md) - [Model.IsoscelesTriangle](docs/IsoscelesTriangle.md) - [Model.List](docs/List.md) - [Model.LiteralStringClass](docs/LiteralStringClass.md) diff --git a/samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/api/openapi.yaml b/samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/api/openapi.yaml index a179b6cfdd29..586178fe4189 100644 --- a/samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/api/openapi.yaml +++ b/samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/api/openapi.yaml @@ -1355,6 +1355,21 @@ components: items: $ref: "#/components/schemas/RolesReportsHash" type: array + InjectedVendorExtensionsTest: + properties: + unalteredProperty: + readOnly: true + type: string + potentiallyOverriddenPropertyToPrivate: + readOnly: true + type: string + potentiallyOverriddenPropertyToInternal: + readOnly: true + type: string + potentiallyOverriddenPropertyToPublic: + readOnly: true + type: string + type: object RolesReportsHash: description: Role report Hash example: diff --git a/samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/docs/InjectedVendorExtensionsTest.md b/samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/docs/InjectedVendorExtensionsTest.md new file mode 100644 index 000000000000..79e5d2bac086 --- /dev/null +++ b/samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/docs/InjectedVendorExtensionsTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.InjectedVendorExtensionsTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**UnalteredProperty** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPrivate** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToInternal** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPublic** | **string** | | [optional] [readonly] + +[[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/csharp/restsharp/standard2.0/ConditionalSerialization/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs b/samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs new file mode 100644 index 000000000000..d63b2955a13d --- /dev/null +++ b/samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs @@ -0,0 +1,93 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InjectedVendorExtensionsTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InjectedVendorExtensionsTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InjectedVendorExtensionsTest + //private InjectedVendorExtensionsTest instance; + + public InjectedVendorExtensionsTestTests() + { + // TODO uncomment below to create an instance of InjectedVendorExtensionsTest + //instance = new InjectedVendorExtensionsTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InjectedVendorExtensionsTest + /// + [Fact] + public void InjectedVendorExtensionsTestInstanceTest() + { + // TODO uncomment below to test "IsType" InjectedVendorExtensionsTest + //Assert.IsType(instance); + } + + /// + /// Test the property 'UnalteredProperty' + /// + [Fact] + public void UnalteredPropertyTest() + { + // TODO unit test for the property 'UnalteredProperty' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPrivate' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPrivateTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPrivate' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToInternal' + /// + [Fact] + public void PotentiallyOverriddenPropertyToInternalTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToInternal' + } + + /// + /// Test the property 'PotentiallyOverriddenPropertyToPublic' + /// + [Fact] + public void PotentiallyOverriddenPropertyToPublicTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPublic' + } + } +} diff --git a/samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs b/samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs new file mode 100644 index 000000000000..ea655f3eb3d5 --- /dev/null +++ b/samples/client/petstore/csharp/restsharp/standard2.0/ConditionalSerialization/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs @@ -0,0 +1,196 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// InjectedVendorExtensionsTest + /// + [DataContract(Name = "InjectedVendorExtensionsTest")] + public partial class InjectedVendorExtensionsTest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + public InjectedVendorExtensionsTest() + { + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets UnalteredProperty + /// + [DataMember(Name = "unalteredProperty", EmitDefaultValue = false)] + public string UnalteredProperty { get; private set; } + + /// + /// Returns false as UnalteredProperty should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeUnalteredProperty() + { + return false; + } + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPrivate + /// + [DataMember(Name = "potentiallyOverriddenPropertyToPrivate", EmitDefaultValue = false)] + public string PotentiallyOverriddenPropertyToPrivate { get; private set; } + + /// + /// Returns false as PotentiallyOverriddenPropertyToPrivate should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePotentiallyOverriddenPropertyToPrivate() + { + return false; + } + /// + /// Gets or Sets PotentiallyOverriddenPropertyToInternal + /// + [DataMember(Name = "potentiallyOverriddenPropertyToInternal", EmitDefaultValue = false)] + public string PotentiallyOverriddenPropertyToInternal { get; private set; } + + /// + /// Returns false as PotentiallyOverriddenPropertyToInternal should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePotentiallyOverriddenPropertyToInternal() + { + return false; + } + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPublic + /// + [DataMember(Name = "potentiallyOverriddenPropertyToPublic", EmitDefaultValue = false)] + public string PotentiallyOverriddenPropertyToPublic { get; private set; } + + /// + /// Returns false as PotentiallyOverriddenPropertyToPublic should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePotentiallyOverriddenPropertyToPublic() + { + return false; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InjectedVendorExtensionsTest {\n"); + sb.Append(" UnalteredProperty: ").Append(UnalteredProperty).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPrivate: ").Append(PotentiallyOverriddenPropertyToPrivate).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToInternal: ").Append(PotentiallyOverriddenPropertyToInternal).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPublic: ").Append(PotentiallyOverriddenPropertyToPublic).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as InjectedVendorExtensionsTest).AreEqual; + } + + /// + /// Returns true if InjectedVendorExtensionsTest instances are equal + /// + /// Instance of InjectedVendorExtensionsTest to be compared + /// Boolean + public bool Equals(InjectedVendorExtensionsTest input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.UnalteredProperty != null) + { + hashCode = (hashCode * 59) + this.UnalteredProperty.GetHashCode(); + } + if (this.PotentiallyOverriddenPropertyToPrivate != null) + { + hashCode = (hashCode * 59) + this.PotentiallyOverriddenPropertyToPrivate.GetHashCode(); + } + if (this.PotentiallyOverriddenPropertyToInternal != null) + { + hashCode = (hashCode * 59) + this.PotentiallyOverriddenPropertyToInternal.GetHashCode(); + } + if (this.PotentiallyOverriddenPropertyToPublic != null) + { + hashCode = (hashCode * 59) + this.PotentiallyOverriddenPropertyToPublic.GetHashCode(); + } + if (this.AdditionalProperties != null) + { + hashCode = (hashCode * 59) + this.AdditionalProperties.GetHashCode(); + } + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp/unityWebRequest/net10/Petstore/.openapi-generator/FILES b/samples/client/petstore/csharp/unityWebRequest/net10/Petstore/.openapi-generator/FILES index f91fdecb6552..f3a442a0024e 100644 --- a/samples/client/petstore/csharp/unityWebRequest/net10/Petstore/.openapi-generator/FILES +++ b/samples/client/petstore/csharp/unityWebRequest/net10/Petstore/.openapi-generator/FILES @@ -48,6 +48,7 @@ docs/GmFruit.md docs/GrandparentAnimal.md docs/HasOnlyReadOnly.md docs/HealthCheckResult.md +docs/InjectedVendorExtensionsTest.md docs/IsoscelesTriangle.md docs/List.md docs/LiteralStringClass.md @@ -183,6 +184,7 @@ src/Org.OpenAPITools/Model/GmFruit.cs src/Org.OpenAPITools/Model/GrandparentAnimal.cs src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs src/Org.OpenAPITools/Model/IsoscelesTriangle.cs src/Org.OpenAPITools/Model/List.cs src/Org.OpenAPITools/Model/LiteralStringClass.cs diff --git a/samples/client/petstore/csharp/unityWebRequest/net10/Petstore/README.md b/samples/client/petstore/csharp/unityWebRequest/net10/Petstore/README.md index 5037335d949e..25104de6ed15 100644 --- a/samples/client/petstore/csharp/unityWebRequest/net10/Petstore/README.md +++ b/samples/client/petstore/csharp/unityWebRequest/net10/Petstore/README.md @@ -188,6 +188,7 @@ Class | Method | HTTP request | Description - [Model.GrandparentAnimal](GrandparentAnimal.md) - [Model.HasOnlyReadOnly](HasOnlyReadOnly.md) - [Model.HealthCheckResult](HealthCheckResult.md) + - [Model.InjectedVendorExtensionsTest](InjectedVendorExtensionsTest.md) - [Model.IsoscelesTriangle](IsoscelesTriangle.md) - [Model.List](List.md) - [Model.LiteralStringClass](LiteralStringClass.md) diff --git a/samples/client/petstore/csharp/unityWebRequest/net10/Petstore/api/openapi.yaml b/samples/client/petstore/csharp/unityWebRequest/net10/Petstore/api/openapi.yaml index a179b6cfdd29..586178fe4189 100644 --- a/samples/client/petstore/csharp/unityWebRequest/net10/Petstore/api/openapi.yaml +++ b/samples/client/petstore/csharp/unityWebRequest/net10/Petstore/api/openapi.yaml @@ -1355,6 +1355,21 @@ components: items: $ref: "#/components/schemas/RolesReportsHash" type: array + InjectedVendorExtensionsTest: + properties: + unalteredProperty: + readOnly: true + type: string + potentiallyOverriddenPropertyToPrivate: + readOnly: true + type: string + potentiallyOverriddenPropertyToInternal: + readOnly: true + type: string + potentiallyOverriddenPropertyToPublic: + readOnly: true + type: string + type: object RolesReportsHash: description: Role report Hash example: diff --git a/samples/client/petstore/csharp/unityWebRequest/net10/Petstore/docs/InjectedVendorExtensionsTest.md b/samples/client/petstore/csharp/unityWebRequest/net10/Petstore/docs/InjectedVendorExtensionsTest.md new file mode 100644 index 000000000000..79e5d2bac086 --- /dev/null +++ b/samples/client/petstore/csharp/unityWebRequest/net10/Petstore/docs/InjectedVendorExtensionsTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.InjectedVendorExtensionsTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**UnalteredProperty** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPrivate** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToInternal** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPublic** | **string** | | [optional] [readonly] + +[[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/csharp/unityWebRequest/net10/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs b/samples/client/petstore/csharp/unityWebRequest/net10/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs new file mode 100644 index 000000000000..8e8b592a4281 --- /dev/null +++ b/samples/client/petstore/csharp/unityWebRequest/net10/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs @@ -0,0 +1,90 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; +using NUnit.Framework; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InjectedVendorExtensionsTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InjectedVendorExtensionsTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InjectedVendorExtensionsTest + //private InjectedVendorExtensionsTest instance; + + public InjectedVendorExtensionsTestTests() + { + // TODO uncomment below to create an instance of InjectedVendorExtensionsTest + //instance = new InjectedVendorExtensionsTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InjectedVendorExtensionsTest + /// + [Test] + public void InjectedVendorExtensionsTestInstanceTest() + { + // TODO uncomment below to test "IsType" InjectedVendorExtensionsTest + //Assert.IsType(instance); + } + + /// + /// Test the property 'UnalteredProperty' + /// + [Test] + public void UnalteredPropertyTest() + { + // TODO unit test for the property 'UnalteredProperty' + } + /// + /// Test the property 'PotentiallyOverriddenPropertyToPrivate' + /// + [Test] + public void PotentiallyOverriddenPropertyToPrivateTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPrivate' + } + /// + /// Test the property 'PotentiallyOverriddenPropertyToInternal' + /// + [Test] + public void PotentiallyOverriddenPropertyToInternalTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToInternal' + } + /// + /// Test the property 'PotentiallyOverriddenPropertyToPublic' + /// + [Test] + public void PotentiallyOverriddenPropertyToPublicTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPublic' + } + } +} diff --git a/samples/client/petstore/csharp/unityWebRequest/net10/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs b/samples/client/petstore/csharp/unityWebRequest/net10/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs new file mode 100644 index 000000000000..2c4e1264d3ac --- /dev/null +++ b/samples/client/petstore/csharp/unityWebRequest/net10/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs @@ -0,0 +1,197 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; + +namespace Org.OpenAPITools.Model +{ + /// + /// InjectedVendorExtensionsTest + /// + [DataContract(Name = "InjectedVendorExtensionsTest")] + public partial class InjectedVendorExtensionsTest : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + public InjectedVendorExtensionsTest() + { + } + + /// + /// Gets or Sets UnalteredProperty + /// + [DataMember(Name = "unalteredProperty", EmitDefaultValue = false)] + public string UnalteredProperty { get; private set; } + + /// + /// Returns false as UnalteredProperty should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeUnalteredProperty() + { + return false; + } + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPrivate + /// + [DataMember(Name = "potentiallyOverriddenPropertyToPrivate", EmitDefaultValue = false)] + public string PotentiallyOverriddenPropertyToPrivate { get; private set; } + + /// + /// Returns false as PotentiallyOverriddenPropertyToPrivate should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePotentiallyOverriddenPropertyToPrivate() + { + return false; + } + /// + /// Gets or Sets PotentiallyOverriddenPropertyToInternal + /// + [DataMember(Name = "potentiallyOverriddenPropertyToInternal", EmitDefaultValue = false)] + public string PotentiallyOverriddenPropertyToInternal { get; private set; } + + /// + /// Returns false as PotentiallyOverriddenPropertyToInternal should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePotentiallyOverriddenPropertyToInternal() + { + return false; + } + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPublic + /// + [DataMember(Name = "potentiallyOverriddenPropertyToPublic", EmitDefaultValue = false)] + public string PotentiallyOverriddenPropertyToPublic { get; private set; } + + /// + /// Returns false as PotentiallyOverriddenPropertyToPublic should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePotentiallyOverriddenPropertyToPublic() + { + return false; + } + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InjectedVendorExtensionsTest {\n"); + sb.Append(" UnalteredProperty: ").Append(UnalteredProperty).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPrivate: ").Append(PotentiallyOverriddenPropertyToPrivate).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToInternal: ").Append(PotentiallyOverriddenPropertyToInternal).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPublic: ").Append(PotentiallyOverriddenPropertyToPublic).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as InjectedVendorExtensionsTest); + } + + /// + /// Returns true if InjectedVendorExtensionsTest instances are equal + /// + /// Instance of InjectedVendorExtensionsTest to be compared + /// Boolean + public bool Equals(InjectedVendorExtensionsTest input) + { + if (input == null) + { + return false; + } + return + ( + this.UnalteredProperty == input.UnalteredProperty || + (this.UnalteredProperty != null && + this.UnalteredProperty.Equals(input.UnalteredProperty)) + ) && + ( + this.PotentiallyOverriddenPropertyToPrivate == input.PotentiallyOverriddenPropertyToPrivate || + (this.PotentiallyOverriddenPropertyToPrivate != null && + this.PotentiallyOverriddenPropertyToPrivate.Equals(input.PotentiallyOverriddenPropertyToPrivate)) + ) && + ( + this.PotentiallyOverriddenPropertyToInternal == input.PotentiallyOverriddenPropertyToInternal || + (this.PotentiallyOverriddenPropertyToInternal != null && + this.PotentiallyOverriddenPropertyToInternal.Equals(input.PotentiallyOverriddenPropertyToInternal)) + ) && + ( + this.PotentiallyOverriddenPropertyToPublic == input.PotentiallyOverriddenPropertyToPublic || + (this.PotentiallyOverriddenPropertyToPublic != null && + this.PotentiallyOverriddenPropertyToPublic.Equals(input.PotentiallyOverriddenPropertyToPublic)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.UnalteredProperty != null) + { + hashCode = (hashCode * 59) + this.UnalteredProperty.GetHashCode(); + } + if (this.PotentiallyOverriddenPropertyToPrivate != null) + { + hashCode = (hashCode * 59) + this.PotentiallyOverriddenPropertyToPrivate.GetHashCode(); + } + if (this.PotentiallyOverriddenPropertyToInternal != null) + { + hashCode = (hashCode * 59) + this.PotentiallyOverriddenPropertyToInternal.GetHashCode(); + } + if (this.PotentiallyOverriddenPropertyToPublic != null) + { + hashCode = (hashCode * 59) + this.PotentiallyOverriddenPropertyToPublic.GetHashCode(); + } + return hashCode; + } + } + + } + +} diff --git a/samples/client/petstore/csharp/unityWebRequest/net9/Petstore/.openapi-generator/FILES b/samples/client/petstore/csharp/unityWebRequest/net9/Petstore/.openapi-generator/FILES index f91fdecb6552..f3a442a0024e 100644 --- a/samples/client/petstore/csharp/unityWebRequest/net9/Petstore/.openapi-generator/FILES +++ b/samples/client/petstore/csharp/unityWebRequest/net9/Petstore/.openapi-generator/FILES @@ -48,6 +48,7 @@ docs/GmFruit.md docs/GrandparentAnimal.md docs/HasOnlyReadOnly.md docs/HealthCheckResult.md +docs/InjectedVendorExtensionsTest.md docs/IsoscelesTriangle.md docs/List.md docs/LiteralStringClass.md @@ -183,6 +184,7 @@ src/Org.OpenAPITools/Model/GmFruit.cs src/Org.OpenAPITools/Model/GrandparentAnimal.cs src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs src/Org.OpenAPITools/Model/IsoscelesTriangle.cs src/Org.OpenAPITools/Model/List.cs src/Org.OpenAPITools/Model/LiteralStringClass.cs diff --git a/samples/client/petstore/csharp/unityWebRequest/net9/Petstore/README.md b/samples/client/petstore/csharp/unityWebRequest/net9/Petstore/README.md index 5037335d949e..25104de6ed15 100644 --- a/samples/client/petstore/csharp/unityWebRequest/net9/Petstore/README.md +++ b/samples/client/petstore/csharp/unityWebRequest/net9/Petstore/README.md @@ -188,6 +188,7 @@ Class | Method | HTTP request | Description - [Model.GrandparentAnimal](GrandparentAnimal.md) - [Model.HasOnlyReadOnly](HasOnlyReadOnly.md) - [Model.HealthCheckResult](HealthCheckResult.md) + - [Model.InjectedVendorExtensionsTest](InjectedVendorExtensionsTest.md) - [Model.IsoscelesTriangle](IsoscelesTriangle.md) - [Model.List](List.md) - [Model.LiteralStringClass](LiteralStringClass.md) diff --git a/samples/client/petstore/csharp/unityWebRequest/net9/Petstore/api/openapi.yaml b/samples/client/petstore/csharp/unityWebRequest/net9/Petstore/api/openapi.yaml index a179b6cfdd29..586178fe4189 100644 --- a/samples/client/petstore/csharp/unityWebRequest/net9/Petstore/api/openapi.yaml +++ b/samples/client/petstore/csharp/unityWebRequest/net9/Petstore/api/openapi.yaml @@ -1355,6 +1355,21 @@ components: items: $ref: "#/components/schemas/RolesReportsHash" type: array + InjectedVendorExtensionsTest: + properties: + unalteredProperty: + readOnly: true + type: string + potentiallyOverriddenPropertyToPrivate: + readOnly: true + type: string + potentiallyOverriddenPropertyToInternal: + readOnly: true + type: string + potentiallyOverriddenPropertyToPublic: + readOnly: true + type: string + type: object RolesReportsHash: description: Role report Hash example: diff --git a/samples/client/petstore/csharp/unityWebRequest/net9/Petstore/docs/InjectedVendorExtensionsTest.md b/samples/client/petstore/csharp/unityWebRequest/net9/Petstore/docs/InjectedVendorExtensionsTest.md new file mode 100644 index 000000000000..79e5d2bac086 --- /dev/null +++ b/samples/client/petstore/csharp/unityWebRequest/net9/Petstore/docs/InjectedVendorExtensionsTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.InjectedVendorExtensionsTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**UnalteredProperty** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPrivate** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToInternal** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPublic** | **string** | | [optional] [readonly] + +[[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/csharp/unityWebRequest/net9/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs b/samples/client/petstore/csharp/unityWebRequest/net9/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs new file mode 100644 index 000000000000..8e8b592a4281 --- /dev/null +++ b/samples/client/petstore/csharp/unityWebRequest/net9/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs @@ -0,0 +1,90 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; +using NUnit.Framework; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InjectedVendorExtensionsTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InjectedVendorExtensionsTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InjectedVendorExtensionsTest + //private InjectedVendorExtensionsTest instance; + + public InjectedVendorExtensionsTestTests() + { + // TODO uncomment below to create an instance of InjectedVendorExtensionsTest + //instance = new InjectedVendorExtensionsTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InjectedVendorExtensionsTest + /// + [Test] + public void InjectedVendorExtensionsTestInstanceTest() + { + // TODO uncomment below to test "IsType" InjectedVendorExtensionsTest + //Assert.IsType(instance); + } + + /// + /// Test the property 'UnalteredProperty' + /// + [Test] + public void UnalteredPropertyTest() + { + // TODO unit test for the property 'UnalteredProperty' + } + /// + /// Test the property 'PotentiallyOverriddenPropertyToPrivate' + /// + [Test] + public void PotentiallyOverriddenPropertyToPrivateTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPrivate' + } + /// + /// Test the property 'PotentiallyOverriddenPropertyToInternal' + /// + [Test] + public void PotentiallyOverriddenPropertyToInternalTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToInternal' + } + /// + /// Test the property 'PotentiallyOverriddenPropertyToPublic' + /// + [Test] + public void PotentiallyOverriddenPropertyToPublicTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPublic' + } + } +} diff --git a/samples/client/petstore/csharp/unityWebRequest/net9/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs b/samples/client/petstore/csharp/unityWebRequest/net9/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs new file mode 100644 index 000000000000..2c4e1264d3ac --- /dev/null +++ b/samples/client/petstore/csharp/unityWebRequest/net9/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs @@ -0,0 +1,197 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; + +namespace Org.OpenAPITools.Model +{ + /// + /// InjectedVendorExtensionsTest + /// + [DataContract(Name = "InjectedVendorExtensionsTest")] + public partial class InjectedVendorExtensionsTest : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + public InjectedVendorExtensionsTest() + { + } + + /// + /// Gets or Sets UnalteredProperty + /// + [DataMember(Name = "unalteredProperty", EmitDefaultValue = false)] + public string UnalteredProperty { get; private set; } + + /// + /// Returns false as UnalteredProperty should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeUnalteredProperty() + { + return false; + } + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPrivate + /// + [DataMember(Name = "potentiallyOverriddenPropertyToPrivate", EmitDefaultValue = false)] + public string PotentiallyOverriddenPropertyToPrivate { get; private set; } + + /// + /// Returns false as PotentiallyOverriddenPropertyToPrivate should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePotentiallyOverriddenPropertyToPrivate() + { + return false; + } + /// + /// Gets or Sets PotentiallyOverriddenPropertyToInternal + /// + [DataMember(Name = "potentiallyOverriddenPropertyToInternal", EmitDefaultValue = false)] + public string PotentiallyOverriddenPropertyToInternal { get; private set; } + + /// + /// Returns false as PotentiallyOverriddenPropertyToInternal should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePotentiallyOverriddenPropertyToInternal() + { + return false; + } + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPublic + /// + [DataMember(Name = "potentiallyOverriddenPropertyToPublic", EmitDefaultValue = false)] + public string PotentiallyOverriddenPropertyToPublic { get; private set; } + + /// + /// Returns false as PotentiallyOverriddenPropertyToPublic should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePotentiallyOverriddenPropertyToPublic() + { + return false; + } + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InjectedVendorExtensionsTest {\n"); + sb.Append(" UnalteredProperty: ").Append(UnalteredProperty).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPrivate: ").Append(PotentiallyOverriddenPropertyToPrivate).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToInternal: ").Append(PotentiallyOverriddenPropertyToInternal).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPublic: ").Append(PotentiallyOverriddenPropertyToPublic).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as InjectedVendorExtensionsTest); + } + + /// + /// Returns true if InjectedVendorExtensionsTest instances are equal + /// + /// Instance of InjectedVendorExtensionsTest to be compared + /// Boolean + public bool Equals(InjectedVendorExtensionsTest input) + { + if (input == null) + { + return false; + } + return + ( + this.UnalteredProperty == input.UnalteredProperty || + (this.UnalteredProperty != null && + this.UnalteredProperty.Equals(input.UnalteredProperty)) + ) && + ( + this.PotentiallyOverriddenPropertyToPrivate == input.PotentiallyOverriddenPropertyToPrivate || + (this.PotentiallyOverriddenPropertyToPrivate != null && + this.PotentiallyOverriddenPropertyToPrivate.Equals(input.PotentiallyOverriddenPropertyToPrivate)) + ) && + ( + this.PotentiallyOverriddenPropertyToInternal == input.PotentiallyOverriddenPropertyToInternal || + (this.PotentiallyOverriddenPropertyToInternal != null && + this.PotentiallyOverriddenPropertyToInternal.Equals(input.PotentiallyOverriddenPropertyToInternal)) + ) && + ( + this.PotentiallyOverriddenPropertyToPublic == input.PotentiallyOverriddenPropertyToPublic || + (this.PotentiallyOverriddenPropertyToPublic != null && + this.PotentiallyOverriddenPropertyToPublic.Equals(input.PotentiallyOverriddenPropertyToPublic)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.UnalteredProperty != null) + { + hashCode = (hashCode * 59) + this.UnalteredProperty.GetHashCode(); + } + if (this.PotentiallyOverriddenPropertyToPrivate != null) + { + hashCode = (hashCode * 59) + this.PotentiallyOverriddenPropertyToPrivate.GetHashCode(); + } + if (this.PotentiallyOverriddenPropertyToInternal != null) + { + hashCode = (hashCode * 59) + this.PotentiallyOverriddenPropertyToInternal.GetHashCode(); + } + if (this.PotentiallyOverriddenPropertyToPublic != null) + { + hashCode = (hashCode * 59) + this.PotentiallyOverriddenPropertyToPublic.GetHashCode(); + } + return hashCode; + } + } + + } + +} diff --git a/samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/.openapi-generator/FILES b/samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/.openapi-generator/FILES index f91fdecb6552..f3a442a0024e 100644 --- a/samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/.openapi-generator/FILES +++ b/samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/.openapi-generator/FILES @@ -48,6 +48,7 @@ docs/GmFruit.md docs/GrandparentAnimal.md docs/HasOnlyReadOnly.md docs/HealthCheckResult.md +docs/InjectedVendorExtensionsTest.md docs/IsoscelesTriangle.md docs/List.md docs/LiteralStringClass.md @@ -183,6 +184,7 @@ src/Org.OpenAPITools/Model/GmFruit.cs src/Org.OpenAPITools/Model/GrandparentAnimal.cs src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs src/Org.OpenAPITools/Model/IsoscelesTriangle.cs src/Org.OpenAPITools/Model/List.cs src/Org.OpenAPITools/Model/LiteralStringClass.cs diff --git a/samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/README.md b/samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/README.md index 5037335d949e..25104de6ed15 100644 --- a/samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/README.md +++ b/samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/README.md @@ -188,6 +188,7 @@ Class | Method | HTTP request | Description - [Model.GrandparentAnimal](GrandparentAnimal.md) - [Model.HasOnlyReadOnly](HasOnlyReadOnly.md) - [Model.HealthCheckResult](HealthCheckResult.md) + - [Model.InjectedVendorExtensionsTest](InjectedVendorExtensionsTest.md) - [Model.IsoscelesTriangle](IsoscelesTriangle.md) - [Model.List](List.md) - [Model.LiteralStringClass](LiteralStringClass.md) diff --git a/samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/api/openapi.yaml b/samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/api/openapi.yaml index a179b6cfdd29..586178fe4189 100644 --- a/samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/api/openapi.yaml +++ b/samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/api/openapi.yaml @@ -1355,6 +1355,21 @@ components: items: $ref: "#/components/schemas/RolesReportsHash" type: array + InjectedVendorExtensionsTest: + properties: + unalteredProperty: + readOnly: true + type: string + potentiallyOverriddenPropertyToPrivate: + readOnly: true + type: string + potentiallyOverriddenPropertyToInternal: + readOnly: true + type: string + potentiallyOverriddenPropertyToPublic: + readOnly: true + type: string + type: object RolesReportsHash: description: Role report Hash example: diff --git a/samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/docs/InjectedVendorExtensionsTest.md b/samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/docs/InjectedVendorExtensionsTest.md new file mode 100644 index 000000000000..79e5d2bac086 --- /dev/null +++ b/samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/docs/InjectedVendorExtensionsTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.InjectedVendorExtensionsTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**UnalteredProperty** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPrivate** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToInternal** | **string** | | [optional] [readonly] +**PotentiallyOverriddenPropertyToPublic** | **string** | | [optional] [readonly] + +[[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/csharp/unityWebRequest/standard2.0/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs b/samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs new file mode 100644 index 000000000000..8e8b592a4281 --- /dev/null +++ b/samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/src/Org.OpenAPITools.Test/Model/InjectedVendorExtensionsTestTests.cs @@ -0,0 +1,90 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; +using NUnit.Framework; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InjectedVendorExtensionsTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InjectedVendorExtensionsTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InjectedVendorExtensionsTest + //private InjectedVendorExtensionsTest instance; + + public InjectedVendorExtensionsTestTests() + { + // TODO uncomment below to create an instance of InjectedVendorExtensionsTest + //instance = new InjectedVendorExtensionsTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InjectedVendorExtensionsTest + /// + [Test] + public void InjectedVendorExtensionsTestInstanceTest() + { + // TODO uncomment below to test "IsType" InjectedVendorExtensionsTest + //Assert.IsType(instance); + } + + /// + /// Test the property 'UnalteredProperty' + /// + [Test] + public void UnalteredPropertyTest() + { + // TODO unit test for the property 'UnalteredProperty' + } + /// + /// Test the property 'PotentiallyOverriddenPropertyToPrivate' + /// + [Test] + public void PotentiallyOverriddenPropertyToPrivateTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPrivate' + } + /// + /// Test the property 'PotentiallyOverriddenPropertyToInternal' + /// + [Test] + public void PotentiallyOverriddenPropertyToInternalTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToInternal' + } + /// + /// Test the property 'PotentiallyOverriddenPropertyToPublic' + /// + [Test] + public void PotentiallyOverriddenPropertyToPublicTest() + { + // TODO unit test for the property 'PotentiallyOverriddenPropertyToPublic' + } + } +} diff --git a/samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs b/samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs new file mode 100644 index 000000000000..2c4e1264d3ac --- /dev/null +++ b/samples/client/petstore/csharp/unityWebRequest/standard2.0/Petstore/src/Org.OpenAPITools/Model/InjectedVendorExtensionsTest.cs @@ -0,0 +1,197 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; + +namespace Org.OpenAPITools.Model +{ + /// + /// InjectedVendorExtensionsTest + /// + [DataContract(Name = "InjectedVendorExtensionsTest")] + public partial class InjectedVendorExtensionsTest : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + public InjectedVendorExtensionsTest() + { + } + + /// + /// Gets or Sets UnalteredProperty + /// + [DataMember(Name = "unalteredProperty", EmitDefaultValue = false)] + public string UnalteredProperty { get; private set; } + + /// + /// Returns false as UnalteredProperty should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeUnalteredProperty() + { + return false; + } + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPrivate + /// + [DataMember(Name = "potentiallyOverriddenPropertyToPrivate", EmitDefaultValue = false)] + public string PotentiallyOverriddenPropertyToPrivate { get; private set; } + + /// + /// Returns false as PotentiallyOverriddenPropertyToPrivate should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePotentiallyOverriddenPropertyToPrivate() + { + return false; + } + /// + /// Gets or Sets PotentiallyOverriddenPropertyToInternal + /// + [DataMember(Name = "potentiallyOverriddenPropertyToInternal", EmitDefaultValue = false)] + public string PotentiallyOverriddenPropertyToInternal { get; private set; } + + /// + /// Returns false as PotentiallyOverriddenPropertyToInternal should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePotentiallyOverriddenPropertyToInternal() + { + return false; + } + /// + /// Gets or Sets PotentiallyOverriddenPropertyToPublic + /// + [DataMember(Name = "potentiallyOverriddenPropertyToPublic", EmitDefaultValue = false)] + public string PotentiallyOverriddenPropertyToPublic { get; private set; } + + /// + /// Returns false as PotentiallyOverriddenPropertyToPublic should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePotentiallyOverriddenPropertyToPublic() + { + return false; + } + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InjectedVendorExtensionsTest {\n"); + sb.Append(" UnalteredProperty: ").Append(UnalteredProperty).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPrivate: ").Append(PotentiallyOverriddenPropertyToPrivate).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToInternal: ").Append(PotentiallyOverriddenPropertyToInternal).Append("\n"); + sb.Append(" PotentiallyOverriddenPropertyToPublic: ").Append(PotentiallyOverriddenPropertyToPublic).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as InjectedVendorExtensionsTest); + } + + /// + /// Returns true if InjectedVendorExtensionsTest instances are equal + /// + /// Instance of InjectedVendorExtensionsTest to be compared + /// Boolean + public bool Equals(InjectedVendorExtensionsTest input) + { + if (input == null) + { + return false; + } + return + ( + this.UnalteredProperty == input.UnalteredProperty || + (this.UnalteredProperty != null && + this.UnalteredProperty.Equals(input.UnalteredProperty)) + ) && + ( + this.PotentiallyOverriddenPropertyToPrivate == input.PotentiallyOverriddenPropertyToPrivate || + (this.PotentiallyOverriddenPropertyToPrivate != null && + this.PotentiallyOverriddenPropertyToPrivate.Equals(input.PotentiallyOverriddenPropertyToPrivate)) + ) && + ( + this.PotentiallyOverriddenPropertyToInternal == input.PotentiallyOverriddenPropertyToInternal || + (this.PotentiallyOverriddenPropertyToInternal != null && + this.PotentiallyOverriddenPropertyToInternal.Equals(input.PotentiallyOverriddenPropertyToInternal)) + ) && + ( + this.PotentiallyOverriddenPropertyToPublic == input.PotentiallyOverriddenPropertyToPublic || + (this.PotentiallyOverriddenPropertyToPublic != null && + this.PotentiallyOverriddenPropertyToPublic.Equals(input.PotentiallyOverriddenPropertyToPublic)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.UnalteredProperty != null) + { + hashCode = (hashCode * 59) + this.UnalteredProperty.GetHashCode(); + } + if (this.PotentiallyOverriddenPropertyToPrivate != null) + { + hashCode = (hashCode * 59) + this.PotentiallyOverriddenPropertyToPrivate.GetHashCode(); + } + if (this.PotentiallyOverriddenPropertyToInternal != null) + { + hashCode = (hashCode * 59) + this.PotentiallyOverriddenPropertyToInternal.GetHashCode(); + } + if (this.PotentiallyOverriddenPropertyToPublic != null) + { + hashCode = (hashCode * 59) + this.PotentiallyOverriddenPropertyToPublic.GetHashCode(); + } + return hashCode; + } + } + + } + +} From 76a8dfd8a9d3497f983147efeeef17d300b93dc7 Mon Sep 17 00:00:00 2001 From: Cameron Koegel <53310569+ckoegel@users.noreply.github.com> Date: Sat, 8 Aug 2026 05:51:24 -0400 Subject: [PATCH 2/7] [Java][okhttp-gson] Fix `LocalDateTime` Serialization (#24643) * [Java][okhttp-gson] Fix `LocalDateTime` Serialization * generate samples * add test * fim pom sample * fix serializer logic per cubic comment * samples * update test * address cubic ApiClient feedback * samples --- .../libraries/okhttp-gson/ApiClient.mustache | 11 ++++ .../Java/libraries/okhttp-gson/JSON.mustache | 57 +++++++++++++++++++ .../org/openapitools/client/ApiClient.java | 11 ++++ .../java/org/openapitools/client/JSON.java | 57 +++++++++++++++++++ .../org/openapitools/client/ApiClient.java | 11 ++++ .../java/org/openapitools/client/JSON.java | 57 +++++++++++++++++++ .../org/openapitools/client/ApiClient.java | 11 ++++ .../java/org/openapitools/client/JSON.java | 57 +++++++++++++++++++ .../org/openapitools/client/ApiClient.java | 11 ++++ .../java/org/openapitools/client/JSON.java | 57 +++++++++++++++++++ .../org/openapitools/client/ApiClient.java | 11 ++++ .../java/org/openapitools/client/JSON.java | 57 +++++++++++++++++++ .../org/openapitools/client/ApiClient.java | 11 ++++ .../java/org/openapitools/client/JSON.java | 57 +++++++++++++++++++ .../org/openapitools/client/ApiClient.java | 11 ++++ .../java/org/openapitools/client/JSON.java | 57 +++++++++++++++++++ .../org/openapitools/client/ApiClient.java | 11 ++++ .../java/org/openapitools/client/JSON.java | 57 +++++++++++++++++++ .../org/openapitools/client/ApiClient.java | 11 ++++ .../java/org/openapitools/client/JSON.java | 57 +++++++++++++++++++ .../org/openapitools/client/ApiClient.java | 11 ++++ .../java/org/openapitools/client/JSON.java | 57 +++++++++++++++++++ .../org/openapitools/client/ApiClient.java | 11 ++++ .../java/org/openapitools/client/JSON.java | 57 +++++++++++++++++++ .../org/openapitools/client/ApiClient.java | 11 ++++ .../java/org/openapitools/client/JSON.java | 57 +++++++++++++++++++ .../org/openapitools/client/ApiClient.java | 11 ++++ .../java/org/openapitools/client/JSON.java | 57 +++++++++++++++++++ .../org/openapitools/client/ApiClient.java | 11 ++++ .../java/org/openapitools/client/JSON.java | 57 +++++++++++++++++++ .../org/openapitools/client/ApiClient.java | 11 ++++ .../java/org/openapitools/client/JSON.java | 57 +++++++++++++++++++ .../org/openapitools/client/JSONTest.java | 34 +++++++++++ .../resttemplate-springBoot4-jackson3/pom.xml | 2 +- 34 files changed, 1123 insertions(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache index 499469238d2f..f52c6e17238a 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache @@ -523,6 +523,17 @@ public class ApiClient { return this; } + /** + *

Set LocalDateTimeFormat.

+ * + * @param dateFormat a {@link java.time.format.DateTimeFormatter} object + * @return a {@link {{invokerPackage}}.ApiClient} object + */ + public ApiClient setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + JSON.setLocalDateTimeFormat(dateFormat); + return this; + } + {{/jsr310}} /** *

Set LenientOnJson.

diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/JSON.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/JSON.mustache index eeb26cb9ca57..e285a2a3ef45 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/JSON.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/JSON.mustache @@ -33,8 +33,10 @@ import java.text.ParseException; import java.text.ParsePosition; {{#jsr310}} import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; {{/jsr310}} import java.util.Date; import java.util.Locale; @@ -59,6 +61,7 @@ public class JSON { {{#jsr310}} private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(); private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter(); + private static LocalDateTimeTypeAdapter localDateTimeTypeAdapter = new LocalDateTimeTypeAdapter(); {{/jsr310}} private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter(); @@ -125,6 +128,7 @@ public class JSON { {{#jsr310}} gsonBuilder.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(LocalDate.class, localDateTypeAdapter); + gsonBuilder.registerTypeAdapter(LocalDateTime.class, localDateTimeTypeAdapter); {{/jsr310}} gsonBuilder.registerTypeAdapter(byte[].class, byteArrayAdapter); {{#models}} @@ -431,6 +435,55 @@ public class JSON { } } + /** + * Gson TypeAdapter for JSR310 LocalDateTime type + */ + public static class LocalDateTimeTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public LocalDateTimeTypeAdapter() { + this(DateTimeFormatter.ISO_LOCAL_DATE_TIME); + } + + public LocalDateTimeTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, LocalDateTime date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public LocalDateTime read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + return LocalDateTime.parse(date, formatter); + } catch (DateTimeParseException e) { + if (date.length() > 10 && date.charAt(10) == ' ') { + date = date.substring(0, 10) + 'T' + date.substring(11); + return LocalDateTime.parse(date, formatter); + } + throw e; + } + } + } + } + public static void setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { offsetDateTimeTypeAdapter.setFormat(dateFormat); } @@ -439,6 +492,10 @@ public class JSON { localDateTypeAdapter.setFormat(dateFormat); } + public static void setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + localDateTimeTypeAdapter.setFormat(dateFormat); + } + {{/jsr310}} /** * Gson TypeAdapter for java.sql.Date type diff --git a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/ApiClient.java index 9dc6db9bebfd..5725bd1f29b8 100644 --- a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/ApiClient.java @@ -453,6 +453,17 @@ public ApiClient setLocalDateFormat(DateTimeFormatter dateFormat) { return this; } + /** + *

Set LocalDateTimeFormat.

+ * + * @param dateFormat a {@link java.time.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ + public ApiClient setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + JSON.setLocalDateTimeFormat(dateFormat); + return this; + } + /** *

Set LenientOnJson.

* diff --git a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/JSON.java b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/JSON.java index 2ba91e749c71..2fa395e93749 100644 --- a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/JSON.java +++ b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/JSON.java @@ -36,8 +36,10 @@ import java.text.ParseException; import java.text.ParsePosition; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; import java.util.Date; import java.util.Locale; import java.util.Map; @@ -56,6 +58,7 @@ public class JSON { private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter(); private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(); private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter(); + private static LocalDateTimeTypeAdapter localDateTimeTypeAdapter = new LocalDateTimeTypeAdapter(); private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter(); @SuppressWarnings("unchecked") @@ -95,6 +98,7 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri gsonBuilder.registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter); gsonBuilder.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(LocalDate.class, localDateTypeAdapter); + gsonBuilder.registerTypeAdapter(LocalDateTime.class, localDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(byte[].class, byteArrayAdapter); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.Category.CustomTypeAdapterFactory()); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.ModelApiResponse.CustomTypeAdapterFactory()); @@ -302,6 +306,55 @@ public LocalDate read(JsonReader in) throws IOException { } } + /** + * Gson TypeAdapter for JSR310 LocalDateTime type + */ + public static class LocalDateTimeTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public LocalDateTimeTypeAdapter() { + this(DateTimeFormatter.ISO_LOCAL_DATE_TIME); + } + + public LocalDateTimeTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, LocalDateTime date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public LocalDateTime read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + return LocalDateTime.parse(date, formatter); + } catch (DateTimeParseException e) { + if (date.length() > 10 && date.charAt(10) == ' ') { + date = date.substring(0, 10) + 'T' + date.substring(11); + return LocalDateTime.parse(date, formatter); + } + throw e; + } + } + } + } + public static void setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { offsetDateTimeTypeAdapter.setFormat(dateFormat); } @@ -310,6 +363,10 @@ public static void setLocalDateFormat(DateTimeFormatter dateFormat) { localDateTypeAdapter.setFormat(dateFormat); } + public static void setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + localDateTimeTypeAdapter.setFormat(dateFormat); + } + /** * Gson TypeAdapter for java.sql.Date type * If the dateFormat is null, a simple "yyyy-MM-dd" format will be used diff --git a/samples/client/echo_api/java/okhttp-gson/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/echo_api/java/okhttp-gson/src/main/java/org/openapitools/client/ApiClient.java index 4ce1e392bbf3..6fd0329bbd3d 100644 --- a/samples/client/echo_api/java/okhttp-gson/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/echo_api/java/okhttp-gson/src/main/java/org/openapitools/client/ApiClient.java @@ -381,6 +381,17 @@ public ApiClient setLocalDateFormat(DateTimeFormatter dateFormat) { return this; } + /** + *

Set LocalDateTimeFormat.

+ * + * @param dateFormat a {@link java.time.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ + public ApiClient setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + JSON.setLocalDateTimeFormat(dateFormat); + return this; + } + /** *

Set LenientOnJson.

* diff --git a/samples/client/echo_api/java/okhttp-gson/src/main/java/org/openapitools/client/JSON.java b/samples/client/echo_api/java/okhttp-gson/src/main/java/org/openapitools/client/JSON.java index 770195b00c99..a196e7a1737e 100644 --- a/samples/client/echo_api/java/okhttp-gson/src/main/java/org/openapitools/client/JSON.java +++ b/samples/client/echo_api/java/okhttp-gson/src/main/java/org/openapitools/client/JSON.java @@ -36,8 +36,10 @@ import java.text.ParseException; import java.text.ParsePosition; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; import java.util.Date; import java.util.Locale; import java.util.Map; @@ -56,6 +58,7 @@ public class JSON { private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter(); private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(); private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter(); + private static LocalDateTimeTypeAdapter localDateTimeTypeAdapter = new LocalDateTimeTypeAdapter(); private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter(); @SuppressWarnings("unchecked") @@ -95,6 +98,7 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri gsonBuilder.registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter); gsonBuilder.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(LocalDate.class, localDateTypeAdapter); + gsonBuilder.registerTypeAdapter(LocalDateTime.class, localDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(byte[].class, byteArrayAdapter); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.Bird.CustomTypeAdapterFactory()); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.Category.CustomTypeAdapterFactory()); @@ -306,6 +310,55 @@ public LocalDate read(JsonReader in) throws IOException { } } + /** + * Gson TypeAdapter for JSR310 LocalDateTime type + */ + public static class LocalDateTimeTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public LocalDateTimeTypeAdapter() { + this(DateTimeFormatter.ISO_LOCAL_DATE_TIME); + } + + public LocalDateTimeTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, LocalDateTime date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public LocalDateTime read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + return LocalDateTime.parse(date, formatter); + } catch (DateTimeParseException e) { + if (date.length() > 10 && date.charAt(10) == ' ') { + date = date.substring(0, 10) + 'T' + date.substring(11); + return LocalDateTime.parse(date, formatter); + } + throw e; + } + } + } + } + public static void setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { offsetDateTimeTypeAdapter.setFormat(dateFormat); } @@ -314,6 +367,10 @@ public static void setLocalDateFormat(DateTimeFormatter dateFormat) { localDateTypeAdapter.setFormat(dateFormat); } + public static void setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + localDateTimeTypeAdapter.setFormat(dateFormat); + } + /** * Gson TypeAdapter for java.sql.Date type * If the dateFormat is null, a simple "yyyy-MM-dd" format will be used diff --git a/samples/client/others/java/okhttp-gson-oneOf-array/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/others/java/okhttp-gson-oneOf-array/src/main/java/org/openapitools/client/ApiClient.java index fd046d2eeac0..927f5fb14ad8 100644 --- a/samples/client/others/java/okhttp-gson-oneOf-array/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/others/java/okhttp-gson-oneOf-array/src/main/java/org/openapitools/client/ApiClient.java @@ -377,6 +377,17 @@ public ApiClient setLocalDateFormat(DateTimeFormatter dateFormat) { return this; } + /** + *

Set LocalDateTimeFormat.

+ * + * @param dateFormat a {@link java.time.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ + public ApiClient setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + JSON.setLocalDateTimeFormat(dateFormat); + return this; + } + /** *

Set LenientOnJson.

* diff --git a/samples/client/others/java/okhttp-gson-oneOf-array/src/main/java/org/openapitools/client/JSON.java b/samples/client/others/java/okhttp-gson-oneOf-array/src/main/java/org/openapitools/client/JSON.java index 578186471f75..6f53445342ba 100644 --- a/samples/client/others/java/okhttp-gson-oneOf-array/src/main/java/org/openapitools/client/JSON.java +++ b/samples/client/others/java/okhttp-gson-oneOf-array/src/main/java/org/openapitools/client/JSON.java @@ -36,8 +36,10 @@ import java.text.ParseException; import java.text.ParsePosition; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; import java.util.Date; import java.util.Locale; import java.util.Map; @@ -56,6 +58,7 @@ public class JSON { private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter(); private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(); private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter(); + private static LocalDateTimeTypeAdapter localDateTimeTypeAdapter = new LocalDateTimeTypeAdapter(); private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter(); @SuppressWarnings("unchecked") @@ -95,6 +98,7 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri gsonBuilder.registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter); gsonBuilder.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(LocalDate.class, localDateTypeAdapter); + gsonBuilder.registerTypeAdapter(LocalDateTime.class, localDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(byte[].class, byteArrayAdapter); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.MyExampleGet200Response.CustomTypeAdapterFactory()); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.OneOf1.CustomTypeAdapterFactory()); @@ -298,6 +302,55 @@ public LocalDate read(JsonReader in) throws IOException { } } + /** + * Gson TypeAdapter for JSR310 LocalDateTime type + */ + public static class LocalDateTimeTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public LocalDateTimeTypeAdapter() { + this(DateTimeFormatter.ISO_LOCAL_DATE_TIME); + } + + public LocalDateTimeTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, LocalDateTime date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public LocalDateTime read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + return LocalDateTime.parse(date, formatter); + } catch (DateTimeParseException e) { + if (date.length() > 10 && date.charAt(10) == ' ') { + date = date.substring(0, 10) + 'T' + date.substring(11); + return LocalDateTime.parse(date, formatter); + } + throw e; + } + } + } + } + public static void setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { offsetDateTimeTypeAdapter.setFormat(dateFormat); } @@ -306,6 +359,10 @@ public static void setLocalDateFormat(DateTimeFormatter dateFormat) { localDateTypeAdapter.setFormat(dateFormat); } + public static void setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + localDateTimeTypeAdapter.setFormat(dateFormat); + } + /** * Gson TypeAdapter for java.sql.Date type * If the dateFormat is null, a simple "yyyy-MM-dd" format will be used diff --git a/samples/client/others/java/okhttp-gson-oneOf/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/others/java/okhttp-gson-oneOf/src/main/java/org/openapitools/client/ApiClient.java index be44254f833d..80421326fbb2 100644 --- a/samples/client/others/java/okhttp-gson-oneOf/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/others/java/okhttp-gson-oneOf/src/main/java/org/openapitools/client/ApiClient.java @@ -377,6 +377,17 @@ public ApiClient setLocalDateFormat(DateTimeFormatter dateFormat) { return this; } + /** + *

Set LocalDateTimeFormat.

+ * + * @param dateFormat a {@link java.time.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ + public ApiClient setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + JSON.setLocalDateTimeFormat(dateFormat); + return this; + } + /** *

Set LenientOnJson.

* diff --git a/samples/client/others/java/okhttp-gson-oneOf/src/main/java/org/openapitools/client/JSON.java b/samples/client/others/java/okhttp-gson-oneOf/src/main/java/org/openapitools/client/JSON.java index 4587781f631b..636b0be4276b 100644 --- a/samples/client/others/java/okhttp-gson-oneOf/src/main/java/org/openapitools/client/JSON.java +++ b/samples/client/others/java/okhttp-gson-oneOf/src/main/java/org/openapitools/client/JSON.java @@ -36,8 +36,10 @@ import java.text.ParseException; import java.text.ParsePosition; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; import java.util.Date; import java.util.Locale; import java.util.Map; @@ -56,6 +58,7 @@ public class JSON { private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter(); private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(); private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter(); + private static LocalDateTimeTypeAdapter localDateTimeTypeAdapter = new LocalDateTimeTypeAdapter(); private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter(); @SuppressWarnings("unchecked") @@ -95,6 +98,7 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri gsonBuilder.registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter); gsonBuilder.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(LocalDate.class, localDateTypeAdapter); + gsonBuilder.registerTypeAdapter(LocalDateTime.class, localDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(byte[].class, byteArrayAdapter); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.MyExamplePostRequest.CustomTypeAdapterFactory()); gson = gsonBuilder.create(); @@ -297,6 +301,55 @@ public LocalDate read(JsonReader in) throws IOException { } } + /** + * Gson TypeAdapter for JSR310 LocalDateTime type + */ + public static class LocalDateTimeTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public LocalDateTimeTypeAdapter() { + this(DateTimeFormatter.ISO_LOCAL_DATE_TIME); + } + + public LocalDateTimeTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, LocalDateTime date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public LocalDateTime read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + return LocalDateTime.parse(date, formatter); + } catch (DateTimeParseException e) { + if (date.length() > 10 && date.charAt(10) == ' ') { + date = date.substring(0, 10) + 'T' + date.substring(11); + return LocalDateTime.parse(date, formatter); + } + throw e; + } + } + } + } + public static void setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { offsetDateTimeTypeAdapter.setFormat(dateFormat); } @@ -305,6 +358,10 @@ public static void setLocalDateFormat(DateTimeFormatter dateFormat) { localDateTypeAdapter.setFormat(dateFormat); } + public static void setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + localDateTimeTypeAdapter.setFormat(dateFormat); + } + /** * Gson TypeAdapter for java.sql.Date type * If the dateFormat is null, a simple "yyyy-MM-dd" format will be used diff --git a/samples/client/others/java/okhttp-gson-streaming/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/others/java/okhttp-gson-streaming/src/main/java/org/openapitools/client/ApiClient.java index 60b3515fb225..fb45dd214c99 100644 --- a/samples/client/others/java/okhttp-gson-streaming/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/others/java/okhttp-gson-streaming/src/main/java/org/openapitools/client/ApiClient.java @@ -377,6 +377,17 @@ public ApiClient setLocalDateFormat(DateTimeFormatter dateFormat) { return this; } + /** + *

Set LocalDateTimeFormat.

+ * + * @param dateFormat a {@link java.time.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ + public ApiClient setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + JSON.setLocalDateTimeFormat(dateFormat); + return this; + } + /** *

Set LenientOnJson.

* diff --git a/samples/client/others/java/okhttp-gson-streaming/src/main/java/org/openapitools/client/JSON.java b/samples/client/others/java/okhttp-gson-streaming/src/main/java/org/openapitools/client/JSON.java index 70dfd4eb613f..b7493080a3c6 100644 --- a/samples/client/others/java/okhttp-gson-streaming/src/main/java/org/openapitools/client/JSON.java +++ b/samples/client/others/java/okhttp-gson-streaming/src/main/java/org/openapitools/client/JSON.java @@ -36,8 +36,10 @@ import java.text.ParseException; import java.text.ParsePosition; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; import java.util.Date; import java.util.Locale; import java.util.Map; @@ -56,6 +58,7 @@ public class JSON { private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter(); private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(); private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter(); + private static LocalDateTimeTypeAdapter localDateTimeTypeAdapter = new LocalDateTimeTypeAdapter(); private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter(); @SuppressWarnings("unchecked") @@ -95,6 +98,7 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri gsonBuilder.registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter); gsonBuilder.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(LocalDate.class, localDateTypeAdapter); + gsonBuilder.registerTypeAdapter(LocalDateTime.class, localDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(byte[].class, byteArrayAdapter); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.SimpleOneOf.CustomTypeAdapterFactory()); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.SomeObj.CustomTypeAdapterFactory()); @@ -298,6 +302,55 @@ public LocalDate read(JsonReader in) throws IOException { } } + /** + * Gson TypeAdapter for JSR310 LocalDateTime type + */ + public static class LocalDateTimeTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public LocalDateTimeTypeAdapter() { + this(DateTimeFormatter.ISO_LOCAL_DATE_TIME); + } + + public LocalDateTimeTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, LocalDateTime date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public LocalDateTime read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + return LocalDateTime.parse(date, formatter); + } catch (DateTimeParseException e) { + if (date.length() > 10 && date.charAt(10) == ' ') { + date = date.substring(0, 10) + 'T' + date.substring(11); + return LocalDateTime.parse(date, formatter); + } + throw e; + } + } + } + } + public static void setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { offsetDateTimeTypeAdapter.setFormat(dateFormat); } @@ -306,6 +359,10 @@ public static void setLocalDateFormat(DateTimeFormatter dateFormat) { localDateTypeAdapter.setFormat(dateFormat); } + public static void setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + localDateTimeTypeAdapter.setFormat(dateFormat); + } + /** * Gson TypeAdapter for java.sql.Date type * If the dateFormat is null, a simple "yyyy-MM-dd" format will be used diff --git a/samples/client/petstore/java/okhttp-gson-3.1-duplicated-operationid/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/okhttp-gson-3.1-duplicated-operationid/src/main/java/org/openapitools/client/ApiClient.java index 9dc6db9bebfd..5725bd1f29b8 100644 --- a/samples/client/petstore/java/okhttp-gson-3.1-duplicated-operationid/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/okhttp-gson-3.1-duplicated-operationid/src/main/java/org/openapitools/client/ApiClient.java @@ -453,6 +453,17 @@ public ApiClient setLocalDateFormat(DateTimeFormatter dateFormat) { return this; } + /** + *

Set LocalDateTimeFormat.

+ * + * @param dateFormat a {@link java.time.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ + public ApiClient setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + JSON.setLocalDateTimeFormat(dateFormat); + return this; + } + /** *

Set LenientOnJson.

* diff --git a/samples/client/petstore/java/okhttp-gson-3.1-duplicated-operationid/src/main/java/org/openapitools/client/JSON.java b/samples/client/petstore/java/okhttp-gson-3.1-duplicated-operationid/src/main/java/org/openapitools/client/JSON.java index a07ae7226562..67895c54d943 100644 --- a/samples/client/petstore/java/okhttp-gson-3.1-duplicated-operationid/src/main/java/org/openapitools/client/JSON.java +++ b/samples/client/petstore/java/okhttp-gson-3.1-duplicated-operationid/src/main/java/org/openapitools/client/JSON.java @@ -36,8 +36,10 @@ import java.text.ParseException; import java.text.ParsePosition; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; import java.util.Date; import java.util.Locale; import java.util.Map; @@ -56,6 +58,7 @@ public class JSON { private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter(); private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(); private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter(); + private static LocalDateTimeTypeAdapter localDateTimeTypeAdapter = new LocalDateTimeTypeAdapter(); private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter(); @SuppressWarnings("unchecked") @@ -95,6 +98,7 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri gsonBuilder.registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter); gsonBuilder.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(LocalDate.class, localDateTypeAdapter); + gsonBuilder.registerTypeAdapter(LocalDateTime.class, localDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(byte[].class, byteArrayAdapter); gson = gsonBuilder.create(); } @@ -296,6 +300,55 @@ public LocalDate read(JsonReader in) throws IOException { } } + /** + * Gson TypeAdapter for JSR310 LocalDateTime type + */ + public static class LocalDateTimeTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public LocalDateTimeTypeAdapter() { + this(DateTimeFormatter.ISO_LOCAL_DATE_TIME); + } + + public LocalDateTimeTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, LocalDateTime date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public LocalDateTime read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + return LocalDateTime.parse(date, formatter); + } catch (DateTimeParseException e) { + if (date.length() > 10 && date.charAt(10) == ' ') { + date = date.substring(0, 10) + 'T' + date.substring(11); + return LocalDateTime.parse(date, formatter); + } + throw e; + } + } + } + } + public static void setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { offsetDateTimeTypeAdapter.setFormat(dateFormat); } @@ -304,6 +357,10 @@ public static void setLocalDateFormat(DateTimeFormatter dateFormat) { localDateTypeAdapter.setFormat(dateFormat); } + public static void setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + localDateTimeTypeAdapter.setFormat(dateFormat); + } + /** * Gson TypeAdapter for java.sql.Date type * If the dateFormat is null, a simple "yyyy-MM-dd" format will be used diff --git a/samples/client/petstore/java/okhttp-gson-3.1/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/okhttp-gson-3.1/src/main/java/org/openapitools/client/ApiClient.java index 9dc6db9bebfd..5725bd1f29b8 100644 --- a/samples/client/petstore/java/okhttp-gson-3.1/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/okhttp-gson-3.1/src/main/java/org/openapitools/client/ApiClient.java @@ -453,6 +453,17 @@ public ApiClient setLocalDateFormat(DateTimeFormatter dateFormat) { return this; } + /** + *

Set LocalDateTimeFormat.

+ * + * @param dateFormat a {@link java.time.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ + public ApiClient setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + JSON.setLocalDateTimeFormat(dateFormat); + return this; + } + /** *

Set LenientOnJson.

* diff --git a/samples/client/petstore/java/okhttp-gson-3.1/src/main/java/org/openapitools/client/JSON.java b/samples/client/petstore/java/okhttp-gson-3.1/src/main/java/org/openapitools/client/JSON.java index 67cd90e25b1e..cbf384612db4 100644 --- a/samples/client/petstore/java/okhttp-gson-3.1/src/main/java/org/openapitools/client/JSON.java +++ b/samples/client/petstore/java/okhttp-gson-3.1/src/main/java/org/openapitools/client/JSON.java @@ -36,8 +36,10 @@ import java.text.ParseException; import java.text.ParsePosition; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; import java.util.Date; import java.util.Locale; import java.util.Map; @@ -56,6 +58,7 @@ public class JSON { private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter(); private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(); private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter(); + private static LocalDateTimeTypeAdapter localDateTimeTypeAdapter = new LocalDateTimeTypeAdapter(); private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter(); @SuppressWarnings("unchecked") @@ -124,6 +127,7 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri gsonBuilder.registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter); gsonBuilder.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(LocalDate.class, localDateTypeAdapter); + gsonBuilder.registerTypeAdapter(LocalDateTime.class, localDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(byte[].class, byteArrayAdapter); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.AllOfSimpleModel.CustomTypeAdapterFactory()); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.AnyTypeTest.CustomTypeAdapterFactory()); @@ -350,6 +354,55 @@ public LocalDate read(JsonReader in) throws IOException { } } + /** + * Gson TypeAdapter for JSR310 LocalDateTime type + */ + public static class LocalDateTimeTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public LocalDateTimeTypeAdapter() { + this(DateTimeFormatter.ISO_LOCAL_DATE_TIME); + } + + public LocalDateTimeTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, LocalDateTime date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public LocalDateTime read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + return LocalDateTime.parse(date, formatter); + } catch (DateTimeParseException e) { + if (date.length() > 10 && date.charAt(10) == ' ') { + date = date.substring(0, 10) + 'T' + date.substring(11); + return LocalDateTime.parse(date, formatter); + } + throw e; + } + } + } + } + public static void setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { offsetDateTimeTypeAdapter.setFormat(dateFormat); } @@ -358,6 +411,10 @@ public static void setLocalDateFormat(DateTimeFormatter dateFormat) { localDateTypeAdapter.setFormat(dateFormat); } + public static void setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + localDateTimeTypeAdapter.setFormat(dateFormat); + } + /** * Gson TypeAdapter for java.sql.Date type * If the dateFormat is null, a simple "yyyy-MM-dd" format will be used diff --git a/samples/client/petstore/java/okhttp-gson-awsv4signature/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/okhttp-gson-awsv4signature/src/main/java/org/openapitools/client/ApiClient.java index 2c17437f7a6c..98357049decb 100644 --- a/samples/client/petstore/java/okhttp-gson-awsv4signature/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/okhttp-gson-awsv4signature/src/main/java/org/openapitools/client/ApiClient.java @@ -457,6 +457,17 @@ public ApiClient setLocalDateFormat(DateTimeFormatter dateFormat) { return this; } + /** + *

Set LocalDateTimeFormat.

+ * + * @param dateFormat a {@link java.time.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ + public ApiClient setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + JSON.setLocalDateTimeFormat(dateFormat); + return this; + } + /** *

Set LenientOnJson.

* diff --git a/samples/client/petstore/java/okhttp-gson-awsv4signature/src/main/java/org/openapitools/client/JSON.java b/samples/client/petstore/java/okhttp-gson-awsv4signature/src/main/java/org/openapitools/client/JSON.java index 2ba91e749c71..2fa395e93749 100644 --- a/samples/client/petstore/java/okhttp-gson-awsv4signature/src/main/java/org/openapitools/client/JSON.java +++ b/samples/client/petstore/java/okhttp-gson-awsv4signature/src/main/java/org/openapitools/client/JSON.java @@ -36,8 +36,10 @@ import java.text.ParseException; import java.text.ParsePosition; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; import java.util.Date; import java.util.Locale; import java.util.Map; @@ -56,6 +58,7 @@ public class JSON { private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter(); private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(); private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter(); + private static LocalDateTimeTypeAdapter localDateTimeTypeAdapter = new LocalDateTimeTypeAdapter(); private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter(); @SuppressWarnings("unchecked") @@ -95,6 +98,7 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri gsonBuilder.registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter); gsonBuilder.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(LocalDate.class, localDateTypeAdapter); + gsonBuilder.registerTypeAdapter(LocalDateTime.class, localDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(byte[].class, byteArrayAdapter); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.Category.CustomTypeAdapterFactory()); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.ModelApiResponse.CustomTypeAdapterFactory()); @@ -302,6 +306,55 @@ public LocalDate read(JsonReader in) throws IOException { } } + /** + * Gson TypeAdapter for JSR310 LocalDateTime type + */ + public static class LocalDateTimeTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public LocalDateTimeTypeAdapter() { + this(DateTimeFormatter.ISO_LOCAL_DATE_TIME); + } + + public LocalDateTimeTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, LocalDateTime date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public LocalDateTime read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + return LocalDateTime.parse(date, formatter); + } catch (DateTimeParseException e) { + if (date.length() > 10 && date.charAt(10) == ' ') { + date = date.substring(0, 10) + 'T' + date.substring(11); + return LocalDateTime.parse(date, formatter); + } + throw e; + } + } + } + } + public static void setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { offsetDateTimeTypeAdapter.setFormat(dateFormat); } @@ -310,6 +363,10 @@ public static void setLocalDateFormat(DateTimeFormatter dateFormat) { localDateTypeAdapter.setFormat(dateFormat); } + public static void setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + localDateTimeTypeAdapter.setFormat(dateFormat); + } + /** * Gson TypeAdapter for java.sql.Date type * If the dateFormat is null, a simple "yyyy-MM-dd" format will be used diff --git a/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/main/java/org/openapitools/client/ApiClient.java index a7063d3e8b1a..3cdf0e35a798 100644 --- a/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/main/java/org/openapitools/client/ApiClient.java @@ -470,6 +470,17 @@ public ApiClient setLocalDateFormat(DateTimeFormatter dateFormat) { return this; } + /** + *

Set LocalDateTimeFormat.

+ * + * @param dateFormat a {@link java.time.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ + public ApiClient setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + JSON.setLocalDateTimeFormat(dateFormat); + return this; + } + /** *

Set LenientOnJson.

* diff --git a/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/main/java/org/openapitools/client/JSON.java b/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/main/java/org/openapitools/client/JSON.java index 19fee2967447..439fcc32a1b4 100644 --- a/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/main/java/org/openapitools/client/JSON.java +++ b/samples/client/petstore/java/okhttp-gson-dynamicOperations/src/main/java/org/openapitools/client/JSON.java @@ -36,8 +36,10 @@ import java.text.ParseException; import java.text.ParsePosition; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; import java.util.Date; import java.util.Locale; import java.util.Map; @@ -56,6 +58,7 @@ public class JSON { private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter(); private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(); private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter(); + private static LocalDateTimeTypeAdapter localDateTimeTypeAdapter = new LocalDateTimeTypeAdapter(); private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter(); @SuppressWarnings("unchecked") @@ -135,6 +138,7 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri gsonBuilder.registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter); gsonBuilder.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(LocalDate.class, localDateTypeAdapter); + gsonBuilder.registerTypeAdapter(LocalDateTime.class, localDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(byte[].class, byteArrayAdapter); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.AdditionalPropertiesAnyType.CustomTypeAdapterFactory()); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.AdditionalPropertiesArray.CustomTypeAdapterFactory()); @@ -377,6 +381,55 @@ public LocalDate read(JsonReader in) throws IOException { } } + /** + * Gson TypeAdapter for JSR310 LocalDateTime type + */ + public static class LocalDateTimeTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public LocalDateTimeTypeAdapter() { + this(DateTimeFormatter.ISO_LOCAL_DATE_TIME); + } + + public LocalDateTimeTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, LocalDateTime date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public LocalDateTime read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + return LocalDateTime.parse(date, formatter); + } catch (DateTimeParseException e) { + if (date.length() > 10 && date.charAt(10) == ' ') { + date = date.substring(0, 10) + 'T' + date.substring(11); + return LocalDateTime.parse(date, formatter); + } + throw e; + } + } + } + } + public static void setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { offsetDateTimeTypeAdapter.setFormat(dateFormat); } @@ -385,6 +438,10 @@ public static void setLocalDateFormat(DateTimeFormatter dateFormat) { localDateTypeAdapter.setFormat(dateFormat); } + public static void setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + localDateTimeTypeAdapter.setFormat(dateFormat); + } + /** * Gson TypeAdapter for java.sql.Date type * If the dateFormat is null, a simple "yyyy-MM-dd" format will be used diff --git a/samples/client/petstore/java/okhttp-gson-group-parameter/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/okhttp-gson-group-parameter/src/main/java/org/openapitools/client/ApiClient.java index 9dc6db9bebfd..5725bd1f29b8 100644 --- a/samples/client/petstore/java/okhttp-gson-group-parameter/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/okhttp-gson-group-parameter/src/main/java/org/openapitools/client/ApiClient.java @@ -453,6 +453,17 @@ public ApiClient setLocalDateFormat(DateTimeFormatter dateFormat) { return this; } + /** + *

Set LocalDateTimeFormat.

+ * + * @param dateFormat a {@link java.time.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ + public ApiClient setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + JSON.setLocalDateTimeFormat(dateFormat); + return this; + } + /** *

Set LenientOnJson.

* diff --git a/samples/client/petstore/java/okhttp-gson-group-parameter/src/main/java/org/openapitools/client/JSON.java b/samples/client/petstore/java/okhttp-gson-group-parameter/src/main/java/org/openapitools/client/JSON.java index 2ba91e749c71..2fa395e93749 100644 --- a/samples/client/petstore/java/okhttp-gson-group-parameter/src/main/java/org/openapitools/client/JSON.java +++ b/samples/client/petstore/java/okhttp-gson-group-parameter/src/main/java/org/openapitools/client/JSON.java @@ -36,8 +36,10 @@ import java.text.ParseException; import java.text.ParsePosition; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; import java.util.Date; import java.util.Locale; import java.util.Map; @@ -56,6 +58,7 @@ public class JSON { private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter(); private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(); private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter(); + private static LocalDateTimeTypeAdapter localDateTimeTypeAdapter = new LocalDateTimeTypeAdapter(); private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter(); @SuppressWarnings("unchecked") @@ -95,6 +98,7 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri gsonBuilder.registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter); gsonBuilder.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(LocalDate.class, localDateTypeAdapter); + gsonBuilder.registerTypeAdapter(LocalDateTime.class, localDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(byte[].class, byteArrayAdapter); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.Category.CustomTypeAdapterFactory()); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.ModelApiResponse.CustomTypeAdapterFactory()); @@ -302,6 +306,55 @@ public LocalDate read(JsonReader in) throws IOException { } } + /** + * Gson TypeAdapter for JSR310 LocalDateTime type + */ + public static class LocalDateTimeTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public LocalDateTimeTypeAdapter() { + this(DateTimeFormatter.ISO_LOCAL_DATE_TIME); + } + + public LocalDateTimeTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, LocalDateTime date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public LocalDateTime read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + return LocalDateTime.parse(date, formatter); + } catch (DateTimeParseException e) { + if (date.length() > 10 && date.charAt(10) == ' ') { + date = date.substring(0, 10) + 'T' + date.substring(11); + return LocalDateTime.parse(date, formatter); + } + throw e; + } + } + } + } + public static void setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { offsetDateTimeTypeAdapter.setFormat(dateFormat); } @@ -310,6 +363,10 @@ public static void setLocalDateFormat(DateTimeFormatter dateFormat) { localDateTypeAdapter.setFormat(dateFormat); } + public static void setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + localDateTimeTypeAdapter.setFormat(dateFormat); + } + /** * Gson TypeAdapter for java.sql.Date type * If the dateFormat is null, a simple "yyyy-MM-dd" format will be used diff --git a/samples/client/petstore/java/okhttp-gson-nullable-required/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/okhttp-gson-nullable-required/src/main/java/org/openapitools/client/ApiClient.java index 7dc6b114022f..fa15f143339a 100644 --- a/samples/client/petstore/java/okhttp-gson-nullable-required/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/okhttp-gson-nullable-required/src/main/java/org/openapitools/client/ApiClient.java @@ -456,6 +456,17 @@ public ApiClient setLocalDateFormat(DateTimeFormatter dateFormat) { return this; } + /** + *

Set LocalDateTimeFormat.

+ * + * @param dateFormat a {@link java.time.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ + public ApiClient setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + JSON.setLocalDateTimeFormat(dateFormat); + return this; + } + /** *

Set LenientOnJson.

* diff --git a/samples/client/petstore/java/okhttp-gson-nullable-required/src/main/java/org/openapitools/client/JSON.java b/samples/client/petstore/java/okhttp-gson-nullable-required/src/main/java/org/openapitools/client/JSON.java index 23cee891c1a0..78c49cef71d2 100644 --- a/samples/client/petstore/java/okhttp-gson-nullable-required/src/main/java/org/openapitools/client/JSON.java +++ b/samples/client/petstore/java/okhttp-gson-nullable-required/src/main/java/org/openapitools/client/JSON.java @@ -36,8 +36,10 @@ import java.text.ParseException; import java.text.ParsePosition; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; import java.util.Date; import java.util.Locale; import java.util.Map; @@ -56,6 +58,7 @@ public class JSON { private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter(); private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(); private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter(); + private static LocalDateTimeTypeAdapter localDateTimeTypeAdapter = new LocalDateTimeTypeAdapter(); private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter(); @SuppressWarnings("unchecked") @@ -95,6 +98,7 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri gsonBuilder.registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter); gsonBuilder.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(LocalDate.class, localDateTypeAdapter); + gsonBuilder.registerTypeAdapter(LocalDateTime.class, localDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(byte[].class, byteArrayAdapter); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.Category.CustomTypeAdapterFactory()); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.ModelApiResponse.CustomTypeAdapterFactory()); @@ -304,6 +308,55 @@ public LocalDate read(JsonReader in) throws IOException { } } + /** + * Gson TypeAdapter for JSR310 LocalDateTime type + */ + public static class LocalDateTimeTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public LocalDateTimeTypeAdapter() { + this(DateTimeFormatter.ISO_LOCAL_DATE_TIME); + } + + public LocalDateTimeTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, LocalDateTime date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public LocalDateTime read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + return LocalDateTime.parse(date, formatter); + } catch (DateTimeParseException e) { + if (date.length() > 10 && date.charAt(10) == ' ') { + date = date.substring(0, 10) + 'T' + date.substring(11); + return LocalDateTime.parse(date, formatter); + } + throw e; + } + } + } + } + public static void setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { offsetDateTimeTypeAdapter.setFormat(dateFormat); } @@ -312,6 +365,10 @@ public static void setLocalDateFormat(DateTimeFormatter dateFormat) { localDateTypeAdapter.setFormat(dateFormat); } + public static void setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + localDateTimeTypeAdapter.setFormat(dateFormat); + } + /** * Gson TypeAdapter for java.sql.Date type * If the dateFormat is null, a simple "yyyy-MM-dd" format will be used diff --git a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/ApiClient.java index 1b92abefe987..ef0d2651c8d0 100644 --- a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/ApiClient.java @@ -459,6 +459,17 @@ public ApiClient setLocalDateFormat(DateTimeFormatter dateFormat) { return this; } + /** + *

Set LocalDateTimeFormat.

+ * + * @param dateFormat a {@link java.time.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ + public ApiClient setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + JSON.setLocalDateTimeFormat(dateFormat); + return this; + } + /** *

Set LenientOnJson.

* diff --git a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/JSON.java b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/JSON.java index 19fee2967447..439fcc32a1b4 100644 --- a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/JSON.java +++ b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/JSON.java @@ -36,8 +36,10 @@ import java.text.ParseException; import java.text.ParsePosition; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; import java.util.Date; import java.util.Locale; import java.util.Map; @@ -56,6 +58,7 @@ public class JSON { private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter(); private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(); private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter(); + private static LocalDateTimeTypeAdapter localDateTimeTypeAdapter = new LocalDateTimeTypeAdapter(); private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter(); @SuppressWarnings("unchecked") @@ -135,6 +138,7 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri gsonBuilder.registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter); gsonBuilder.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(LocalDate.class, localDateTypeAdapter); + gsonBuilder.registerTypeAdapter(LocalDateTime.class, localDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(byte[].class, byteArrayAdapter); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.AdditionalPropertiesAnyType.CustomTypeAdapterFactory()); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.AdditionalPropertiesArray.CustomTypeAdapterFactory()); @@ -377,6 +381,55 @@ public LocalDate read(JsonReader in) throws IOException { } } + /** + * Gson TypeAdapter for JSR310 LocalDateTime type + */ + public static class LocalDateTimeTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public LocalDateTimeTypeAdapter() { + this(DateTimeFormatter.ISO_LOCAL_DATE_TIME); + } + + public LocalDateTimeTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, LocalDateTime date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public LocalDateTime read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + return LocalDateTime.parse(date, formatter); + } catch (DateTimeParseException e) { + if (date.length() > 10 && date.charAt(10) == ' ') { + date = date.substring(0, 10) + 'T' + date.substring(11); + return LocalDateTime.parse(date, formatter); + } + throw e; + } + } + } + } + public static void setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { offsetDateTimeTypeAdapter.setFormat(dateFormat); } @@ -385,6 +438,10 @@ public static void setLocalDateFormat(DateTimeFormatter dateFormat) { localDateTypeAdapter.setFormat(dateFormat); } + public static void setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + localDateTimeTypeAdapter.setFormat(dateFormat); + } + /** * Gson TypeAdapter for java.sql.Date type * If the dateFormat is null, a simple "yyyy-MM-dd" format will be used diff --git a/samples/client/petstore/java/okhttp-gson-swagger1/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/okhttp-gson-swagger1/src/main/java/org/openapitools/client/ApiClient.java index 9dc6db9bebfd..5725bd1f29b8 100644 --- a/samples/client/petstore/java/okhttp-gson-swagger1/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/okhttp-gson-swagger1/src/main/java/org/openapitools/client/ApiClient.java @@ -453,6 +453,17 @@ public ApiClient setLocalDateFormat(DateTimeFormatter dateFormat) { return this; } + /** + *

Set LocalDateTimeFormat.

+ * + * @param dateFormat a {@link java.time.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ + public ApiClient setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + JSON.setLocalDateTimeFormat(dateFormat); + return this; + } + /** *

Set LenientOnJson.

* diff --git a/samples/client/petstore/java/okhttp-gson-swagger1/src/main/java/org/openapitools/client/JSON.java b/samples/client/petstore/java/okhttp-gson-swagger1/src/main/java/org/openapitools/client/JSON.java index 2ba91e749c71..2fa395e93749 100644 --- a/samples/client/petstore/java/okhttp-gson-swagger1/src/main/java/org/openapitools/client/JSON.java +++ b/samples/client/petstore/java/okhttp-gson-swagger1/src/main/java/org/openapitools/client/JSON.java @@ -36,8 +36,10 @@ import java.text.ParseException; import java.text.ParsePosition; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; import java.util.Date; import java.util.Locale; import java.util.Map; @@ -56,6 +58,7 @@ public class JSON { private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter(); private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(); private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter(); + private static LocalDateTimeTypeAdapter localDateTimeTypeAdapter = new LocalDateTimeTypeAdapter(); private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter(); @SuppressWarnings("unchecked") @@ -95,6 +98,7 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri gsonBuilder.registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter); gsonBuilder.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(LocalDate.class, localDateTypeAdapter); + gsonBuilder.registerTypeAdapter(LocalDateTime.class, localDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(byte[].class, byteArrayAdapter); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.Category.CustomTypeAdapterFactory()); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.ModelApiResponse.CustomTypeAdapterFactory()); @@ -302,6 +306,55 @@ public LocalDate read(JsonReader in) throws IOException { } } + /** + * Gson TypeAdapter for JSR310 LocalDateTime type + */ + public static class LocalDateTimeTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public LocalDateTimeTypeAdapter() { + this(DateTimeFormatter.ISO_LOCAL_DATE_TIME); + } + + public LocalDateTimeTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, LocalDateTime date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public LocalDateTime read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + return LocalDateTime.parse(date, formatter); + } catch (DateTimeParseException e) { + if (date.length() > 10 && date.charAt(10) == ' ') { + date = date.substring(0, 10) + 'T' + date.substring(11); + return LocalDateTime.parse(date, formatter); + } + throw e; + } + } + } + } + public static void setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { offsetDateTimeTypeAdapter.setFormat(dateFormat); } @@ -310,6 +363,10 @@ public static void setLocalDateFormat(DateTimeFormatter dateFormat) { localDateTypeAdapter.setFormat(dateFormat); } + public static void setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + localDateTimeTypeAdapter.setFormat(dateFormat); + } + /** * Gson TypeAdapter for java.sql.Date type * If the dateFormat is null, a simple "yyyy-MM-dd" format will be used diff --git a/samples/client/petstore/java/okhttp-gson-swagger2/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/okhttp-gson-swagger2/src/main/java/org/openapitools/client/ApiClient.java index 9dc6db9bebfd..5725bd1f29b8 100644 --- a/samples/client/petstore/java/okhttp-gson-swagger2/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/okhttp-gson-swagger2/src/main/java/org/openapitools/client/ApiClient.java @@ -453,6 +453,17 @@ public ApiClient setLocalDateFormat(DateTimeFormatter dateFormat) { return this; } + /** + *

Set LocalDateTimeFormat.

+ * + * @param dateFormat a {@link java.time.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ + public ApiClient setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + JSON.setLocalDateTimeFormat(dateFormat); + return this; + } + /** *

Set LenientOnJson.

* diff --git a/samples/client/petstore/java/okhttp-gson-swagger2/src/main/java/org/openapitools/client/JSON.java b/samples/client/petstore/java/okhttp-gson-swagger2/src/main/java/org/openapitools/client/JSON.java index 2ba91e749c71..2fa395e93749 100644 --- a/samples/client/petstore/java/okhttp-gson-swagger2/src/main/java/org/openapitools/client/JSON.java +++ b/samples/client/petstore/java/okhttp-gson-swagger2/src/main/java/org/openapitools/client/JSON.java @@ -36,8 +36,10 @@ import java.text.ParseException; import java.text.ParsePosition; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; import java.util.Date; import java.util.Locale; import java.util.Map; @@ -56,6 +58,7 @@ public class JSON { private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter(); private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(); private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter(); + private static LocalDateTimeTypeAdapter localDateTimeTypeAdapter = new LocalDateTimeTypeAdapter(); private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter(); @SuppressWarnings("unchecked") @@ -95,6 +98,7 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri gsonBuilder.registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter); gsonBuilder.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(LocalDate.class, localDateTypeAdapter); + gsonBuilder.registerTypeAdapter(LocalDateTime.class, localDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(byte[].class, byteArrayAdapter); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.Category.CustomTypeAdapterFactory()); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.ModelApiResponse.CustomTypeAdapterFactory()); @@ -302,6 +306,55 @@ public LocalDate read(JsonReader in) throws IOException { } } + /** + * Gson TypeAdapter for JSR310 LocalDateTime type + */ + public static class LocalDateTimeTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public LocalDateTimeTypeAdapter() { + this(DateTimeFormatter.ISO_LOCAL_DATE_TIME); + } + + public LocalDateTimeTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, LocalDateTime date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public LocalDateTime read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + return LocalDateTime.parse(date, formatter); + } catch (DateTimeParseException e) { + if (date.length() > 10 && date.charAt(10) == ' ') { + date = date.substring(0, 10) + 'T' + date.substring(11); + return LocalDateTime.parse(date, formatter); + } + throw e; + } + } + } + } + public static void setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { offsetDateTimeTypeAdapter.setFormat(dateFormat); } @@ -310,6 +363,10 @@ public static void setLocalDateFormat(DateTimeFormatter dateFormat) { localDateTypeAdapter.setFormat(dateFormat); } + public static void setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + localDateTimeTypeAdapter.setFormat(dateFormat); + } + /** * Gson TypeAdapter for java.sql.Date type * If the dateFormat is null, a simple "yyyy-MM-dd" format will be used diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/ApiClient.java index b196c0b9313f..8972870e891d 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/ApiClient.java @@ -505,6 +505,17 @@ public ApiClient setLocalDateFormat(DateTimeFormatter dateFormat) { return this; } + /** + *

Set LocalDateTimeFormat.

+ * + * @param dateFormat a {@link java.time.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ + public ApiClient setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + JSON.setLocalDateTimeFormat(dateFormat); + return this; + } + /** *

Set LenientOnJson.

* diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/JSON.java b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/JSON.java index 7062e2f15e41..01e0ba1f8eec 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/JSON.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/JSON.java @@ -36,8 +36,10 @@ import java.text.ParseException; import java.text.ParsePosition; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; import java.util.Date; import java.util.Locale; import java.util.Map; @@ -56,6 +58,7 @@ public class JSON { private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter(); private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(); private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter(); + private static LocalDateTimeTypeAdapter localDateTimeTypeAdapter = new LocalDateTimeTypeAdapter(); private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter(); @SuppressWarnings("unchecked") @@ -243,6 +246,7 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri gsonBuilder.registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter); gsonBuilder.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(LocalDate.class, localDateTypeAdapter); + gsonBuilder.registerTypeAdapter(LocalDateTime.class, localDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(byte[].class, byteArrayAdapter); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.AdditionalPropertiesClass.CustomTypeAdapterFactory()); gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.AllOfModelArrayAnyOf.CustomTypeAdapterFactory()); @@ -549,6 +553,55 @@ public LocalDate read(JsonReader in) throws IOException { } } + /** + * Gson TypeAdapter for JSR310 LocalDateTime type + */ + public static class LocalDateTimeTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public LocalDateTimeTypeAdapter() { + this(DateTimeFormatter.ISO_LOCAL_DATE_TIME); + } + + public LocalDateTimeTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, LocalDateTime date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public LocalDateTime read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + return LocalDateTime.parse(date, formatter); + } catch (DateTimeParseException e) { + if (date.length() > 10 && date.charAt(10) == ' ') { + date = date.substring(0, 10) + 'T' + date.substring(11); + return LocalDateTime.parse(date, formatter); + } + throw e; + } + } + } + } + public static void setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { offsetDateTimeTypeAdapter.setFormat(dateFormat); } @@ -557,6 +610,10 @@ public static void setLocalDateFormat(DateTimeFormatter dateFormat) { localDateTypeAdapter.setFormat(dateFormat); } + public static void setLocalDateTimeFormat(DateTimeFormatter dateFormat) { + localDateTimeTypeAdapter.setFormat(dateFormat); + } + /** * Gson TypeAdapter for java.sql.Date type * If the dateFormat is null, a simple "yyyy-MM-dd" format will be used diff --git a/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/JSONTest.java b/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/JSONTest.java index 5b6b2241ce28..56019aaf4950 100644 --- a/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/JSONTest.java +++ b/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/JSONTest.java @@ -16,6 +16,7 @@ import java.text.SimpleDateFormat; import java.time.format.DateTimeFormatter; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.OffsetDateTime; import java.time.ZoneId; import java.time.ZoneOffset; @@ -195,6 +196,39 @@ public void testLocalDateTypeAdapter() { assertEquals(json.deserialize(str, LocalDate.class), date); } + @Test + public void testLocalDateTimeTypeAdapter() { + final String str = "\"2016-09-09T08:02:03\""; + final LocalDateTime date = LocalDateTime.of(2016, 9, 9, 8, 2, 3); + + assertEquals(str, json.serialize(date)); + assertEquals(json.deserialize(str, LocalDateTime.class), date); + assertNull(json.deserialize("null", LocalDateTime.class)); + } + + @Test + public void testLocalDateTimeTypeAdapterWithSpaceSeparator() { + // RFC 3339 section 5.6 permits a space in place of the ISO 8601 'T' separator + final LocalDateTime date = LocalDateTime.of(2016, 9, 9, 8, 2, 3); + + assertEquals(json.deserialize("\"2016-09-09 08:02:03\"", LocalDateTime.class), date); + assertEquals("\"2016-09-09T08:02:03\"", json.serialize(date)); + } + + @Test + public void testLocalDateTimeTypeAdapterWithCustomFormat() { + final String str = "\"2016-09-09 08:02:03\""; + final LocalDateTime date = LocalDateTime.of(2016, 9, 9, 8, 2, 3); + + JSON.setLocalDateTimeFormat(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + try { + assertEquals(str, json.serialize(date)); + assertEquals(json.deserialize(str, LocalDateTime.class), date); + } finally { + JSON.setLocalDateTimeFormat(DateTimeFormatter.ISO_LOCAL_DATE_TIME); + } + } + @Test public void testDefaultDate() throws Exception { final DateTimeFormatter datetimeFormat = DateTimeFormatter.ISO_OFFSET_DATE_TIME; diff --git a/samples/client/petstore/java/resttemplate-springBoot4-jackson3/pom.xml b/samples/client/petstore/java/resttemplate-springBoot4-jackson3/pom.xml index b5c5141bdd3d..859141904ec9 100644 --- a/samples/client/petstore/java/resttemplate-springBoot4-jackson3/pom.xml +++ b/samples/client/petstore/java/resttemplate-springBoot4-jackson3/pom.xml @@ -269,7 +269,7 @@ UTF-8 - 7.0.8 + 7.0.5 3.1.5 3.0.0 From e4835ee7c39b93c912f0ffa1399b18b2757ca9d6 Mon Sep 17 00:00:00 2001 From: Cameron Koegel <53310569+ckoegel@users.noreply.github.com> Date: Sat, 8 Aug 2026 05:52:21 -0400 Subject: [PATCH 3/7] [Java] [okhttp-gson] Add `anyOf` Discriminator Support (#24632) * [Java] [okhttp-gson] Add `anOf` Discriminator Support * guard clause for primitive types * fix cubic json-null/non-string discriminator feedback * samples --- .../okhttp-gson/anyof_model.mustache | 28 ++++++++++ .../client/model/MammalAnyof.java | 30 +++++++++++ .../org/openapitools/client/JSONTest.java | 53 +++++++++++++++++++ 3 files changed, 111 insertions(+) diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/anyof_model.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/anyof_model.mustache index 2fc12731cece..e1760876459d 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/anyof_model.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/anyof_model.mustache @@ -107,6 +107,34 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im Object deserialized = null; JsonElement jsonElement = elementAdapter.read(in); + {{#useOneOfDiscriminatorLookup}} + {{#discriminator}} + // non-object payloads can still match a non-object anyOf schema below + if (jsonElement.isJsonObject()) { + JsonObject jsonObject = jsonElement.getAsJsonObject(); + JsonElement discriminatorElement = jsonObject.get("{{{propertyBaseName}}}"); + + // use discriminator value for faster anyOf lookup + {{classname}} new{{classname}} = new {{classname}}(); + if (discriminatorElement == null || !discriminatorElement.isJsonPrimitive()) { + log.log(Level.WARNING, "Failed to lookup discriminator value for {{classname}} as `{{{propertyBaseName}}}` is missing or is not a primitive type in the payload."); + } else { + // look up the discriminator value in the field `{{{propertyBaseName}}}` + switch (discriminatorElement.getAsString()) { + {{#mappedModels}} + case "{{{mappingName}}}": + deserialized = adapter{{modelName}}.fromJsonTree(jsonObject); + new{{classname}}.setActualInstance(deserialized); + return new{{classname}}; + {{/mappedModels}} + default: + log.log(Level.WARNING, String.format(java.util.Locale.ROOT, "Failed to lookup discriminator value `%s` for {{classname}}. Possible values:{{#mappedModels}} {{{mappingName}}}{{/mappedModels}}", discriminatorElement.getAsString())); + } + } + } + + {{/discriminator}} + {{/useOneOfDiscriminatorLookup}} ArrayList errorMessages = new ArrayList<>(); TypeAdapter actualAdapter = elementAdapter; diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/MammalAnyof.java b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/MammalAnyof.java index 54c607cac57a..ef912255d3d1 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/MammalAnyof.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/MammalAnyof.java @@ -110,6 +110,36 @@ public MammalAnyof read(JsonReader in) throws IOException { Object deserialized = null; JsonElement jsonElement = elementAdapter.read(in); + // non-object payloads can still match a non-object anyOf schema below + if (jsonElement.isJsonObject()) { + JsonObject jsonObject = jsonElement.getAsJsonObject(); + JsonElement discriminatorElement = jsonObject.get("className"); + + // use discriminator value for faster anyOf lookup + MammalAnyof newMammalAnyof = new MammalAnyof(); + if (discriminatorElement == null || !discriminatorElement.isJsonPrimitive()) { + log.log(Level.WARNING, "Failed to lookup discriminator value for MammalAnyof as `className` is missing or is not a primitive type in the payload."); + } else { + // look up the discriminator value in the field `className` + switch (discriminatorElement.getAsString()) { + case "Pig": + deserialized = adapterPig.fromJsonTree(jsonObject); + newMammalAnyof.setActualInstance(deserialized); + return newMammalAnyof; + case "whale": + deserialized = adapterWhale.fromJsonTree(jsonObject); + newMammalAnyof.setActualInstance(deserialized); + return newMammalAnyof; + case "zebra": + deserialized = adapterZebra.fromJsonTree(jsonObject); + newMammalAnyof.setActualInstance(deserialized); + return newMammalAnyof; + default: + log.log(Level.WARNING, String.format(java.util.Locale.ROOT, "Failed to lookup discriminator value `%s` for MammalAnyof. Possible values: Pig whale zebra", discriminatorElement.getAsString())); + } + } + } + ArrayList errorMessages = new ArrayList<>(); TypeAdapter actualAdapter = elementAdapter; diff --git a/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/JSONTest.java b/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/JSONTest.java index 56019aaf4950..5631c34e7786 100644 --- a/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/JSONTest.java +++ b/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/JSONTest.java @@ -533,6 +533,59 @@ public void testOneOfSchemaWithDiscriminator() throws Exception { } } + /** + * Validate an anyOf schema can be deserialized into the expected class. + * The anyOf schema has a discriminator. + */ + @Test + public void testAnyOfSchemaWithDiscriminator() throws Exception { + { + // Zebra is listed after Whale in anyOf, and a zebra payload also satisfies Whale + // (className is Whale's only required field), so without the discriminator lookup + // this deserializes as Whale. + String str = "{ \"className\": \"zebra\", \"type\": \"plains\" }"; + + MammalAnyof o = json.getGson().fromJson(str, MammalAnyof.class); + assertTrue(o.getActualInstance() instanceof Zebra); + Zebra inst = (Zebra) o.getActualInstance(); + assertEquals(inst.getClassName(), "zebra"); + assertEquals(inst.toJson(), "{\"type\":\"plains\",\"className\":\"zebra\"}"); + assertEquals(o.toJson(), "{\"type\":\"plains\",\"className\":\"zebra\"}"); + } + { + String str = "{ \"className\": \"whale\", \"hasBaleen\": false, \"hasTeeth\": false }"; + + MammalAnyof o = json.getGson().fromJson(str, MammalAnyof.class); + assertTrue(o.getActualInstance() instanceof Whale); + Whale inst = (Whale) o.getActualInstance(); + assertEquals(inst.getClassName(), "whale"); + assertEquals(inst.getHasBaleen(), false); + assertEquals(inst.getHasTeeth(), false); + assertEquals(inst.toJson(), "{\"hasBaleen\":false,\"hasTeeth\":false,\"className\":\"whale\"}"); + assertEquals(json.getGson().toJson(o), "{\"hasBaleen\":false,\"hasTeeth\":false,\"className\":\"whale\"}"); + assertEquals(o.toJson(), "{\"hasBaleen\":false,\"hasTeeth\":false,\"className\":\"whale\"}"); + } + { + // an unmapped discriminator value falls back to matching the anyOf schemas in order + String str = "{ \"className\": \"dolphin\", \"hasBaleen\": true }"; + + MammalAnyof o = json.getGson().fromJson(str, MammalAnyof.class); + assertTrue(o.getActualInstance() instanceof Whale); + Whale inst = (Whale) o.getActualInstance(); + assertEquals(inst.getClassName(), "dolphin"); + assertEquals(inst.getHasBaleen(), true); + } + { + // Try to deserialize empty object. This should fail 'anyOf' because none will match + // whale, zebra or Pig. + String str = "{ }"; + Exception exception = assertThrows(com.google.gson.JsonSyntaxException.class, () -> { + json.getGson().fromJson(str, MammalAnyof.class); + }); + assertTrue(exception.getMessage().contains("java.io.IOException: Failed deserialization for MammalAnyof")); + } + } + /** * Test JSON validation method */ From 8e4d0d4e88c52373cf0c52e60eef8f58c14f4701 Mon Sep 17 00:00:00 2001 From: MelNell <36336419+LeMillion1@users.noreply.github.com> Date: Sat, 8 Aug 2026 14:57:31 +0500 Subject: [PATCH 4/7] fix(kotlin-spring): honor exclusive numeric bounds (#24630) --- .../kotlin-spring/beanValidationCore.mustache | 2 +- .../beanValidationModel.mustache | 4 +- .../spring/KotlinSpringServerCodegenTest.java | 50 +++++++++++++++++ .../kotlin/exclusive-min-max-validation.yaml | 55 +++++++++++++++++++ 4 files changed, 108 insertions(+), 3 deletions(-) create mode 100644 modules/openapi-generator/src/test/resources/3_0/kotlin/exclusive-min-max-validation.yaml diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/beanValidationCore.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/beanValidationCore.mustache index e98d012caddf..b14fb649c69a 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-spring/beanValidationCore.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-spring/beanValidationCore.mustache @@ -19,4 +19,4 @@ isInteger set isLong set }}{{#isLong}}{{#minimum}}@Min(value={{.}}L{{#vendorExtensions.x-minimum-message}}, message="{{vendorExtensions.x-minimum-message}}"{{/vendorExtensions.x-minimum-message}}){{/minimum}}{{#maximum}} @Max(value={{.}}L{{#vendorExtensions.x-maximum-message}}, message="{{vendorExtensions.x-maximum-message}}"{{/vendorExtensions.x-maximum-message}}) {{/maximum}}{{/isLong}}{{! Not Integer, not Long => we have a decimal value! -}}{{^isInteger}}{{^isLong}}{{#minimum}}@DecimalMin(value="{{.}}"{{#vendorExtensions.x-minimum-message}}, message="{{vendorExtensions.x-minimum-message}}"{{/vendorExtensions.x-minimum-message}}){{/minimum}}{{#maximum}} @DecimalMax(value="{{.}}"{{#vendorExtensions.x-maximum-message}}, message="{{vendorExtensions.x-maximum-message}}"{{/vendorExtensions.x-maximum-message}}) {{/maximum}}{{/isLong}}{{/isInteger}} \ No newline at end of file +}}{{^isInteger}}{{^isLong}}{{#minimum}}@DecimalMin(value="{{.}}"{{#exclusiveMinimum}}, inclusive=false{{/exclusiveMinimum}}{{#vendorExtensions.x-minimum-message}}, message="{{vendorExtensions.x-minimum-message}}"{{/vendorExtensions.x-minimum-message}}){{/minimum}}{{#maximum}} @DecimalMax(value="{{.}}"{{#exclusiveMaximum}}, inclusive=false{{/exclusiveMaximum}}{{#vendorExtensions.x-maximum-message}}, message="{{vendorExtensions.x-maximum-message}}"{{/vendorExtensions.x-maximum-message}}) {{/maximum}}{{/isLong}}{{/isInteger}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/beanValidationModel.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/beanValidationModel.mustache index 13e661bc5075..1522232e2f9e 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-spring/beanValidationModel.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-spring/beanValidationModel.mustache @@ -34,5 +34,5 @@ isLong set @get:Max(value={{.}}L{{#vendorExtensions.x-maximum-message}}, message="{{vendorExtensions.x-maximum-message}}"{{/vendorExtensions.x-maximum-message}}){{/maximum}}{{/isLong}}{{! Not Integer, not Long => we have a decimal value! }}{{^isInteger}}{{^isLong}}{{#minimum}} - @get:DecimalMin(value="{{.}}"{{#vendorExtensions.x-minimum-message}}, message="{{vendorExtensions.x-minimum-message}}"{{/vendorExtensions.x-minimum-message}}){{/minimum}}{{#maximum}} - @get:DecimalMax(value="{{.}}"{{#vendorExtensions.x-maximum-message}}, message="{{vendorExtensions.x-maximum-message}}"{{/vendorExtensions.x-maximum-message}}){{/maximum}}{{/isLong}}{{/isInteger}} \ No newline at end of file + @get:DecimalMin(value="{{.}}"{{#exclusiveMinimum}}, inclusive=false{{/exclusiveMinimum}}{{#vendorExtensions.x-minimum-message}}, message="{{vendorExtensions.x-minimum-message}}"{{/vendorExtensions.x-minimum-message}}){{/minimum}}{{#maximum}} + @get:DecimalMax(value="{{.}}"{{#exclusiveMaximum}}, inclusive=false{{/exclusiveMaximum}}{{#vendorExtensions.x-maximum-message}}, message="{{vendorExtensions.x-maximum-message}}"{{/vendorExtensions.x-maximum-message}}){{/maximum}}{{/isLong}}{{/isInteger}} \ No newline at end of file diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/spring/KotlinSpringServerCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/spring/KotlinSpringServerCodegenTest.java index 53a86d7b5501..a20820f7c029 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/spring/KotlinSpringServerCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/spring/KotlinSpringServerCodegenTest.java @@ -3787,6 +3787,56 @@ public void testXMinimumMessageAndXMaximumMessage_decimal() throws IOException { .hasNotAttributes(List.of("message")); } + @Test + public void testExclusiveMinimumAndMaximum_decimal() throws IOException { + final Map files = generateFromContract("src/test/resources/3_0/kotlin/exclusive-min-max-validation.yaml"); + KotlinFileAssert.assertThat(files.get("BoundsApiController.kt")) + .assertClass("BoundsApiController") + .assertMethod("checkBounds") + .assertParameter("exclusiveValue") + .assertParameterAnnotation("DecimalMin") + .hasAttributes(ImmutableMap.of( + "value", "\"0.0\"", + "inclusive", "false" + )) + .toParameter() + .assertParameterAnnotation("DecimalMax") + .hasAttributes(ImmutableMap.of( + "value", "\"100.0\"", + "inclusive", "false" + )) + .toParameter() + .toMethod() + .assertParameter("inclusiveValue") + .assertParameterAnnotation("DecimalMin") + .hasNotAttributes(List.of("inclusive")) + .toParameter() + .assertParameterAnnotation("DecimalMax") + .hasNotAttributes(List.of("inclusive")); + KotlinFileAssert.assertThat(files.get("Bounds.kt")) + .assertClass("Bounds") + .assertPrimaryConstructorParameter("exclusiveValue") + .assertParameterAnnotation("DecimalMin", "get") + .hasAttributes(ImmutableMap.of( + "value", "\"0.0\"", + "inclusive", "false" + )) + .toPrimaryConstructorParameter() + .assertParameterAnnotation("DecimalMax", "get") + .hasAttributes(ImmutableMap.of( + "value", "\"100.0\"", + "inclusive", "false" + )) + .toPrimaryConstructorParameter() + .toClass() + .assertPrimaryConstructorParameter("inclusiveValue") + .assertParameterAnnotation("DecimalMin", "get") + .hasNotAttributes(List.of("inclusive")) + .toPrimaryConstructorParameter() + .assertParameterAnnotation("DecimalMax", "get") + .hasNotAttributes(List.of("inclusive")); + } + @Test public void testXMinimumMessageAndXMaximumMessage_integer() throws IOException { final Map files = generateFromContract("src/test/resources/3_0/error-message-for-size-max-min.yaml"); diff --git a/modules/openapi-generator/src/test/resources/3_0/kotlin/exclusive-min-max-validation.yaml b/modules/openapi-generator/src/test/resources/3_0/kotlin/exclusive-min-max-validation.yaml new file mode 100644 index 000000000000..6a4edb0ebfea --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/kotlin/exclusive-min-max-validation.yaml @@ -0,0 +1,55 @@ +openapi: 3.0.3 +info: + title: Kotlin Spring exclusive bounds validation + version: 1.0.0 +paths: + /bounds: + post: + operationId: checkBounds + parameters: + - name: exclusiveValue + in: query + required: true + schema: + type: number + minimum: 0.0 + exclusiveMinimum: true + maximum: 100.0 + exclusiveMaximum: true + - name: inclusiveValue + in: query + required: true + schema: + type: number + minimum: 0.0 + maximum: 100.0 + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Bounds' + responses: + '204': + description: Accepted +components: + schemas: + ExclusiveBounds: + type: number + minimum: 0.0 + exclusiveMinimum: true + maximum: 100.0 + exclusiveMaximum: true + Bounds: + type: object + required: + - exclusiveValue + - inclusiveValue + properties: + exclusiveValue: + allOf: + - $ref: '#/components/schemas/ExclusiveBounds' + inclusiveValue: + type: number + minimum: 0.0 + maximum: 100.0 From 6d46422cba98734992539eac42ce36b1df305f88 Mon Sep 17 00:00:00 2001 From: Mattias Sehlstedt <60173714+Mattias-Sehlstedt@users.noreply.github.com> Date: Sat, 8 Aug 2026 12:00:35 +0200 Subject: [PATCH 5/7] refactor(kotlin): remove unknown default enum case for inline operation enums in multiplatform library (#24521) --- .../openapitools/codegen/DefaultCodegen.java | 70 +++++++---- .../languages/KotlinClientCodegen.java | 22 +++- .../libraries/multiplatform/api.mustache | 10 +- .../kotlin/KotlinClientCodegenModelTest.java | 94 ++++++++++---- .../multiplatform-inline-query-enum.yaml | 115 ++++++++++++++++++ .../org/openapitools/client/apis/PetApi.kt | 2 +- .../org/openapitools/client/apis/PetApi.kt | 2 +- 7 files changed, 258 insertions(+), 57 deletions(-) create mode 100644 modules/openapi-generator/src/test/resources/3_0/kotlin/multiplatform-inline-query-enum.yaml diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index e3356d34becf..47dd2b9dd1be 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -94,7 +94,7 @@ import static org.openapitools.codegen.CodegenConstants.*; import static org.openapitools.codegen.utils.CamelizeOption.LOWERCASE_FIRST_LETTER; import static org.openapitools.codegen.utils.DiscriminatorUtils.*; -import static org.openapitools.codegen.utils.EnumUtils.getEnumValues; +import static org.openapitools.codegen.utils.EnumUtils.*; import static org.openapitools.codegen.utils.OnceLogger.once; import static org.openapitools.codegen.utils.StringUtils.*; @@ -6842,31 +6842,59 @@ protected List> buildEnumVars(List values, String da } if (enumUnknownDefaultCase) { - // If the server adds new enum cases, that are unknown by an old spec/client, the client will fail to parse the network response. - // With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the server sends an enum case that is not known by the client/spec, they can safely fallback to this case. - Map enumVar = new HashMap<>(); - String enumName = enumUnknownDefaultCaseName; - - String enumValue = isDataTypeString(dataType) - ? enumUnknownDefaultCaseName - : // This is a dummy value that attempts to avoid collisions with previously specified cases. - // Int.max / 192 - // The number 192 that is used to calculate this random value, is the Swift Evolution proposal for frozen/non-frozen enums. - // [SE-0192](https://github.com/apple/swift-evolution/blob/master/proposals/0192-non-exhaustive-enums.md) - // Since this functionality was born in the Swift 5 generator and latter on broth to all generators - // https://github.com/OpenAPITools/openapi-generator/pull/11013 - String.valueOf(11184809); - - enumVar.put(ENUM_NAME, toEnumVarName(enumName, dataType)); - enumVar.put(ENUM_VALUE, toEnumValue(enumValue, dataType)); - enumVar.put(ENUM_IS_STRING, isDataTypeString(dataType)); - // TODO: add isNumeric - enumVars.add(enumVar); + injectEnumUnknownDefaultCase(enumVars, dataType); } return enumVars; } + /** + * If the server adds new enum cases, that are unknown by an old spec/client, the client will fail to parse the network response. + * This adds a default case to the enum, {@link DefaultCodegen#enumUnknownDefaultCaseName}, that can be used as a fallback for unknown values. + * + * @param enumVars the enumVars + * @param dataType the data type of the enum parameter + */ + private void injectEnumUnknownDefaultCase(List> enumVars, String dataType) { + Map enumVar = new HashMap<>(); + String enumName = enumUnknownDefaultCaseName; + + String enumValue = isDataTypeString(dataType) + ? enumUnknownDefaultCaseName + : // This is a dummy value that attempts to avoid collisions with previously specified cases. + // Int.max / 192 + // The number 192 that is used to calculate this random value, is the Swift Evolution proposal for frozen/non-frozen enums. + // [SE-0192](https://github.com/apple/swift-evolution/blob/master/proposals/0192-non-exhaustive-enums.md) + // Since this functionality was born in the Swift 5 generator and latter on broth to all generators + // https://github.com/OpenAPITools/openapi-generator/pull/11013 + String.valueOf(11184809); + + enumVar.put(ENUM_NAME, toEnumVarName(enumName, dataType)); + enumVar.put(ENUM_VALUE, toEnumValue(enumValue, dataType)); + enumVar.put(ENUM_IS_STRING, isDataTypeString(dataType)); + // TODO: add isNumeric + enumVars.add(enumVar); + } + + /** + * Removes any injected default enum value that was created with {@link DefaultCodegen#injectEnumUnknownDefaultCase} + * from an operation's non-body enum parameters. This can for example be of interest when generating client code + * where a fallback is superfluous for a value that is only sent and never received. + * + * @param operation operation to be processed + */ + protected void removeEnumUnknownDefaultCase(CodegenOperation operation) { + for (CodegenParameter param : operation.allParams) { + if (!param.isBodyParam && param.isEnum && hasEnumVars(param.allowableValues)) { + List> enumVars = getEnumVars(param.allowableValues); + if (enumVars != null) { + String unknownName = toEnumVarName(enumUnknownDefaultCaseName, param.dataType); + enumVars.removeIf(ev -> unknownName.equals(ev.get(ENUM_NAME))); + } + } + } + } + protected void postProcessEnumVars(List> enumVars) { Collections.reverse(enumVars); enumVars.forEach(v -> { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java index fb70f5792536..3344db943a5b 100755 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java @@ -39,8 +39,6 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import lombok.Getter; -import lombok.Setter; import org.openapitools.codegen.CliOption; import org.openapitools.codegen.CodegenConstants; import org.openapitools.codegen.CodegenModel; @@ -60,6 +58,9 @@ import org.openapitools.codegen.templating.mustache.ReplaceAllLambda; import static java.util.Collections.sort; +import static org.openapitools.codegen.CodegenConstants.ENUM_NAME; +import static org.openapitools.codegen.utils.EnumUtils.getEnumVars; +import static org.openapitools.codegen.utils.EnumUtils.hasEnumVars; /** *

Mustache templates are located in @@ -1146,9 +1147,26 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List> consumes) { Map firstType = consumes.get(0); if (firstType != null) { diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/api.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/api.mustache index cf5a4fe733e7..e6bb2ebd9298 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/api.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/api.mustache @@ -43,18 +43,10 @@ import kotlinx.serialization.encoding.* */ @Serializable {{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}enum class {{enumName}}{{operationIdCamelCase}}({{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val value: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}kotlin.String{{/isContainer}}) { - {{^enumUnknownDefaultCase}} {{#allowableValues}}{{#enumVars}} @SerialName(value = {{^isString}}"{{/isString}}{{{value}}}{{^isString}}"{{/isString}}) - {{&name}}({{{value}}}){{^-last}},{{/-last}} + {{&name}}({{{value}}}){{^-last}},{{/-last}}{{#-last}};{{/-last}} {{/enumVars}}{{/allowableValues}} - {{/enumUnknownDefaultCase}} - {{#enumUnknownDefaultCase}} - {{#allowableValues}}{{#enumVars}}{{^-last}} - @SerialName(value = {{^isString}}"{{/isString}}{{{value}}}{{^isString}}"{{/isString}}) - {{&name}}({{{value}}}), - {{/-last}}{{/enumVars}}{{/allowableValues}} - {{/enumUnknownDefaultCase}} } {{/isEnum}} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/KotlinClientCodegenModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/KotlinClientCodegenModelTest.java index 115151324b47..462d3de1837b 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/KotlinClientCodegenModelTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/KotlinClientCodegenModelTest.java @@ -43,12 +43,13 @@ import java.util.Map; import static org.openapitools.codegen.CodegenConstants.*; -import static org.openapitools.codegen.languages.KotlinClientCodegen.COMPANION_OBJECT; -import static org.openapitools.codegen.languages.KotlinClientCodegen.GENERATE_ONEOF_ANYOF_WRAPPERS; +import static org.openapitools.codegen.languages.KotlinClientCodegen.*; @SuppressWarnings("static-method") public class KotlinClientCodegenModelTest { + private static final String KOTLIN_GENERATOR = "kotlin"; + private Schema getArrayTestSchema() { return new ObjectSchema() .description("a sample model") @@ -369,7 +370,7 @@ public void testNativeClientExplodedQueryParamObject() throws IOException { output.deleteOnExit(); final CodegenConfigurator configurator = new CodegenConfigurator() - .setGeneratorName("kotlin") + .setGeneratorName(KOTLIN_GENERATOR) .setLibrary("jvm-retrofit2") .setAdditionalProperties(properties) .setInputSpec("src/test/resources/3_0/issue4808.yaml") @@ -392,7 +393,7 @@ public void testOmitGradleWrapperDoesNotGenerateWrapper() throws IOException { output.deleteOnExit(); final CodegenConfigurator configurator = new CodegenConfigurator() - .setGeneratorName("kotlin") + .setGeneratorName(KOTLIN_GENERATOR) .setInputSpec("src/test/resources/3_0/ping.yaml") .addAdditionalProperty("omitGradleWrapper", true) .setOutputDir(output.getAbsolutePath().replace("\\", "/")); @@ -495,7 +496,7 @@ public void testLocalVariablesUseSanitizedDataTypeNamesForOneOfProperty_19942(Cl output.deleteOnExit(); final CodegenConfigurator configurator = new CodegenConfigurator() - .setGeneratorName("kotlin") + .setGeneratorName(KOTLIN_GENERATOR) .setLibrary(clientLibrary.getLibraryName()) .setInputSpec("src/test/resources/3_0/issue_19942.json") .addAdditionalProperty("omitGradleWrapper", true) @@ -519,7 +520,7 @@ public void testLocalVariablesUseSanitizedDataTypeNamesForAnyOfProperty_19942(Cl output.deleteOnExit(); final CodegenConfigurator configurator = new CodegenConfigurator() - .setGeneratorName("kotlin") + .setGeneratorName(KOTLIN_GENERATOR) .setLibrary(clientLibrary.getLibraryName()) .setInputSpec("src/test/resources/3_0/issue_19942.json") .addAdditionalProperty("omitGradleWrapper", true) @@ -582,7 +583,7 @@ public void polymorphicReferenceOverrides() throws IOException { // File output = Paths.get("/Users/sylvain_maillard/workspaces/openapi-generator/modules/openapi-generator/target/test").toFile(); final CodegenConfigurator configurator = new CodegenConfigurator() - .setGeneratorName("kotlin") + .setGeneratorName(KOTLIN_GENERATOR) .setInputSpec("src/test/resources/3_1/issue_22216.yaml") .setOutputDir(output.getAbsolutePath().replace("\\", "/")); @@ -607,7 +608,7 @@ public void polymorphicKotlinxSerialization() throws IOException { output.deleteOnExit(); final CodegenConfigurator configurator = new CodegenConfigurator() - .setGeneratorName("kotlin") + .setGeneratorName(KOTLIN_GENERATOR) .setLibrary("jvm-retrofit2") .setAdditionalProperties(new HashMap<>() {{ put(CodegenConstants.SERIALIZATION_LIBRARY, "kotlinx_serialization"); @@ -647,7 +648,7 @@ public void oneOfPrimitiveKotlinxSerialization() throws IOException { output.deleteOnExit(); final CodegenConfigurator configurator = new CodegenConfigurator() - .setGeneratorName("kotlin") + .setGeneratorName(KOTLIN_GENERATOR) .setLibrary("jvm-retrofit2") .setAdditionalProperties(new HashMap<>() {{ put(CodegenConstants.SERIALIZATION_LIBRARY, "kotlinx_serialization"); @@ -682,7 +683,7 @@ public void anyOfPrimitiveKotlinxSerialization() throws IOException { output.deleteOnExit(); final CodegenConfigurator configurator = new CodegenConfigurator() - .setGeneratorName("kotlin") + .setGeneratorName(KOTLIN_GENERATOR) .setLibrary("jvm-retrofit2") .setAdditionalProperties(new HashMap<>() {{ put(CodegenConstants.SERIALIZATION_LIBRARY, "kotlinx_serialization"); @@ -748,7 +749,7 @@ private File generateKotlinxOneOfAnyOf(Map extraProps) throws IO props.putAll(extraProps); new DefaultGenerator() .opts(new CodegenConfigurator() - .setGeneratorName("kotlin") + .setGeneratorName(KOTLIN_GENERATOR) .setLibrary("jvm-retrofit2") .setAdditionalProperties(props) .setInputSpec("src/test/resources/3_0/issue_19942.json") @@ -768,7 +769,7 @@ public void polymorphicJacksonSerialization() throws IOException { output.deleteOnExit(); final CodegenConfigurator configurator = new CodegenConfigurator() - .setGeneratorName("kotlin") + .setGeneratorName(KOTLIN_GENERATOR) .setLibrary("jvm-okhttp4") .setAdditionalProperties(new HashMap<>() {{ put(CodegenConstants.SERIALIZATION_LIBRARY, "jackson"); @@ -824,7 +825,7 @@ public void testIntArrayToEnum() throws IOException { output.deleteOnExit(); final CodegenConfigurator configurator = new CodegenConfigurator() - .setGeneratorName("kotlin") + .setGeneratorName(KOTLIN_GENERATOR) .setLibrary("jvm-ktor") .setAdditionalProperties(new HashMap<>() {{ put(CodegenConstants.SERIALIZATION_LIBRARY, "jackson"); @@ -850,7 +851,7 @@ public void testBooleanConstEnumUsesBooleanLiteral() throws IOException { output.deleteOnExit(); final CodegenConfigurator configurator = new CodegenConfigurator() - .setGeneratorName("kotlin") + .setGeneratorName(KOTLIN_GENERATOR) .setLibrary("jvm-ktor") .setAdditionalProperties(new HashMap<>() {{ put(CodegenConstants.SERIALIZATION_LIBRARY, "jackson"); @@ -880,7 +881,7 @@ public void testJacksonEnumsUseJsonCreator() throws IOException { output.deleteOnExit(); final CodegenConfigurator configurator = new CodegenConfigurator() - .setGeneratorName("kotlin") + .setGeneratorName(KOTLIN_GENERATOR) .setLibrary("jvm-retrofit2") .setAdditionalProperties(new HashMap<>() {{ put(CodegenConstants.SERIALIZATION_LIBRARY, "jackson"); @@ -906,7 +907,7 @@ public void testJacksonNestedEnumsUseJsonValue() throws IOException { output.deleteOnExit(); final CodegenConfigurator configurator = new CodegenConfigurator() - .setGeneratorName("kotlin") + .setGeneratorName(KOTLIN_GENERATOR) .setLibrary("jvm-retrofit2") .setAdditionalProperties(new HashMap<>() {{ put(CodegenConstants.SERIALIZATION_LIBRARY, "jackson"); @@ -934,7 +935,7 @@ public void testJacksonEnumsThrowForUnknownValue() throws IOException { output.deleteOnExit(); final CodegenConfigurator configurator = new CodegenConfigurator() - .setGeneratorName("kotlin") + .setGeneratorName(KOTLIN_GENERATOR) .setLibrary("jvm-retrofit2") .setAdditionalProperties(new HashMap<>() {{ put(CodegenConstants.SERIALIZATION_LIBRARY, "jackson"); @@ -960,7 +961,7 @@ public void testJacksonEnumsExposeDecodeOrNullHelper() throws IOException { output.deleteOnExit(); final CodegenConfigurator configurator = new CodegenConfigurator() - .setGeneratorName("kotlin") + .setGeneratorName(KOTLIN_GENERATOR) .setLibrary("jvm-retrofit2") .setAdditionalProperties(new HashMap<>() {{ put(CodegenConstants.SERIALIZATION_LIBRARY, "jackson"); @@ -993,7 +994,7 @@ public void testJacksonEnumsWithUnknownDefaultCase() throws IOException { output.deleteOnExit(); final CodegenConfigurator configurator = new CodegenConfigurator() - .setGeneratorName("kotlin") + .setGeneratorName(KOTLIN_GENERATOR) .setLibrary("jvm-retrofit2") .setAdditionalProperties(new HashMap<>() {{ put(CodegenConstants.SERIALIZATION_LIBRARY, "jackson"); @@ -1016,6 +1017,53 @@ public void testJacksonEnumsWithUnknownDefaultCase() throws IOException { TestUtils.assertFileNotContains(enumKt, "throw IllegalArgumentException(\"Unknown ExampleNumericEnum value"); } + @Test + public void testMultiplatformInlineEnumDropsUnknownDefaultCase() throws IOException { + File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName(KOTLIN_GENERATOR) + .setLibrary("multiplatform") + .setAdditionalProperties(new HashMap<>() {{ + put(CodegenConstants.SERIALIZATION_LIBRARY, "jackson"); + put(CodegenConstants.MODEL_PACKAGE, "model"); + put("dateLibrary", "kotlinx-datetime"); + put(ENUM_UNKNOWN_DEFAULT_CASE, "true"); + }}) + .setInputSpec("src/test/resources/3_0/kotlin/multiplatform-inline-query-enum.yaml") + .setOutputDir(output.getAbsolutePath().replace("\\", "/")); + + final ClientOptInput clientOptInput = configurator.toClientOptInput(); + DefaultGenerator generator = new DefaultGenerator(); + + generator.opts(clientOptInput).generate(); + + final Path definedEnumKt = Paths.get(output + "/src/commonMain/kotlin/model/ApiError.kt"); + final Path definedOperationHeaderEnumKt = Paths.get(output + "/src/commonMain/kotlin/model/AllowFoo.kt"); + final Path definedOperationQueryEnumKt = Paths.get(output + "/src/commonMain/kotlin/model/AllowFooYn.kt"); + final Path definedOperationPathEnumKt = Paths.get(output + "/src/commonMain/kotlin/model/AllowFooPath.kt"); + final Path apiKt = Paths.get(output + "/src/commonMain/kotlin/org/openapitools/client/apis/DefaultApi.kt"); + + TestUtils.assertFileContains(definedEnumKt, "@SerialName(value = \"100\") ERROR(100),"); + TestUtils.assertFileContains(definedEnumKt, "@SerialName(value = \"11184809\") unknown_default_open_api(11184809);"); + TestUtils.assertFileContains(definedOperationHeaderEnumKt, "ALLOW(\"1\"),"); + TestUtils.assertFileContains(definedOperationHeaderEnumKt, "unknown_default_open_api(\"unknown_default_open_api\");"); + TestUtils.assertFileContains(definedOperationQueryEnumKt, "NOPE(\"n\"),"); + TestUtils.assertFileContains(definedOperationQueryEnumKt, "unknown_default_open_api(\"unknown_default_open_api\");"); + TestUtils.assertFileContains(definedOperationPathEnumKt, "ONE(\"1\"),"); + TestUtils.assertFileContains(definedOperationPathEnumKt, "unknown_default_open_api(\"unknown_default_open_api\");"); + // The enumUnknownDefaultCase should be omitted for inline header parameters + TestUtils.assertFileContains(apiKt, "DISALLOW(\"0\"),"); + TestUtils.assertFileContains(apiKt, "ALLOW(\"1\");"); + // The enumUnknownDefaultCase should be omitted for inline query parameters + TestUtils.assertFileContains(apiKt, "YEP(\"y\"),"); + TestUtils.assertFileContains(apiKt, "NOPE(\"n\");"); + // The enumUnknownDefaultCase should be omitted for inline path parameters + TestUtils.assertFileContains(apiKt, "ZERO(\"0\"),"); + TestUtils.assertFileContains(apiKt, "ONE(\"1\");"); + } + @Test(description = "convert an empty model to object") public void emptyModelKotlinxSerializationTest() throws IOException { final Schema schema = new ObjectSchema() @@ -1030,7 +1078,7 @@ public void emptyModelKotlinxSerializationTest() throws IOException { output.deleteOnExit(); final CodegenConfigurator configurator = new CodegenConfigurator() - .setGeneratorName("kotlin") + .setGeneratorName(KOTLIN_GENERATOR) .setAdditionalProperties(new HashMap<>() {{ put(CodegenConstants.MODEL_PACKAGE, "model"); put(GENERATE_ONEOF_ANYOF_WRAPPERS, false); @@ -1079,7 +1127,7 @@ public void testCompanionObjectGeneratesCompanionInModel() throws IOException { output.deleteOnExit(); final CodegenConfigurator configurator = new CodegenConfigurator() - .setGeneratorName("kotlin") + .setGeneratorName(KOTLIN_GENERATOR) .addAdditionalProperty(COMPANION_OBJECT, true) .setInputSpec("src/test/resources/3_0/petstore.yaml") .setOutputDir(output.getAbsolutePath().replace("\\", "/")); @@ -1099,7 +1147,7 @@ public void paramJsonPropertyAnnotationWithNameMappings() throws IOException { output.deleteOnExit(); final CodegenConfigurator configurator = new CodegenConfigurator() - .setGeneratorName("kotlin") + .setGeneratorName(KOTLIN_GENERATOR) .setInputSpec("src/test/resources/3_0/kotlin/param-json-property.yaml") .setOutputDir(output.getAbsolutePath().replace("\\", "/")) .addAdditionalProperty(CodegenConstants.SERIALIZATION_LIBRARY, "jackson") @@ -1123,7 +1171,7 @@ public void paramJsonPropertyAnnotationWithDigitStartingPropertyName() throws IO output.deleteOnExit(); final CodegenConfigurator configurator = new CodegenConfigurator() - .setGeneratorName("kotlin") + .setGeneratorName(KOTLIN_GENERATOR) .setInputSpec("src/test/resources/3_0/kotlin/param-json-property.yaml") .setOutputDir(output.getAbsolutePath().replace("\\", "/")) .addAdditionalProperty(CodegenConstants.SERIALIZATION_LIBRARY, "jackson"); diff --git a/modules/openapi-generator/src/test/resources/3_0/kotlin/multiplatform-inline-query-enum.yaml b/modules/openapi-generator/src/test/resources/3_0/kotlin/multiplatform-inline-query-enum.yaml new file mode 100644 index 000000000000..af72fdad5af0 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/kotlin/multiplatform-inline-query-enum.yaml @@ -0,0 +1,115 @@ +openapi: 3.0.3 +info: + description: >- + Example created + version: 1.0.0 + title: OpenAPI Stuff API created to reproduce issue + license: + name: Apache-2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0.html' +paths: + /healthcheck/{X-Allow-Foo-Path}/{X-Allow-Foo-Path-Ref}: + get: + parameters: + - name: X-Allow-Foo-Header + in: header + schema: + type: string + enum: + - '0' + - '1' + x-enum-varnames: + - DISALLOW + - ALLOW + - name: X-Allow-Foo-Header-Ref + in: header + schema: + $ref: '#/components/schemas/AllowFoo' + - name: X-Allow-Foo-Query + in: query + schema: + type: string + enum: + - 'y' + - 'n' + x-enum-varnames: + - YEP + - NOPE + - name: X-Allow-Foo-Query-Ref + in: query + schema: + $ref: '#/components/schemas/AllowFooYn' + - name: X-Allow-Foo-Path + in: path + required: true + schema: + type: string + enum: + - '0' + - '1' + x-enum-varnames: + - ZERO + - ONE + - name: X-Allow-Foo-Path-Ref + in: path + required: true + schema: + $ref: '#/components/schemas/AllowFooPath' + summary: Health check endpoint. + operationId: healthcheck + responses: + 204: + description: Successful health check + default: + description: Unexpected error + content: + 'application/json': + schema: + $ref: '#/components/schemas/ApiError' + +components: + schemas: + ApiError: + required: + - errorCode + type: object + properties: + errorCode: + type: integer + enum: + - 0 + - 100 + x-enum-varnames: + - OK + - ERROR + reasonCode: + $ref: '#/components/schemas/ReasonCode' + ReasonCode: + type: integer + enum: + - 10 + - 20 + AllowFoo: + type: string + enum: + - '0' + - '1' + x-enum-varnames: + - DISALLOW + - ALLOW + AllowFooYn: + type: string + enum: + - 'y' + - 'n' + x-enum-varnames: + - YEP + - NOPE + AllowFooPath: + type: string + enum: + - '0' + - '1' + x-enum-varnames: + - ZERO + - ONE diff --git a/samples/client/petstore/kotlin-multiplatform-kotlinx-datetime/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-multiplatform-kotlinx-datetime/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt index 8140d4711620..7532399c01b4 100644 --- a/samples/client/petstore/kotlin-multiplatform-kotlinx-datetime/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-multiplatform-kotlinx-datetime/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt @@ -135,7 +135,7 @@ open class PetApi : ApiClient { pending("pending"), @SerialName(value = "sold") - sold("sold") + sold("sold"); } diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt index 8140d4711620..7532399c01b4 100644 --- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt @@ -135,7 +135,7 @@ open class PetApi : ApiClient { pending("pending"), @SerialName(value = "sold") - sold("sold") + sold("sold"); } From 0cfa3c505355e55cd5e6cfdbded147d6b3244cf7 Mon Sep 17 00:00:00 2001 From: Jachym Metlicka Date: Sat, 8 Aug 2026 12:01:27 +0200 Subject: [PATCH 6/7] [kotlin-spring] feature: Add `x-extra-imports` vendor extension (#24638) * feat(kotlin-spring): implement x-extra-imports support for models and operations * update samples * add comment to template * implement changes from CR feedback --- docs/generators/kotlin-spring.md | 1 + .../openapitools/codegen/VendorExtension.java | 1 + .../languages/KotlinSpringServerCodegen.java | 111 ++++++++++++ .../main/resources/kotlin-spring/api.mustache | 5 + .../kotlin-spring/apiInterface.mustache | 5 + .../spring/KotlinSpringServerCodegenTest.java | 158 ++++++++++++++++++ .../kotlin/kotlin-spring-extra-imports.yaml | 95 +++++++++++ 7 files changed, 376 insertions(+) create mode 100644 modules/openapi-generator/src/test/resources/3_0/kotlin/kotlin-spring-extra-imports.yaml diff --git a/docs/generators/kotlin-spring.md b/docs/generators/kotlin-spring.md index f42388d53000..1d98298707cd 100644 --- a/docs/generators/kotlin-spring.md +++ b/docs/generators/kotlin-spring.md @@ -87,6 +87,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-discriminator-value|Used with model inheritance to specify value for discriminator that identifies current model|MODEL| |x-field-extra-annotation|Custom annotation(s) to be added to property; accepts a string or list of strings|FIELD, OPERATION_PARAMETER|null |x-operation-extra-annotation|Custom annotation(s) to be added to operation; accepts a string or list of strings|OPERATION|null +|x-extra-imports|Custom import(s) to add to the generated file that declares the annotated model, property, operation, or parameter (e.g. so custom annotations can be referenced by their short name); accepts a string or list of strings. Values are emitted verbatim (Kotlin alias imports supported) and only exact duplicates are removed|MODEL, FIELD, OPERATION, OPERATION_PARAMETER|null |x-pattern-message|Add this property whenever you need to customize the invalidation error message for the regex pattern of a variable|FIELD, OPERATION_PARAMETER|null |x-size-message|Add this property whenever you need to customize the invalidation error message for the size or length of a variable|FIELD, OPERATION_PARAMETER|null |x-minimum-message|Add this property whenever you need to customize the invalidation error message for the minimum value of a variable|FIELD, OPERATION_PARAMETER|null diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/VendorExtension.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/VendorExtension.java index 288ca9d0fb99..92e34e47997e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/VendorExtension.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/VendorExtension.java @@ -26,6 +26,7 @@ public enum VendorExtension { X_CLASS_EXTRA_ANNOTATION("x-class-extra-annotation", ExtensionLevel.MODEL, "Custom annotation(s) to be added to model; accepts a string or list of strings", null), X_FIELD_EXTRA_ANNOTATION("x-field-extra-annotation", Arrays.asList(ExtensionLevel.FIELD, ExtensionLevel.OPERATION_PARAMETER), "Custom annotation(s) to be added to property; accepts a string or list of strings", null), X_OPERATION_EXTRA_ANNOTATION("x-operation-extra-annotation", ExtensionLevel.OPERATION, "Custom annotation(s) to be added to operation; accepts a string or list of strings", null), + X_EXTRA_IMPORTS("x-extra-imports", Arrays.asList(ExtensionLevel.MODEL, ExtensionLevel.FIELD, ExtensionLevel.OPERATION, ExtensionLevel.OPERATION_PARAMETER), "Custom import(s) to add to the generated file that declares the annotated model, property, operation, or parameter (e.g. so custom annotations can be referenced by their short name); accepts a string or list of strings. Values are emitted verbatim (Kotlin alias imports supported) and only exact duplicates are removed", null), X_VERSION_PARAM("x-version-param", ExtensionLevel.OPERATION_PARAMETER, "Marker property that tells that this parameter would be used for endpoint versioning. Applicable for headers & query params. true/false", null), X_PATTERN_MESSAGE("x-pattern-message", Arrays.asList(ExtensionLevel.FIELD, ExtensionLevel.OPERATION_PARAMETER), "Add this property whenever you need to customize the invalidation error message for the regex pattern of a variable", null), X_SIZE_MESSAGE("x-size-message", Arrays.asList(ExtensionLevel.FIELD, ExtensionLevel.OPERATION_PARAMETER), "Add this property whenever you need to customize the invalidation error message for the size or length of a variable", null), diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java index baaa203e60b4..d71443a21b57 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java @@ -1337,6 +1337,79 @@ public void addImportsToOneOfInterface(List> imports) { } } + /** + * Reads the {@code x-extra-imports} vendor extension from the given vendor-extension map and + * appends its values to {@code target}. The extension accepts either a single string or a list + * of strings; parsing is delegated to {@link #getObjectAsStringList(Object)} for consistency with + * how the sibling {@code x-*-extra-annotation} extensions are handled. Values are preserved + * verbatim (Kotlin alias imports are supported); no validation, trimming, or conflict detection is + * performed. Exact-duplicate handling is left to the caller's collection (typically a + * {@link LinkedHashSet} to keep insertion order while removing duplicates). + * + * @param vendorExtensions vendor extensions of a model, property, operation, or parameter (may be {@code null}) + * @param target collection to which extracted import directives are added + */ + private void collectExtraImports(Map vendorExtensions, Collection target) { + if (vendorExtensions == null) { + return; + } + target.addAll(getObjectAsStringList(vendorExtensions.get(VendorExtension.X_EXTRA_IMPORTS.getName()))); + } + + /** + * Appends the given import directives to an {@code imports}-style list (a list of maps each + * holding a single {@code "import"} entry, as rendered by the {@code {{#imports}}} template + * blocks), skipping directives whose exact text already appears in the list. + * + * @param imports existing import list to extend (must be mutable) + * @param extraImports import directives to add, in insertion order + */ + private void appendExtraImports(List> imports, Collection extraImports) { + Set existing = imports.stream() + .map(m -> m.get("import")) + .filter(Objects::nonNull) + .collect(Collectors.toCollection(HashSet::new)); + for (String imp : extraImports) { + if (existing.add(imp)) { + Map item = new HashMap<>(); + item.put("import", imp); + imports.add(item); + } + } + } + + @Override + public ModelsMap postProcessModels(ModelsMap objs) { + objs = super.postProcessModels(objs); + + // Collect x-extra-imports declared on each model and its properties, and add them to the + // model file's import list so custom class/field annotations can be referenced by short name. + // Each ModelsMap corresponds to a single generated model file, so this stays file-scoped. + Set extraImports = new LinkedHashSet<>(); + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); + if (cm == null) { + continue; + } + collectExtraImports(cm.vendorExtensions, extraImports); + // allVars is the complete property set (own + inherited); vars is included for safety. + // The LinkedHashSet collapses any overlap between the two lists. + Stream.of(cm.vars, cm.allVars) + .filter(Objects::nonNull) + .flatMap(List::stream) + .forEach(p -> collectExtraImports(p.vendorExtensions, extraImports)); + } + if (!extraImports.isEmpty()) { + List> imports = objs.getImports(); + if (imports == null) { + imports = new ArrayList<>(); + objs.setImports(imports); + } + appendExtraImports(imports, extraImports); + } + return objs; + } + @Override public Map postProcessAllModels(Map objs) { objs = super.postProcessAllModels(objs); @@ -1689,6 +1762,43 @@ public void setReturnContainer(final String returnContainer) { handleImplicitHeaders(objs); + // Collect x-extra-imports declared on operations and their parameters for this API group. + // Grouping (by tag or by path segment, per useTags) is already reflected in this OperationsMap, + // so the imports are scoped to exactly the API file(s) that render these operations. They are + // exposed under a dedicated key (not the shared "imports" list) so that only templates which + // render the related annotations (api.mustache / apiInterface.mustache) emit them, while + // delegate, controller-wrapper, service and test templates do not. + if (operations != null) { + Set operationExtraImports = new LinkedHashSet<>(); + for (CodegenOperation operation : operations.getOperation()) { + collectExtraImports(operation.vendorExtensions, operationExtraImports); + if (operation.allParams != null) { + operation.allParams.forEach(param -> collectExtraImports(param.vendorExtensions, operationExtraImports)); + } + // Implicit header params are moved out of allParams by handleImplicitHeaders above, + // so scan them separately to avoid dropping their declared imports. + if (operation.implicitHeadersParams != null) { + operation.implicitHeadersParams.forEach(param -> collectExtraImports(param.vendorExtensions, operationExtraImports)); + } + } + // Drop any import already present in the shared imports list (e.g. produced from an + // operation's types) so the file keeps the documented once-per-file deduplication. + Set existingImports = objs.getImports().stream() + .map(m -> m.get("import")) + .filter(Objects::nonNull) + .collect(Collectors.toCollection(HashSet::new)); + operationExtraImports.removeAll(existingImports); + if (!operationExtraImports.isEmpty()) { + List> extraImportList = new ArrayList<>(); + for (String imp : operationExtraImports) { + Map item = new HashMap<>(); + item.put("import", imp); + extraImportList.add(item); + } + objs.put("operationExtraImports", extraImportList); + } + } + return objs; } @@ -1777,6 +1887,7 @@ public List getSupportedVendorExtensions() { extensions.add(VendorExtension.X_DISCRIMINATOR_VALUE); extensions.add(VendorExtension.X_FIELD_EXTRA_ANNOTATION); extensions.add(VendorExtension.X_OPERATION_EXTRA_ANNOTATION); + extensions.add(VendorExtension.X_EXTRA_IMPORTS); extensions.add(VendorExtension.X_PATTERN_MESSAGE); extensions.add(VendorExtension.X_SIZE_MESSAGE); extensions.add(VendorExtension.X_MINIMUM_MESSAGE); diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/api.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/api.mustache index 448cf0c8726e..9ff4eb9308dc 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-spring/api.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-spring/api.mustache @@ -2,6 +2,11 @@ package {{package}} {{#imports}}import {{import}} {{/imports}} +{{#operationExtraImports}}import {{{import}}} +{{/operationExtraImports}} +{{! Dedicated key (not the shared imports list) so these x-extra-imports render only in files that + emit x-operation-extra-annotation. The OperationsMap imports list is shared with apiDelegate, + service, api_test, etc., which don't; keeping them here avoids leaking unused imports there. }} {{#swagger2AnnotationLibrary}} import io.swagger.v3.oas.annotations.* import io.swagger.v3.oas.annotations.enums.* diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/apiInterface.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/apiInterface.mustache index 3da7f3319cc3..8059e27f83b6 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-spring/apiInterface.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-spring/apiInterface.mustache @@ -7,6 +7,11 @@ package {{package}} {{#imports}}import {{import}} {{/imports}} +{{#operationExtraImports}}import {{{import}}} +{{/operationExtraImports}} +{{! Dedicated key (not the shared imports list) so these x-extra-imports render only in files that + emit x-operation-extra-annotation. The OperationsMap imports list is shared with apiDelegate, + service, api_test, etc., which don't; keeping them here avoids leaking unused imports there. }} {{#swagger2AnnotationLibrary}} import io.swagger.v3.oas.annotations.* import io.swagger.v3.oas.annotations.enums.* diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/spring/KotlinSpringServerCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/spring/KotlinSpringServerCodegenTest.java index a20820f7c029..e97cd16b69ad 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/spring/KotlinSpringServerCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/spring/KotlinSpringServerCodegenTest.java @@ -7201,4 +7201,162 @@ public void testIssue24139NullableRefNoJsonSetterNullsFail() throws IOException "nestedNullable ($ref to nullable schema) must not have @JsonSetter(nulls = Nulls.FAIL)" ); } + + private static final String EXTRA_IMPORTS_SPEC = "src/test/resources/3_0/kotlin/kotlin-spring-extra-imports.yaml"; + + private String generateExtraImports(Consumer configure, boolean apisOnly) throws IOException { + File output = Files.createTempDirectory("test").toFile().getCanonicalFile(); + FileUtils.forceDeleteOnExit(output); + String outputPath = output.getAbsolutePath().replace('\\', '/'); + + KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen(); + codegen.setOutputDir(output.getAbsolutePath()); + configure.accept(codegen); + + ClientOptInput input = new ClientOptInput() + .openAPI(TestUtils.parseSpec(EXTRA_IMPORTS_SPEC)) + .config(codegen); + DefaultGenerator generator = new DefaultGenerator(); + generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, apisOnly ? "false" : "true"); + generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); + generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); + generator.setGeneratorPropertyDefault(CodegenConstants.APIS, apisOnly ? "true" : "false"); + generator.setGeneratorPropertyDefault(CodegenConstants.API_TESTS, "false"); + generator.setGeneratorPropertyDefault(CodegenConstants.API_DOCS, "false"); + generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); + generator.opts(input).generate(); + + return outputPath; + } + + private static long countOccurrences(Path path, String needle) throws IOException { + String content = new String(Files.readAllBytes(path), StandardCharsets.UTF_8); + long count = 0; + int idx = 0; + while ((idx = content.indexOf(needle, idx)) != -1) { + count++; + idx += needle.length(); + } + return count; + } + + @Test(description = "x-extra-imports: model and property imports are added to the model file") + public void extraImportsOnModels() throws IOException { + String outputPath = generateExtraImports(codegen -> { }, false); + Path widget = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/model/Widget.kt"); + + assertFileContains(widget, + "import com.example.model.MyClassAnn", + "import com.example.model.MyFieldAnn", + "import com.example.model.Dup", + "import com.example.other.Foo as Bar", + "@MyClassAnn", + "@MyFieldAnn"); + + // com.example.model.Dup is declared on the class and on a property but must be imported only once. + Assert.assertEquals(countOccurrences(widget, "import com.example.model.Dup"), 1L, + "Duplicate x-extra-imports directive must be emitted only once"); + } + + @Test(description = "x-extra-imports: operation/parameter imports are scoped per tag when useTags=true") + public void extraImportsOnApiWithTags() throws IOException { + String outputPath = generateExtraImports(codegen -> { + codegen.additionalProperties().put(INTERFACE_ONLY, true); + codegen.additionalProperties().put(USE_TAGS, true); + }, true); + + Path accounts = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/AccountsApi.kt"); + Path orders = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/OrdersApi.kt"); + + // Accounts file: its own operation import, its parameter import, and the multi-tag operation import. + assertFileContains(accounts, + "import com.example.security.Audited", + "import com.example.security.TenantId", + "import com.example.shared.Traced"); + // No leakage from the Orders group. + assertFileNotContains(accounts, "import com.example.security.RateLimited"); + + // Orders file: its own operation import plus the multi-tag operation import. + assertFileContains(orders, + "import com.example.security.RateLimited", + "import com.example.shared.Traced"); + assertFileNotContains(orders, + "import com.example.security.Audited", + "import com.example.security.TenantId"); + } + + @Test(description = "x-extra-imports: operation imports follow first-path-segment groups when useTags=false") + public void extraImportsOnApiWithoutTags() throws IOException { + String outputPath = generateExtraImports(codegen -> { + codegen.additionalProperties().put(INTERFACE_ONLY, true); + codegen.additionalProperties().put(USE_TAGS, false); + }, true); + + Path accounts = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/AccountsApi.kt"); + Path orders = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/OrdersApi.kt"); + Path shared = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/SharedApi.kt"); + + // With path-segment grouping the shared operation is its own group, so Traced does not + // leak into the Accounts/Orders files. + assertFileContains(accounts, + "import com.example.security.Audited", + "import com.example.security.TenantId"); + assertFileNotContains(accounts, + "import com.example.security.RateLimited", + "import com.example.shared.Traced"); + + assertFileContains(orders, "import com.example.security.RateLimited"); + assertFileNotContains(orders, "import com.example.shared.Traced"); + + assertFileContains(shared, "import com.example.shared.Traced"); + } + + @Test(description = "x-extra-imports: only annotation-rendering files get imports (delegate/controller are excluded)") + public void extraImportsDelegateIsolation() throws IOException { + String outputPath = generateExtraImports(codegen -> { + codegen.additionalProperties().put(DELEGATE_PATTERN, true); + codegen.additionalProperties().put(USE_TAGS, true); + }, true); + + Path apiInterface = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/AccountsApi.kt"); + Path controller = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/AccountsApiController.kt"); + Path delegate = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/AccountsApiDelegate.kt"); + + // The interface renders the operation annotation, so it must carry the import. + assertFileContains(apiInterface, "import com.example.security.Audited"); + // The delegate and controller wrapper do not render the annotation and must not carry the import. + assertFileNotContains(controller, "import com.example.security.Audited"); + assertFileNotContains(delegate, "import com.example.security.Audited"); + } + + @Test(description = "x-extra-imports: parameter imports on implicit header params are not lost") + public void extraImportsImplicitHeaderParams() throws IOException { + String outputPath = generateExtraImports(codegen -> { + codegen.additionalProperties().put(INTERFACE_ONLY, true); + codegen.additionalProperties().put(USE_TAGS, true); + codegen.additionalProperties().put(KotlinSpringServerCodegen.IMPLICIT_HEADERS, true); + }, true); + + Path audit = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/AuditApi.kt"); + + // With implicitHeaders=true the header param is moved out of allParams into + // implicitHeadersParams, but its declared import must still be emitted. + assertFileContains(audit, "import com.example.security.TraceHeader"); + } + + @Test(description = "x-extra-imports: an import already generated from a type is not duplicated") + public void extraImportsDedupAgainstGeneratedImports() throws IOException { + String outputPath = generateExtraImports(codegen -> { + codegen.additionalProperties().put(INTERFACE_ONLY, true); + codegen.additionalProperties().put(USE_TAGS, true); + }, true); + + Path widgets = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/WidgetsApi.kt"); + + // getWidget both returns Widget (generating an import) and declares the same value via + // x-extra-imports, so the file must keep the once-per-file deduplication. + assertFileContains(widgets, "import org.openapitools.model.Widget", "@WidgetChecked"); + Assert.assertEquals(countOccurrences(widgets, "import org.openapitools.model.Widget"), 1L, + "Extra import duplicating a generated type import must be emitted only once"); + } } diff --git a/modules/openapi-generator/src/test/resources/3_0/kotlin/kotlin-spring-extra-imports.yaml b/modules/openapi-generator/src/test/resources/3_0/kotlin/kotlin-spring-extra-imports.yaml new file mode 100644 index 000000000000..65b63034645e --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/kotlin/kotlin-spring-extra-imports.yaml @@ -0,0 +1,95 @@ +openapi: "3.0.1" +info: + title: kotlin-spring x-extra-imports test + version: "1.0" + +paths: + /accounts/list: + get: + tags: [Accounts] + operationId: listAccounts + x-extra-imports: com.example.security.Audited + x-operation-extra-annotation: "@Audited" + parameters: + - name: tenant + in: query + required: false + schema: + type: string + x-extra-imports: com.example.security.TenantId + x-field-extra-annotation: "@TenantId" + responses: + "200": + description: OK + + /orders/list: + get: + tags: [Orders] + operationId: listOrders + x-extra-imports: + - com.example.security.RateLimited + x-operation-extra-annotation: "@RateLimited" + responses: + "200": + description: OK + + /shared/ping: + get: + tags: [Accounts, Orders] + operationId: sharedPing + x-extra-imports: com.example.shared.Traced + x-operation-extra-annotation: "@Traced" + responses: + "200": + description: OK + + /audit/list: + get: + tags: [Audit] + operationId: listAudit + parameters: + - name: X-Trace-Id + in: header + required: false + schema: + type: string + x-extra-imports: com.example.security.TraceHeader + x-field-extra-annotation: "@TraceHeader" + responses: + "200": + description: OK + + /widgets/get: + get: + tags: [Widgets] + operationId: getWidget + x-extra-imports: + - org.openapitools.model.Widget + x-operation-extra-annotation: "@WidgetChecked" + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Widget' + +components: + schemas: + Widget: + type: object + x-extra-imports: + - com.example.model.MyClassAnn + - com.example.model.Dup + x-class-extra-annotation: "@MyClassAnn" + properties: + name: + type: string + x-extra-imports: com.example.model.MyFieldAnn + x-field-extra-annotation: "@MyFieldAnn" + tag: + type: string + x-extra-imports: com.example.model.Dup + alias: + type: string + x-extra-imports: "com.example.other.Foo as Bar" From 922e59388fe8f8a954c0586fb0471c95afac569e Mon Sep 17 00:00:00 2001 From: Matthijs van Henten <440737+mvhenten@users.noreply.github.com> Date: Sat, 8 Aug 2026 12:20:16 +0200 Subject: [PATCH 7/7] [typescript-fetch] guard required date properties against null (#24509) A required date or date-time property was deserialized with an unguarded new Date(json[...]), turning a null value into 1970-01-01 and an absent value into Invalid Date, which then throws RangeError on serialization. Pass a nullish value through unchanged in both directions, as the template already does for every other required property type. --- .../typescript-fetch/modelGeneric.mustache | 8 ++-- .../TypeScriptFetchClientCodegenTest.java | 33 ++++++++++++++ .../3_0/typescript-fetch/required-date.yaml | 45 +++++++++++++++++++ .../builds/default-v3.0/models/FormatTest.ts | 4 +- .../builds/kebab-case/models/format-test.ts | 4 +- .../models/FormatTest.ts | 4 +- 6 files changed, 88 insertions(+), 10 deletions(-) create mode 100644 modules/openapi-generator/src/test/resources/3_0/typescript-fetch/required-date.yaml diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache index 5f4c379724b1..e2a1fcf328bb 100644 --- a/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache @@ -98,10 +98,10 @@ export function {{classname}}FromJSONTyped(json: any, ignoreDiscriminator: boole {{/isArray}} {{^isArray}} {{#isDateType}} - '{{name}}': {{^required}}{{#isNullable}}json['{{baseName}}'] === undefined ? undefined : json['{{baseName}}'] === null ? null : {{/isNullable}}{{^isNullable}}json['{{baseName}}'] == null ? undefined : {{/isNullable}}{{/required}}({{#required}}{{#isNullable}}json['{{baseName}}'] == null ? null : {{/isNullable}}{{/required}}new Date(json['{{baseName}}'])), + '{{name}}': {{^required}}{{#isNullable}}json['{{baseName}}'] === undefined ? undefined : json['{{baseName}}'] === null ? null : {{/isNullable}}{{^isNullable}}json['{{baseName}}'] == null ? undefined : {{/isNullable}}{{/required}}({{#required}}{{#isNullable}}json['{{baseName}}'] == null ? null : {{/isNullable}}{{^isNullable}}json['{{baseName}}'] == null ? json['{{baseName}}'] : {{/isNullable}}{{/required}}new Date(json['{{baseName}}'])), {{/isDateType}} {{#isDateTimeType}} - '{{name}}': {{^required}}{{#isNullable}}json['{{baseName}}'] === undefined ? undefined : json['{{baseName}}'] === null ? null : {{/isNullable}}{{^isNullable}}json['{{baseName}}'] == null ? undefined : {{/isNullable}}{{/required}}({{#required}}{{#isNullable}}json['{{baseName}}'] == null ? null : {{/isNullable}}{{/required}}new Date(json['{{baseName}}'])), + '{{name}}': {{^required}}{{#isNullable}}json['{{baseName}}'] === undefined ? undefined : json['{{baseName}}'] === null ? null : {{/isNullable}}{{^isNullable}}json['{{baseName}}'] == null ? undefined : {{/isNullable}}{{/required}}({{#required}}{{#isNullable}}json['{{baseName}}'] == null ? null : {{/isNullable}}{{^isNullable}}json['{{baseName}}'] == null ? json['{{baseName}}'] : {{/isNullable}}{{/required}}new Date(json['{{baseName}}'])), {{/isDateTimeType}} {{^isDateType}} {{^isDateTimeType}} @@ -173,10 +173,10 @@ export function {{classname}}ToJSONTyped(value?: {{#hasReadOnly}}Omit<{{classnam {{^isReadOnly}} {{#isPrimitiveType}} {{#isDateType}} - '{{baseName}}': {{^required}}value['{{name}}'] == null ? value['{{name}}'] : {{/required}}{{#isNullable}}{{#required}}value['{{name}}'] == null ? value['{{name}}'] : {{/required}}{{/isNullable}}value['{{name}}'].toISOString().substring(0,10), + '{{baseName}}': value['{{name}}'] == null ? value['{{name}}'] : value['{{name}}'].toISOString().substring(0,10), {{/isDateType}} {{#isDateTimeType}} - '{{baseName}}': {{^required}}value['{{name}}'] == null ? value['{{name}}'] : {{/required}}{{#isNullable}}{{#required}}value['{{name}}'] == null ? value['{{name}}'] : {{/required}}{{/isNullable}}value['{{name}}'].toISOString(), + '{{baseName}}': value['{{name}}'] == null ? value['{{name}}'] : value['{{name}}'].toISOString(), {{/isDateTimeType}} {{#isArray}} '{{baseName}}': {{#uniqueItems}}{{^required}}value['{{name}}'] == null ? undefined : {{/required}}{{#required}}{{#isNullable}}value['{{name}}'] == null ? null : {{/isNullable}}{{/required}}Array.from(value['{{name}}'] as Set){{/uniqueItems}}{{^uniqueItems}}value['{{name}}']{{/uniqueItems}}, diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientCodegenTest.java index 0ba3cd8a5305..cf89000e23de 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientCodegenTest.java @@ -756,6 +756,39 @@ public void testIssue19572_OmitUsesCorrectPropertyNameInApi() throws Exception { TestUtils.assertFileContains(modelPath, " financingOption?: Omit;"); } + @Test(description = "Verify required date and date-time properties are null-guarded on serialization and deserialization") + public void testRequiredDatesAreNullGuarded() throws Exception { + File output = generate( + Collections.emptyMap(), + "src/test/resources/3_0/typescript-fetch/required-date.yaml" + ); + + Path modelPath = Paths.get(output + "/models/Event.ts"); + TestUtils.assertFileExists(modelPath); + + TestUtils.assertFileContains(modelPath, + "'requiredDate': (json['requiredDate'] == null ? json['requiredDate'] : new Date(json['requiredDate'])),"); + TestUtils.assertFileContains(modelPath, + "'requiredDateTime': (json['requiredDateTime'] == null ? json['requiredDateTime'] : new Date(json['requiredDateTime'])),"); + TestUtils.assertFileContains(modelPath, + "'requiredNullableDate': (json['requiredNullableDate'] == null ? null : new Date(json['requiredNullableDate'])),"); + TestUtils.assertFileContains(modelPath, + "'requiredNullableDateTime': (json['requiredNullableDateTime'] == null ? null : new Date(json['requiredNullableDateTime'])),"); + TestUtils.assertFileContains(modelPath, + "'optionalDate': json['optionalDate'] == null ? undefined : (new Date(json['optionalDate'])),"); + TestUtils.assertFileContains(modelPath, + "'optionalDateTime': json['optionalDateTime'] == null ? undefined : (new Date(json['optionalDateTime'])),"); + + TestUtils.assertFileContains(modelPath, + "'requiredDate': value['requiredDate'] == null ? value['requiredDate'] : value['requiredDate'].toISOString().substring(0,10),"); + TestUtils.assertFileContains(modelPath, + "'requiredDateTime': value['requiredDateTime'] == null ? value['requiredDateTime'] : value['requiredDateTime'].toISOString(),"); + TestUtils.assertFileContains(modelPath, + "'requiredNullableDate': value['requiredNullableDate'] == null ? value['requiredNullableDate'] : value['requiredNullableDate'].toISOString().substring(0,10),"); + TestUtils.assertFileContains(modelPath, + "'optionalDateTime': value['optionalDateTime'] == null ? value['optionalDateTime'] : value['optionalDateTime'].toISOString(),"); + } + private static File generate( Map properties ) throws IOException { diff --git a/modules/openapi-generator/src/test/resources/3_0/typescript-fetch/required-date.yaml b/modules/openapi-generator/src/test/resources/3_0/typescript-fetch/required-date.yaml new file mode 100644 index 000000000000..50e3de43455a --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/typescript-fetch/required-date.yaml @@ -0,0 +1,45 @@ +openapi: 3.0.3 +info: + title: Required date properties + version: 1.0.0 +paths: + /event: + get: + operationId: getEvent + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Event' +components: + schemas: + Event: + type: object + required: + - requiredDate + - requiredDateTime + - requiredNullableDate + - requiredNullableDateTime + properties: + requiredDate: + type: string + format: date + requiredDateTime: + type: string + format: date-time + requiredNullableDate: + type: string + format: date + nullable: true + requiredNullableDateTime: + type: string + format: date-time + nullable: true + optionalDate: + type: string + format: date + optionalDateTime: + type: string + format: date-time diff --git a/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/FormatTest.ts b/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/FormatTest.ts index 047bde78c359..ad70db64240f 100644 --- a/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/FormatTest.ts +++ b/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/FormatTest.ts @@ -116,7 +116,7 @@ export function FormatTestFromJSONTyped(json: any, ignoreDiscriminator: boolean) 'string': json['string'] == null ? undefined : json['string'], '_byte': json['byte'], 'binary': json['binary'] == null ? undefined : json['binary'], - 'date': (new Date(json['date'])), + 'date': (json['date'] == null ? json['date'] : new Date(json['date'])), 'dateTime': json['dateTime'] == null ? undefined : (new Date(json['dateTime'])), 'uuid': json['uuid'] == null ? undefined : json['uuid'], 'password': json['password'], @@ -146,7 +146,7 @@ export function FormatTestToJSONTyped(value?: FormatTest | null, ignoreDiscrimin 'string': value['string'], 'byte': value['_byte'], 'binary': value['binary'], - 'date': value['date'].toISOString().substring(0,10), + 'date': value['date'] == null ? value['date'] : value['date'].toISOString().substring(0,10), 'dateTime': value['dateTime'] == null ? value['dateTime'] : value['dateTime'].toISOString(), 'uuid': value['uuid'], 'password': value['password'], diff --git a/samples/client/petstore/typescript-fetch/builds/kebab-case/models/format-test.ts b/samples/client/petstore/typescript-fetch/builds/kebab-case/models/format-test.ts index 047bde78c359..ad70db64240f 100644 --- a/samples/client/petstore/typescript-fetch/builds/kebab-case/models/format-test.ts +++ b/samples/client/petstore/typescript-fetch/builds/kebab-case/models/format-test.ts @@ -116,7 +116,7 @@ export function FormatTestFromJSONTyped(json: any, ignoreDiscriminator: boolean) 'string': json['string'] == null ? undefined : json['string'], '_byte': json['byte'], 'binary': json['binary'] == null ? undefined : json['binary'], - 'date': (new Date(json['date'])), + 'date': (json['date'] == null ? json['date'] : new Date(json['date'])), 'dateTime': json['dateTime'] == null ? undefined : (new Date(json['dateTime'])), 'uuid': json['uuid'] == null ? undefined : json['uuid'], 'password': json['password'], @@ -146,7 +146,7 @@ export function FormatTestToJSONTyped(value?: FormatTest | null, ignoreDiscrimin 'string': value['string'], 'byte': value['_byte'], 'binary': value['binary'], - 'date': value['date'].toISOString().substring(0,10), + 'date': value['date'] == null ? value['date'] : value['date'].toISOString().substring(0,10), 'dateTime': value['dateTime'] == null ? value['dateTime'] : value['dateTime'].toISOString(), 'uuid': value['uuid'], 'password': value['password'], diff --git a/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/FormatTest.ts b/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/FormatTest.ts index 047bde78c359..ad70db64240f 100644 --- a/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/FormatTest.ts +++ b/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/FormatTest.ts @@ -116,7 +116,7 @@ export function FormatTestFromJSONTyped(json: any, ignoreDiscriminator: boolean) 'string': json['string'] == null ? undefined : json['string'], '_byte': json['byte'], 'binary': json['binary'] == null ? undefined : json['binary'], - 'date': (new Date(json['date'])), + 'date': (json['date'] == null ? json['date'] : new Date(json['date'])), 'dateTime': json['dateTime'] == null ? undefined : (new Date(json['dateTime'])), 'uuid': json['uuid'] == null ? undefined : json['uuid'], 'password': json['password'], @@ -146,7 +146,7 @@ export function FormatTestToJSONTyped(value?: FormatTest | null, ignoreDiscrimin 'string': value['string'], 'byte': value['_byte'], 'binary': value['binary'], - 'date': value['date'].toISOString().substring(0,10), + 'date': value['date'] == null ? value['date'] : value['date'].toISOString().substring(0,10), 'dateTime': value['dateTime'] == null ? value['dateTime'] : value['dateTime'].toISOString(), 'uuid': value['uuid'], 'password': value['password'],