From abff594ea3fefe703ede5dbaef67658ca923ab2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A1chym=20Metli=C4=8Dka?= Date: Fri, 5 Jun 2026 15:08:24 +0200 Subject: [PATCH 01/23] feat(kotlin-spring, java-spring): add x-jackson-default-impl / typeInfoDefaultImpls support Emit `@JsonTypeInfo(defaultImpl = ...)` for both deduction-based and discriminator-based oneOf interfaces. Two configuration sources (config option takes precedence): - Schema extension: `x-jackson-default-impl: ClassName` - Config option: `typeInfoDefaultImpls: {SchemaName: ClassName}` The resolved class name passes through `toModelName()` so schemaMapping, importMapping, and DTO prefix/suffix are all honoured. A LOGGER.warn is emitted when the config option shadows a schema-level annotation. --- .../languages/KotlinSpringServerCodegen.java | 38 ++++++++ .../codegen/languages/SpringCodegen.java | 38 ++++++++ .../JavaSpring/oneof_interface.mustache | 2 +- .../JavaSpring/typeInfoAnnotation.mustache | 4 +- .../kotlin-spring/oneof_interface.mustache | 2 +- .../kotlin-spring/typeInfoAnnotation.mustache | 2 +- .../java/spring/SpringCodegenTest.java | 77 ++++++++++++++++ .../spring/KotlinSpringServerCodegenTest.java | 90 +++++++++++++++++++ .../3_0/spring/jackson-default-impl.yaml | 66 ++++++++++++++ 9 files changed, 314 insertions(+), 5 deletions(-) create mode 100644 modules/openapi-generator/src/test/resources/3_0/spring/jackson-default-impl.yaml 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 dba07bae883e..dc14033e4ca7 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 @@ -110,6 +110,7 @@ public class KotlinSpringServerCodegen extends AbstractKotlinCodegen public static final String USE_SEALED_RESPONSE_INTERFACES = "useSealedResponseInterfaces"; public static final String COMPANION_OBJECT = "companionObject"; public static final String SUSPEND_FUNCTIONS = "suspendFunctions"; + public static final String TYPE_INFO_DEFAULT_IMPLS = "typeInfoDefaultImpls"; @Getter public enum DeclarativeInterfaceReactiveMode { @@ -186,6 +187,8 @@ public String getDescription() { @Getter @Setter protected boolean useDeductionForOneOfInterfaces = false; + private Map typeInfoDefaultImpls = new HashMap<>(); + @Getter @Setter protected boolean useSpringBoot3 = false; @Getter @Setter @@ -311,6 +314,7 @@ public KotlinSpringServerCodegen() { addSwitch(COMPANION_OBJECT, "Whether to generate companion objects in data classes, enabling companion extensions.", companionObject); addSwitch(SUSPEND_FUNCTIONS, "Whether to generate suspend functions for API operations. Useful for Spring MVC with Kotlin coroutines without requiring the full reactive stack.", suspendFunctions); cliOptions.add(CliOption.newBoolean(CodegenConstants.USE_DEDUCTION_FOR_ONE_OF_INTERFACES, CodegenConstants.USE_DEDUCTION_FOR_ONE_OF_INTERFACES_DESC, useDeductionForOneOfInterfaces)); + addOption(TYPE_INFO_DEFAULT_IMPLS, "Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`", "empty map"); addSwitch(CodegenConstants.USE_ENUM_VALUE_INTERFACE, CodegenConstants.USE_ENUM_VALUE_INTERFACE_DESC, useEnumValueInterface); addSwitch(CodegenConstants.OPENAPI_NULLABLE, "Enable OpenAPI Jackson Nullable library (jackson-databind-nullable) for optional + nullable " @@ -585,6 +589,10 @@ public void processOpts() { convertPropertyToBooleanAndWriteBack(CodegenConstants.USE_DEDUCTION_FOR_ONE_OF_INTERFACES, this::setUseDeductionForOneOfInterfaces); + if (additionalProperties.containsKey(TYPE_INFO_DEFAULT_IMPLS)) { + typeInfoDefaultImpls.putAll(getPropertyAsStringMap(TYPE_INFO_DEFAULT_IMPLS)); + } + additionalProperties.put("springHttpStatus", new SpringHttpStatusLambda()); // Set basePackage from invokerPackage @@ -1319,6 +1327,36 @@ public Map postProcessAllModels(Map objs) Map allModelsMap = getAllModels(objs); + // Resolve x-jackson-default-impl and typeInfoDefaultImpls into x-jackson-resolved-default-impl + // on each model. This drives defaultImpl = ... in @JsonTypeInfo for both deduction-based + // and discriminator-based oneOf interfaces. + for (CodegenModel cm : allModelsMap.values()) { + String schemaAnnotation = (String) cm.vendorExtensions.get("x-jackson-default-impl"); + String configValue = typeInfoDefaultImpls.get(cm.schemaName); + String rawValue; + if (configValue != null && !configValue.isBlank()) { + if (schemaAnnotation != null && !schemaAnnotation.isBlank()) { + LOGGER.warn("typeInfoDefaultImpls overrides x-jackson-default-impl on schema '{}': '{}' → '{}'", + cm.schemaName, schemaAnnotation, configValue); + } + rawValue = configValue; + } else if (schemaAnnotation != null && !schemaAnnotation.isBlank()) { + rawValue = schemaAnnotation; + } else { + continue; + } + String resolved = toModelName(rawValue); + if (resolved != null && !resolved.isBlank()) { + cm.vendorExtensions.put("x-jackson-resolved-default-impl", resolved); + // When a discriminator is present, the typeInfoAnnotation partial is rendered + // inside {{#discriminator}}, so JMustache resolves 'vendorExtensions' against + // CodegenDiscriminator (not CodegenModel). Store there too. + if (cm.discriminator != null) { + cm.discriminator.getVendorExtensions().put("x-jackson-resolved-default-impl", resolved); + } + } + } + // For each oneOf interface with a discriminator, mark the discriminator property // as inherited in each subtype and set its default value from the discriminator mapping for (CodegenModel cm : allModelsMap.values()) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java index 2b362929953f..66c4374aed92 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java @@ -123,6 +123,7 @@ public class SpringCodegen extends AbstractJavaCodegen public static final String GENERATE_PAGEABLE_CONSTRAINT_VALIDATION = "generatePageableConstraintValidation"; public static final String SUBSTITUTE_GENERIC_PAGED_MODEL = "substituteGenericPagedModel"; public static final String CLIENT_REGISTRATION_ID = "clientRegistrationId"; + public static final String TYPE_INFO_DEFAULT_IMPLS = "typeInfoDefaultImpls"; @Getter public enum RequestMappingMode { @@ -201,6 +202,7 @@ public enum RequestMappingMode { protected String clientRegistrationId = null; @Setter protected boolean useEnumValueInterface = false; private String valuedEnumClassName = "ValuedEnum"; + private Map typeInfoDefaultImpls = new HashMap<>(); // Map from schema name to detected paged-model info (populated when substituteGenericPagedModel=true) private Map pagedModelRegistry = new HashMap<>(); @@ -340,6 +342,7 @@ public SpringCodegen() { optionalAcceptNullable)); cliOptions.add(CliOption.newBoolean(USE_DEDUCTION_FOR_ONE_OF_INTERFACES, USE_DEDUCTION_FOR_ONE_OF_INTERFACES_DESC, useDeductionForOneOfInterfaces)); + cliOptions.add(new CliOption(TYPE_INFO_DEFAULT_IMPLS, "Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`")); cliOptions.add(CliOption.newString(SPRING_API_VERSION, "Value for 'version' attribute in @RequestMapping (for Spring 7 and above).")); cliOptions.add(CliOption.newString(USE_HTTP_SERVICE_PROXY_FACTORY_INTERFACES_CONFIGURATOR, "Generate HttpInterfacesAbstractConfigurator based on an HttpServiceProxyFactory instance (as opposed to a WebClient instance, when disabled) for generating Spring HTTP interfaces.") @@ -572,6 +575,10 @@ public void processOpts() { convertPropertyToBooleanAndWriteBack(OPTIONAL_ACCEPT_NULLABLE, this::setOptionalAcceptNullable); convertPropertyToBooleanAndWriteBack(USE_SPRING_BUILT_IN_VALIDATION, this::setUseSpringBuiltInValidation); convertPropertyToBooleanAndWriteBack(CodegenConstants.USE_DEDUCTION_FOR_ONE_OF_INTERFACES, this::setUseDeductionForOneOfInterfaces); + + if (additionalProperties.containsKey(TYPE_INFO_DEFAULT_IMPLS)) { + typeInfoDefaultImpls.putAll(getPropertyAsStringMap(TYPE_INFO_DEFAULT_IMPLS)); + } convertPropertyToStringAndWriteBack(CLIENT_REGISTRATION_ID, this::setClientRegistrationId); additionalProperties.put("springHttpStatus", new SpringHttpStatusLambda()); @@ -1421,6 +1428,37 @@ public Map postProcessAllModels(Map objs) objs = super.postProcessAllModels(objs); Map allModels = getAllModels(objs); + + // Resolve x-jackson-default-impl and typeInfoDefaultImpls into x-jackson-resolved-default-impl + // on each model. This drives defaultImpl = ... in @JsonTypeInfo for both deduction-based + // and discriminator-based oneOf interfaces. + for (CodegenModel cm : allModels.values()) { + String schemaAnnotation = (String) cm.vendorExtensions.get("x-jackson-default-impl"); + String configValue = typeInfoDefaultImpls.get(cm.schemaName); + String rawValue; + if (configValue != null && !configValue.isBlank()) { + if (schemaAnnotation != null && !schemaAnnotation.isBlank()) { + LOGGER.warn("typeInfoDefaultImpls overrides x-jackson-default-impl on schema '{}': '{}' → '{}'", + cm.schemaName, schemaAnnotation, configValue); + } + rawValue = configValue; + } else if (schemaAnnotation != null && !schemaAnnotation.isBlank()) { + rawValue = schemaAnnotation; + } else { + continue; + } + String resolved = toModelName(rawValue); + if (resolved != null && !resolved.isBlank()) { + cm.vendorExtensions.put("x-jackson-resolved-default-impl", resolved); + // When a discriminator is present, the typeInfoAnnotation partial is rendered + // inside {{#discriminator}}, so JMustache resolves 'vendorExtensions' against + // CodegenDiscriminator (not CodegenModel). Store there too. + if (cm.discriminator != null) { + cm.discriminator.getVendorExtensions().put("x-jackson-resolved-default-impl", resolved); + } + } + } + // conditionally force the generation of no args constructor for (CodegenModel cm : allModels.values()) { boolean hasLombokNoArgsConstructor = lombokAnnotations != null && lombokAnnotations.containsKey("NoArgsConstructor"); diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/oneof_interface.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/oneof_interface.mustache index 00fca619c748..9c30f132e370 100644 --- a/modules/openapi-generator/src/main/resources/JavaSpring/oneof_interface.mustache +++ b/modules/openapi-generator/src/main/resources/JavaSpring/oneof_interface.mustache @@ -7,7 +7,7 @@ {{>typeInfoAnnotation}} {{/discriminator}}{{^discriminator}}{{#useDeductionForOneOfInterfaces}} -@JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION) +@JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION{{#vendorExtensions.x-jackson-resolved-default-impl}}, defaultImpl = {{vendorExtensions.x-jackson-resolved-default-impl}}.class{{/vendorExtensions.x-jackson-resolved-default-impl}}) @JsonSubTypes({ {{#interfaceModels}} @JsonSubTypes.Type(value = {{classname}}.class){{^-last}}, {{/-last}} diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/typeInfoAnnotation.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/typeInfoAnnotation.mustache index 6d5fc85aa2d0..a8521898b1b4 100644 --- a/modules/openapi-generator/src/main/resources/JavaSpring/typeInfoAnnotation.mustache +++ b/modules/openapi-generator/src/main/resources/JavaSpring/typeInfoAnnotation.mustache @@ -6,10 +6,10 @@ value = "{{{discriminator.propertyBaseName}}}", // ignore manually set {{{discriminator.propertyBaseName}}}, it will be automatically generated by Jackson during serialization allowSetters = true // allows the {{{discriminator.propertyBaseName}}} to be set during deserialization ) -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminator.propertyBaseName}}}", visible = true) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminator.propertyBaseName}}}", visible = true{{#vendorExtensions.x-jackson-resolved-default-impl}}, defaultImpl = {{vendorExtensions.x-jackson-resolved-default-impl}}.class{{/vendorExtensions.x-jackson-resolved-default-impl}}) {{/disableDiscriminatorJsonIgnoreProperties}} {{#disableDiscriminatorJsonIgnoreProperties}} - @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "{{{discriminator.propertyBaseName}}}", visible = true) + @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "{{{discriminator.propertyBaseName}}}", visible = true{{#vendorExtensions.x-jackson-resolved-default-impl}}, defaultImpl = {{vendorExtensions.x-jackson-resolved-default-impl}}.class{{/vendorExtensions.x-jackson-resolved-default-impl}}) {{/disableDiscriminatorJsonIgnoreProperties}} @JsonSubTypes({ {{/-first}} diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/oneof_interface.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/oneof_interface.mustache index 06e5c7943fe7..203a9e8d1f0d 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-spring/oneof_interface.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-spring/oneof_interface.mustache @@ -5,7 +5,7 @@ {{>typeInfoAnnotation}} {{/discriminator}} {{^discriminator}}{{#useDeductionForOneOfInterfaces}}{{#jackson}} -@JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION) +@JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION{{#vendorExtensions.x-jackson-resolved-default-impl}}, defaultImpl = {{vendorExtensions.x-jackson-resolved-default-impl}}::class{{/vendorExtensions.x-jackson-resolved-default-impl}}) @JsonSubTypes( {{#interfaceModels}} JsonSubTypes.Type(value = {{classname}}::class){{^-last}},{{/-last}} diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/typeInfoAnnotation.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/typeInfoAnnotation.mustache index b459faf88aa6..9ca94fc28233 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-spring/typeInfoAnnotation.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-spring/typeInfoAnnotation.mustache @@ -3,7 +3,7 @@ value = ["{{{discriminator.propertyBaseName}}}"], // ignore manually set {{{discriminator.propertyBaseName}}}, it will be automatically generated by Jackson during serialization allowSetters = true // allows the {{{discriminator.propertyBaseName}}} to be set during deserialization ) -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminator.propertyBaseName}}}", visible = true) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminator.propertyBaseName}}}", visible = true{{#vendorExtensions.x-jackson-resolved-default-impl}}, defaultImpl = {{vendorExtensions.x-jackson-resolved-default-impl}}::class{{/vendorExtensions.x-jackson-resolved-default-impl}}) @JsonSubTypes( {{#discriminator.mappedModels}} JsonSubTypes.Type(value = {{modelName}}::class, name = "{{^vendorExtensions.x-discriminator-value}}{{mappingName}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{vendorExtensions.x-discriminator-value}}}{{/vendorExtensions.x-discriminator-value}}"){{^-last}},{{/-last}} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java index 14b541cf9f0c..9be244a2bcb8 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java @@ -8132,4 +8132,81 @@ void schemaMappingWithNullableAllOfRendersNullableJavaProperty() throws IOExcept JavaFileAssert.assertThat(files.get("MyObject.java")) .assertProperty("optionalRef").withType("JsonNullable"); } + + // ========== x-jackson-default-impl / typeInfoDefaultImpls tests ========== + + @Test(description = "x-jackson-default-impl on deduction schema emits defaultImpl in @JsonTypeInfo") + public void xJacksonDefaultImplOnDeductionSchemaEmitsDefaultImpl() throws IOException { + Map additionalProperties = new HashMap<>(); + additionalProperties.put(USE_DEDUCTION_FOR_ONE_OF_INTERFACES, "true"); + + Map files = generateFromContract( + "src/test/resources/3_0/spring/jackson-default-impl.yaml", SPRING_BOOT, additionalProperties); + + JavaFileAssert.assertThat(files.get("Animal.java")) + .fileContains("@JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION, defaultImpl = Dog.class)"); + } + + @Test(description = "typeInfoDefaultImpls config option on deduction schema emits defaultImpl in @JsonTypeInfo") + public void typeInfoDefaultImplsConfigOptionOnDeductionSchemaEmitsDefaultImpl() throws IOException { + Map additionalProperties = new HashMap<>(); + additionalProperties.put(USE_DEDUCTION_FOR_ONE_OF_INTERFACES, "true"); + additionalProperties.put(TYPE_INFO_DEFAULT_IMPLS, Map.of("Animal", "Dog")); + + Map files = generateFromContract( + "src/test/resources/3_0/oneof_polymorphism_and_inheritance.yaml", SPRING_BOOT, additionalProperties); + + JavaFileAssert.assertThat(files.get("Animal.java")) + .fileContains("@JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION, defaultImpl = Dog.class)"); + } + + @Test(description = "typeInfoDefaultImpls overrides x-jackson-default-impl on deduction schema") + public void typeInfoDefaultImplsOverridesSchemaAnnotationOnDeductionSchema() throws IOException { + Map additionalProperties = new HashMap<>(); + additionalProperties.put(USE_DEDUCTION_FOR_ONE_OF_INTERFACES, "true"); + // Override x-jackson-default-impl: Dog (set in YAML) with Cat via config option + additionalProperties.put(TYPE_INFO_DEFAULT_IMPLS, Map.of("Animal", "Cat")); + + Map files = generateFromContract( + "src/test/resources/3_0/spring/jackson-default-impl.yaml", SPRING_BOOT, additionalProperties); + + JavaFileAssert.assertThat(files.get("Animal.java")) + .fileContains("defaultImpl = Cat.class") + .fileDoesNotContain("defaultImpl = Dog.class"); + } + + @Test(description = "x-jackson-default-impl on discriminator schema emits defaultImpl in @JsonTypeInfo") + public void xJacksonDefaultImplOnDiscriminatorSchemaEmitsDefaultImpl() throws IOException { + Map files = generateFromContract( + "src/test/resources/3_0/spring/jackson-default-impl.yaml", SPRING_BOOT, new HashMap<>()); + + JavaFileAssert.assertThat(files.get("Fruit.java")) + .fileContains("defaultImpl = Apple.class"); + } + + @Test(description = "no defaultImpl when neither x-jackson-default-impl nor typeInfoDefaultImpls is set") + public void noDefaultImplWhenNeitherSourceIsSet() throws IOException { + Map additionalProperties = new HashMap<>(); + additionalProperties.put(USE_DEDUCTION_FOR_ONE_OF_INTERFACES, "true"); + + Map files = generateFromContract( + "src/test/resources/3_0/oneof_polymorphism_and_inheritance.yaml", SPRING_BOOT, additionalProperties); + + JavaFileAssert.assertThat(files.get("Animal.java")) + .fileDoesNotContain("defaultImpl"); + } + + @Test(description = "typeInfoDefaultImpls applies model name suffix to resolved default impl") + public void typeInfoDefaultImplsAppliesModelNameSuffix() throws IOException { + Map additionalProperties = new HashMap<>(); + additionalProperties.put(USE_DEDUCTION_FOR_ONE_OF_INTERFACES, "true"); + additionalProperties.put(TYPE_INFO_DEFAULT_IMPLS, Map.of("Animal", "Dog")); + additionalProperties.put(MODEL_NAME_SUFFIX, "Dto"); + + Map files = generateFromContract( + "src/test/resources/3_0/oneof_polymorphism_and_inheritance.yaml", SPRING_BOOT, additionalProperties); + + JavaFileAssert.assertThat(files.get("AnimalDto.java")) + .fileContains("defaultImpl = DogDto.class"); + } } \ 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 4ac2f195bb74..49773c75dbb0 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 @@ -6678,4 +6678,94 @@ public void schemaMappingWithNullableAllOfRendersNullableKotlinProperty() throws String content = Files.readString(myObjectFile.toPath()); assertThat(content).contains("com.example.ExternalModel?"); } + + // ========== x-jackson-default-impl / typeInfoDefaultImpls tests ========== + + @Test(description = "x-jackson-default-impl on deduction schema emits defaultImpl in @JsonTypeInfo") + public void xJacksonDefaultImplOnDeductionSchemaEmitsDefaultImpl() throws IOException { + Map additionalProperties = new HashMap<>(); + additionalProperties.put(CodegenConstants.USE_DEDUCTION_FOR_ONE_OF_INTERFACES, "true"); + + Map files = generateFromContract( + "src/test/resources/3_0/spring/jackson-default-impl.yaml", additionalProperties); + + File animalFile = files.get("Animal.kt"); + assertThat(animalFile).isNotNull(); + assertFileContains(animalFile.toPath(), + "@JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION, defaultImpl = Dog::class)"); + } + + @Test(description = "typeInfoDefaultImpls config option on deduction schema emits defaultImpl in @JsonTypeInfo") + public void typeInfoDefaultImplsConfigOptionOnDeductionSchemaEmitsDefaultImpl() throws IOException { + Map additionalProperties = new HashMap<>(); + additionalProperties.put(CodegenConstants.USE_DEDUCTION_FOR_ONE_OF_INTERFACES, "true"); + additionalProperties.put(TYPE_INFO_DEFAULT_IMPLS, Map.of("Animal", "Dog")); + + // Use a YAML without x-jackson-default-impl to verify config option alone works + Map files = generateFromContract( + "src/test/resources/3_0/oneof_polymorphism_and_inheritance.yaml", additionalProperties); + + File animalFile = files.get("Animal.kt"); + assertThat(animalFile).isNotNull(); + assertFileContains(animalFile.toPath(), + "@JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION, defaultImpl = Dog::class)"); + } + + @Test(description = "typeInfoDefaultImpls overrides x-jackson-default-impl on deduction schema") + public void typeInfoDefaultImplsOverridesSchemaAnnotationOnDeductionSchema() throws IOException { + Map additionalProperties = new HashMap<>(); + additionalProperties.put(CodegenConstants.USE_DEDUCTION_FOR_ONE_OF_INTERFACES, "true"); + // Override x-jackson-default-impl: Dog (set in YAML) with Cat via config option + additionalProperties.put(TYPE_INFO_DEFAULT_IMPLS, Map.of("Animal", "Cat")); + + Map files = generateFromContract( + "src/test/resources/3_0/spring/jackson-default-impl.yaml", additionalProperties); + + File animalFile = files.get("Animal.kt"); + assertThat(animalFile).isNotNull(); + String content = Files.readString(animalFile.toPath()); + assertThat(content).contains("defaultImpl = Cat::class"); + assertThat(content).doesNotContain("defaultImpl = Dog::class"); + } + + @Test(description = "x-jackson-default-impl on discriminator schema emits defaultImpl in @JsonTypeInfo") + public void xJacksonDefaultImplOnDiscriminatorSchemaEmitsDefaultImpl() throws IOException { + Map files = generateFromContract( + "src/test/resources/3_0/spring/jackson-default-impl.yaml", new HashMap<>()); + + File fruitFile = files.get("Fruit.kt"); + assertThat(fruitFile).isNotNull(); + assertFileContains(fruitFile.toPath(), + "@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, " + + "property = \"fruitType\", visible = true, defaultImpl = Apple::class)"); + } + + @Test(description = "no defaultImpl when neither x-jackson-default-impl nor typeInfoDefaultImpls is set") + public void noDefaultImplWhenNeitherSourceIsSet() throws IOException { + Map additionalProperties = new HashMap<>(); + additionalProperties.put(CodegenConstants.USE_DEDUCTION_FOR_ONE_OF_INTERFACES, "true"); + + // Use the YAML without x-jackson-default-impl; don't pass typeInfoDefaultImpls + Map files = generateFromContract( + "src/test/resources/3_0/oneof_polymorphism_and_inheritance.yaml", additionalProperties); + + File animalFile = files.get("Animal.kt"); + assertThat(animalFile).isNotNull(); + assertFileNotContains(animalFile.toPath(), "defaultImpl"); + } + + @Test(description = "typeInfoDefaultImpls applies model name suffix to resolved default impl") + public void typeInfoDefaultImplsAppliesModelNameSuffix() throws IOException { + Map additionalProperties = new HashMap<>(); + additionalProperties.put(CodegenConstants.USE_DEDUCTION_FOR_ONE_OF_INTERFACES, "true"); + additionalProperties.put(TYPE_INFO_DEFAULT_IMPLS, Map.of("Animal", "Dog")); + additionalProperties.put(CodegenConstants.MODEL_NAME_SUFFIX, "Dto"); + + Map files = generateFromContract( + "src/test/resources/3_0/oneof_polymorphism_and_inheritance.yaml", additionalProperties); + + File animalFile = files.get("AnimalDto.kt"); + assertThat(animalFile).isNotNull(); + assertFileContains(animalFile.toPath(), "defaultImpl = DogDto::class"); + } } diff --git a/modules/openapi-generator/src/test/resources/3_0/spring/jackson-default-impl.yaml b/modules/openapi-generator/src/test/resources/3_0/spring/jackson-default-impl.yaml new file mode 100644 index 000000000000..4ec082a6323e --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/spring/jackson-default-impl.yaml @@ -0,0 +1,66 @@ +openapi: 3.0.1 +info: + title: Jackson defaultImpl test + version: 0.0.1 +paths: + /animals: + post: + operationId: createAnimal + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Animal' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Fruit' +components: + schemas: + # Deduction-based oneOf: no discriminator, x-jackson-default-impl set + Animal: + x-jackson-default-impl: Dog + oneOf: + - $ref: '#/components/schemas/Dog' + - $ref: '#/components/schemas/Cat' + Dog: + type: object + properties: + bark: + type: boolean + Cat: + type: object + properties: + declawed: + type: boolean + # Discriminator-based oneOf: has discriminator, x-jackson-default-impl set + Fruit: + x-jackson-default-impl: Apple + type: object + properties: + fruitType: + type: string + required: + - fruitType + oneOf: + - $ref: '#/components/schemas/Apple' + - $ref: '#/components/schemas/Banana' + discriminator: + propertyName: fruitType + mapping: + APPLE: '#/components/schemas/Apple' + BANANA: '#/components/schemas/Banana' + Apple: + type: object + properties: + seeds: + type: integer + Banana: + type: object + properties: + length: + type: integer From d88082a6254161a23e7cc28df6ff5f28e6eeacb7 Mon Sep 17 00:00:00 2001 From: Jachym Metlicka Date: Wed, 17 Jun 2026 23:38:02 +0200 Subject: [PATCH 02/23] implement CR feedback suggestion --- .../java/org/openapitools/codegen/languages/SpringCodegen.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java index 0ea5a8050655..07af25b2b300 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java @@ -1449,7 +1449,8 @@ public Map postProcessAllModels(Map objs) // on each model. This drives defaultImpl = ... in @JsonTypeInfo for both deduction-based // and discriminator-based oneOf interfaces. for (CodegenModel cm : allModels.values()) { - String schemaAnnotation = (String) cm.vendorExtensions.get("x-jackson-default-impl"); + Object rawAnnotationExt = cm.vendorExtensions.get("x-jackson-default-impl"); + String schemaAnnotation = rawAnnotationExt != null ? rawAnnotationExt.toString() : null; String configValue = typeInfoDefaultImpls.get(cm.schemaName); String rawValue; if (configValue != null && !configValue.isBlank()) { From 58a5a6aec81cb8715554f0e276431160a8edcc63 Mon Sep 17 00:00:00 2001 From: Jachym Metlicka Date: Thu, 18 Jun 2026 00:00:04 +0200 Subject: [PATCH 03/23] feat: move TYPE_INFO_DEFAULT_IMPLS to CodegenConstants and extend to Java generators - Add TYPE_INFO_DEFAULT_IMPLS/DESC constants to CodegenConstants (addresses reviewer request to avoid duplication across SpringCodegen and KotlinSpringServerCodegen) - Move typeInfoDefaultImpls field, option registration, processOpts parsing, and x-jackson-resolved-default-impl resolution loop from SpringCodegen into AbstractJavaCodegen so all Java generators inherit the feature - Remove duplicated code from SpringCodegen; update KotlinSpringServerCodegen to reference CodegenConstants.TYPE_INFO_DEFAULT_IMPLS and apply the same safe instanceof cast fix already present in SpringCodegen - Update Java/deductionAnnotation.mustache: emit defaultImpl = X.class on @JsonTypeInfo(use = DEDUCTION) when x-jackson-resolved-default-impl is set - Update Java/typeInfoAnnotation.mustache: emit defaultImpl = X.class on both @JsonTypeInfo(use = NAME) variants (discriminator present/absent) via discriminator.vendorExtensions.x-jackson-resolved-default-impl - Add JavaClientCodegenTest tests covering deduction, discriminator, typeInfoDefaultImpls config option, and absence cases for Java client Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../codegen/CodegenConstants.java | 3 + .../languages/AbstractJavaCodegen.java | 41 +++++++++++ .../languages/KotlinSpringServerCodegen.java | 10 +-- .../codegen/languages/SpringCodegen.java | 37 ---------- .../Java/deductionAnnotation.mustache | 2 +- .../Java/typeInfoAnnotation.mustache | 4 +- .../codegen/java/JavaClientCodegenTest.java | 70 +++++++++++++++++++ .../spring/KotlinSpringServerCodegenTest.java | 8 +-- 8 files changed, 125 insertions(+), 50 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java index 65511f68f671..c8c90f280822 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java @@ -247,6 +247,9 @@ public static enum ENUM_PROPERTY_NAMING_TYPE {camelCase, PascalCase, snake_case, // Codegen constants should define a description and provide proper input validation for the value of serializationLibrary public static final String SERIALIZATION_LIBRARY = "serializationLibrary"; + public static final String TYPE_INFO_DEFAULT_IMPLS = "typeInfoDefaultImpls"; + public static final String TYPE_INFO_DEFAULT_IMPLS_DESC = "Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`"; + public static final String API_NAME_PREFIX = "apiNamePrefix"; public static final String API_NAME_PREFIX_DESC = "Prefix that will be appended to all API names ('tags'). Default: empty string. e.g. Pet => Pet."; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java index 14274d55708a..3ba573b82a01 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java @@ -76,6 +76,7 @@ import java.util.stream.StreamSupport; import static org.openapitools.codegen.CodegenConstants.USE_DEDUCTION_FOR_ONE_OF_INTERFACES; +import static org.openapitools.codegen.CodegenConstants.TYPE_INFO_DEFAULT_IMPLS; import static org.openapitools.codegen.CodegenConstants.X_IMPLEMENTS; import static org.openapitools.codegen.utils.CamelizeOption.*; import static org.openapitools.codegen.utils.ModelUtils.getSchemaItems; @@ -229,6 +230,8 @@ protected enum ENUM_PROPERTY_NAMING_TYPE {MACRO_CASE, legacy, original} @Getter @Setter protected boolean useDeductionForOneOfInterfaces = false; + private Map typeInfoDefaultImpls = new HashMap<>(); + private Map schemaKeyToModelNameCache = new HashMap<>(); public AbstractJavaCodegen() { @@ -346,6 +349,7 @@ public AbstractJavaCodegen() { cliOptions.add(CliOption.newBoolean(CodegenConstants.HIDE_GENERATION_TIMESTAMP, CodegenConstants.HIDE_GENERATION_TIMESTAMP_DESC, this.isHideGenerationTimestamp())); cliOptions.add(CliOption.newBoolean(WITH_XML, "whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)")); cliOptions.add(CliOption.newBoolean(USE_ONE_OF_INTERFACES, "whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface")); + cliOptions.add(new CliOption(CodegenConstants.TYPE_INFO_DEFAULT_IMPLS, CodegenConstants.TYPE_INFO_DEFAULT_IMPLS_DESC)); CliOption dateLibrary = new CliOption(DATE_LIBRARY, "Option. Date library to use").defaultValue(this.getDateLibrary()); Map dateOptions = new HashMap<>(); @@ -612,6 +616,9 @@ public void processOpts() { convertPropertyToStringAndWriteBack(CodegenConstants.ENUM_PROPERTY_NAMING, this::setEnumPropertyNaming); convertPropertyToBooleanAndWriteBack(USE_JSPECIFY, this::setUseJspecify); convertPropertyToBooleanAndWriteBack(USE_DEDUCTION_FOR_ONE_OF_INTERFACES, this::setUseDeductionForOneOfInterfaces); + if (additionalProperties.containsKey(TYPE_INFO_DEFAULT_IMPLS)) { + typeInfoDefaultImpls.putAll(getPropertyAsStringMap(TYPE_INFO_DEFAULT_IMPLS)); + } if (!StringUtils.isEmpty(parentGroupId) && !StringUtils.isEmpty(parentArtifactId) && !StringUtils.isEmpty(parentVersion)) { additionalProperties.put("parentOverridden", true); @@ -749,6 +756,40 @@ public Map postProcessAllModels(Map objs) } } + // Resolve x-jackson-default-impl and typeInfoDefaultImpls into x-jackson-resolved-default-impl + // on each model. This drives defaultImpl = ... in @JsonTypeInfo for both deduction-based + // and discriminator-based oneOf interfaces. + if (!typeInfoDefaultImpls.isEmpty() || allModels.values().stream() + .anyMatch(cm -> cm.vendorExtensions.containsKey("x-jackson-default-impl"))) { + for (CodegenModel cm : allModels.values()) { + Object rawAnnotationExt = cm.vendorExtensions.get("x-jackson-default-impl"); + String schemaAnnotation = rawAnnotationExt instanceof String ? (String) rawAnnotationExt : null; + String configValue = typeInfoDefaultImpls.get(cm.schemaName); + String rawValue; + if (configValue != null && !configValue.isBlank()) { + if (schemaAnnotation != null && !schemaAnnotation.isBlank()) { + LOGGER.warn("typeInfoDefaultImpls overrides x-jackson-default-impl on schema '{}': '{}' → '{}'", + cm.schemaName, schemaAnnotation, configValue); + } + rawValue = configValue; + } else if (schemaAnnotation != null && !schemaAnnotation.isBlank()) { + rawValue = schemaAnnotation; + } else { + continue; + } + String resolved = toModelName(rawValue); + if (resolved != null && !resolved.isBlank()) { + cm.vendorExtensions.put("x-jackson-resolved-default-impl", resolved); + // When a discriminator is present, the typeInfoAnnotation partial is rendered + // inside {{#discriminator}}, so the template engine resolves 'vendorExtensions' + // against CodegenDiscriminator (not CodegenModel). Store there too. + if (cm.discriminator != null) { + cm.discriminator.getVendorExtensions().put("x-jackson-resolved-default-impl", resolved); + } + } + } + } + /* Add parentVars and parentRequiredVars to every Model which has a parent. Add isInherited to every model which has children. 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 2ef7f518f6fb..c020b4e50c2c 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 @@ -110,7 +110,6 @@ public class KotlinSpringServerCodegen extends AbstractKotlinCodegen public static final String USE_SEALED_RESPONSE_INTERFACES = "useSealedResponseInterfaces"; public static final String COMPANION_OBJECT = "companionObject"; public static final String SUSPEND_FUNCTIONS = "suspendFunctions"; - public static final String TYPE_INFO_DEFAULT_IMPLS = "typeInfoDefaultImpls"; @Getter public enum DeclarativeInterfaceReactiveMode { @@ -314,7 +313,7 @@ public KotlinSpringServerCodegen() { addSwitch(COMPANION_OBJECT, "Whether to generate companion objects in data classes, enabling companion extensions.", companionObject); addSwitch(SUSPEND_FUNCTIONS, "Whether to generate suspend functions for API operations. Useful for Spring MVC with Kotlin coroutines without requiring the full reactive stack.", suspendFunctions); cliOptions.add(CliOption.newBoolean(CodegenConstants.USE_DEDUCTION_FOR_ONE_OF_INTERFACES, CodegenConstants.USE_DEDUCTION_FOR_ONE_OF_INTERFACES_DESC, useDeductionForOneOfInterfaces)); - addOption(TYPE_INFO_DEFAULT_IMPLS, "Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`", "empty map"); + addOption(CodegenConstants.TYPE_INFO_DEFAULT_IMPLS, CodegenConstants.TYPE_INFO_DEFAULT_IMPLS_DESC, "empty map"); addSwitch(CodegenConstants.USE_ENUM_VALUE_INTERFACE, CodegenConstants.USE_ENUM_VALUE_INTERFACE_DESC, useEnumValueInterface); addSwitch(CodegenConstants.OPENAPI_NULLABLE, "Enable OpenAPI Jackson Nullable library (jackson-databind-nullable) for strict null handling. " @@ -595,8 +594,8 @@ public void processOpts() { convertPropertyToBooleanAndWriteBack(CodegenConstants.USE_DEDUCTION_FOR_ONE_OF_INTERFACES, this::setUseDeductionForOneOfInterfaces); - if (additionalProperties.containsKey(TYPE_INFO_DEFAULT_IMPLS)) { - typeInfoDefaultImpls.putAll(getPropertyAsStringMap(TYPE_INFO_DEFAULT_IMPLS)); + if (additionalProperties.containsKey(CodegenConstants.TYPE_INFO_DEFAULT_IMPLS)) { + typeInfoDefaultImpls.putAll(getPropertyAsStringMap(CodegenConstants.TYPE_INFO_DEFAULT_IMPLS)); } additionalProperties.put("springHttpStatus", new SpringHttpStatusLambda()); @@ -1345,7 +1344,8 @@ public Map postProcessAllModels(Map objs) // on each model. This drives defaultImpl = ... in @JsonTypeInfo for both deduction-based // and discriminator-based oneOf interfaces. for (CodegenModel cm : allModelsMap.values()) { - String schemaAnnotation = (String) cm.vendorExtensions.get("x-jackson-default-impl"); + Object rawAnnotationExt = cm.vendorExtensions.get("x-jackson-default-impl"); + String schemaAnnotation = rawAnnotationExt instanceof String ? (String) rawAnnotationExt : null; String configValue = typeInfoDefaultImpls.get(cm.schemaName); String rawValue; if (configValue != null && !configValue.isBlank()) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java index 07af25b2b300..9c3c303fb5ec 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java @@ -123,7 +123,6 @@ public class SpringCodegen extends AbstractJavaCodegen public static final String GENERATE_PAGEABLE_CONSTRAINT_VALIDATION = "generatePageableConstraintValidation"; public static final String SUBSTITUTE_GENERIC_PAGED_MODEL = "substituteGenericPagedModel"; public static final String CLIENT_REGISTRATION_ID = "clientRegistrationId"; - public static final String TYPE_INFO_DEFAULT_IMPLS = "typeInfoDefaultImpls"; @Getter public enum RequestMappingMode { @@ -202,7 +201,6 @@ public enum RequestMappingMode { protected String clientRegistrationId = null; @Setter protected boolean useEnumValueInterface = false; private String valuedEnumClassName = "ValuedEnum"; - private Map typeInfoDefaultImpls = new HashMap<>(); // Map from schema name to detected paged-model info (populated when substituteGenericPagedModel=true) private Map pagedModelRegistry = new HashMap<>(); @@ -342,7 +340,6 @@ public SpringCodegen() { optionalAcceptNullable)); cliOptions.add(CliOption.newBoolean(USE_DEDUCTION_FOR_ONE_OF_INTERFACES, USE_DEDUCTION_FOR_ONE_OF_INTERFACES_DESC, useDeductionForOneOfInterfaces)); - cliOptions.add(new CliOption(TYPE_INFO_DEFAULT_IMPLS, "Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`")); cliOptions.add(CliOption.newString(SPRING_API_VERSION, "Value for 'version' attribute in @RequestMapping (for Spring 7 and above).")); cliOptions.add(CliOption.newString(USE_HTTP_SERVICE_PROXY_FACTORY_INTERFACES_CONFIGURATOR, "Generate HttpInterfacesAbstractConfigurator based on an HttpServiceProxyFactory instance (as opposed to a WebClient instance, when disabled) for generating Spring HTTP interfaces.") @@ -576,9 +573,6 @@ public void processOpts() { convertPropertyToBooleanAndWriteBack(USE_SPRING_BUILT_IN_VALIDATION, this::setUseSpringBuiltInValidation); convertPropertyToBooleanAndWriteBack(CodegenConstants.USE_DEDUCTION_FOR_ONE_OF_INTERFACES, this::setUseDeductionForOneOfInterfaces); - if (additionalProperties.containsKey(TYPE_INFO_DEFAULT_IMPLS)) { - typeInfoDefaultImpls.putAll(getPropertyAsStringMap(TYPE_INFO_DEFAULT_IMPLS)); - } convertPropertyToStringAndWriteBack(CLIENT_REGISTRATION_ID, this::setClientRegistrationId); additionalProperties.put("springHttpStatus", new SpringHttpStatusLambda()); @@ -1445,37 +1439,6 @@ public Map postProcessAllModels(Map objs) Map allModels = getAllModels(objs); - // Resolve x-jackson-default-impl and typeInfoDefaultImpls into x-jackson-resolved-default-impl - // on each model. This drives defaultImpl = ... in @JsonTypeInfo for both deduction-based - // and discriminator-based oneOf interfaces. - for (CodegenModel cm : allModels.values()) { - Object rawAnnotationExt = cm.vendorExtensions.get("x-jackson-default-impl"); - String schemaAnnotation = rawAnnotationExt != null ? rawAnnotationExt.toString() : null; - String configValue = typeInfoDefaultImpls.get(cm.schemaName); - String rawValue; - if (configValue != null && !configValue.isBlank()) { - if (schemaAnnotation != null && !schemaAnnotation.isBlank()) { - LOGGER.warn("typeInfoDefaultImpls overrides x-jackson-default-impl on schema '{}': '{}' → '{}'", - cm.schemaName, schemaAnnotation, configValue); - } - rawValue = configValue; - } else if (schemaAnnotation != null && !schemaAnnotation.isBlank()) { - rawValue = schemaAnnotation; - } else { - continue; - } - String resolved = toModelName(rawValue); - if (resolved != null && !resolved.isBlank()) { - cm.vendorExtensions.put("x-jackson-resolved-default-impl", resolved); - // When a discriminator is present, the typeInfoAnnotation partial is rendered - // inside {{#discriminator}}, so JMustache resolves 'vendorExtensions' against - // CodegenDiscriminator (not CodegenModel). Store there too. - if (cm.discriminator != null) { - cm.discriminator.getVendorExtensions().put("x-jackson-resolved-default-impl", resolved); - } - } - } - // conditionally force the generation of no args constructor for (CodegenModel cm : allModels.values()) { boolean hasLombokNoArgsConstructor = lombokAnnotations != null && lombokAnnotations.containsKey("NoArgsConstructor"); diff --git a/modules/openapi-generator/src/main/resources/Java/deductionAnnotation.mustache b/modules/openapi-generator/src/main/resources/Java/deductionAnnotation.mustache index c59bc4cbfd17..fdf2ab5af9de 100644 --- a/modules/openapi-generator/src/main/resources/Java/deductionAnnotation.mustache +++ b/modules/openapi-generator/src/main/resources/Java/deductionAnnotation.mustache @@ -1,7 +1,7 @@ {{^discriminator}} {{#jackson}} {{#useDeductionForOneOfInterfaces}} - @JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION) + @JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION{{#vendorExtensions.x-jackson-resolved-default-impl}}, defaultImpl = {{vendorExtensions.x-jackson-resolved-default-impl}}.class{{/vendorExtensions.x-jackson-resolved-default-impl}}) @JsonSubTypes({ {{#interfaceModels}} @JsonSubTypes.Type(value = {{classname}}.class){{^-last}}, {{/-last}} diff --git a/modules/openapi-generator/src/main/resources/Java/typeInfoAnnotation.mustache b/modules/openapi-generator/src/main/resources/Java/typeInfoAnnotation.mustache index 23c0dbee7d35..0816a3089f5b 100644 --- a/modules/openapi-generator/src/main/resources/Java/typeInfoAnnotation.mustache +++ b/modules/openapi-generator/src/main/resources/Java/typeInfoAnnotation.mustache @@ -5,10 +5,10 @@ value = "{{{discriminator.propertyBaseName}}}", // ignore manually set {{{discriminator.propertyBaseName}}}, it will be automatically generated by Jackson during serialization allowSetters = true // allows the {{{discriminator.propertyBaseName}}} to be set during deserialization ) -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminator.propertyBaseName}}}", visible = true) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminator.propertyBaseName}}}", visible = true{{#discriminator.vendorExtensions.x-jackson-resolved-default-impl}}, defaultImpl = {{discriminator.vendorExtensions.x-jackson-resolved-default-impl}}.class{{/discriminator.vendorExtensions.x-jackson-resolved-default-impl}}) {{/disableDiscriminatorJsonIgnoreProperties}} {{#disableDiscriminatorJsonIgnoreProperties}} -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "{{{discriminator.propertyBaseName}}}", visible = true) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "{{{discriminator.propertyBaseName}}}", visible = true{{#discriminator.vendorExtensions.x-jackson-resolved-default-impl}}, defaultImpl = {{discriminator.vendorExtensions.x-jackson-resolved-default-impl}}.class{{/discriminator.vendorExtensions.x-jackson-resolved-default-impl}}) {{/disableDiscriminatorJsonIgnoreProperties}} {{#discriminator.mappedModels}} {{#-first}} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java index dc5e1378ee6e..c1657e9bb3ca 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java @@ -71,6 +71,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import static org.openapitools.codegen.CodegenConstants.*; import static org.openapitools.codegen.TestUtils.*; +import static org.openapitools.codegen.languages.AbstractJavaCodegen.USE_ONE_OF_INTERFACES; import static org.openapitools.codegen.languages.JavaClientCodegen.*; import static org.testng.Assert.*; @@ -4558,4 +4559,73 @@ public void testSwagger2TagImportRestAssured() throws IOException { .contains("@Tag("); } + // ========== x-jackson-default-impl / typeInfoDefaultImpls tests ========== + + @Test(description = "x-jackson-default-impl on deduction schema emits defaultImpl in @JsonTypeInfo (Java client)") + public void xJacksonDefaultImplOnDeductionSchemaEmitsDefaultImpl() throws IOException { + Map additionalProperties = new HashMap<>(); + additionalProperties.put(USE_DEDUCTION_FOR_ONE_OF_INTERFACES, "true"); + additionalProperties.put(USE_ONE_OF_INTERFACES, "true"); + + final Map files = generateFromContract( + "src/test/resources/3_0/spring/jackson-default-impl.yaml", + JavaClientCodegen.RESTTEMPLATE, + additionalProperties); + + File animalFile = files.get("Animal.java"); + assertThat(animalFile).isNotNull(); + assertFileContains(animalFile.toPath(), + "@JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION, defaultImpl = Dog.class)"); + } + + @Test(description = "x-jackson-default-impl on discriminator schema emits defaultImpl in @JsonTypeInfo (Java client)") + public void xJacksonDefaultImplOnDiscriminatorSchemaEmitsDefaultImpl() throws IOException { + Map additionalProperties = new HashMap<>(); + additionalProperties.put(USE_ONE_OF_INTERFACES, "true"); + + final Map files = generateFromContract( + "src/test/resources/3_0/spring/jackson-default-impl.yaml", + JavaClientCodegen.RESTTEMPLATE, + additionalProperties); + + File fruitFile = files.get("Fruit.java"); + assertThat(fruitFile).isNotNull(); + assertFileContains(fruitFile.toPath(), + "@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = \"fruitType\", visible = true, defaultImpl = Apple.class)"); + } + + @Test(description = "typeInfoDefaultImpls config option emits defaultImpl in @JsonTypeInfo (Java client)") + public void typeInfoDefaultImplsConfigOptionEmitsDefaultImpl() throws IOException { + Map additionalProperties = new HashMap<>(); + additionalProperties.put(USE_DEDUCTION_FOR_ONE_OF_INTERFACES, "true"); + additionalProperties.put(USE_ONE_OF_INTERFACES, "true"); + additionalProperties.put(TYPE_INFO_DEFAULT_IMPLS, Map.of("Animal", "Dog")); + + final Map files = generateFromContract( + "src/test/resources/3_0/oneof_polymorphism_and_inheritance.yaml", + JavaClientCodegen.RESTTEMPLATE, + additionalProperties); + + File animalFile = files.get("Animal.java"); + assertThat(animalFile).isNotNull(); + assertFileContains(animalFile.toPath(), + "@JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION, defaultImpl = Dog.class)"); + } + + @Test(description = "no defaultImpl when neither x-jackson-default-impl nor typeInfoDefaultImpls is set (Java client)") + public void noDefaultImplWhenNeitherSourceIsSet() throws IOException { + Map additionalProperties = new HashMap<>(); + additionalProperties.put(USE_DEDUCTION_FOR_ONE_OF_INTERFACES, "true"); + additionalProperties.put(USE_ONE_OF_INTERFACES, "true"); + + final Map files = generateFromContract( + "src/test/resources/3_0/oneof_polymorphism_and_inheritance.yaml", + JavaClientCodegen.RESTTEMPLATE, + additionalProperties); + + File animalFile = files.get("Animal.java"); + assertThat(animalFile).isNotNull(); + assertFileNotContains(animalFile.toPath(), "defaultImpl"); + } + } 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 09ca03cb8c2d..6b8816123c9b 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 @@ -6798,9 +6798,7 @@ public void xJacksonDefaultImplOnDeductionSchemaEmitsDefaultImpl() throws IOExce public void typeInfoDefaultImplsConfigOptionOnDeductionSchemaEmitsDefaultImpl() throws IOException { Map additionalProperties = new HashMap<>(); additionalProperties.put(CodegenConstants.USE_DEDUCTION_FOR_ONE_OF_INTERFACES, "true"); - additionalProperties.put(TYPE_INFO_DEFAULT_IMPLS, Map.of("Animal", "Dog")); - - // Use a YAML without x-jackson-default-impl to verify config option alone works + additionalProperties.put(CodegenConstants.TYPE_INFO_DEFAULT_IMPLS, Map.of("Animal", "Dog")); Map files = generateFromContract( "src/test/resources/3_0/oneof_polymorphism_and_inheritance.yaml", additionalProperties); @@ -6815,7 +6813,7 @@ public void typeInfoDefaultImplsOverridesSchemaAnnotationOnDeductionSchema() thr Map additionalProperties = new HashMap<>(); additionalProperties.put(CodegenConstants.USE_DEDUCTION_FOR_ONE_OF_INTERFACES, "true"); // Override x-jackson-default-impl: Dog (set in YAML) with Cat via config option - additionalProperties.put(TYPE_INFO_DEFAULT_IMPLS, Map.of("Animal", "Cat")); + additionalProperties.put(CodegenConstants.TYPE_INFO_DEFAULT_IMPLS, Map.of("Animal", "Cat")); Map files = generateFromContract( "src/test/resources/3_0/spring/jackson-default-impl.yaml", additionalProperties); @@ -6857,7 +6855,7 @@ public void noDefaultImplWhenNeitherSourceIsSet() throws IOException { public void typeInfoDefaultImplsAppliesModelNameSuffix() throws IOException { Map additionalProperties = new HashMap<>(); additionalProperties.put(CodegenConstants.USE_DEDUCTION_FOR_ONE_OF_INTERFACES, "true"); - additionalProperties.put(TYPE_INFO_DEFAULT_IMPLS, Map.of("Animal", "Dog")); + additionalProperties.put(CodegenConstants.TYPE_INFO_DEFAULT_IMPLS, Map.of("Animal", "Dog")); additionalProperties.put(CodegenConstants.MODEL_NAME_SUFFIX, "Dto"); Map files = generateFromContract( From de72ad2954340330f41760be208033d5981d02dd Mon Sep 17 00:00:00 2001 From: Jachym Metlicka Date: Thu, 18 Jun 2026 00:04:28 +0200 Subject: [PATCH 04/23] update documentation --- docs/generators/java-camel.md | 1 + docs/generators/kotlin-spring.md | 1 + docs/generators/spring.md | 1 + 3 files changed, 3 insertions(+) diff --git a/docs/generators/java-camel.md b/docs/generators/java-camel.md index bfec99c38003..38942329a15c 100644 --- a/docs/generators/java-camel.md +++ b/docs/generators/java-camel.md @@ -108,6 +108,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |substituteGenericPagedModel|Detect schemas that represent paginated responses (an object with a 'content' array property and a 'page' pagination-metadata property) and replace their generated references with PagedModel<T>. By default this uses a generated type in the config package (default 'org.openapitools.configuration'), but `importMappings.PagedModel` can override it to a custom/FQCN-mapped type. The detected page schemas and the pagination metadata schema are suppressed from code generation.| |false| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|server title name or client service name| |OpenAPI Spring| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |unhandledException|Declare operation methods to throw a generic exception and allow unhandled exceptions (useful for Spring `@ControllerAdvice` directives).| |false| |useBeanValidation|Use BeanValidation API annotations| |true| |useDeductionForOneOfInterfaces|Annotate discriminator-free oneOf interfaces with Jackson's @JsonTypeInfo(use = Id.DEDUCTION) and @JsonSubTypes so the concrete subtype is resolved from the JSON field set rather than a type-tag property. Has no effect when a discriminator is present (name-based resolution is used instead). Requires subtypes to have structurally distinct sets of properties.| |false| diff --git a/docs/generators/kotlin-spring.md b/docs/generators/kotlin-spring.md index bf53ef9945e8..c9d4e3a2942f 100644 --- a/docs/generators/kotlin-spring.md +++ b/docs/generators/kotlin-spring.md @@ -61,6 +61,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |substituteGenericPagedModel|Detect schemas that represent paginated responses (an object with a 'content' array property and a 'page' pagination-metadata property) and replace their generated references with PagedModel<T>. By default this uses a generated type in the config package (default 'org.openapitools.configuration'), but `importMappings.PagedModel` can override it to a custom/FQCN-mapped type. The detected page schemas and the pagination metadata schema are suppressed from code generation.| |false| |suspendFunctions|Whether to generate suspend functions for API operations. Useful for Spring MVC with Kotlin coroutines without requiring the full reactive stack.| |false| |title|server title name or client service name| |OpenAPI Kotlin Spring| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |empty map| |useBeanValidation|Use BeanValidation API annotations to validate data types| |true| |useDeductionForOneOfInterfaces|Annotate discriminator-free oneOf interfaces with Jackson's @JsonTypeInfo(use = Id.DEDUCTION) and @JsonSubTypes so the concrete subtype is resolved from the JSON field set rather than a type-tag property. Has no effect when a discriminator is present (name-based resolution is used instead). Requires subtypes to have structurally distinct sets of properties.| |false| |useEnumValueInterface|Generate a ValuedEnum<T> interface in the config package and make all generated enums implement it, providing a common typed way to access the underlying enum value. Use `importMappings.ValuedEnum` to substitute a custom/library-provided interface instead of generating one.| |false| diff --git a/docs/generators/spring.md b/docs/generators/spring.md index 1a444e6ef6a6..9183d9ad026f 100644 --- a/docs/generators/spring.md +++ b/docs/generators/spring.md @@ -101,6 +101,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |substituteGenericPagedModel|Detect schemas that represent paginated responses (an object with a 'content' array property and a 'page' pagination-metadata property) and replace their generated references with PagedModel<T>. By default this uses a generated type in the config package (default 'org.openapitools.configuration'), but `importMappings.PagedModel` can override it to a custom/FQCN-mapped type. The detected page schemas and the pagination metadata schema are suppressed from code generation.| |false| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|server title name or client service name| |OpenAPI Spring| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |unhandledException|Declare operation methods to throw a generic exception and allow unhandled exceptions (useful for Spring `@ControllerAdvice` directives).| |false| |useBeanValidation|Use BeanValidation API annotations| |true| |useDeductionForOneOfInterfaces|Annotate discriminator-free oneOf interfaces with Jackson's @JsonTypeInfo(use = Id.DEDUCTION) and @JsonSubTypes so the concrete subtype is resolved from the JSON field set rather than a type-tag property. Has no effect when a discriminator is present (name-based resolution is used instead). Requires subtypes to have structurally distinct sets of properties.| |false| From 98ddfb97089efae736324d491570fe10a058791f Mon Sep 17 00:00:00 2001 From: Jachym Metlicka Date: Thu, 18 Jun 2026 00:18:20 +0200 Subject: [PATCH 05/23] document the new vendor extension --- .../main/java/org/openapitools/codegen/VendorExtension.java | 3 ++- .../openapitools/codegen/languages/AbstractJavaCodegen.java | 5 +++-- .../codegen/languages/KotlinSpringServerCodegen.java | 3 ++- 3 files changed, 7 insertions(+), 4 deletions(-) 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 9be773475f2c..fd31d2f073f6 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 @@ -30,7 +30,8 @@ public enum VendorExtension { 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), X_MINIMUM_MESSAGE("x-minimum-message", Arrays.asList(ExtensionLevel.FIELD, ExtensionLevel.OPERATION_PARAMETER), "Add this property whenever you need to customize the invalidation error message for the minimum value of a variable", null), X_MAXIMUM_MESSAGE("x-maximum-message", Arrays.asList(ExtensionLevel.FIELD, ExtensionLevel.OPERATION_PARAMETER), "Add this property whenever you need to customize the invalidation error message for the maximum value of a variable", null), - X_ZERO_BASED_ENUM("x-zero-based-enum", ExtensionLevel.MODEL, "When used on an enum, the index will not be generated and the default numbering will be used, zero-based", "false"); + X_ZERO_BASED_ENUM("x-zero-based-enum", ExtensionLevel.MODEL, "When used on an enum, the index will not be generated and the default numbering will be used, zero-based", "false"), + X_JACKSON_DEFAULT_IMPL("x-jackson-default-impl", ExtensionLevel.MODEL, "Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.", null); private final String name; private final List levels; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java index 3ba573b82a01..c0394e9fa6e3 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java @@ -760,9 +760,9 @@ public Map postProcessAllModels(Map objs) // on each model. This drives defaultImpl = ... in @JsonTypeInfo for both deduction-based // and discriminator-based oneOf interfaces. if (!typeInfoDefaultImpls.isEmpty() || allModels.values().stream() - .anyMatch(cm -> cm.vendorExtensions.containsKey("x-jackson-default-impl"))) { + .anyMatch(cm -> cm.vendorExtensions.containsKey(VendorExtension.X_JACKSON_DEFAULT_IMPL.getName()))) { for (CodegenModel cm : allModels.values()) { - Object rawAnnotationExt = cm.vendorExtensions.get("x-jackson-default-impl"); + Object rawAnnotationExt = cm.vendorExtensions.get(VendorExtension.X_JACKSON_DEFAULT_IMPL.getName()); String schemaAnnotation = rawAnnotationExt instanceof String ? (String) rawAnnotationExt : null; String configValue = typeInfoDefaultImpls.get(cm.schemaName); String rawValue; @@ -2715,6 +2715,7 @@ public List getSupportedVendorExtensions() { extensions.add(VendorExtension.X_CONTENT_TYPE); extensions.add(VendorExtension.X_CLASS_EXTRA_ANNOTATION); extensions.add(VendorExtension.X_FIELD_EXTRA_ANNOTATION); + extensions.add(VendorExtension.X_JACKSON_DEFAULT_IMPL); return extensions; } 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 c020b4e50c2c..949be4939ec3 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 @@ -1344,7 +1344,7 @@ public Map postProcessAllModels(Map objs) // on each model. This drives defaultImpl = ... in @JsonTypeInfo for both deduction-based // and discriminator-based oneOf interfaces. for (CodegenModel cm : allModelsMap.values()) { - Object rawAnnotationExt = cm.vendorExtensions.get("x-jackson-default-impl"); + Object rawAnnotationExt = cm.vendorExtensions.get(VendorExtension.X_JACKSON_DEFAULT_IMPL.getName()); String schemaAnnotation = rawAnnotationExt instanceof String ? (String) rawAnnotationExt : null; String configValue = typeInfoDefaultImpls.get(cm.schemaName); String rawValue; @@ -1791,6 +1791,7 @@ public List getSupportedVendorExtensions() { extensions.add(VendorExtension.X_CONTENT_TYPE); extensions.add(VendorExtension.X_DISCRIMINATOR_VALUE); extensions.add(VendorExtension.X_FIELD_EXTRA_ANNOTATION); + extensions.add(VendorExtension.X_JACKSON_DEFAULT_IMPL); extensions.add(VendorExtension.X_OPERATION_EXTRA_ANNOTATION); extensions.add(VendorExtension.X_PATTERN_MESSAGE); extensions.add(VendorExtension.X_SIZE_MESSAGE); From 41dcc1363776d94f03eb334ccb5699a31df1e936 Mon Sep 17 00:00:00 2001 From: Jachym Metlicka Date: Thu, 18 Jun 2026 00:32:08 +0200 Subject: [PATCH 06/23] feat: add warning for unresolved models in vendor extensions --- .../openapitools/codegen/languages/AbstractJavaCodegen.java | 4 ++++ .../codegen/languages/KotlinSpringServerCodegen.java | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java index c0394e9fa6e3..b3e98eb7e0af 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java @@ -779,6 +779,10 @@ public Map postProcessAllModels(Map objs) } String resolved = toModelName(rawValue); if (resolved != null && !resolved.isBlank()) { + if (!allModels.containsKey(resolved)) { + LOGGER.warn("x-jackson-default-impl / typeInfoDefaultImpls on schema '{}' refers to '{}' which is not a known model in this spec. " + + "This is valid for external or catch-all classes, but may indicate a typo.", cm.schemaName, resolved); + } cm.vendorExtensions.put("x-jackson-resolved-default-impl", resolved); // When a discriminator is present, the typeInfoAnnotation partial is rendered // inside {{#discriminator}}, so the template engine resolves 'vendorExtensions' 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 949be4939ec3..48b34d1506ad 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 @@ -1361,6 +1361,10 @@ public Map postProcessAllModels(Map objs) } String resolved = toModelName(rawValue); if (resolved != null && !resolved.isBlank()) { + if (!allModelsMap.containsKey(resolved)) { + LOGGER.warn("x-jackson-default-impl / typeInfoDefaultImpls on schema '{}' refers to '{}' which is not a known model in this spec. " + + "This is valid for external or catch-all classes, but may indicate a typo.", cm.schemaName, resolved); + } cm.vendorExtensions.put("x-jackson-resolved-default-impl", resolved); // When a discriminator is present, the typeInfoAnnotation partial is rendered // inside {{#discriminator}}, so JMustache resolves 'vendorExtensions' against From 57535bfb41fd3c9b5ad5d6423c9cb0e497f184c2 Mon Sep 17 00:00:00 2001 From: Jachym Metlicka Date: Thu, 18 Jun 2026 08:40:50 +0200 Subject: [PATCH 07/23] update documentation --- docs/generators/groovy.md | 2 ++ docs/generators/java-camel.md | 1 + docs/generators/java-dubbo.md | 2 ++ docs/generators/java-helidon-client.md | 2 ++ docs/generators/java-helidon-server.md | 2 ++ docs/generators/java-inflector.md | 2 ++ docs/generators/java-micronaut-client.md | 2 ++ docs/generators/java-micronaut-server.md | 2 ++ docs/generators/java-microprofile.md | 2 ++ docs/generators/java-msf4j.md | 2 ++ docs/generators/java-pkmst.md | 2 ++ docs/generators/java-play-framework.md | 2 ++ docs/generators/java-undertow-server.md | 2 ++ docs/generators/java-vertx-web.md | 2 ++ docs/generators/java-vertx.md | 2 ++ docs/generators/java-wiremock.md | 2 ++ docs/generators/java.md | 2 ++ docs/generators/jaxrs-cxf-cdi.md | 2 ++ docs/generators/jaxrs-cxf-client.md | 2 ++ docs/generators/jaxrs-cxf-extended.md | 2 ++ docs/generators/jaxrs-cxf.md | 2 ++ docs/generators/jaxrs-jersey.md | 2 ++ docs/generators/jaxrs-resteasy-eap.md | 2 ++ docs/generators/jaxrs-resteasy.md | 2 ++ docs/generators/jaxrs-spec.md | 2 ++ docs/generators/kotlin-spring.md | 1 + docs/generators/spring.md | 1 + 27 files changed, 51 insertions(+) diff --git a/docs/generators/groovy.md b/docs/generators/groovy.md index a7125c0350b4..1fb8376e18aa 100644 --- a/docs/generators/groovy.md +++ b/docs/generators/groovy.md @@ -68,6 +68,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| |sourceFolder|source folder for generated code| |src/main/groovy| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| |withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false| @@ -84,6 +85,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java-camel.md b/docs/generators/java-camel.md index 38942329a15c..6babdd682def 100644 --- a/docs/generators/java-camel.md +++ b/docs/generators/java-camel.md @@ -146,6 +146,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null |x-operation-extra-annotation|List of custom annotations to be added to operation|OPERATION|null |x-spring-paginated|Add `org.springframework.data.domain.Pageable` to controller method. Can be used to handle `page`, `size` and `sort` query parameters. If these query parameters are also specified in the operation spec, they will be removed from the controller method as their values can be obtained from the `Pageable` object. Only applies when `library=spring-boot`; ignored for client libraries (spring-cloud, spring-declarative-http-interface).|OPERATION|false |x-version-param|Marker property that tells that this parameter would be used for endpoint versioning. Applicable for headers & query params. true/false|OPERATION_PARAMETER|null diff --git a/docs/generators/java-dubbo.md b/docs/generators/java-dubbo.md index d39495d8a2e0..c3758b0507d4 100644 --- a/docs/generators/java-dubbo.md +++ b/docs/generators/java-dubbo.md @@ -79,6 +79,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sourceFolder|source folder for generated code| |src/main/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|API title name| |null| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useGenericResponse|Use generic response wrapper| |false| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| @@ -97,6 +98,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java-helidon-client.md b/docs/generators/java-helidon-client.md index cab0e57ada6f..f5d737dd14e4 100644 --- a/docs/generators/java-helidon-client.md +++ b/docs/generators/java-helidon-client.md @@ -65,6 +65,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| |sourceFolder|source folder for generated code| |src/main/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| |withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false| @@ -83,6 +84,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null |x-webclient-blocking|Specifies if method for specific operation should be blocking or non-blocking(ex: return `Mono/Flux` or `return T/List/Set` & execute `.block()` inside generated method)|OPERATION|false diff --git a/docs/generators/java-helidon-server.md b/docs/generators/java-helidon-server.md index e817d1e1e2b3..7c0a8481a03f 100644 --- a/docs/generators/java-helidon-server.md +++ b/docs/generators/java-helidon-server.md @@ -66,6 +66,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| |sourceFolder|source folder for generated code| |src/main/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useAbstractClass|Whether to generate abstract classes for REST API instead of interfaces.| |false| |useBeanValidation|Use Bean Validation| |false| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| @@ -86,6 +87,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java-inflector.md b/docs/generators/java-inflector.md index 3cc8851281ed..d0c4b5fbf87f 100644 --- a/docs/generators/java-inflector.md +++ b/docs/generators/java-inflector.md @@ -70,6 +70,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| |sourceFolder|source folder for generated code| |src/gen/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| |withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false| @@ -86,6 +87,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java-micronaut-client.md b/docs/generators/java-micronaut-client.md index 5b0fcc3ab460..1a31c4de2909 100644 --- a/docs/generators/java-micronaut-client.md +++ b/docs/generators/java-micronaut-client.md @@ -87,6 +87,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |test|Specify which test tool to generate files for|
**junit**
Use JUnit as test tool
**spock**
Use Spock as test tool
|junit| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|Client service name| |null| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useBeanValidation|Use BeanValidation API annotations| |true| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| @@ -107,6 +108,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java-micronaut-server.md b/docs/generators/java-micronaut-server.md index eb6e68a82e57..86905451e9df 100644 --- a/docs/generators/java-micronaut-server.md +++ b/docs/generators/java-micronaut-server.md @@ -85,6 +85,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |test|Specify which test tool to generate files for|
**junit**
Use JUnit as test tool
**spock**
Use Spock as test tool
|junit| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|Client service name| |null| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useAuth|Whether to import authorization and to annotate controller methods accordingly| |true| |useBeanValidation|Use BeanValidation API annotations| |true| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| @@ -106,6 +107,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java-microprofile.md b/docs/generators/java-microprofile.md index f6a93340b5b0..41313acab903 100644 --- a/docs/generators/java-microprofile.md +++ b/docs/generators/java-microprofile.md @@ -93,6 +93,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |supportUrlQuery|Generate toUrlQueryString in POJO (default to true). Available on `native`, `apache-httpclient` libraries.| |false| |supportVertxFuture|Also generate api methods that return a vertx Future instead of taking a callback. Only `vertx` supports this option. Requires vertx 4 or greater.| |false| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useAbstractionForFiles|Use alternative types instead of java.io.File to allow passing bytes without a file on disk. Available on resttemplate, webclient, restclient, libraries| |false| |useBeanValidation|Use BeanValidation API annotations| |false| |useDeductionForOneOfInterfaces|Annotate discriminator-free oneOf interfaces with Jackson's @JsonTypeInfo(use = Id.DEDUCTION) and @JsonSubTypes so the concrete subtype is resolved from the JSON field set rather than a type-tag property. Has no effect when a discriminator is present (name-based resolution is used instead). Requires subtypes to have structurally distinct sets of properties.| |false| @@ -129,6 +130,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null |x-webclient-blocking|Specifies if method for specific operation should be blocking or non-blocking(ex: return `Mono/Flux` or `return T/List/Set` & execute `.block()` inside generated method)|OPERATION|false diff --git a/docs/generators/java-msf4j.md b/docs/generators/java-msf4j.md index b806ca5901a3..82cad56177b2 100644 --- a/docs/generators/java-msf4j.md +++ b/docs/generators/java-msf4j.md @@ -74,6 +74,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sourceFolder|source folder for generated code| |src/gen/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|a title describing the application| |OpenAPI Server| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useBeanValidation|Use BeanValidation API annotations| |true| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| @@ -92,6 +93,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java-pkmst.md b/docs/generators/java-pkmst.md index dbc4a66daef9..38bec82be541 100644 --- a/docs/generators/java-pkmst.md +++ b/docs/generators/java-pkmst.md @@ -76,6 +76,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |springBootAdminUri|Spring-Boot URI| |null| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|server title name or client service name| |null| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| |withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false| @@ -93,6 +94,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java-play-framework.md b/docs/generators/java-play-framework.md index 0eb293d1f84b..06e768a86879 100644 --- a/docs/generators/java-play-framework.md +++ b/docs/generators/java-play-framework.md @@ -76,6 +76,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |supportAsync|Support Async operations| |false| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|server title name or client service name| |openapi-java-playframework| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useBeanValidation|Use BeanValidation API annotations| |true| |useInterfaces|Makes the controllerImp implements an interface to facilitate automatic completion when updating from version x to y of your spec| |true| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| @@ -96,6 +97,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java-undertow-server.md b/docs/generators/java-undertow-server.md index 3e41d2e24485..bf7bd35e8a61 100644 --- a/docs/generators/java-undertow-server.md +++ b/docs/generators/java-undertow-server.md @@ -70,6 +70,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| |sourceFolder|source folder for generated code| |src/main/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| |withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false| @@ -86,6 +87,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java-vertx-web.md b/docs/generators/java-vertx-web.md index 2530cd52bdf9..2c0f0f02dabc 100644 --- a/docs/generators/java-vertx-web.md +++ b/docs/generators/java-vertx-web.md @@ -70,6 +70,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| |sourceFolder|source folder for generated code| |src/main/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| |withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false| @@ -86,6 +87,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java-vertx.md b/docs/generators/java-vertx.md index cb91eeb2c753..841119fe8295 100644 --- a/docs/generators/java-vertx.md +++ b/docs/generators/java-vertx.md @@ -72,6 +72,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| |sourceFolder|source folder for generated code| |src/main/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| |vertxSwaggerRouterVersion|Specify the version of the swagger router library| |null| @@ -89,6 +90,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java-wiremock.md b/docs/generators/java-wiremock.md index c9ae878a03f5..f6df2bacfaa8 100644 --- a/docs/generators/java-wiremock.md +++ b/docs/generators/java-wiremock.md @@ -70,6 +70,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| |sourceFolder|source folder for generated code| |src/main/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| |withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false| @@ -86,6 +87,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java.md b/docs/generators/java.md index 780b1aca9bf6..e9a41ef82a36 100644 --- a/docs/generators/java.md +++ b/docs/generators/java.md @@ -93,6 +93,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |supportUrlQuery|Generate toUrlQueryString in POJO (default to true). Available on `native`, `apache-httpclient` libraries.| |false| |supportVertxFuture|Also generate api methods that return a vertx Future instead of taking a callback. Only `vertx` supports this option. Requires vertx 4 or greater.| |false| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useAbstractionForFiles|Use alternative types instead of java.io.File to allow passing bytes without a file on disk. Available on resttemplate, webclient, restclient, libraries| |false| |useBeanValidation|Use BeanValidation API annotations| |false| |useDeductionForOneOfInterfaces|Annotate discriminator-free oneOf interfaces with Jackson's @JsonTypeInfo(use = Id.DEDUCTION) and @JsonSubTypes so the concrete subtype is resolved from the JSON field set rather than a type-tag property. Has no effect when a discriminator is present (name-based resolution is used instead). Requires subtypes to have structurally distinct sets of properties.| |false| @@ -129,6 +130,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null |x-webclient-blocking|Specifies if method for specific operation should be blocking or non-blocking(ex: return `Mono/Flux` or `return T/List/Set` & execute `.block()` inside generated method)|OPERATION|false diff --git a/docs/generators/jaxrs-cxf-cdi.md b/docs/generators/jaxrs-cxf-cdi.md index 54e88fd00a53..711a1376c79c 100644 --- a/docs/generators/jaxrs-cxf-cdi.md +++ b/docs/generators/jaxrs-cxf-cdi.md @@ -80,6 +80,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |supportAsync|Wrap responses in CompletionStage type, allowing asynchronous computation (requires JAX-RS 2.1).| |false| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|a title describing the application| |OpenAPI Server| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useBeanValidation|Use BeanValidation API annotations| |true| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useJakartaSecurityAnnotations|Whether to generate Jakarta security annotations (@RolesAllowed, @PermitAll). Requires useJakartaEe=true. Currently only supported when library is set to quarkus.| |false| @@ -103,6 +104,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/jaxrs-cxf-client.md b/docs/generators/jaxrs-cxf-client.md index a3835496fda8..5d6138aa2a54 100644 --- a/docs/generators/jaxrs-cxf-client.md +++ b/docs/generators/jaxrs-cxf-client.md @@ -72,6 +72,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| |sourceFolder|source folder for generated code| |src/gen/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useAbstractionForFiles|Use alternative types instead of java.io.File to allow passing bytes without a file on disk.| |false| |useBeanValidation|Use BeanValidation API annotations| |false| |useGenericResponse|Use generic response| |false| @@ -94,6 +95,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/jaxrs-cxf-extended.md b/docs/generators/jaxrs-cxf-extended.md index e8575723b309..0876de3460ba 100644 --- a/docs/generators/jaxrs-cxf-extended.md +++ b/docs/generators/jaxrs-cxf-extended.md @@ -85,6 +85,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |testDataFile|JSON file to contain generated test data| |null| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|a title describing the application| |OpenAPI Server| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useAbstractionForFiles|Use alternative types instead of java.io.File to allow passing bytes without a file on disk.| |false| |useAnnotatedBasePath|Use @Path annotations for basePath| |false| |useBeanValidation|Use BeanValidation API annotations| |true| @@ -116,6 +117,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/jaxrs-cxf.md b/docs/generators/jaxrs-cxf.md index c54b42ab061c..d59442e4db0a 100644 --- a/docs/generators/jaxrs-cxf.md +++ b/docs/generators/jaxrs-cxf.md @@ -80,6 +80,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sourceFolder|source folder for generated code| |src/gen/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|a title describing the application| |OpenAPI Server| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useAbstractionForFiles|Use alternative types instead of java.io.File to allow passing bytes without a file on disk.| |false| |useAnnotatedBasePath|Use @Path annotations for basePath| |false| |useBeanValidation|Use BeanValidation API annotations| |true| @@ -111,6 +112,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/jaxrs-jersey.md b/docs/generators/jaxrs-jersey.md index b464219f0e82..8e83978a8fe6 100644 --- a/docs/generators/jaxrs-jersey.md +++ b/docs/generators/jaxrs-jersey.md @@ -74,6 +74,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sourceFolder|source folder for generated code| |src/gen/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|a title describing the application| |OpenAPI Server| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useBeanValidation|Use BeanValidation API annotations| |true| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| @@ -92,6 +93,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/jaxrs-resteasy-eap.md b/docs/generators/jaxrs-resteasy-eap.md index 4bbee723e5a9..9be9af13419b 100644 --- a/docs/generators/jaxrs-resteasy-eap.md +++ b/docs/generators/jaxrs-resteasy-eap.md @@ -74,6 +74,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sourceFolder|source folder for generated code| |src/gen/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|a title describing the application| |OpenAPI Server| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useBeanValidation|Use BeanValidation API annotations| |true| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| @@ -93,6 +94,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/jaxrs-resteasy.md b/docs/generators/jaxrs-resteasy.md index d61e43bedc21..041371c4a6b8 100644 --- a/docs/generators/jaxrs-resteasy.md +++ b/docs/generators/jaxrs-resteasy.md @@ -74,6 +74,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sourceFolder|source folder for generated code| |src/gen/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|a title describing the application| |OpenAPI Server| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useBeanValidation|Use BeanValidation API annotations| |true| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| @@ -92,6 +93,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/jaxrs-spec.md b/docs/generators/jaxrs-spec.md index b5225bffd43e..c9167de76207 100644 --- a/docs/generators/jaxrs-spec.md +++ b/docs/generators/jaxrs-spec.md @@ -81,6 +81,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |supportAsync|Wrap responses in CompletionStage type, allowing asynchronous computation (requires JAX-RS 2.1).| |false| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|a title describing the application| |OpenAPI Server| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useBeanValidation|Use BeanValidation API annotations| |true| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useJakartaSecurityAnnotations|Whether to generate Jakarta security annotations (@RolesAllowed, @PermitAll). Requires useJakartaEe=true. Currently only supported when library is set to quarkus.| |false| @@ -104,6 +105,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/kotlin-spring.md b/docs/generators/kotlin-spring.md index c9d4e3a2942f..84cf08cc799a 100644 --- a/docs/generators/kotlin-spring.md +++ b/docs/generators/kotlin-spring.md @@ -86,6 +86,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-discriminator-value|Used with model inheritance to specify value for discriminator that identifies current model|MODEL| |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null |x-operation-extra-annotation|List of custom annotations to be added to operation|OPERATION|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 diff --git a/docs/generators/spring.md b/docs/generators/spring.md index 9183d9ad026f..c09416ceac58 100644 --- a/docs/generators/spring.md +++ b/docs/generators/spring.md @@ -139,6 +139,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null |x-operation-extra-annotation|List of custom annotations to be added to operation|OPERATION|null |x-spring-paginated|Add `org.springframework.data.domain.Pageable` to controller method. Can be used to handle `page`, `size` and `sort` query parameters. If these query parameters are also specified in the operation spec, they will be removed from the controller method as their values can be obtained from the `Pageable` object. Only applies when `library=spring-boot`; ignored for client libraries (spring-cloud, spring-declarative-http-interface).|OPERATION|false |x-version-param|Marker property that tells that this parameter would be used for endpoint versioning. Applicable for headers & query params. true/false|OPERATION_PARAMETER|null From 7f2856ba384675bbaca4cfed80a158b272a261ed Mon Sep 17 00:00:00 2001 From: Jachym Metlicka Date: Thu, 18 Jun 2026 10:15:14 +0200 Subject: [PATCH 08/23] address CR feedback and update documentation --- docs/generators/groovy.md | 2 -- docs/generators/java-camel.md | 2 +- docs/generators/java-dubbo.md | 2 -- docs/generators/java-helidon-client.md | 2 -- docs/generators/java-helidon-server.md | 2 -- docs/generators/java-inflector.md | 2 -- docs/generators/java-micronaut-client.md | 2 -- docs/generators/java-micronaut-server.md | 2 -- docs/generators/java-microprofile.md | 2 +- docs/generators/java-msf4j.md | 2 -- docs/generators/java-pkmst.md | 2 -- docs/generators/java-play-framework.md | 2 -- docs/generators/java-undertow-server.md | 2 -- docs/generators/java-vertx-web.md | 2 -- docs/generators/java-vertx.md | 2 -- docs/generators/java-wiremock.md | 2 -- docs/generators/java.md | 2 +- docs/generators/jaxrs-cxf-cdi.md | 2 -- docs/generators/jaxrs-cxf-client.md | 2 -- docs/generators/jaxrs-cxf-extended.md | 2 -- docs/generators/jaxrs-cxf.md | 2 -- docs/generators/jaxrs-jersey.md | 2 -- docs/generators/jaxrs-resteasy-eap.md | 2 -- docs/generators/jaxrs-resteasy.md | 2 -- docs/generators/jaxrs-spec.md | 2 -- docs/generators/spring.md | 2 +- .../codegen/languages/AbstractJavaCodegen.java | 9 +-------- .../codegen/languages/JavaClientCodegen.java | 6 ++++++ .../openapitools/codegen/languages/SpringCodegen.java | 9 +++++++-- 29 files changed, 18 insertions(+), 58 deletions(-) diff --git a/docs/generators/groovy.md b/docs/generators/groovy.md index 1fb8376e18aa..a7125c0350b4 100644 --- a/docs/generators/groovy.md +++ b/docs/generators/groovy.md @@ -68,7 +68,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| |sourceFolder|source folder for generated code| |src/main/groovy| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| |withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false| @@ -85,7 +84,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java-camel.md b/docs/generators/java-camel.md index 6babdd682def..8ce23d084ad4 100644 --- a/docs/generators/java-camel.md +++ b/docs/generators/java-camel.md @@ -146,7 +146,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null |x-operation-extra-annotation|List of custom annotations to be added to operation|OPERATION|null |x-spring-paginated|Add `org.springframework.data.domain.Pageable` to controller method. Can be used to handle `page`, `size` and `sort` query parameters. If these query parameters are also specified in the operation spec, they will be removed from the controller method as their values can be obtained from the `Pageable` object. Only applies when `library=spring-boot`; ignored for client libraries (spring-cloud, spring-declarative-http-interface).|OPERATION|false |x-version-param|Marker property that tells that this parameter would be used for endpoint versioning. Applicable for headers & query params. true/false|OPERATION_PARAMETER|null @@ -155,6 +154,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |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 |x-maximum-message|Add this property whenever you need to customize the invalidation error message for the maximum value of a variable|FIELD, OPERATION_PARAMETER|null |x-spring-api-version|Value for 'version' attribute in @RequestMapping (for Spring 7 and above).|OPERATION|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java-dubbo.md b/docs/generators/java-dubbo.md index c3758b0507d4..d39495d8a2e0 100644 --- a/docs/generators/java-dubbo.md +++ b/docs/generators/java-dubbo.md @@ -79,7 +79,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sourceFolder|source folder for generated code| |src/main/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|API title name| |null| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useGenericResponse|Use generic response wrapper| |false| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| @@ -98,7 +97,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java-helidon-client.md b/docs/generators/java-helidon-client.md index f5d737dd14e4..cab0e57ada6f 100644 --- a/docs/generators/java-helidon-client.md +++ b/docs/generators/java-helidon-client.md @@ -65,7 +65,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| |sourceFolder|source folder for generated code| |src/main/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| |withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false| @@ -84,7 +83,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null |x-webclient-blocking|Specifies if method for specific operation should be blocking or non-blocking(ex: return `Mono/Flux` or `return T/List/Set` & execute `.block()` inside generated method)|OPERATION|false diff --git a/docs/generators/java-helidon-server.md b/docs/generators/java-helidon-server.md index 7c0a8481a03f..e817d1e1e2b3 100644 --- a/docs/generators/java-helidon-server.md +++ b/docs/generators/java-helidon-server.md @@ -66,7 +66,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| |sourceFolder|source folder for generated code| |src/main/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useAbstractClass|Whether to generate abstract classes for REST API instead of interfaces.| |false| |useBeanValidation|Use Bean Validation| |false| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| @@ -87,7 +86,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java-inflector.md b/docs/generators/java-inflector.md index d0c4b5fbf87f..3cc8851281ed 100644 --- a/docs/generators/java-inflector.md +++ b/docs/generators/java-inflector.md @@ -70,7 +70,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| |sourceFolder|source folder for generated code| |src/gen/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| |withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false| @@ -87,7 +86,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java-micronaut-client.md b/docs/generators/java-micronaut-client.md index 1a31c4de2909..5b0fcc3ab460 100644 --- a/docs/generators/java-micronaut-client.md +++ b/docs/generators/java-micronaut-client.md @@ -87,7 +87,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |test|Specify which test tool to generate files for|
**junit**
Use JUnit as test tool
**spock**
Use Spock as test tool
|junit| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|Client service name| |null| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useBeanValidation|Use BeanValidation API annotations| |true| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| @@ -108,7 +107,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java-micronaut-server.md b/docs/generators/java-micronaut-server.md index 86905451e9df..eb6e68a82e57 100644 --- a/docs/generators/java-micronaut-server.md +++ b/docs/generators/java-micronaut-server.md @@ -85,7 +85,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |test|Specify which test tool to generate files for|
**junit**
Use JUnit as test tool
**spock**
Use Spock as test tool
|junit| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|Client service name| |null| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useAuth|Whether to import authorization and to annotate controller methods accordingly| |true| |useBeanValidation|Use BeanValidation API annotations| |true| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| @@ -107,7 +106,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java-microprofile.md b/docs/generators/java-microprofile.md index 41313acab903..b23bd8292805 100644 --- a/docs/generators/java-microprofile.md +++ b/docs/generators/java-microprofile.md @@ -130,8 +130,8 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null |x-webclient-blocking|Specifies if method for specific operation should be blocking or non-blocking(ex: return `Mono/Flux` or `return T/List/Set` & execute `.block()` inside generated method)|OPERATION|false +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java-msf4j.md b/docs/generators/java-msf4j.md index 82cad56177b2..b806ca5901a3 100644 --- a/docs/generators/java-msf4j.md +++ b/docs/generators/java-msf4j.md @@ -74,7 +74,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sourceFolder|source folder for generated code| |src/gen/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|a title describing the application| |OpenAPI Server| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useBeanValidation|Use BeanValidation API annotations| |true| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| @@ -93,7 +92,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java-pkmst.md b/docs/generators/java-pkmst.md index 38bec82be541..dbc4a66daef9 100644 --- a/docs/generators/java-pkmst.md +++ b/docs/generators/java-pkmst.md @@ -76,7 +76,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |springBootAdminUri|Spring-Boot URI| |null| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|server title name or client service name| |null| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| |withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false| @@ -94,7 +93,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java-play-framework.md b/docs/generators/java-play-framework.md index 06e768a86879..0eb293d1f84b 100644 --- a/docs/generators/java-play-framework.md +++ b/docs/generators/java-play-framework.md @@ -76,7 +76,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |supportAsync|Support Async operations| |false| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|server title name or client service name| |openapi-java-playframework| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useBeanValidation|Use BeanValidation API annotations| |true| |useInterfaces|Makes the controllerImp implements an interface to facilitate automatic completion when updating from version x to y of your spec| |true| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| @@ -97,7 +96,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java-undertow-server.md b/docs/generators/java-undertow-server.md index bf7bd35e8a61..3e41d2e24485 100644 --- a/docs/generators/java-undertow-server.md +++ b/docs/generators/java-undertow-server.md @@ -70,7 +70,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| |sourceFolder|source folder for generated code| |src/main/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| |withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false| @@ -87,7 +86,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java-vertx-web.md b/docs/generators/java-vertx-web.md index 2c0f0f02dabc..2530cd52bdf9 100644 --- a/docs/generators/java-vertx-web.md +++ b/docs/generators/java-vertx-web.md @@ -70,7 +70,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| |sourceFolder|source folder for generated code| |src/main/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| |withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false| @@ -87,7 +86,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java-vertx.md b/docs/generators/java-vertx.md index 841119fe8295..cb91eeb2c753 100644 --- a/docs/generators/java-vertx.md +++ b/docs/generators/java-vertx.md @@ -72,7 +72,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| |sourceFolder|source folder for generated code| |src/main/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| |vertxSwaggerRouterVersion|Specify the version of the swagger router library| |null| @@ -90,7 +89,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java-wiremock.md b/docs/generators/java-wiremock.md index f6df2bacfaa8..c9ae878a03f5 100644 --- a/docs/generators/java-wiremock.md +++ b/docs/generators/java-wiremock.md @@ -70,7 +70,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| |sourceFolder|source folder for generated code| |src/main/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| |withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false| @@ -87,7 +86,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/java.md b/docs/generators/java.md index e9a41ef82a36..9eb9e8944bc2 100644 --- a/docs/generators/java.md +++ b/docs/generators/java.md @@ -130,8 +130,8 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null |x-webclient-blocking|Specifies if method for specific operation should be blocking or non-blocking(ex: return `Mono/Flux` or `return T/List/Set` & execute `.block()` inside generated method)|OPERATION|false +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/jaxrs-cxf-cdi.md b/docs/generators/jaxrs-cxf-cdi.md index 711a1376c79c..54e88fd00a53 100644 --- a/docs/generators/jaxrs-cxf-cdi.md +++ b/docs/generators/jaxrs-cxf-cdi.md @@ -80,7 +80,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |supportAsync|Wrap responses in CompletionStage type, allowing asynchronous computation (requires JAX-RS 2.1).| |false| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|a title describing the application| |OpenAPI Server| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useBeanValidation|Use BeanValidation API annotations| |true| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useJakartaSecurityAnnotations|Whether to generate Jakarta security annotations (@RolesAllowed, @PermitAll). Requires useJakartaEe=true. Currently only supported when library is set to quarkus.| |false| @@ -104,7 +103,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/jaxrs-cxf-client.md b/docs/generators/jaxrs-cxf-client.md index 5d6138aa2a54..a3835496fda8 100644 --- a/docs/generators/jaxrs-cxf-client.md +++ b/docs/generators/jaxrs-cxf-client.md @@ -72,7 +72,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| |sourceFolder|source folder for generated code| |src/gen/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useAbstractionForFiles|Use alternative types instead of java.io.File to allow passing bytes without a file on disk.| |false| |useBeanValidation|Use BeanValidation API annotations| |false| |useGenericResponse|Use generic response| |false| @@ -95,7 +94,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/jaxrs-cxf-extended.md b/docs/generators/jaxrs-cxf-extended.md index 0876de3460ba..e8575723b309 100644 --- a/docs/generators/jaxrs-cxf-extended.md +++ b/docs/generators/jaxrs-cxf-extended.md @@ -85,7 +85,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |testDataFile|JSON file to contain generated test data| |null| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|a title describing the application| |OpenAPI Server| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useAbstractionForFiles|Use alternative types instead of java.io.File to allow passing bytes without a file on disk.| |false| |useAnnotatedBasePath|Use @Path annotations for basePath| |false| |useBeanValidation|Use BeanValidation API annotations| |true| @@ -117,7 +116,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/jaxrs-cxf.md b/docs/generators/jaxrs-cxf.md index d59442e4db0a..c54b42ab061c 100644 --- a/docs/generators/jaxrs-cxf.md +++ b/docs/generators/jaxrs-cxf.md @@ -80,7 +80,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sourceFolder|source folder for generated code| |src/gen/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|a title describing the application| |OpenAPI Server| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useAbstractionForFiles|Use alternative types instead of java.io.File to allow passing bytes without a file on disk.| |false| |useAnnotatedBasePath|Use @Path annotations for basePath| |false| |useBeanValidation|Use BeanValidation API annotations| |true| @@ -112,7 +111,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/jaxrs-jersey.md b/docs/generators/jaxrs-jersey.md index 8e83978a8fe6..b464219f0e82 100644 --- a/docs/generators/jaxrs-jersey.md +++ b/docs/generators/jaxrs-jersey.md @@ -74,7 +74,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sourceFolder|source folder for generated code| |src/gen/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|a title describing the application| |OpenAPI Server| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useBeanValidation|Use BeanValidation API annotations| |true| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| @@ -93,7 +92,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/jaxrs-resteasy-eap.md b/docs/generators/jaxrs-resteasy-eap.md index 9be9af13419b..4bbee723e5a9 100644 --- a/docs/generators/jaxrs-resteasy-eap.md +++ b/docs/generators/jaxrs-resteasy-eap.md @@ -74,7 +74,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sourceFolder|source folder for generated code| |src/gen/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|a title describing the application| |OpenAPI Server| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useBeanValidation|Use BeanValidation API annotations| |true| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| @@ -94,7 +93,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/jaxrs-resteasy.md b/docs/generators/jaxrs-resteasy.md index 041371c4a6b8..d61e43bedc21 100644 --- a/docs/generators/jaxrs-resteasy.md +++ b/docs/generators/jaxrs-resteasy.md @@ -74,7 +74,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sourceFolder|source folder for generated code| |src/gen/java| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|a title describing the application| |OpenAPI Server| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useBeanValidation|Use BeanValidation API annotations| |true| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| @@ -93,7 +92,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/jaxrs-spec.md b/docs/generators/jaxrs-spec.md index c9167de76207..b5225bffd43e 100644 --- a/docs/generators/jaxrs-spec.md +++ b/docs/generators/jaxrs-spec.md @@ -81,7 +81,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |supportAsync|Wrap responses in CompletionStage type, allowing asynchronous computation (requires JAX-RS 2.1).| |false| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|a title describing the application| |OpenAPI Server| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useBeanValidation|Use BeanValidation API annotations| |true| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useJakartaSecurityAnnotations|Whether to generate Jakarta security annotations (@RolesAllowed, @PermitAll). Requires useJakartaEe=true. Currently only supported when library is set to quarkus.| |false| @@ -105,7 +104,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/docs/generators/spring.md b/docs/generators/spring.md index c09416ceac58..dc7c7e8be531 100644 --- a/docs/generators/spring.md +++ b/docs/generators/spring.md @@ -139,7 +139,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-content-type|Specify custom value for 'Content-Type' header for operation|OPERATION|null |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null |x-operation-extra-annotation|List of custom annotations to be added to operation|OPERATION|null |x-spring-paginated|Add `org.springframework.data.domain.Pageable` to controller method. Can be used to handle `page`, `size` and `sort` query parameters. If these query parameters are also specified in the operation spec, they will be removed from the controller method as their values can be obtained from the `Pageable` object. Only applies when `library=spring-boot`; ignored for client libraries (spring-cloud, spring-declarative-http-interface).|OPERATION|false |x-version-param|Marker property that tells that this parameter would be used for endpoint versioning. Applicable for headers & query params. true/false|OPERATION_PARAMETER|null @@ -148,6 +147,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |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 |x-maximum-message|Add this property whenever you need to customize the invalidation error message for the maximum value of a variable|FIELD, OPERATION_PARAMETER|null |x-spring-api-version|Value for 'version' attribute in @RequestMapping (for Spring 7 and above).|OPERATION|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java index b3e98eb7e0af..5ab60254d95e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java @@ -58,7 +58,6 @@ import org.slf4j.LoggerFactory; import javax.lang.model.SourceVersion; - import java.io.File; import java.io.IOException; import java.io.Writer; @@ -76,7 +75,6 @@ import java.util.stream.StreamSupport; import static org.openapitools.codegen.CodegenConstants.USE_DEDUCTION_FOR_ONE_OF_INTERFACES; -import static org.openapitools.codegen.CodegenConstants.TYPE_INFO_DEFAULT_IMPLS; import static org.openapitools.codegen.CodegenConstants.X_IMPLEMENTS; import static org.openapitools.codegen.utils.CamelizeOption.*; import static org.openapitools.codegen.utils.ModelUtils.getSchemaItems; @@ -230,7 +228,7 @@ protected enum ENUM_PROPERTY_NAMING_TYPE {MACRO_CASE, legacy, original} @Getter @Setter protected boolean useDeductionForOneOfInterfaces = false; - private Map typeInfoDefaultImpls = new HashMap<>(); + protected Map typeInfoDefaultImpls = new HashMap<>(); private Map schemaKeyToModelNameCache = new HashMap<>(); @@ -349,7 +347,6 @@ public AbstractJavaCodegen() { cliOptions.add(CliOption.newBoolean(CodegenConstants.HIDE_GENERATION_TIMESTAMP, CodegenConstants.HIDE_GENERATION_TIMESTAMP_DESC, this.isHideGenerationTimestamp())); cliOptions.add(CliOption.newBoolean(WITH_XML, "whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)")); cliOptions.add(CliOption.newBoolean(USE_ONE_OF_INTERFACES, "whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface")); - cliOptions.add(new CliOption(CodegenConstants.TYPE_INFO_DEFAULT_IMPLS, CodegenConstants.TYPE_INFO_DEFAULT_IMPLS_DESC)); CliOption dateLibrary = new CliOption(DATE_LIBRARY, "Option. Date library to use").defaultValue(this.getDateLibrary()); Map dateOptions = new HashMap<>(); @@ -616,9 +613,6 @@ public void processOpts() { convertPropertyToStringAndWriteBack(CodegenConstants.ENUM_PROPERTY_NAMING, this::setEnumPropertyNaming); convertPropertyToBooleanAndWriteBack(USE_JSPECIFY, this::setUseJspecify); convertPropertyToBooleanAndWriteBack(USE_DEDUCTION_FOR_ONE_OF_INTERFACES, this::setUseDeductionForOneOfInterfaces); - if (additionalProperties.containsKey(TYPE_INFO_DEFAULT_IMPLS)) { - typeInfoDefaultImpls.putAll(getPropertyAsStringMap(TYPE_INFO_DEFAULT_IMPLS)); - } if (!StringUtils.isEmpty(parentGroupId) && !StringUtils.isEmpty(parentArtifactId) && !StringUtils.isEmpty(parentVersion)) { additionalProperties.put("parentOverridden", true); @@ -2719,7 +2713,6 @@ public List getSupportedVendorExtensions() { extensions.add(VendorExtension.X_CONTENT_TYPE); extensions.add(VendorExtension.X_CLASS_EXTRA_ANNOTATION); extensions.add(VendorExtension.X_FIELD_EXTRA_ANNOTATION); - extensions.add(VendorExtension.X_JACKSON_DEFAULT_IMPL); return extensions; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java index f779be9ed183..344cc8900ce4 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java @@ -286,6 +286,7 @@ public JavaClientCodegen() { cliOptions.add(CliOption.newBoolean(USE_UNARY_INTERCEPTOR, "If true it will generate ResponseInterceptors using a UnaryOperator. This can be usefull for manipulating the request before it gets passed, for example doing your own decryption", this.useUnaryInterceptor)); cliOptions.add(CliOption.newBoolean(USE_JSPECIFY, "Use Jspecify for null checks. Only supported for " + JSPECIFY_SUPPORTED_LIBRARIES, useJspecify)); cliOptions.add(CliOption.newBoolean(USE_DEDUCTION_FOR_ONE_OF_INTERFACES, USE_DEDUCTION_FOR_ONE_OF_INTERFACES_DESC, useDeductionForOneOfInterfaces)); + cliOptions.add(new CliOption(TYPE_INFO_DEFAULT_IMPLS, TYPE_INFO_DEFAULT_IMPLS_DESC)); supportedLibraries.put(JERSEY2, "HTTP client: Jersey client 2.25.1. JSON processing: Jackson 2.17.1"); supportedLibraries.put(JERSEY3, "HTTP client: Jersey client 3.1.11. JSON processing: Jackson 2.x (3.x if `useJackson3=true`, requires Java 17+)"); @@ -377,6 +378,10 @@ public void processOpts() { super.processOpts(); // can actually change the library (possibly only in unit-tests but still...) + if (additionalProperties.containsKey(TYPE_INFO_DEFAULT_IMPLS)) { + typeInfoDefaultImpls.putAll(getPropertyAsStringMap(TYPE_INFO_DEFAULT_IMPLS)); + } + // determine and cache client library type once final boolean libApache = isLibrary(APACHE); final boolean libFeign = isLibrary(FEIGN) || isLibrary(FEIGN_HC5); @@ -1383,6 +1388,7 @@ public void addImportsToOneOfInterface(List> imports) { public List getSupportedVendorExtensions() { List extensions = super.getSupportedVendorExtensions(); extensions.add(VendorExtension.X_WEBCLIENT_BLOCKING); + extensions.add(VendorExtension.X_JACKSON_DEFAULT_IMPL); return extensions; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java index 9c3c303fb5ec..978ddd56e64c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java @@ -54,8 +54,7 @@ import java.util.stream.Collectors; import static org.apache.commons.lang3.StringUtils.isNotEmpty; -import static org.openapitools.codegen.CodegenConstants.USE_DEDUCTION_FOR_ONE_OF_INTERFACES; -import static org.openapitools.codegen.CodegenConstants.USE_DEDUCTION_FOR_ONE_OF_INTERFACES_DESC; +import static org.openapitools.codegen.CodegenConstants.*; import static org.openapitools.codegen.utils.CamelizeOption.LOWERCASE_FIRST_LETTER; import static org.openapitools.codegen.utils.StringUtils.camelize; @@ -340,6 +339,7 @@ public SpringCodegen() { optionalAcceptNullable)); cliOptions.add(CliOption.newBoolean(USE_DEDUCTION_FOR_ONE_OF_INTERFACES, USE_DEDUCTION_FOR_ONE_OF_INTERFACES_DESC, useDeductionForOneOfInterfaces)); + cliOptions.add(new CliOption(TYPE_INFO_DEFAULT_IMPLS, TYPE_INFO_DEFAULT_IMPLS_DESC)); cliOptions.add(CliOption.newString(SPRING_API_VERSION, "Value for 'version' attribute in @RequestMapping (for Spring 7 and above).")); cliOptions.add(CliOption.newString(USE_HTTP_SERVICE_PROXY_FACTORY_INTERFACES_CONFIGURATOR, "Generate HttpInterfacesAbstractConfigurator based on an HttpServiceProxyFactory instance (as opposed to a WebClient instance, when disabled) for generating Spring HTTP interfaces.") @@ -469,6 +469,10 @@ public void processOpts() { // Please refrain from updating values of Config Options after super.ProcessOpts() is called super.processOpts(); + if (additionalProperties.containsKey(TYPE_INFO_DEFAULT_IMPLS)) { + typeInfoDefaultImpls.putAll(getPropertyAsStringMap(TYPE_INFO_DEFAULT_IMPLS)); + } + if (SPRING_HTTP_INTERFACE.equals(library)) { if (documentationProvider != null) { additionalProperties.remove(documentationProvider.getPropertyName()); @@ -1554,6 +1558,7 @@ public List getSupportedVendorExtensions() { extensions.add(VendorExtension.X_MINIMUM_MESSAGE); extensions.add(VendorExtension.X_MAXIMUM_MESSAGE); extensions.add(VendorExtension.X_SPRING_API_VERSION); + extensions.add(VendorExtension.X_JACKSON_DEFAULT_IMPL); return extensions; } From 378ac1e42f7f40fd09a74027ba4a4efe376e6fb7 Mon Sep 17 00:00:00 2001 From: Jachym Metlicka Date: Thu, 18 Jun 2026 10:38:47 +0200 Subject: [PATCH 09/23] address CR feedback and update documentation --- .../JavaMicroprofileServerCodegen.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicroprofileServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicroprofileServerCodegen.java index 0703d0b2cdd8..9065c00b6b80 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicroprofileServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicroprofileServerCodegen.java @@ -3,6 +3,7 @@ import org.openapitools.codegen.CodegenOperation; import org.openapitools.codegen.CodegenResponse; import org.openapitools.codegen.CodegenType; +import org.openapitools.codegen.VendorExtension; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.OperationMap; import org.openapitools.codegen.model.OperationsMap; @@ -10,6 +11,8 @@ import java.io.File; import java.util.List; +import static org.openapitools.codegen.CodegenConstants.TYPE_INFO_DEFAULT_IMPLS; + public class JavaMicroprofileServerCodegen extends JavaClientCodegen { public static final String PROJECT_NAME = "projectName"; public static final String MICROPROFILE_SERVER = "microprofileServer"; @@ -24,6 +27,10 @@ public JavaMicroprofileServerCodegen() { apiPackage = "org.openapitools.server.api"; modelPackage = "org.openapitools.server.model"; setLibrary("microprofile"); + + // The microprofile library uses its own model.mustache which does not route to + // oneof_interface.mustache, so typeInfoDefaultImpls / x-jackson-default-impl have no effect. + cliOptions.removeIf(opt -> TYPE_INFO_DEFAULT_IMPLS.equals(opt.getOpt())); } @Override @@ -45,6 +52,16 @@ public String getHelp() { public void processOpts() { super.processOpts(); additionalProperties.put(MICROPROFILE_SERVER, microprofileServer); + // Clear any typeInfoDefaultImpls that the parent may have read; the microprofile + // model template does not support oneOf interfaces, so the option has no effect. + typeInfoDefaultImpls.clear(); + } + + @Override + public List getSupportedVendorExtensions() { + List extensions = super.getSupportedVendorExtensions(); + extensions.remove(VendorExtension.X_JACKSON_DEFAULT_IMPL); + return extensions; } @Override From 3e19fd91641b16d155275ffc8c4818c2cc4ab821 Mon Sep 17 00:00:00 2001 From: Jachym Metlicka Date: Thu, 18 Jun 2026 10:41:41 +0200 Subject: [PATCH 10/23] address CR feedback and update documentation --- docs/generators/java-microprofile.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/generators/java-microprofile.md b/docs/generators/java-microprofile.md index b23bd8292805..f6a93340b5b0 100644 --- a/docs/generators/java-microprofile.md +++ b/docs/generators/java-microprofile.md @@ -93,7 +93,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |supportUrlQuery|Generate toUrlQueryString in POJO (default to true). Available on `native`, `apache-httpclient` libraries.| |false| |supportVertxFuture|Also generate api methods that return a vertx Future instead of taking a callback. Only `vertx` supports this option. Requires vertx 4 or greater.| |false| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useAbstractionForFiles|Use alternative types instead of java.io.File to allow passing bytes without a file on disk. Available on resttemplate, webclient, restclient, libraries| |false| |useBeanValidation|Use BeanValidation API annotations| |false| |useDeductionForOneOfInterfaces|Annotate discriminator-free oneOf interfaces with Jackson's @JsonTypeInfo(use = Id.DEDUCTION) and @JsonSubTypes so the concrete subtype is resolved from the JSON field set rather than a type-tag property. Has no effect when a discriminator is present (name-based resolution is used instead). Requires subtypes to have structurally distinct sets of properties.| |false| @@ -131,7 +130,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null |x-webclient-blocking|Specifies if method for specific operation should be blocking or non-blocking(ex: return `Mono/Flux` or `return T/List/Set` & execute `.block()` inside generated method)|OPERATION|false -|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING From ea94f966e44fddd7a4b160874f9d937efdc5d8ca Mon Sep 17 00:00:00 2001 From: Jachym Metlicka Date: Thu, 18 Jun 2026 11:45:08 +0200 Subject: [PATCH 11/23] add to kotlin-client as well. --- docs/generators/kotlin.md | 2 + .../languages/KotlinClientCodegen.java | 46 +++++++++ .../kotlin-client/typeInfoAnnotation.mustache | 2 +- .../kotlin/KotlinClientCodegenModelTest.java | 99 +++++++++++++++++++ 4 files changed, 148 insertions(+), 1 deletion(-) diff --git a/docs/generators/kotlin.md b/docs/generators/kotlin.md index cbdab90fc3f8..6482055dbfb0 100644 --- a/docs/generators/kotlin.md +++ b/docs/generators/kotlin.md @@ -49,6 +49,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |null| |sourceFolder|source folder for generated code| |src/main/kotlin| |supportAndroidApiLevel25AndBelow|[WARNING] This flag will generate code that has a known security vulnerability. It uses `kotlin.io.createTempFile` instead of `java.nio.file.Files.createTempFile` in order to support Android API level 25 and below. For more info, please check the following links https://github.com/OpenAPITools/openapi-generator/security/advisories/GHSA-23x4-m842-fmwf, https://github.com/OpenAPITools/openapi-generator/pull/9284| |false| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| |useCoroutines|Whether to use the Coroutines adapter with the retrofit2 library.| |false| |useJackson3|Use Jackson 3 dependencies (tools.jackson package). Not yet supported for kotlin-client; reserved for future use.| |false| |useNonAsciiHeaders|Allow to use non-ascii headers with the okhttp library| |false| @@ -63,6 +64,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl | -------------- | ----------- | -------------- | ------------- | |x-class-extra-annotation|List of custom annotations to be added to model|MODEL|null |x-field-extra-annotation|List of custom annotations to be added to property|FIELD, OPERATION_PARAMETER|null +|x-jackson-default-impl|Specifies the default implementation class name for Jackson @JsonTypeInfo(defaultImpl=...) on a oneOf interface schema (deduction-based or discriminator-based). Can be overridden per-schema by the `typeInfoDefaultImpls` generator option.|MODEL|null ## IMPORT MAPPING 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 6d6230b2c94c..5091ac84f715 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 @@ -133,6 +133,8 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { @Getter @Setter protected boolean failOnUnknownProperties = false; @Setter protected boolean companionObject = false; + protected Map typeInfoDefaultImpls = new HashMap<>(); + protected String authFolder; @Getter protected SERIALIZATION_LIBRARY_TYPE serializationLibrary = SERIALIZATION_LIBRARY_TYPE.moshi; @@ -296,6 +298,7 @@ public KotlinClientCodegen() { cliOptions.add(new CliOption(MAP_FILE_BINARY_TO_BYTE_ARRAY, "Map File and Binary to ByteArray (default: false)").defaultValue(Boolean.FALSE.toString())); cliOptions.add(CliOption.newBoolean(GENERATE_ONEOF_ANYOF_WRAPPERS, "Generate oneOf, anyOf schemas as wrappers. Only `jvm-retrofit2`(library) with `gson` or `kotlinx_serialization`(serializationLibrary) support this option.")); + cliOptions.add(new CliOption(CodegenConstants.TYPE_INFO_DEFAULT_IMPLS, CodegenConstants.TYPE_INFO_DEFAULT_IMPLS_DESC)); cliOptions.add(CliOption.newBoolean(COMPANION_OBJECT, "Whether to generate companion objects in data classes, enabling companion extensions.", false)); @@ -500,6 +503,10 @@ public void processOpts() { setGenerateOneOfAnyOfWrappers(convertPropertyToBooleanAndWriteBack(GENERATE_ONEOF_ANYOF_WRAPPERS)); } + if (additionalProperties.containsKey(CodegenConstants.TYPE_INFO_DEFAULT_IMPLS)) { + typeInfoDefaultImpls.putAll(getPropertyAsStringMap(CodegenConstants.TYPE_INFO_DEFAULT_IMPLS)); + } + if (additionalProperties.containsKey(FAIL_ON_UNKNOWN_PROPERTIES)) { setFailOnUnknownProperties(convertPropertyToBooleanAndWriteBack(FAIL_ON_UNKNOWN_PROPERTIES)); } else { @@ -993,6 +1000,44 @@ public ModelsMap postProcessModels(ModelsMap objs) { @Override public Map postProcessAllModels(Map objs) { objs = super.postProcessAllModels(objs); + + // Resolve x-jackson-default-impl / typeInfoDefaultImpls into x-jackson-resolved-default-impl. + // kotlin-client only supports discriminator-based oneOf (via @JsonTypeInfo + @JsonSubTypes); + // deduction-based is not supported by these templates. + if (getSerializationLibrary() == SERIALIZATION_LIBRARY_TYPE.jackson) { + Map allModelsMap = getAllModels(objs); + for (CodegenModel cm : allModelsMap.values()) { + if (cm.discriminator == null) { + continue; + } + Object rawAnnotationExt = cm.vendorExtensions.get(VendorExtension.X_JACKSON_DEFAULT_IMPL.getName()); + String schemaAnnotation = rawAnnotationExt instanceof String ? (String) rawAnnotationExt : null; + String configValue = typeInfoDefaultImpls.get(cm.schemaName); + String rawValue; + if (configValue != null && !configValue.isBlank()) { + if (schemaAnnotation != null && !schemaAnnotation.isBlank()) { + LOGGER.warn("typeInfoDefaultImpls overrides x-jackson-default-impl on schema '{}': '{}' → '{}'", + cm.schemaName, schemaAnnotation, configValue); + } + rawValue = configValue; + } else if (schemaAnnotation != null && !schemaAnnotation.isBlank()) { + rawValue = schemaAnnotation; + } else { + continue; + } + String resolved = toModelName(rawValue); + if (resolved != null && !resolved.isBlank()) { + if (!allModelsMap.containsKey(resolved)) { + LOGGER.warn("x-jackson-default-impl / typeInfoDefaultImpls on schema '{}' refers to '{}' which is not a known model in this spec. " + + "This is valid for external or catch-all classes, but may indicate a typo.", cm.schemaName, resolved); + } + // typeInfoAnnotation.mustache is rendered inside {{#discriminator}}, + // so JMustache resolves 'vendorExtensions' against CodegenDiscriminator. + cm.discriminator.getVendorExtensions().put("x-jackson-resolved-default-impl", resolved); + } + } + } + if (getSerializationLibrary() == SERIALIZATION_LIBRARY_TYPE.kotlinx_serialization || getLibrary().equals(MULTIPLATFORM)) { // The loop removes unneeded variables so commas are handled correctly in the related templates for (Map.Entry modelsMap : objs.entrySet()) { @@ -1242,6 +1287,7 @@ public List getSupportedVendorExtensions() { var extensions = super.getSupportedVendorExtensions(); extensions.add(VendorExtension.X_CLASS_EXTRA_ANNOTATION); extensions.add(VendorExtension.X_FIELD_EXTRA_ANNOTATION); + extensions.add(VendorExtension.X_JACKSON_DEFAULT_IMPL); return extensions; } } diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/typeInfoAnnotation.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/typeInfoAnnotation.mustache index c35ef3c4be2b..44b5c2842e48 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/typeInfoAnnotation.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/typeInfoAnnotation.mustache @@ -2,7 +2,7 @@ value = ["{{{discriminator.propertyBaseName}}}"], // ignore manually set {{{discriminator.propertyBaseName}}}, it will be automatically generated by Jackson during serialization allowSetters = true // allows the {{{discriminator.propertyBaseName}}} to be set during deserialization ) -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminator.propertyBaseName}}}", visible = true) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{{discriminator.propertyBaseName}}}", visible = true{{#vendorExtensions.x-jackson-resolved-default-impl}}, defaultImpl = {{vendorExtensions.x-jackson-resolved-default-impl}}::class{{/vendorExtensions.x-jackson-resolved-default-impl}}) @JsonSubTypes( {{#discriminator.mappedModels}} JsonSubTypes.Type(value = {{modelName}}::class, name = "{{^vendorExtensions.x-discriminator-value}}{{mappingName}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{vendorExtensions.x-discriminator-value}}}{{/vendorExtensions.x-discriminator-value}}"){{^-last}},{{/-last}} 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 95bfa644bd4f..037910dbcfbb 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 @@ -35,6 +35,7 @@ import java.io.File; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -1098,4 +1099,102 @@ private ModelNameTest(String expectedName, String expectedClassName) { this.expectedClassName = expectedClassName; } } + + // ===== typeInfoDefaultImpls / x-jackson-default-impl tests for kotlin-client ===== + + @Test + public void testXJacksonDefaultImplOnDiscriminatorSchemaEmitsDefaultImpl() throws IOException { + // x-jackson-default-impl on a discriminator-based oneOf schema should produce + // defaultImpl = Apple::class in the @JsonTypeInfo annotation on the Fruit sealed class. + File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName("kotlin") + .setInputSpec("src/test/resources/3_0/spring/jackson-default-impl.yaml") + .setOutputDir(output.getAbsolutePath().replace("\\", "/")) + .addAdditionalProperty(CodegenConstants.SERIALIZATION_LIBRARY, "jackson"); + + DefaultGenerator generator = new DefaultGenerator(); + generator.opts(configurator.toClientOptInput()).generate(); + + Path fruitModel = Paths.get(output.getAbsolutePath(), + "src/main/kotlin/org/openapitools/client/models/Fruit.kt"); + TestUtils.assertFileContains(fruitModel, "defaultImpl = Apple::class"); + } + + @Test + public void testTypeInfoDefaultImplsConfigOptionEmitsDefaultImpl() throws IOException { + // typeInfoDefaultImpls config option should produce defaultImpl = Banana::class + // on the Fruit sealed class, overriding the x-jackson-default-impl: Apple in the spec. + File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName("kotlin") + .setInputSpec("src/test/resources/3_0/spring/jackson-default-impl.yaml") + .setOutputDir(output.getAbsolutePath().replace("\\", "/")) + .addAdditionalProperty(CodegenConstants.SERIALIZATION_LIBRARY, "jackson") + .addAdditionalProperty(CodegenConstants.TYPE_INFO_DEFAULT_IMPLS, Map.of("Fruit", "Banana")); + + DefaultGenerator generator = new DefaultGenerator(); + generator.opts(configurator.toClientOptInput()).generate(); + + Path fruitModel = Paths.get(output.getAbsolutePath(), + "src/main/kotlin/org/openapitools/client/models/Fruit.kt"); + TestUtils.assertFileContains(fruitModel, "defaultImpl = Banana::class"); + TestUtils.assertFileNotContains(fruitModel, "defaultImpl = Apple::class"); + } + + @Test + public void testTypeInfoDefaultImplsOverridesXJacksonDefaultImpl() throws IOException { + // When both typeInfoDefaultImpls and x-jackson-default-impl are set for the same schema, + // typeInfoDefaultImpls takes precedence. + File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName("kotlin") + .setInputSpec("src/test/resources/3_0/spring/jackson-default-impl.yaml") + .setOutputDir(output.getAbsolutePath().replace("\\", "/")) + .addAdditionalProperty(CodegenConstants.SERIALIZATION_LIBRARY, "jackson") + // x-jackson-default-impl says Apple; override with Banana via config + .addAdditionalProperty(CodegenConstants.TYPE_INFO_DEFAULT_IMPLS, Map.of("Fruit", "Banana")); + + DefaultGenerator generator = new DefaultGenerator(); + generator.opts(configurator.toClientOptInput()).generate(); + + Path fruitModel = Paths.get(output.getAbsolutePath(), + "src/main/kotlin/org/openapitools/client/models/Fruit.kt"); + TestUtils.assertFileContains(fruitModel, "defaultImpl = Banana::class"); + TestUtils.assertFileNotContains(fruitModel, "defaultImpl = Apple::class"); + } + + @Test + public void testNoDefaultImplWhenNeitherSourceIsSet() throws IOException { + // When neither typeInfoDefaultImpls nor x-jackson-default-impl is set, + // the @JsonTypeInfo annotation must not include defaultImpl. + File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName("kotlin") + .setInputSpec("src/test/resources/3_0/petstore.yaml") + .setOutputDir(output.getAbsolutePath().replace("\\", "/")) + .addAdditionalProperty(CodegenConstants.SERIALIZATION_LIBRARY, "jackson"); + + DefaultGenerator generator = new DefaultGenerator(); + generator.opts(configurator.toClientOptInput()).generate(); + + // No file should contain defaultImpl in a @JsonTypeInfo annotation + File modelsDir = Paths.get(output.getAbsolutePath(), + "src/main/kotlin/org/openapitools/client/models").toFile(); + if (modelsDir.exists()) { + for (File modelFile : modelsDir.listFiles()) { + String content = Files.readString(modelFile.toPath()); + Assert.assertFalse(content.contains("defaultImpl"), + "Expected no 'defaultImpl' in " + modelFile.getName() + " but found it"); + } + } + } } From a5e2a3d64c84e2d4ce29c87db8226ddcc2538b22 Mon Sep 17 00:00:00 2001 From: Jachym Metlicka Date: Wed, 15 Jul 2026 22:53:39 +0200 Subject: [PATCH 12/23] add compiled samples --- .../workflows/samples-java-client-jdk17.yaml | 3 + .github/workflows/samples-jdk17.yaml | 3 + .github/workflows/samples-kotlin-client.yaml | 3 + .../samples-kotlin-server-jdk17.yaml | 3 + .github/workflows/samples-spring-jdk17.yaml | 3 + ...java-camel-oneof-jackson-default-impl.yaml | 21 + .../java-restclient-jackson-default-impl.yaml | 11 + .../kotlin-oneof-jackson-default-impl.yaml | 12 + ...lin-spring-oneof-jackson-default-impl.yaml | 16 + ...pring-boot-oneof-jackson-default-impl.yaml | 14 + .../3_0/jackson-default-impl-oneof.yaml | 152 ++++ .../.github/workflows/maven.yml | 30 + .../.gitignore | 21 + .../.openapi-generator-ignore | 23 + .../.openapi-generator/FILES | 48 + .../.openapi-generator/VERSION | 1 + .../.travis.yml | 22 + .../restclient-jackson-default-impl/README.md | 150 ++++ .../api/openapi.yaml | 166 ++++ .../build.gradle | 134 +++ .../restclient-jackson-default-impl/build.sbt | 1 + .../docs/Animal.md | 10 + .../docs/Apple.md | 18 + .../docs/Banana.md | 18 + .../docs/Beverage.md | 10 + .../docs/Cat.md | 17 + .../docs/DefaultApi.md | 203 +++++ .../docs/Dog.md | 17 + .../docs/Fruit.md | 10 + .../docs/Soda.md | 18 + .../docs/Water.md | 18 + .../git_push.sh | 57 ++ .../gradle.properties | 6 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43453 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 + .../restclient-jackson-default-impl/gradlew | 249 ++++++ .../gradlew.bat | 92 ++ .../restclient-jackson-default-impl/pom.xml | 275 ++++++ .../settings.gradle | 1 + .../src/main/AndroidManifest.xml | 3 + .../org/openapitools/client/ApiClient.java | 838 ++++++++++++++++++ .../client/JavaTimeFormatter.java | 68 ++ .../client/RFC3339DateFormat.java | 57 ++ .../client/RFC3339InstantDeserializer.java | 100 +++ .../client/RFC3339JavaTimeModule.java | 39 + .../client/ServerConfiguration.java | 72 ++ .../openapitools/client/ServerVariable.java | 37 + .../org/openapitools/client/StringUtil.java | 83 ++ .../openapitools/client/api/DefaultApi.java | 273 ++++++ .../openapitools/client/auth/ApiKeyAuth.java | 75 ++ .../client/auth/Authentication.java | 29 + .../client/auth/HttpBasicAuth.java | 51 ++ .../client/auth/HttpBearerAuth.java | 69 ++ .../org/openapitools/client/model/Animal.java | 41 + .../org/openapitools/client/model/Apple.java | 138 +++ .../org/openapitools/client/model/Banana.java | 138 +++ .../openapitools/client/model/Beverage.java | 46 + .../org/openapitools/client/model/Cat.java | 103 +++ .../org/openapitools/client/model/Dog.java | 103 +++ .../org/openapitools/client/model/Fruit.java | 46 + .../org/openapitools/client/model/Soda.java | 138 +++ .../org/openapitools/client/model/Water.java | 138 +++ .../client/api/DefaultApiTest.java | 76 ++ .../openapitools/client/model/AnimalTest.java | 34 + .../openapitools/client/model/AppleTest.java | 50 ++ .../openapitools/client/model/BananaTest.java | 50 ++ .../client/model/BeverageTest.java | 34 + .../openapitools/client/model/CatTest.java | 47 + .../openapitools/client/model/DogTest.java | 47 + .../openapitools/client/model/FruitTest.java | 34 + .../openapitools/client/model/SodaTest.java | 50 ++ .../openapitools/client/model/WaterTest.java | 50 ++ .../.openapi-generator-ignore | 23 + .../.openapi-generator/FILES | 31 + .../.openapi-generator/VERSION | 1 + .../README.md | 72 ++ .../build.gradle | 81 ++ ...n-oneof-jackson-default-impl.kotlin_module | Bin 0 -> 24 bytes .../openapitools/client/apis/DefaultApi.class | Bin 0 -> 1694 bytes .../infrastructure/ApiClient$Companion.class | Bin 0 -> 1941 bytes .../client/infrastructure/ApiClient.class | Bin 0 -> 13997 bytes .../CollectionFormats$CSVParams.class | Bin 0 -> 2336 bytes .../CollectionFormats$PIPESParams.class | Bin 0 -> 2045 bytes .../CollectionFormats$SPACEParams.class | Bin 0 -> 906 bytes .../CollectionFormats$SSVParams.class | Bin 0 -> 2041 bytes .../CollectionFormats$TSVParams.class | Bin 0 -> 2039 bytes .../infrastructure/CollectionFormats.class | Bin 0 -> 1100 bytes .../client/infrastructure/Serializer.class | Bin 0 -> 2480 bytes .../openapitools/client/models/Animal.class | Bin 0 -> 3346 bytes .../openapitools/client/models/Apple.class | Bin 0 -> 3374 bytes .../openapitools/client/models/Banana.class | Bin 0 -> 3384 bytes .../openapitools/client/models/Beverage.class | Bin 0 -> 1891 bytes .../org/openapitools/client/models/Cat.class | Bin 0 -> 2741 bytes .../org/openapitools/client/models/Dog.class | Bin 0 -> 2729 bytes .../openapitools/client/models/Fruit.class | Bin 0 -> 1826 bytes .../org/openapitools/client/models/Soda.class | Bin 0 -> 3391 bytes .../openapitools/client/models/Water.class | Bin 0 -> 3395 bytes .../caches-jvm/inputs/source-to-output.tab | Bin 0 -> 4096 bytes .../inputs/source-to-output.tab.keystream | Bin 0 -> 4096 bytes .../inputs/source-to-output.tab.keystream.len | Bin 0 -> 8 bytes .../inputs/source-to-output.tab.len | Bin 0 -> 8 bytes .../inputs/source-to-output.tab.values.at | Bin 0 -> 5154 bytes .../caches-jvm/inputs/source-to-output.tab_i | Bin 0 -> 32768 bytes .../inputs/source-to-output.tab_i.len | Bin 0 -> 8 bytes .../jvm/kotlin/class-attributes.tab | Bin 0 -> 4096 bytes .../jvm/kotlin/class-attributes.tab.keystream | Bin 0 -> 4096 bytes .../kotlin/class-attributes.tab.keystream.len | Bin 0 -> 8 bytes .../jvm/kotlin/class-attributes.tab.len | Bin 0 -> 8 bytes .../jvm/kotlin/class-attributes.tab.values.at | Bin 0 -> 106 bytes .../jvm/kotlin/class-attributes.tab_i | Bin 0 -> 32768 bytes .../jvm/kotlin/class-attributes.tab_i.len | Bin 0 -> 8 bytes .../jvm/kotlin/class-fq-name-to-source.tab | Bin 0 -> 4096 bytes .../class-fq-name-to-source.tab.keystream | Bin 0 -> 4096 bytes .../class-fq-name-to-source.tab.keystream.len | Bin 0 -> 8 bytes .../kotlin/class-fq-name-to-source.tab.len | Bin 0 -> 8 bytes .../class-fq-name-to-source.tab.values.at | Bin 0 -> 2573 bytes .../jvm/kotlin/class-fq-name-to-source.tab_i | Bin 0 -> 32768 bytes .../kotlin/class-fq-name-to-source.tab_i.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/constants.tab | Bin 0 -> 4096 bytes .../jvm/kotlin/constants.tab.keystream | Bin 0 -> 4096 bytes .../jvm/kotlin/constants.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/constants.tab.len | Bin 0 -> 8 bytes .../jvm/kotlin/constants.tab.values.at | Bin 0 -> 123 bytes .../caches-jvm/jvm/kotlin/constants.tab_i | Bin 0 -> 32768 bytes .../caches-jvm/jvm/kotlin/constants.tab_i.len | Bin 0 -> 8 bytes .../jvm/kotlin/internal-name-to-source.tab | Bin 0 -> 4096 bytes .../internal-name-to-source.tab.keystream | Bin 0 -> 4096 bytes .../internal-name-to-source.tab.keystream.len | Bin 0 -> 8 bytes .../kotlin/internal-name-to-source.tab.len | Bin 0 -> 8 bytes .../internal-name-to-source.tab.values.at | Bin 0 -> 2573 bytes .../jvm/kotlin/internal-name-to-source.tab_i | Bin 0 -> 32768 bytes .../kotlin/internal-name-to-source.tab_i.len | Bin 0 -> 8 bytes .../cacheable/caches-jvm/jvm/kotlin/proto.tab | Bin 0 -> 4096 bytes .../caches-jvm/jvm/kotlin/proto.tab.keystream | Bin 0 -> 4096 bytes .../jvm/kotlin/proto.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/proto.tab.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/proto.tab.values.at | Bin 0 -> 9927 bytes .../caches-jvm/jvm/kotlin/proto.tab_i | Bin 0 -> 32768 bytes .../caches-jvm/jvm/kotlin/proto.tab_i.len | Bin 0 -> 8 bytes .../jvm/kotlin/source-to-classes.tab | Bin 0 -> 4096 bytes .../kotlin/source-to-classes.tab.keystream | Bin 0 -> 4096 bytes .../source-to-classes.tab.keystream.len | Bin 0 -> 8 bytes .../jvm/kotlin/source-to-classes.tab.len | Bin 0 -> 8 bytes .../kotlin/source-to-classes.tab.values.at | Bin 0 -> 2419 bytes .../jvm/kotlin/source-to-classes.tab_i | Bin 0 -> 32768 bytes .../jvm/kotlin/source-to-classes.tab_i.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/subtypes.tab | Bin 0 -> 4096 bytes .../jvm/kotlin/subtypes.tab.keystream | Bin 0 -> 4096 bytes .../jvm/kotlin/subtypes.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/subtypes.tab.len | Bin 0 -> 8 bytes .../jvm/kotlin/subtypes.tab.values.at | Bin 0 -> 326 bytes .../caches-jvm/jvm/kotlin/subtypes.tab_i | Bin 0 -> 32768 bytes .../caches-jvm/jvm/kotlin/subtypes.tab_i.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/supertypes.tab | Bin 0 -> 4096 bytes .../jvm/kotlin/supertypes.tab.keystream | Bin 0 -> 4096 bytes .../jvm/kotlin/supertypes.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/jvm/kotlin/supertypes.tab.len | Bin 0 -> 8 bytes .../jvm/kotlin/supertypes.tab.values.at | Bin 0 -> 325 bytes .../caches-jvm/jvm/kotlin/supertypes.tab_i | Bin 0 -> 32768 bytes .../jvm/kotlin/supertypes.tab_i.len | Bin 0 -> 8 bytes .../cacheable/caches-jvm/lookups/counters.tab | 2 + .../caches-jvm/lookups/file-to-id.tab | Bin 0 -> 4096 bytes .../lookups/file-to-id.tab.keystream | Bin 0 -> 4096 bytes .../lookups/file-to-id.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/lookups/file-to-id.tab.len | Bin 0 -> 8 bytes .../lookups/file-to-id.tab.values.at | Bin 0 -> 133 bytes .../caches-jvm/lookups/file-to-id.tab_i | Bin 0 -> 32768 bytes .../caches-jvm/lookups/file-to-id.tab_i.len | Bin 0 -> 8 bytes .../caches-jvm/lookups/id-to-file.tab | Bin 0 -> 4096 bytes .../lookups/id-to-file.tab.keystream | Bin 0 -> 4096 bytes .../lookups/id-to-file.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/lookups/id-to-file.tab.len | Bin 0 -> 8 bytes .../lookups/id-to-file.tab.values.at | Bin 0 -> 923 bytes .../caches-jvm/lookups/id-to-file.tab_i | Bin 0 -> 32768 bytes .../caches-jvm/lookups/id-to-file.tab_i.len | Bin 0 -> 8 bytes .../cacheable/caches-jvm/lookups/lookups.tab | Bin 0 -> 4096 bytes .../caches-jvm/lookups/lookups.tab.keystream | Bin 0 -> 20480 bytes .../lookups/lookups.tab.keystream.len | Bin 0 -> 8 bytes .../caches-jvm/lookups/lookups.tab.len | Bin 0 -> 8 bytes .../caches-jvm/lookups/lookups.tab.values.at | Bin 0 -> 2185 bytes .../caches-jvm/lookups/lookups.tab_i | Bin 0 -> 32768 bytes .../caches-jvm/lookups/lookups.tab_i.len | Bin 0 -> 8 bytes .../compileKotlin/cacheable/last-build.bin | Bin 0 -> 18 bytes .../shrunk-classpath-snapshot.bin | Bin 0 -> 31307 bytes .../reports/problems/problems-report.html | 663 ++++++++++++++ .../docs/Animal.md | 11 + .../docs/Apple.md | 11 + .../docs/Banana.md | 11 + .../docs/Beverage.md | 12 + .../docs/Cat.md | 10 + .../docs/DefaultApi.md | 116 +++ .../docs/Dog.md | 10 + .../docs/Fruit.md | 12 + .../docs/Soda.md | 11 + .../docs/Water.md | 11 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43504 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 + .../kotlin-oneof-jackson-default-impl/gradlew | 252 ++++++ .../gradlew.bat | 94 ++ .../settings.gradle | 1 + .../openapitools/client/apis/DefaultApi.kt | 53 ++ .../client/infrastructure/ApiClient.kt | 115 +++ .../infrastructure/CollectionFormats.kt | 56 ++ .../client/infrastructure/ResponseExt.kt | 4 + .../client/infrastructure/Serializer.kt | 17 + .../org/openapitools/client/models/Animal.kt | 54 ++ .../org/openapitools/client/models/Apple.kt | 52 ++ .../org/openapitools/client/models/Banana.kt | 52 ++ .../openapitools/client/models/Beverage.kt | 62 ++ .../org/openapitools/client/models/Cat.kt | 47 + .../org/openapitools/client/models/Dog.kt | 47 + .../org/openapitools/client/models/Fruit.kt | 62 ++ .../org/openapitools/client/models/Soda.kt | 52 ++ .../org/openapitools/client/models/Water.kt | 52 ++ .../client/apis/DefaultApiTest.kt | 64 ++ .../openapitools/client/models/AnimalTest.kt | 51 ++ .../openapitools/client/models/AppleTest.kt | 43 + .../openapitools/client/models/BananaTest.kt | 43 + .../client/models/BeverageTest.kt | 57 ++ .../org/openapitools/client/models/CatTest.kt | 43 + .../org/openapitools/client/models/DogTest.kt | 43 + .../openapitools/client/models/FruitTest.kt | 57 ++ .../openapitools/client/models/SodaTest.kt | 43 + .../openapitools/client/models/WaterTest.kt | 43 + .../.openapi-generator-ignore | 23 + .../.openapi-generator/FILES | 22 + .../.openapi-generator/VERSION | 1 + .../README.md | 21 + .../pom.xml | 78 ++ .../OpenApiGeneratorApplication.java | 30 + .../org/openapitools/RFC3339DateFormat.java | 38 + .../java/org/openapitools/api/AnimalsApi.java | 83 ++ .../api/AnimalsApiController.java | 46 + .../java/org/openapitools/api/ApiUtil.java | 21 + .../org/openapitools/api/BeveragesApi.java | 83 ++ .../api/BeveragesApiController.java | 46 + .../java/org/openapitools/api/FruitsApi.java | 83 ++ .../openapitools/api/FruitsApiController.java | 46 + .../configuration/HomeController.java | 20 + .../configuration/SpringDocConfiguration.java | 27 + .../java/org/openapitools/model/Animal.java | 32 + .../java/org/openapitools/model/Apple.java | 123 +++ .../java/org/openapitools/model/Banana.java | 123 +++ .../java/org/openapitools/model/Beverage.java | 38 + .../main/java/org/openapitools/model/Cat.java | 84 ++ .../main/java/org/openapitools/model/Dog.java | 84 ++ .../java/org/openapitools/model/Fruit.java | 38 + .../java/org/openapitools/model/Soda.java | 123 +++ .../java/org/openapitools/model/Water.java | 123 +++ .../src/main/resources/application.properties | 3 + .../src/main/resources/openapi.yaml | 171 ++++ .../OpenApiGeneratorApplicationTests.java | 13 + .../.openapi-generator-ignore | 23 + .../.openapi-generator/FILES | 25 + .../.openapi-generator/VERSION | 1 + .../README.md | 7 + .../pom.xml | 180 ++++ .../OpenApiGeneratorApplication.java | 30 + .../org/openapitools/RFC3339DateFormat.java | 38 + .../org/openapitools/RestConfiguration.java | 26 + .../ValidationErrorProcessor.java | 30 + .../java/org/openapitools/api/AnimalsApi.java | 46 + .../api/AnimalsApiRoutesImpl.java | 32 + .../openapitools/api/AnimalsApiValidator.java | 28 + .../org/openapitools/api/BeveragesApi.java | 46 + .../api/BeveragesApiRoutesImpl.java | 32 + .../api/BeveragesApiValidator.java | 28 + .../java/org/openapitools/api/FruitsApi.java | 46 + .../openapitools/api/FruitsApiRoutesImpl.java | 32 + .../openapitools/api/FruitsApiValidator.java | 28 + .../java/org/openapitools/model/Animal.java | 39 + .../java/org/openapitools/model/Apple.java | 129 +++ .../java/org/openapitools/model/Banana.java | 129 +++ .../java/org/openapitools/model/Beverage.java | 45 + .../main/java/org/openapitools/model/Cat.java | 90 ++ .../main/java/org/openapitools/model/Dog.java | 90 ++ .../java/org/openapitools/model/Fruit.java | 45 + .../java/org/openapitools/model/Soda.java | 129 +++ .../java/org/openapitools/model/Water.java | 129 +++ .../src/main/resources/application.properties | 8 + .../org/openapitools/api/AnimalsApiTest.java | 53 ++ .../openapitools/api/BeveragesApiTest.java | 53 ++ .../org/openapitools/api/FruitsApiTest.java | 53 ++ .../.openapi-generator-ignore | 23 + .../.openapi-generator/FILES | 22 + .../.openapi-generator/VERSION | 1 + .../README.md | 21 + .../build.gradle.kts | 49 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43453 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 + .../gradlew | 249 ++++++ .../gradlew.bat | 92 ++ .../pom.xml | 158 ++++ .../settings.gradle | 15 + .../kotlin/org/openapitools/api/AnimalsApi.kt | 53 ++ .../kotlin/org/openapitools/api/ApiUtil.kt | 19 + .../org/openapitools/api/BeveragesApi.kt | 53 ++ .../kotlin/org/openapitools/api/Exceptions.kt | 30 + .../kotlin/org/openapitools/api/FruitsApi.kt | 53 ++ .../kotlin/org/openapitools/model/Animal.kt | 34 + .../kotlin/org/openapitools/model/Apple.kt | 38 + .../kotlin/org/openapitools/model/Banana.kt | 38 + .../kotlin/org/openapitools/model/Beverage.kt | 38 + .../main/kotlin/org/openapitools/model/Cat.kt | 31 + .../main/kotlin/org/openapitools/model/Dog.kt | 31 + .../kotlin/org/openapitools/model/Fruit.kt | 38 + .../kotlin/org/openapitools/model/Soda.kt | 38 + .../kotlin/org/openapitools/model/Water.kt | 38 + 308 files changed, 12136 insertions(+) create mode 100644 bin/configs/java-camel-oneof-jackson-default-impl.yaml create mode 100644 bin/configs/java-restclient-jackson-default-impl.yaml create mode 100644 bin/configs/kotlin-oneof-jackson-default-impl.yaml create mode 100644 bin/configs/kotlin-spring-oneof-jackson-default-impl.yaml create mode 100644 bin/configs/spring-boot-oneof-jackson-default-impl.yaml create mode 100644 modules/openapi-generator/src/test/resources/3_0/jackson-default-impl-oneof.yaml create mode 100644 samples/client/others/java/restclient-jackson-default-impl/.github/workflows/maven.yml create mode 100644 samples/client/others/java/restclient-jackson-default-impl/.gitignore create mode 100644 samples/client/others/java/restclient-jackson-default-impl/.openapi-generator-ignore create mode 100644 samples/client/others/java/restclient-jackson-default-impl/.openapi-generator/FILES create mode 100644 samples/client/others/java/restclient-jackson-default-impl/.openapi-generator/VERSION create mode 100644 samples/client/others/java/restclient-jackson-default-impl/.travis.yml create mode 100644 samples/client/others/java/restclient-jackson-default-impl/README.md create mode 100644 samples/client/others/java/restclient-jackson-default-impl/api/openapi.yaml create mode 100644 samples/client/others/java/restclient-jackson-default-impl/build.gradle create mode 100644 samples/client/others/java/restclient-jackson-default-impl/build.sbt create mode 100644 samples/client/others/java/restclient-jackson-default-impl/docs/Animal.md create mode 100644 samples/client/others/java/restclient-jackson-default-impl/docs/Apple.md create mode 100644 samples/client/others/java/restclient-jackson-default-impl/docs/Banana.md create mode 100644 samples/client/others/java/restclient-jackson-default-impl/docs/Beverage.md create mode 100644 samples/client/others/java/restclient-jackson-default-impl/docs/Cat.md create mode 100644 samples/client/others/java/restclient-jackson-default-impl/docs/DefaultApi.md create mode 100644 samples/client/others/java/restclient-jackson-default-impl/docs/Dog.md create mode 100644 samples/client/others/java/restclient-jackson-default-impl/docs/Fruit.md create mode 100644 samples/client/others/java/restclient-jackson-default-impl/docs/Soda.md create mode 100644 samples/client/others/java/restclient-jackson-default-impl/docs/Water.md create mode 100644 samples/client/others/java/restclient-jackson-default-impl/git_push.sh create mode 100644 samples/client/others/java/restclient-jackson-default-impl/gradle.properties create mode 100644 samples/client/others/java/restclient-jackson-default-impl/gradle/wrapper/gradle-wrapper.jar create mode 100644 samples/client/others/java/restclient-jackson-default-impl/gradle/wrapper/gradle-wrapper.properties create mode 100644 samples/client/others/java/restclient-jackson-default-impl/gradlew create mode 100644 samples/client/others/java/restclient-jackson-default-impl/gradlew.bat create mode 100644 samples/client/others/java/restclient-jackson-default-impl/pom.xml create mode 100644 samples/client/others/java/restclient-jackson-default-impl/settings.gradle create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/main/AndroidManifest.xml create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ApiClient.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/JavaTimeFormatter.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/RFC3339DateFormat.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/RFC3339InstantDeserializer.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/RFC3339JavaTimeModule.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ServerConfiguration.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ServerVariable.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/StringUtil.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/api/DefaultApi.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/ApiKeyAuth.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/Authentication.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/HttpBearerAuth.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Animal.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Apple.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Banana.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Beverage.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Cat.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Dog.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Fruit.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Soda.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Water.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/api/DefaultApiTest.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/AnimalTest.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/AppleTest.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/BananaTest.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/BeverageTest.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/CatTest.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/DogTest.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/FruitTest.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/SodaTest.java create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/WaterTest.java create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/.openapi-generator-ignore create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/.openapi-generator/FILES create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/.openapi-generator/VERSION create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/README.md create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build.gradle create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/META-INF/kotlin-oneof-jackson-default-impl.kotlin_module create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/apis/DefaultApi.class create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApiClient$Companion.class create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApiClient.class create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/infrastructure/CollectionFormats$CSVParams.class create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/infrastructure/CollectionFormats$PIPESParams.class create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/infrastructure/CollectionFormats$SPACEParams.class create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/infrastructure/CollectionFormats$SSVParams.class create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/infrastructure/CollectionFormats$TSVParams.class create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/infrastructure/CollectionFormats.class create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/infrastructure/Serializer.class create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/models/Animal.class create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/models/Apple.class create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/models/Banana.class create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/models/Beverage.class create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/models/Cat.class create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/models/Dog.class create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/models/Fruit.class create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/models/Soda.class create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/models/Water.class create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/counters.tab create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/last-build.bin create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/reports/problems/problems-report.html create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/docs/Animal.md create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/docs/Apple.md create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/docs/Banana.md create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/docs/Beverage.md create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/docs/Cat.md create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/docs/DefaultApi.md create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/docs/Dog.md create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/docs/Fruit.md create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/docs/Soda.md create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/docs/Water.md create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/gradle/wrapper/gradle-wrapper.jar create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/gradle/wrapper/gradle-wrapper.properties create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/gradlew create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/gradlew.bat create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/settings.gradle create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/apis/DefaultApi.kt create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/infrastructure/CollectionFormats.kt create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExt.kt create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Animal.kt create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Apple.kt create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Banana.kt create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Beverage.kt create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Cat.kt create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Dog.kt create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Fruit.kt create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Soda.kt create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Water.kt create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/apis/DefaultApiTest.kt create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/AnimalTest.kt create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/AppleTest.kt create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/BananaTest.kt create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/BeverageTest.kt create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/CatTest.kt create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/DogTest.kt create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/FruitTest.kt create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/SodaTest.kt create mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/WaterTest.kt create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/.openapi-generator-ignore create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/.openapi-generator/FILES create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/.openapi-generator/VERSION create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/README.md create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/pom.xml create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/OpenApiGeneratorApplication.java create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/RFC3339DateFormat.java create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApi.java create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApiController.java create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/ApiUtil.java create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApi.java create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApiController.java create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApi.java create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApiController.java create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/configuration/HomeController.java create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/configuration/SpringDocConfiguration.java create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/resources/application.properties create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/resources/openapi.yaml create mode 100644 samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/test/java/org/openapitools/OpenApiGeneratorApplicationTests.java create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/.openapi-generator-ignore create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/.openapi-generator/FILES create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/.openapi-generator/VERSION create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/README.md create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/pom.xml create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/OpenApiGeneratorApplication.java create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/RFC3339DateFormat.java create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/RestConfiguration.java create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/ValidationErrorProcessor.java create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApi.java create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApiRoutesImpl.java create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApiValidator.java create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApi.java create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApiRoutesImpl.java create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApiValidator.java create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApi.java create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApiRoutesImpl.java create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApiValidator.java create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/resources/application.properties create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/test/java/org/openapitools/api/AnimalsApiTest.java create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/test/java/org/openapitools/api/BeveragesApiTest.java create mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/test/java/org/openapitools/api/FruitsApiTest.java create mode 100644 samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/.openapi-generator-ignore create mode 100644 samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/.openapi-generator/FILES create mode 100644 samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/.openapi-generator/VERSION create mode 100644 samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/README.md create mode 100644 samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/build.gradle.kts create mode 100644 samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/gradle/wrapper/gradle-wrapper.jar create mode 100644 samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/gradle/wrapper/gradle-wrapper.properties create mode 100644 samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/gradlew create mode 100644 samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/gradlew.bat create mode 100644 samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/pom.xml create mode 100644 samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/settings.gradle create mode 100644 samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/AnimalsApi.kt create mode 100644 samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/ApiUtil.kt create mode 100644 samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/BeveragesApi.kt create mode 100644 samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/Exceptions.kt create mode 100644 samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/FruitsApi.kt create mode 100644 samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Animal.kt create mode 100644 samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Apple.kt create mode 100644 samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Banana.kt create mode 100644 samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Beverage.kt create mode 100644 samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Cat.kt create mode 100644 samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Dog.kt create mode 100644 samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Fruit.kt create mode 100644 samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Soda.kt create mode 100644 samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Water.kt diff --git a/.github/workflows/samples-java-client-jdk17.yaml b/.github/workflows/samples-java-client-jdk17.yaml index 1baddcb92d72..3ca88ba1f3ca 100644 --- a/.github/workflows/samples-java-client-jdk17.yaml +++ b/.github/workflows/samples-java-client-jdk17.yaml @@ -16,6 +16,7 @@ on: - samples/client/petstore/java/webclient-useSingleRequestParameter/** - samples/client/others/java/restclient-enum-in-multipart/** - samples/client/others/java/restclient-sealedInterface/** + - samples/client/others/java/restclient-jackson-default-impl/** - samples/client/others/java/restclient-useAbstractionForFiles/** - samples/client/petstore/java/jersey3-oneOf/** - samples/client/petstore/java/jersey3-jackson3/** @@ -35,6 +36,7 @@ on: - samples/client/petstore/java/webclient-useSingleRequestParameter/** - samples/client/others/java/restclient-enum-in-multipart/** - samples/client/others/java/restclient-sealedInterface/** + - samples/client/others/java/restclient-jackson-default-impl/** - samples/client/others/java/restclient-useAbstractionForFiles/** - samples/client/petstore/java/jersey3-oneOf/** - samples/client/petstore/java/jersey3-jackson3/** @@ -69,6 +71,7 @@ jobs: - samples/client/petstore/java/webclient-useSingleRequestParameter - samples/client/others/java/restclient-enum-in-multipart - samples/client/others/java/restclient-sealedInterface + - samples/client/others/java/restclient-jackson-default-impl - samples/client/others/java/restclient-useAbstractionForFiles - samples/client/petstore/java/jersey3-oneOf - samples/client/petstore/java/jersey3-jackson3 diff --git a/.github/workflows/samples-jdk17.yaml b/.github/workflows/samples-jdk17.yaml index e4ea6b9d299c..049ae1bb58d3 100644 --- a/.github/workflows/samples-jdk17.yaml +++ b/.github/workflows/samples-jdk17.yaml @@ -20,6 +20,7 @@ on: - samples/openapi3/server/petstore/springboot-3-include-http-request-context/** - samples/server/petstore/springboot-x-implements-skip/** - samples/server/petstore/java-camel/** + - samples/server/petstore/java-camel-oneof-jackson-default-impl/** - samples/server/petstore/java-helidon-server/v3/mp/** - samples/server/petstore/java-helidon-server/v3/se/** - samples/server/petstore/jaxrs-spec-sealed/** @@ -43,6 +44,7 @@ on: - samples/openapi3/server/petstore/springboot-3-include-http-request-context/** - samples/server/petstore/springboot-x-implements-skip/** - samples/server/petstore/java-camel/** + - samples/server/petstore/java-camel-oneof-jackson-default-impl/** - samples/server/petstore/java-helidon-server/v3/mp/** - samples/server/petstore/java-helidon-server/v3/se/** - samples/server/petstore/jaxrs-spec-sealed/** @@ -72,6 +74,7 @@ jobs: - samples/openapi3/server/petstore/springboot-3-include-http-request-context - samples/server/petstore/springboot-x-implements-skip - samples/server/petstore/java-camel/ + - samples/server/petstore/java-camel-oneof-jackson-default-impl - samples/server/petstore/java-helidon-server/v3/mp/ - samples/server/petstore/java-helidon-server/v3/se - samples/server/petstore/jaxrs-spec-sealed diff --git a/.github/workflows/samples-kotlin-client.yaml b/.github/workflows/samples-kotlin-client.yaml index 06007c8d1ffd..4c3cd686c8f0 100644 --- a/.github/workflows/samples-kotlin-client.yaml +++ b/.github/workflows/samples-kotlin-client.yaml @@ -9,6 +9,7 @@ on: - samples/client/others/kotlin-jvm-spring-3-restclient-nullable-return/** - samples/client/others/kotlin-oneOf-anyOf-kotlinx-serialization*/** - samples/client/others/kotlin-oneOf-discriminator-kotlinx-serialization*/** + - samples/client/others/kotlin-oneof-jackson-default-impl/** pull_request: paths: - 'samples/client/petstore/kotlin*/**' @@ -17,6 +18,7 @@ on: - samples/client/others/kotlin-jvm-spring-3-restclient-nullable-return/** - samples/client/others/kotlin-oneOf-anyOf-kotlinx-serialization*/** - samples/client/others/kotlin-oneOf-discriminator-kotlinx-serialization*/** + - samples/client/others/kotlin-oneof-jackson-default-impl/** jobs: build: @@ -80,6 +82,7 @@ jobs: - samples/client/others/kotlin-integer-enum - samples/client/petstore/kotlin-allOf-discriminator-kotlinx-serialization - samples/client/others/kotlin-oneOf-discriminator-kotlinx-serialization + - samples/client/others/kotlin-oneof-jackson-default-impl - samples/client/others/kotlin-oneOf-anyOf-kotlinx-serialization - samples/client/others/kotlin-oneOf-anyOf-kotlinx-serialization-nonPublicApi - samples/client/others/kotlin-oneOf-anyOf-kotlinx-serialization-explicitApi diff --git a/.github/workflows/samples-kotlin-server-jdk17.yaml b/.github/workflows/samples-kotlin-server-jdk17.yaml index 954dc41f325b..1f1d5f5c0ff0 100644 --- a/.github/workflows/samples-kotlin-server-jdk17.yaml +++ b/.github/workflows/samples-kotlin-server-jdk17.yaml @@ -14,6 +14,7 @@ on: - 'samples/server/petstore/kotlin-spring-sealed-interfaces/**' - 'samples/server/petstore/kotlin-springboot-sort-validation/**' - 'samples/server/petstore/kotlin-springboot-paged-model/**' + - 'samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/**' - 'samples/server/petstore/kotlin-server/ktor-delegate-pattern/generated/**' # comment out due to gradle build failure # - samples/server/petstore/kotlin-spring-default/** @@ -30,6 +31,7 @@ on: - 'samples/server/petstore/kotlin-spring-sealed-interfaces/**' - 'samples/server/petstore/kotlin-springboot-sort-validation/**' - 'samples/server/petstore/kotlin-springboot-paged-model/**' + - 'samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/**' - 'samples/server/petstore/kotlin-server/ktor-delegate-pattern/generated/**' # comment out due to gradle build failure # - samples/server/petstore/kotlin-spring-default/** @@ -75,6 +77,7 @@ jobs: - samples/server/petstore/kotlin-spring-declarative-interface-reactive-reactor-wrapped - samples/server/petstore/kotlin-spring-declarative-interface-wrapped - samples/server/petstore/kotlin-spring-sealed-interfaces + - samples/server/petstore/kotlin-spring-oneof-jackson-default-impl - samples/server/petstore/kotlin-springboot-sort-validation - samples/server/petstore/kotlin-springboot-paged-model # comment out due to gradle build failure diff --git a/.github/workflows/samples-spring-jdk17.yaml b/.github/workflows/samples-spring-jdk17.yaml index 1eb6fd318b51..5b58d8f9b0bf 100644 --- a/.github/workflows/samples-spring-jdk17.yaml +++ b/.github/workflows/samples-spring-jdk17.yaml @@ -18,6 +18,7 @@ on: - samples/server/petstore/springboot-paged-model/** - samples/openapi3/server/petstore/spring-boot-oneof-sealed/** - samples/openapi3/server/petstore/spring-boot-oneof-interface/** + - samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/** - samples/client/petstore/spring-http-interface-oauth/** pull_request: paths: @@ -36,6 +37,7 @@ on: - samples/server/petstore/springboot-paged-model/** - samples/openapi3/server/petstore/spring-boot-oneof-sealed/** - samples/openapi3/server/petstore/spring-boot-oneof-interface/** + - samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/** - samples/client/petstore/spring-http-interface-oauth/** jobs: build: @@ -62,6 +64,7 @@ jobs: - samples/server/petstore/springboot-paged-model - samples/openapi3/server/petstore/spring-boot-oneof-sealed - samples/openapi3/server/petstore/spring-boot-oneof-interface + - samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl - samples/client/petstore/spring-http-interface-oauth steps: - uses: actions/checkout@v7 diff --git a/bin/configs/java-camel-oneof-jackson-default-impl.yaml b/bin/configs/java-camel-oneof-jackson-default-impl.yaml new file mode 100644 index 000000000000..84bb2466c3f8 --- /dev/null +++ b/bin/configs/java-camel-oneof-jackson-default-impl.yaml @@ -0,0 +1,21 @@ +generatorName: java-camel +outputDir: samples/server/petstore/java-camel-oneof-jackson-default-impl +inputSpec: modules/openapi-generator/src/test/resources/3_0/jackson-default-impl-oneof.yaml +templateDir: modules/openapi-generator/src/main/resources/java-camel-server +additionalProperties: + hideGenerationTimestamp: true + artifactId: java-camel-oneof-jackson-default-impl + camelRestBindingMode: "auto" + performBeanValidation: true + camelDataformatProperties: "json.out.disableFeatures=WRITE_DATES_AS_TIMESTAMPS" + withXml: true + jackson: true + camelUseDefaultValidationErrorProcessor: true + camelRestClientRequestValidation: true + camelSecurityDefinitions: true + implicitHeaders: true + useSpringBoot3: false + useOneOfInterfaces: "true" + useDeductionForOneOfInterfaces: "true" + typeInfoDefaultImpls: + Fruit: Apple diff --git a/bin/configs/java-restclient-jackson-default-impl.yaml b/bin/configs/java-restclient-jackson-default-impl.yaml new file mode 100644 index 000000000000..a5a9d92ae88e --- /dev/null +++ b/bin/configs/java-restclient-jackson-default-impl.yaml @@ -0,0 +1,11 @@ +generatorName: java +outputDir: samples/client/others/java/restclient-jackson-default-impl +library: restclient +inputSpec: modules/openapi-generator/src/test/resources/3_0/jackson-default-impl-oneof.yaml +templateDir: modules/openapi-generator/src/main/resources/Java +additionalProperties: + artifactId: restclient-jackson-default-impl + hideGenerationTimestamp: "true" + useOneOfInterfaces: "true" + typeInfoDefaultImpls: + Fruit: Apple diff --git a/bin/configs/kotlin-oneof-jackson-default-impl.yaml b/bin/configs/kotlin-oneof-jackson-default-impl.yaml new file mode 100644 index 000000000000..855031973dbf --- /dev/null +++ b/bin/configs/kotlin-oneof-jackson-default-impl.yaml @@ -0,0 +1,12 @@ +generatorName: kotlin +outputDir: samples/client/others/kotlin-oneof-jackson-default-impl +inputSpec: modules/openapi-generator/src/test/resources/3_0/jackson-default-impl-oneof.yaml +templateDir: modules/openapi-generator/src/main/resources/kotlin-client +additionalProperties: + artifactId: kotlin-oneof-jackson-default-impl + serializationLibrary: jackson + library: jvm-retrofit2 + enumUnknownDefaultCase: true + useOneOfInterfaces: "true" + typeInfoDefaultImpls: + Fruit: Apple diff --git a/bin/configs/kotlin-spring-oneof-jackson-default-impl.yaml b/bin/configs/kotlin-spring-oneof-jackson-default-impl.yaml new file mode 100644 index 000000000000..6feadf22d89b --- /dev/null +++ b/bin/configs/kotlin-spring-oneof-jackson-default-impl.yaml @@ -0,0 +1,16 @@ +generatorName: kotlin-spring +outputDir: samples/server/petstore/kotlin-spring-oneof-jackson-default-impl +library: spring-boot +inputSpec: modules/openapi-generator/src/test/resources/3_0/jackson-default-impl-oneof.yaml +templateDir: modules/openapi-generator/src/main/resources/kotlin-spring +additionalProperties: + artifactId: kotlin-spring-oneof-jackson-default-impl + documentationProvider: none + annotationLibrary: none + useSwaggerUI: "false" + interfaceOnly: "true" + useSpringBoot3: "true" + useOneOfInterfaces: "true" + useDeductionForOneOfInterfaces: "true" + typeInfoDefaultImpls: + Fruit: Apple diff --git a/bin/configs/spring-boot-oneof-jackson-default-impl.yaml b/bin/configs/spring-boot-oneof-jackson-default-impl.yaml new file mode 100644 index 000000000000..34420b3c0c53 --- /dev/null +++ b/bin/configs/spring-boot-oneof-jackson-default-impl.yaml @@ -0,0 +1,14 @@ +generatorName: spring +outputDir: samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl +inputSpec: modules/openapi-generator/src/test/resources/3_0/jackson-default-impl-oneof.yaml +templateDir: modules/openapi-generator/src/main/resources/JavaSpring +additionalProperties: + groupId: org.openapitools.openapi3 + documentationProvider: springdoc + artifactId: springboot-oneof-jackson-default-impl + snapshotVersion: "true" + hideGenerationTimestamp: "true" + useOneOfInterfaces: "true" + useDeductionForOneOfInterfaces: "true" + typeInfoDefaultImpls: + Fruit: Apple diff --git a/modules/openapi-generator/src/test/resources/3_0/jackson-default-impl-oneof.yaml b/modules/openapi-generator/src/test/resources/3_0/jackson-default-impl-oneof.yaml new file mode 100644 index 000000000000..5dda0cb6ee51 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/jackson-default-impl-oneof.yaml @@ -0,0 +1,152 @@ +openapi: 3.0.1 +info: + title: Jackson defaultImpl oneOf sample + description: > + Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf + interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) + and the typeInfoDefaultImpls generator option (config-based). + version: 0.0.1 +servers: + - url: "http://localhost:8080" +paths: + /animals: + post: + tags: + - default + operationId: createAnimal + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Animal' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Animal' + /fruits: + post: + tags: + - default + operationId: createFruit + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Fruit' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Fruit' + /beverages: + post: + tags: + - default + operationId: createBeverage + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Beverage' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Beverage' +components: + schemas: + # Deduction-based oneOf (no discriminator): default impl set via the spec extension. + Animal: + x-jackson-default-impl: Dog + oneOf: + - $ref: '#/components/schemas/Dog' + - $ref: '#/components/schemas/Cat' + Dog: + type: object + properties: + bark: + type: boolean + Cat: + type: object + properties: + declawed: + type: boolean + # Discriminator-based oneOf: default impl resolved via the typeInfoDefaultImpls config option. + Fruit: + type: object + properties: + fruitType: + type: string + required: + - fruitType + oneOf: + - $ref: '#/components/schemas/Apple' + - $ref: '#/components/schemas/Banana' + discriminator: + propertyName: fruitType + mapping: + APPLE: '#/components/schemas/Apple' + BANANA: '#/components/schemas/Banana' + Apple: + type: object + required: + - fruitType + properties: + fruitType: + type: string + seeds: + type: integer + Banana: + type: object + required: + - fruitType + properties: + fruitType: + type: string + length: + type: integer + # Discriminator-based oneOf: default impl set via the spec extension. + Beverage: + x-jackson-default-impl: Water + type: object + properties: + beverageType: + type: string + required: + - beverageType + oneOf: + - $ref: '#/components/schemas/Water' + - $ref: '#/components/schemas/Soda' + discriminator: + propertyName: beverageType + mapping: + WATER: '#/components/schemas/Water' + SODA: '#/components/schemas/Soda' + Water: + type: object + required: + - beverageType + properties: + beverageType: + type: string + sparkling: + type: boolean + Soda: + type: object + required: + - beverageType + properties: + beverageType: + type: string + sugarGrams: + type: integer diff --git a/samples/client/others/java/restclient-jackson-default-impl/.github/workflows/maven.yml b/samples/client/others/java/restclient-jackson-default-impl/.github/workflows/maven.yml new file mode 100644 index 000000000000..0e24b2258b60 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/.github/workflows/maven.yml @@ -0,0 +1,30 @@ +# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven +# +# This file is auto-generated by OpenAPI Generator (https://openapi-generator.tech) + +name: Java CI with Maven + +on: + push: + branches: [ main, master ] + pull_request: + branches: [ main, master ] + +jobs: + build: + name: Build Jackson defaultImpl oneOf sample + runs-on: ubuntu-latest + strategy: + matrix: + java: [ 17, 21 ] + steps: + - uses: actions/checkout@v4 + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: ${{ matrix.java }} + distribution: 'temurin' + cache: maven + - name: Build with Maven + run: mvn -B package --no-transfer-progress --file pom.xml diff --git a/samples/client/others/java/restclient-jackson-default-impl/.gitignore b/samples/client/others/java/restclient-jackson-default-impl/.gitignore new file mode 100644 index 000000000000..a530464afa1b --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/.gitignore @@ -0,0 +1,21 @@ +*.class + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.ear + +# exclude jar for gradle wrapper +!gradle/wrapper/*.jar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +# build files +**/target +target +.gradle +build diff --git a/samples/client/others/java/restclient-jackson-default-impl/.openapi-generator-ignore b/samples/client/others/java/restclient-jackson-default-impl/.openapi-generator-ignore new file mode 100644 index 000000000000..7484ee590a38 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/samples/client/others/java/restclient-jackson-default-impl/.openapi-generator/FILES b/samples/client/others/java/restclient-jackson-default-impl/.openapi-generator/FILES new file mode 100644 index 000000000000..8a3defa37c61 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/.openapi-generator/FILES @@ -0,0 +1,48 @@ +.github/workflows/maven.yml +.gitignore +.travis.yml +README.md +api/openapi.yaml +build.gradle +build.sbt +docs/Animal.md +docs/Apple.md +docs/Banana.md +docs/Beverage.md +docs/Cat.md +docs/DefaultApi.md +docs/Dog.md +docs/Fruit.md +docs/Soda.md +docs/Water.md +git_push.sh +gradle.properties +gradle/wrapper/gradle-wrapper.jar +gradle/wrapper/gradle-wrapper.properties +gradlew +gradlew.bat +pom.xml +settings.gradle +src/main/AndroidManifest.xml +src/main/java/org/openapitools/client/ApiClient.java +src/main/java/org/openapitools/client/JavaTimeFormatter.java +src/main/java/org/openapitools/client/RFC3339DateFormat.java +src/main/java/org/openapitools/client/RFC3339InstantDeserializer.java +src/main/java/org/openapitools/client/RFC3339JavaTimeModule.java +src/main/java/org/openapitools/client/ServerConfiguration.java +src/main/java/org/openapitools/client/ServerVariable.java +src/main/java/org/openapitools/client/StringUtil.java +src/main/java/org/openapitools/client/api/DefaultApi.java +src/main/java/org/openapitools/client/auth/ApiKeyAuth.java +src/main/java/org/openapitools/client/auth/Authentication.java +src/main/java/org/openapitools/client/auth/HttpBasicAuth.java +src/main/java/org/openapitools/client/auth/HttpBearerAuth.java +src/main/java/org/openapitools/client/model/Animal.java +src/main/java/org/openapitools/client/model/Apple.java +src/main/java/org/openapitools/client/model/Banana.java +src/main/java/org/openapitools/client/model/Beverage.java +src/main/java/org/openapitools/client/model/Cat.java +src/main/java/org/openapitools/client/model/Dog.java +src/main/java/org/openapitools/client/model/Fruit.java +src/main/java/org/openapitools/client/model/Soda.java +src/main/java/org/openapitools/client/model/Water.java diff --git a/samples/client/others/java/restclient-jackson-default-impl/.openapi-generator/VERSION b/samples/client/others/java/restclient-jackson-default-impl/.openapi-generator/VERSION new file mode 100644 index 000000000000..186c33c96ed8 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/.openapi-generator/VERSION @@ -0,0 +1 @@ +7.24.0-SNAPSHOT diff --git a/samples/client/others/java/restclient-jackson-default-impl/.travis.yml b/samples/client/others/java/restclient-jackson-default-impl/.travis.yml new file mode 100644 index 000000000000..1b6741c083c7 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/.travis.yml @@ -0,0 +1,22 @@ +# +# Generated by OpenAPI Generator: https://openapi-generator.tech +# +# Ref: https://docs.travis-ci.com/user/languages/java/ +# +language: java +jdk: + - openjdk12 + - openjdk11 + - openjdk10 + - openjdk9 + - openjdk8 +before_install: + # ensure gradlew has proper permission + - chmod a+x ./gradlew +script: + # test using maven + #- mvn test + # test using gradle + - gradle test + # test using sbt + # - sbt test diff --git a/samples/client/others/java/restclient-jackson-default-impl/README.md b/samples/client/others/java/restclient-jackson-default-impl/README.md new file mode 100644 index 000000000000..ba82d69e06cd --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/README.md @@ -0,0 +1,150 @@ +# restclient-jackson-default-impl + +Jackson defaultImpl oneOf sample + +- API version: 0.0.1 + +- Generator version: 7.24.0-SNAPSHOT + +Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + + + +*Automatically generated by the [OpenAPI Generator](https://openapi-generator.tech)* + +## Requirements + +Building the API client library requires: + +1. Java 17+ +2. Maven/Gradle + +## Installation + +To install the API client library to your local Maven repository, simply execute: + +```shell +mvn clean install +``` + +To deploy it to a remote Maven repository instead, configure the settings of the repository and execute: + +```shell +mvn clean deploy +``` + +Refer to the [OSSRH Guide](http://central.sonatype.org/pages/ossrh-guide.html) for more information. + +### Maven users + +Add this dependency to your project's POM: + +```xml + + org.openapitools + restclient-jackson-default-impl + 0.0.1 + compile + +``` + +### Gradle users + +Add this dependency to your project's build file: + +```groovy + repositories { + mavenCentral() // Needed if the 'restclient-jackson-default-impl' jar has been published to maven central. + mavenLocal() // Needed if the 'restclient-jackson-default-impl' jar has been published to the local maven repo. + } + + dependencies { + implementation "org.openapitools:restclient-jackson-default-impl:0.0.1" + } +``` + +### Others + +At first generate the JAR by executing: + +```shell +mvn clean package +``` + +Then manually install the following JARs: + +- `target/restclient-jackson-default-impl-0.0.1.jar` +- `target/lib/*.jar` + +## Getting Started + +Please follow the [installation](#installation) instruction and execute the following Java code: + +```java + +import org.openapitools.client.*; +import org.openapitools.client.auth.*; +import org.openapitools.client.model.*; +import org.openapitools.client.api.DefaultApi; + +public class DefaultApiExample { + + public static void main(String[] args) { + ApiClient defaultClient = new ApiClient(); + defaultClient.setBasePath("http://localhost:8080"); + + DefaultApi apiInstance = new DefaultApi(defaultClient); + Animal animal = new Animal(); // Animal | + try { + Animal result = apiInstance.createAnimal(animal); + System.out.println(result); + } catch (HttpStatusCodeException e) { + System.err.println("Exception when calling DefaultApi#createAnimal"); + System.err.println("Status code: " + e.getStatusCode().value()); + System.err.println("Reason: " + e.getResponseBodyAsString()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} + +``` + +## Documentation for API Endpoints + +All URIs are relative to *http://localhost:8080* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +*DefaultApi* | [**createAnimal**](docs/DefaultApi.md#createAnimal) | **POST** /animals | +*DefaultApi* | [**createBeverage**](docs/DefaultApi.md#createBeverage) | **POST** /beverages | +*DefaultApi* | [**createFruit**](docs/DefaultApi.md#createFruit) | **POST** /fruits | + + +## Documentation for Models + + - [Animal](docs/Animal.md) + - [Apple](docs/Apple.md) + - [Banana](docs/Banana.md) + - [Beverage](docs/Beverage.md) + - [Cat](docs/Cat.md) + - [Dog](docs/Dog.md) + - [Fruit](docs/Fruit.md) + - [Soda](docs/Soda.md) + - [Water](docs/Water.md) + + + +## Documentation for Authorization + +Endpoints do not require authorization. + + +## Recommendation + +It's recommended to create an instance of `ApiClient` per thread in a multithreaded environment to avoid any potential issues. + +## Author + + + diff --git a/samples/client/others/java/restclient-jackson-default-impl/api/openapi.yaml b/samples/client/others/java/restclient-jackson-default-impl/api/openapi.yaml new file mode 100644 index 000000000000..2a5e5f932fa3 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/api/openapi.yaml @@ -0,0 +1,166 @@ +openapi: 3.0.1 +info: + description: | + Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + title: Jackson defaultImpl oneOf sample + version: 0.0.1 +servers: +- url: http://localhost:8080 +paths: + /animals: + post: + operationId: createAnimal + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Animal" + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Animal" + description: OK + tags: + - default + x-content-type: application/json + x-accepts: + - application/json + /fruits: + post: + operationId: createFruit + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Fruit" + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Fruit" + description: OK + tags: + - default + x-content-type: application/json + x-accepts: + - application/json + /beverages: + post: + operationId: createBeverage + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Beverage" + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Beverage" + description: OK + tags: + - default + x-content-type: application/json + x-accepts: + - application/json +components: + schemas: + Animal: + oneOf: + - $ref: "#/components/schemas/Dog" + - $ref: "#/components/schemas/Cat" + x-jackson-default-impl: Dog + x-one-of-name: Animal + Dog: + example: + bark: true + properties: + bark: + type: boolean + type: object + Cat: + properties: + declawed: + type: boolean + type: object + Fruit: + discriminator: + mapping: + APPLE: "#/components/schemas/Apple" + BANANA: "#/components/schemas/Banana" + propertyName: fruitType + example: + fruitType: fruitType + oneOf: + - $ref: "#/components/schemas/Apple" + - $ref: "#/components/schemas/Banana" + properties: + fruitType: + type: string + required: + - fruitType + type: object + x-one-of-name: Fruit + Apple: + properties: + fruitType: + type: string + seeds: + type: integer + required: + - fruitType + type: object + Banana: + properties: + fruitType: + type: string + length: + type: integer + required: + - fruitType + type: object + Beverage: + discriminator: + mapping: + WATER: "#/components/schemas/Water" + SODA: "#/components/schemas/Soda" + propertyName: beverageType + example: + beverageType: beverageType + oneOf: + - $ref: "#/components/schemas/Water" + - $ref: "#/components/schemas/Soda" + properties: + beverageType: + type: string + required: + - beverageType + type: object + x-jackson-default-impl: Water + x-one-of-name: Beverage + Water: + properties: + beverageType: + type: string + sparkling: + type: boolean + required: + - beverageType + type: object + Soda: + properties: + beverageType: + type: string + sugarGrams: + type: integer + required: + - beverageType + type: object + diff --git a/samples/client/others/java/restclient-jackson-default-impl/build.gradle b/samples/client/others/java/restclient-jackson-default-impl/build.gradle new file mode 100644 index 000000000000..fea236ea8ff0 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/build.gradle @@ -0,0 +1,134 @@ +apply plugin: 'idea' +apply plugin: 'eclipse' + +group = 'org.openapitools' +version = '0.0.1' + +buildscript { + repositories { + mavenCentral() + } + dependencies { + classpath 'com.android.tools.build:gradle:1.5.+' + classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3' + } +} + +repositories { + mavenCentral() +} + + +if(hasProperty('target') && target == 'android') { + + apply plugin: 'com.android.library' + apply plugin: 'com.github.dcendents.android-maven' + + android { + compileSdkVersion 23 + buildToolsVersion '23.0.2' + defaultConfig { + minSdkVersion 14 + targetSdkVersion 22 + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } + + // Rename the aar correctly + libraryVariants.all { variant -> + variant.outputs.each { output -> + def outputFile = output.outputFile + if (outputFile != null && outputFile.name.endsWith('.aar')) { + def fileName = "${project.name}-${variant.baseName}-${version}.aar" + output.outputFile = new File(outputFile.parent, fileName) + } + } + } + + dependencies { + provided "jakarta.annotation:jakarta.annotation-api:$jakarta_annotation_version" + } + } + + afterEvaluate { + android.libraryVariants.all { variant -> + def task = project.tasks.create "jar${variant.name.capitalize()}", Jar + task.description = "Create jar artifact for ${variant.name}" + task.dependsOn variant.javaCompile + task.from variant.javaCompile.destinationDirectory + task.destinationDirectory = project.file("${project.buildDir}/outputs/jar") + task.archiveFileName = "${project.name}-${variant.baseName}-${version}.jar" + artifacts.add('archives', task); + } + } + + task sourcesJar(type: Jar) { + from android.sourceSets.main.java.srcDirs + archiveClassifier = 'sources' + } + + artifacts { + archives sourcesJar + } + +} else { + + apply plugin: 'java' + apply plugin: 'maven-publish' + + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + + publishing { + publications { + maven(MavenPublication) { + artifactId = 'restclient-jackson-default-impl' + from components.java + } + } + } + + task execute(type:JavaExec) { + mainClass = System.getProperty('mainClass') + classpath = sourceSets.main.runtimeClasspath + } +} + +ext { + jackson_version = "2.21.1" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.10" + spring_web_version = "6.2.16" + jakarta_annotation_version = "2.1.1" + bean_validation_version = "3.1.1" + jodatime_version = "2.14.0" + junit_version = "5.10.2" +} + +dependencies { + implementation "org.springframework:spring-web:$spring_web_version" + implementation "org.springframework:spring-context:$spring_web_version" + implementation "com.fasterxml.jackson.core:jackson-core:$jackson_version" + implementation "com.fasterxml.jackson.core:jackson-annotations:$jackson_annotations_version" + implementation "com.fasterxml.jackson.core:jackson-databind:$jackson_version" + implementation "org.openapitools:jackson-databind-nullable:$jackson_databind_nullable_version" + implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:$jackson_version" + implementation "jakarta.annotation:jakarta.annotation-api:$jakarta_annotation_version" + testImplementation "org.junit.jupiter:junit-jupiter-api:$junit_version" + testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junit_version" +} + +test { + // Enable JUnit 5 (Gradle 4.6+). + useJUnitPlatform() + + // Always run tests, even when nothing changed. + dependsOn 'cleanTest' + + // Show test results. + testLogging { + events "passed", "skipped", "failed" + } +} diff --git a/samples/client/others/java/restclient-jackson-default-impl/build.sbt b/samples/client/others/java/restclient-jackson-default-impl/build.sbt new file mode 100644 index 000000000000..464090415c47 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/build.sbt @@ -0,0 +1 @@ +# TODO diff --git a/samples/client/others/java/restclient-jackson-default-impl/docs/Animal.md b/samples/client/others/java/restclient-jackson-default-impl/docs/Animal.md new file mode 100644 index 000000000000..324c70fa7d96 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/docs/Animal.md @@ -0,0 +1,10 @@ + + +# Interface Animal + +## Implementing Classes + +* Cat +* Dog + + diff --git a/samples/client/others/java/restclient-jackson-default-impl/docs/Apple.md b/samples/client/others/java/restclient-jackson-default-impl/docs/Apple.md new file mode 100644 index 000000000000..c618f3ba45ac --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/docs/Apple.md @@ -0,0 +1,18 @@ + + +# Apple + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**fruitType** | **String** | | | +|**seeds** | **Integer** | | [optional] | + + +## Implemented Interfaces + +* Fruit + + diff --git a/samples/client/others/java/restclient-jackson-default-impl/docs/Banana.md b/samples/client/others/java/restclient-jackson-default-impl/docs/Banana.md new file mode 100644 index 000000000000..8e02b3876e0e --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/docs/Banana.md @@ -0,0 +1,18 @@ + + +# Banana + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**fruitType** | **String** | | | +|**length** | **Integer** | | [optional] | + + +## Implemented Interfaces + +* Fruit + + diff --git a/samples/client/others/java/restclient-jackson-default-impl/docs/Beverage.md b/samples/client/others/java/restclient-jackson-default-impl/docs/Beverage.md new file mode 100644 index 000000000000..020391d14af1 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/docs/Beverage.md @@ -0,0 +1,10 @@ + + +# Interface Beverage + +## Implementing Classes + +* Soda +* Water + + diff --git a/samples/client/others/java/restclient-jackson-default-impl/docs/Cat.md b/samples/client/others/java/restclient-jackson-default-impl/docs/Cat.md new file mode 100644 index 000000000000..b893148b66b5 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/docs/Cat.md @@ -0,0 +1,17 @@ + + +# Cat + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**declawed** | **Boolean** | | [optional] | + + +## Implemented Interfaces + +* Animal + + diff --git a/samples/client/others/java/restclient-jackson-default-impl/docs/DefaultApi.md b/samples/client/others/java/restclient-jackson-default-impl/docs/DefaultApi.md new file mode 100644 index 000000000000..eb7f6c30b8ad --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/docs/DefaultApi.md @@ -0,0 +1,203 @@ +# DefaultApi + +All URIs are relative to *http://localhost:8080* + +| Method | HTTP request | Description | +|------------- | ------------- | -------------| +| [**createAnimal**](DefaultApi.md#createAnimal) | **POST** /animals | | +| [**createBeverage**](DefaultApi.md#createBeverage) | **POST** /beverages | | +| [**createFruit**](DefaultApi.md#createFruit) | **POST** /fruits | | + + + +## createAnimal + +> Animal createAnimal(animal) + + + +### Example + +```java +// Import classes: +import org.openapitools.client.ApiClient; +import org.openapitools.client.ApiException; +import org.openapitools.client.Configuration; +import org.openapitools.client.models.*; +import org.openapitools.client.api.DefaultApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://localhost:8080"); + + DefaultApi apiInstance = new DefaultApi(defaultClient); + Animal animal = new Animal(); // Animal | + try { + Animal result = apiInstance.createAnimal(animal); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling DefaultApi#createAnimal"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **animal** | [**Animal**](Animal.md)| | | + +### Return type + +[**Animal**](Animal.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | OK | - | + + +## createBeverage + +> Beverage createBeverage(beverage) + + + +### Example + +```java +// Import classes: +import org.openapitools.client.ApiClient; +import org.openapitools.client.ApiException; +import org.openapitools.client.Configuration; +import org.openapitools.client.models.*; +import org.openapitools.client.api.DefaultApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://localhost:8080"); + + DefaultApi apiInstance = new DefaultApi(defaultClient); + Beverage beverage = new Beverage(); // Beverage | + try { + Beverage result = apiInstance.createBeverage(beverage); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling DefaultApi#createBeverage"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **beverage** | [**Beverage**](Beverage.md)| | | + +### Return type + +[**Beverage**](Beverage.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | OK | - | + + +## createFruit + +> Fruit createFruit(fruit) + + + +### Example + +```java +// Import classes: +import org.openapitools.client.ApiClient; +import org.openapitools.client.ApiException; +import org.openapitools.client.Configuration; +import org.openapitools.client.models.*; +import org.openapitools.client.api.DefaultApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://localhost:8080"); + + DefaultApi apiInstance = new DefaultApi(defaultClient); + Fruit fruit = new Fruit(); // Fruit | + try { + Fruit result = apiInstance.createFruit(fruit); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling DefaultApi#createFruit"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **fruit** | [**Fruit**](Fruit.md)| | | + +### Return type + +[**Fruit**](Fruit.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | OK | - | + diff --git a/samples/client/others/java/restclient-jackson-default-impl/docs/Dog.md b/samples/client/others/java/restclient-jackson-default-impl/docs/Dog.md new file mode 100644 index 000000000000..25628713ba08 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/docs/Dog.md @@ -0,0 +1,17 @@ + + +# Dog + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**bark** | **Boolean** | | [optional] | + + +## Implemented Interfaces + +* Animal + + diff --git a/samples/client/others/java/restclient-jackson-default-impl/docs/Fruit.md b/samples/client/others/java/restclient-jackson-default-impl/docs/Fruit.md new file mode 100644 index 000000000000..95426f21aa1d --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/docs/Fruit.md @@ -0,0 +1,10 @@ + + +# Interface Fruit + +## Implementing Classes + +* Apple +* Banana + + diff --git a/samples/client/others/java/restclient-jackson-default-impl/docs/Soda.md b/samples/client/others/java/restclient-jackson-default-impl/docs/Soda.md new file mode 100644 index 000000000000..dc5c68993ea6 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/docs/Soda.md @@ -0,0 +1,18 @@ + + +# Soda + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**beverageType** | **String** | | | +|**sugarGrams** | **Integer** | | [optional] | + + +## Implemented Interfaces + +* Beverage + + diff --git a/samples/client/others/java/restclient-jackson-default-impl/docs/Water.md b/samples/client/others/java/restclient-jackson-default-impl/docs/Water.md new file mode 100644 index 000000000000..279bf43538ff --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/docs/Water.md @@ -0,0 +1,18 @@ + + +# Water + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**beverageType** | **String** | | | +|**sparkling** | **Boolean** | | [optional] | + + +## Implemented Interfaces + +* Beverage + + diff --git a/samples/client/others/java/restclient-jackson-default-impl/git_push.sh b/samples/client/others/java/restclient-jackson-default-impl/git_push.sh new file mode 100644 index 000000000000..f53a75d4fabe --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/git_push.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 openapi-petstore-perl "minor update" "gitlab.com" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 +git_host=$4 + +if [ "$git_host" = "" ]; then + git_host="github.com" + echo "[INFO] No command line input provided. Set \$git_host to $git_host" +fi + +if [ "$git_user_id" = "" ]; then + git_user_id="GIT_USER_ID" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="GIT_REPO_ID" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="Minor update" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=$(git remote) +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." + git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:"${GIT_TOKEN}"@${git_host}/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' diff --git a/samples/client/others/java/restclient-jackson-default-impl/gradle.properties b/samples/client/others/java/restclient-jackson-default-impl/gradle.properties new file mode 100644 index 000000000000..a3408578278a --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/gradle.properties @@ -0,0 +1,6 @@ +# This file is automatically generated by OpenAPI Generator (https://github.com/openAPITools/openapi-generator). +# To include other gradle properties as part of the code generation process, please use the `gradleProperties` option. +# +# Gradle properties reference: https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties +# For example, uncomment below to build for Android +#target = android diff --git a/samples/client/others/java/restclient-jackson-default-impl/gradle/wrapper/gradle-wrapper.jar b/samples/client/others/java/restclient-jackson-default-impl/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..e6441136f3d4ba8a0da8d277868979cfbc8ad796 GIT binary patch literal 43453 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 yu?e%!_ptzGB|8GrCfu%p?(_ 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
NnX)EH+Nua)3Y(c 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 '} +case $link in #( +/*) app_path=$link ;; #( +*) app_path=$APP_HOME$link ;; +esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { +echo "$*" +} >&2 + +die () { +echo +echo "$*" +echo +exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( +CYGWIN* ) cygwin=true ;; #( +Darwin* ) darwin=true ;; #( +MSYS* | MINGW* ) msys=true ;; #( +NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then +if [ -x "$JAVA_HOME/jre/sh/java" ] ; then +# IBM's JDK on AIX uses strange locations for the executables +JAVACMD=$JAVA_HOME/jre/sh/java +else +JAVACMD=$JAVA_HOME/bin/java +fi +if [ ! -x "$JAVACMD" ] ; then +die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi +else +JAVACMD=java +if ! command -v java >/dev/null 2>&1 +then +die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then +case $MAX_FD in #( +max*) +# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. +# shellcheck disable=SC2039,SC3045 +MAX_FD=$( ulimit -H -n ) || +warn "Could not query maximum file descriptor limit" +esac +case $MAX_FD in #( +'' | soft) :;; #( +*) +# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. +# shellcheck disable=SC2039,SC3045 +ulimit -n "$MAX_FD" || +warn "Could not set maximum file descriptor limit to $MAX_FD" +esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then +APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) +CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + +JAVACMD=$( cygpath --unix "$JAVACMD" ) + +# Now convert the arguments - kludge to limit ourselves to /bin/sh +for arg do +if +case $arg in #( +-*) false ;; # don't mess with options #( +/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath +[ -e "$t" ] ;; #( +*) false ;; +esac +then +arg=$( cygpath --path --ignore --mixed "$arg" ) +fi +# Roll the args list around exactly as many times as the number of +# args, so each arg winds up back in the position where it started, but +# possibly modified. +# +# NB: a `for` loop captures its iteration list before it begins, so +# changing the positional parameters here affects neither the number of +# iterations, nor the values presented in `arg`. +shift # remove old arg +set -- "$@" "$arg" # push replacement arg +done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ +"-Dorg.gradle.appname=$APP_BASE_NAME" \ +-classpath "$CLASSPATH" \ +org.gradle.wrapper.GradleWrapperMain \ +"$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then +die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( +printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | +xargs -n1 | +sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | +tr '\n' ' ' +)" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/samples/client/others/java/restclient-jackson-default-impl/gradlew.bat b/samples/client/others/java/restclient-jackson-default-impl/gradlew.bat new file mode 100644 index 000000000000..25da30dbdeee --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/samples/client/others/java/restclient-jackson-default-impl/pom.xml b/samples/client/others/java/restclient-jackson-default-impl/pom.xml new file mode 100644 index 000000000000..d394f73b0528 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/pom.xml @@ -0,0 +1,275 @@ + + 4.0.0 + org.openapitools + restclient-jackson-default-impl + jar + restclient-jackson-default-impl + 0.0.1 + https://github.com/openapitools/openapi-generator + OpenAPI Java + + scm:git:git@github.com:openapitools/openapi-generator.git + scm:git:git@github.com:openapitools/openapi-generator.git + https://github.com/openapitools/openapi-generator + + + + + Unlicense + http://unlicense.org + repo + + + + + + OpenAPI-Generator Contributors + team@openapitools.org + OpenAPITools.org + http://openapitools.org + + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + 3.6.2 + + + enforce-maven + + enforce + + + + + 2.2.0 + + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.5.4 + + + + loggerPath + conf/log4j.properties + + + -Xms512m -Xmx1500m + methods + false + true + + + + maven-dependency-plugin + + + package + + copy-dependencies + + + ${project.build.directory}/lib + + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.5.0 + + + + test-jar + + + + + + + + + org.codehaus.mojo + build-helper-maven-plugin + 3.6.1 + + + add_sources + generate-sources + + add-source + + + + src/main/java + + + + + add_test_sources + generate-test-sources + + add-test-source + + + + src/test/java + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.15.0 + + 17 + 17 + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.12.0 + + none + + + + attach-javadocs + + jar + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.4.0 + + + attach-sources + + jar-no-fork + + + + + + + + + + sign-artifacts + + + + org.apache.maven.plugins + maven-gpg-plugin + 3.2.8 + + + sign-artifacts + verify + + sign + + + + + + + + + + + + + + org.springframework + spring-web + ${spring-web-version} + + + org.springframework + spring-context + ${spring-web-version} + + + + + com.fasterxml.jackson.core + jackson-core + ${jackson-version} + + + com.fasterxml.jackson.core + jackson-annotations + ${jackson-annotations-version} + + + com.fasterxml.jackson.core + jackson-databind + ${jackson-version} + + + com.fasterxml.jackson.jakarta.rs + jackson-jakarta-rs-json-provider + ${jackson-version} + + + org.openapitools + jackson-databind-nullable + ${jackson-databind-nullable-version} + + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + ${jackson-version} + + + + + jakarta.annotation + jakarta.annotation-api + ${jakarta-annotation-version} + provided + + + + + org.junit.jupiter + junit-jupiter-engine + ${junit-version} + test + + + + UTF-8 + + 6.2.16 + 2.21.1 + 2.1.1 + + 2.21 + 0.2.10 + 3.1.1 + 5.10.2 + + diff --git a/samples/client/others/java/restclient-jackson-default-impl/settings.gradle b/samples/client/others/java/restclient-jackson-default-impl/settings.gradle new file mode 100644 index 000000000000..83a062a9a5d6 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/settings.gradle @@ -0,0 +1 @@ +rootProject.name = "restclient-jackson-default-impl" \ No newline at end of file diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/AndroidManifest.xml b/samples/client/others/java/restclient-jackson-default-impl/src/main/AndroidManifest.xml new file mode 100644 index 000000000000..54fbcb3da1e8 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/AndroidManifest.xml @@ -0,0 +1,3 @@ + + + diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ApiClient.java new file mode 100644 index 000000000000..96611230936e --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ApiClient.java @@ -0,0 +1,838 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client; + + +import com.fasterxml.jackson.databind.DeserializationFeature; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; + +import java.util.function.Consumer; +import org.openapitools.jackson.nullable.JsonNullableModule; +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.InvalidMediaTypeException; +import org.springframework.http.MediaType; +import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.util.CollectionUtils; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.util.StringUtils; +import org.springframework.web.client.RestClientException; +import org.springframework.web.util.UriComponentsBuilder; +import org.springframework.web.client.RestClient; +import org.springframework.web.client.RestClient.ResponseSpec; +import java.util.Optional; + +import java.text.DateFormat; +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.TimeZone; +import java.util.function.Supplier; + +import jakarta.annotation.Nullable; + +import java.time.OffsetDateTime; + +import org.openapitools.client.auth.Authentication; +import org.openapitools.client.auth.HttpBasicAuth; +import org.openapitools.client.auth.HttpBearerAuth; +import org.openapitools.client.auth.ApiKeyAuth; + +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class ApiClient extends JavaTimeFormatter { + public enum CollectionFormat { + CSV(","), TSV("\t"), SSV(" "), PIPES("|"), MULTI(null); + + protected final String separator; + CollectionFormat(String separator) { + this.separator = separator; + } + + protected String collectionToString(Collection collection) { + return StringUtils.collectionToDelimitedString(collection, separator); + } + } + + protected final HttpHeaders defaultHeaders = new HttpHeaders(); + protected final MultiValueMap defaultCookies = new LinkedMultiValueMap<>(); + + protected String basePath = "http://localhost:8080"; + protected List servers = new ArrayList(Arrays.asList( + new ServerConfiguration( + "http://localhost:8080", + "No description provided", + new HashMap() + ) + )); + protected Integer serverIndex = 0; + protected Map serverVariables = null; + + protected final RestClient restClient; + protected final DateFormat dateFormat; + protected final ObjectMapper mapper; + protected Map authentications; + + + public ApiClient() { + this(null); + } + + public ApiClient(RestClient restClient) { + this(restClient, createDefaultDateFormat()); + } + + public ApiClient(ObjectMapper mapper, DateFormat format) { + this(null, mapper, format); + } + + public ApiClient(RestClient restClient, ObjectMapper mapper, DateFormat format) { + this.mapper = mapper.copy(); + this.restClient = Optional.ofNullable(restClient).orElseGet(() -> buildRestClient(this.mapper)); + this.dateFormat = format; + this.init(); + } + + protected ApiClient(RestClient restClient, DateFormat format) { + this(restClient, createDefaultMapper(format), format); + } + + public static DateFormat createDefaultDateFormat() { + DateFormat dateFormat = new RFC3339DateFormat(); + dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); + return dateFormat; + } + + public static ObjectMapper createDefaultMapper(@Nullable DateFormat dateFormat) { + if (null == dateFormat) { + dateFormat = createDefaultDateFormat(); + } + ObjectMapper mapper = new ObjectMapper(); + mapper.setDateFormat(dateFormat); + mapper.registerModule(new JavaTimeModule()); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + JsonNullableModule jnm = new JsonNullableModule(); + mapper.registerModule(jnm); + return mapper; + } + + protected void init() { + // Setup authentications (key: authentication name, value: authentication). + authentications = new HashMap<>(); + // Prevent the authentications from being modified. + authentications = Collections.unmodifiableMap(authentications); + } + + /** + * Build the RestClientBuilder used to make RestClient. + * @param mapper ObjectMapper used for serialize/deserialize + * @return RestClient + */ + public static RestClient.Builder buildRestClientBuilder(ObjectMapper mapper) { + + Consumer>> messageConverters = converters -> { + converters.add(0, new MappingJackson2HttpMessageConverter(mapper)); + }; + + return RestClient.builder().messageConverters(messageConverters); + } + + /** + * Build the RestClientBuilder used to make RestClient. + * @return RestClient + */ + public static RestClient.Builder buildRestClientBuilder() { + return buildRestClientBuilder(createDefaultMapper(null)); + } + + /** + * Build the RestClient used to make HTTP requests. + * @param mapper ObjectMapper used for serialize/deserialize + * @return RestClient + */ + public static RestClient buildRestClient(ObjectMapper mapper) { + return buildRestClientBuilder(mapper).build(); + } + + /** + * Build the RestClient used to make HTTP requests. + * @return RestClient + */ + public static RestClient buildRestClient() { + return buildRestClientBuilder(createDefaultMapper(null)).build(); + } + + /** + * Get the current base path + * @return String the base path + */ + public String getBasePath() { + return basePath; + } + + /** + * Set the base path, which should include the host + * @param basePath the base path + * @return ApiClient this client + */ + public ApiClient setBasePath(String basePath) { + this.basePath = basePath; + this.serverIndex = null; + return this; + } + + public List getServers() { + return servers; + } + + public ApiClient setServers(List servers) { + this.servers = servers; + return this; + } + + public Integer getServerIndex() { + return serverIndex; + } + + public ApiClient setServerIndex(Integer serverIndex) { + this.serverIndex = serverIndex; + return this; + } + + public Map getServerVariables() { + return serverVariables; + } + + public ApiClient setServerVariables(Map serverVariables) { + this.serverVariables = serverVariables; + return this; + } + + /** + * Get authentications (key: authentication name, value: authentication). + * @return Map the currently configured authentication types + */ + public Map getAuthentications() { + return authentications; + } + + /** + * Get authentication for the given name. + * + * @param authName The authentication name + * @return The authentication, null if not found + */ + public Authentication getAuthentication(String authName) { + return authentications.get(authName); + } + + /** + * Helper method to set access token for the first Bearer authentication. + * @param bearerToken Bearer token + */ + public void setBearerToken(String bearerToken) { + for (Authentication auth : authentications.values()) { + if (auth instanceof HttpBearerAuth) { + ((HttpBearerAuth) auth).setBearerToken(bearerToken); + return; + } + } + throw new RuntimeException("No Bearer authentication configured!"); + } + + /** + * Helper method to set the supplier of access tokens for Bearer authentication. + * + * @param tokenSupplier the token supplier function + */ + public void setBearerToken(Supplier tokenSupplier) { + for (Authentication auth : authentications.values()) { + if (auth instanceof HttpBearerAuth) { + ((HttpBearerAuth) auth).setBearerToken(tokenSupplier); + return; + } + } + throw new RuntimeException("No Bearer authentication configured!"); + } + + /** + * Helper method to set username for the first HTTP basic authentication. + * @param username the username + */ + public void setUsername(String username) { + for (Authentication auth : authentications.values()) { + if (auth instanceof HttpBasicAuth) { + ((HttpBasicAuth) auth).setUsername(username); + return; + } + } + throw new RuntimeException("No HTTP basic authentication configured!"); + } + + /** + * Helper method to set password for the first HTTP basic authentication. + * @param password the password + */ + public void setPassword(String password) { + for (Authentication auth : authentications.values()) { + if (auth instanceof HttpBasicAuth) { + ((HttpBasicAuth) auth).setPassword(password); + return; + } + } + throw new RuntimeException("No HTTP basic authentication configured!"); + } + + /** + * Helper method to set API key value for the first API key authentication. + * @param apiKey the API key + */ + public void setApiKey(String apiKey) { + for (Authentication auth : authentications.values()) { + if (auth instanceof ApiKeyAuth) { + ((ApiKeyAuth) auth).setApiKey(apiKey); + return; + } + } + throw new RuntimeException("No API key authentication configured!"); + } + + /** + * Helper method to set API key prefix for the first API key authentication. + * @param apiKeyPrefix the API key prefix + */ + public void setApiKeyPrefix(String apiKeyPrefix) { + for (Authentication auth : authentications.values()) { + if (auth instanceof ApiKeyAuth) { + ((ApiKeyAuth) auth).setApiKeyPrefix(apiKeyPrefix); + return; + } + } + throw new RuntimeException("No API key authentication configured!"); + } + + /** + * Set the User-Agent header's value (by adding to the default header map). + * @param userAgent the user agent string + * @return ApiClient this client + */ + public ApiClient setUserAgent(String userAgent) { + addDefaultHeader("User-Agent", userAgent); + return this; + } + + /** + * Add a default header. + * + * @param name The header's name + * @param value The header's value + * @return ApiClient this client + */ + public ApiClient addDefaultHeader(String name, String value) { + defaultHeaders.set(name, value); + return this; + } + + /** + * Add a default cookie. + * + * @param name The cookie's name + * @param value The cookie's value + * @return ApiClient this client + */ + public ApiClient addDefaultCookie(String name, String value) { + if (defaultCookies.containsKey(name)) { + defaultCookies.remove(name); + } + defaultCookies.add(name, value); + return this; + } + + /** + * Get the date format used to parse/format date parameters. + * @return DateFormat format + */ + public DateFormat getDateFormat() { + return dateFormat; + } + + /** + * Parse the given string into Date object. + */ + public Date parseDate(String str) { + try { + return dateFormat.parse(str); + } catch (ParseException e) { + throw new RuntimeException(e); + } + } + + /** + * Format the given Date object into string. + */ + public String formatDate(Date date) { + return dateFormat.format(date); + } + + /** + * Get the ObjectMapper used to make HTTP requests. + * @return ObjectMapper mapper + */ + public ObjectMapper getObjectMapper() { + return mapper; + } + + /** + * Get the RestClient used to make HTTP requests. + * @return RestClient restClient + */ + public RestClient getRestClient() { + return restClient; + } + + /** + * Format the given parameter object into string. + * @param param the object to convert + * @return String the parameter represented as a String + */ + public String parameterToString(Object param) { + if (param == null) { + return ""; + } else if (param instanceof Date) { + return formatDate( (Date) param); + } else if (param instanceof OffsetDateTime) { + return formatOffsetDateTime((OffsetDateTime) param); + } else if (param instanceof Collection) { + StringBuilder b = new StringBuilder(); + for(Object o : (Collection) param) { + if(b.length() > 0) { + b.append(","); + } + b.append(String.valueOf(o)); + } + return b.toString(); + } else { + return String.valueOf(param); + } + } + + /** + * Converts a parameter to a {@link MultiValueMap} containing Json-serialized values for use in REST requests + * @param collectionFormat The format to convert to + * @param name The name of the parameter + * @param value The parameter's value + * @return a Map containing the Json-serialized String value(s) of the input parameter + */ + public MultiValueMap parameterToMultiValueMapJson(CollectionFormat collectionFormat, String name, Object value) { + Collection valueCollection; + if (value instanceof Collection) { + valueCollection = (Collection) value; + } else { + try { + return parameterToMultiValueMap(collectionFormat, name, mapper.writeValueAsString(value)); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } + + List values = new ArrayList<>(); + for(Object o : valueCollection) { + try { + values.add(mapper.writeValueAsString(o)); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } + return parameterToMultiValueMap(collectionFormat, name, "[" + StringUtils.collectionToDelimitedString(values, collectionFormat.separator) + "]"); + } + + /** + * Converts a parameter to a {@link MultiValueMap} for use in REST requests + * @param collectionFormat The format to convert to + * @param name The name of the parameter + * @param value The parameter's value + * @return a Map containing the String value(s) of the input parameter + */ + public MultiValueMap parameterToMultiValueMap(CollectionFormat collectionFormat, String name, Object value) { + final MultiValueMap params = new LinkedMultiValueMap<>(); + + if (name == null || name.isEmpty() || value == null) { + return params; + } + + if(collectionFormat == null) { + collectionFormat = CollectionFormat.CSV; + } + + if (value instanceof Map) { + @SuppressWarnings("unchecked") + final Map valuesMap = (Map) value; + for (final Entry entry : valuesMap.entrySet()) { + params.add(entry.getKey(), parameterToString(entry.getValue())); + } + return params; + } + + Collection valueCollection = null; + if (value instanceof Collection) { + valueCollection = (Collection) value; + } else { + params.add(name, parameterToString(value)); + return params; + } + + if (valueCollection.isEmpty()){ + return params; + } + + if (collectionFormat.equals(CollectionFormat.MULTI)) { + for (Object item : valueCollection) { + params.add(name, parameterToString(item)); + } + return params; + } + + List values = new ArrayList<>(); + for(Object o : valueCollection) { + values.add(parameterToString(o)); + } + params.add(name, collectionFormat.collectionToString(values)); + + return params; + } + + /** + * Check if the given {@code String} is a JSON MIME. + * @param mediaType the input MediaType + * @return boolean true if the MediaType represents JSON, false otherwise + */ + public boolean isJsonMime(String mediaType) { + // "* / *" is default to JSON + if ("*/*".equals(mediaType)) { + return true; + } + + try { + return isJsonMime(MediaType.parseMediaType(mediaType)); + } catch (InvalidMediaTypeException e) { + } + return false; + } + + /** + * Check if the given MIME is a JSON MIME. + * JSON MIME examples: + * application/json + * application/json; charset=UTF8 + * APPLICATION/JSON + * @param mediaType the input MediaType + * @return boolean true if the MediaType represents JSON, false otherwise + */ + public boolean isJsonMime(MediaType mediaType) { + return mediaType != null && (MediaType.APPLICATION_JSON.isCompatibleWith(mediaType) || mediaType.getSubtype().matches("^.*(\\+json|ndjson)[;]?\\s*$")); + } + + /** + * Check if the given {@code String} is a Problem JSON MIME (RFC-7807). + * @param mediaType the input MediaType + * @return boolean true if the MediaType represents Problem JSON, false otherwise + */ + public boolean isProblemJsonMime(String mediaType) { + return "application/problem+json".equalsIgnoreCase(mediaType); + } + + /** + * Select the Accept header's value from the given accepts array: + * if JSON exists in the given array, use it; + * otherwise use all of them (joining into a string) + * + * @param accepts The accepts array to select from + * @return List The list of MediaTypes to use for the Accept header + */ + public List selectHeaderAccept(String[] accepts) { + if (accepts.length == 0) { + return null; + } + for (String accept : accepts) { + MediaType mediaType = MediaType.parseMediaType(accept); + if (isJsonMime(mediaType) && !isProblemJsonMime(accept)) { + return Collections.singletonList(mediaType); + } + } + return MediaType.parseMediaTypes(StringUtils.arrayToCommaDelimitedString(accepts)); + } + + /** + * Select the Content-Type header's value from the given array: + * if JSON exists in the given array, use it; + * otherwise use the first non-wildcard one of the array. + * + * @param contentTypes The Content-Type array to select from + * @return MediaType The Content-Type header to use. If the given array is empty, null will be returned; if it only contains wildcard media types, JSON will be used. + */ + public MediaType selectHeaderContentType(String[] contentTypes) { + if (contentTypes.length == 0) { + return null; + } + for (String contentType : contentTypes) { + MediaType mediaType = MediaType.parseMediaType(contentType); + if (isJsonMime(mediaType)) { + // A wildcard media type (e.g. "*/*" or "application/*") is treated as + // JSON-compatible but cannot be used as a request Content-Type header, + // so fall back to concrete JSON in that case. + return mediaType.isWildcardType() || mediaType.isWildcardSubtype() ? MediaType.APPLICATION_JSON : mediaType; + } + } + // No JSON type found; use the first concrete (non-wildcard) media type instead. + for (String contentType : contentTypes) { + MediaType mediaType = MediaType.parseMediaType(contentType); + if (!mediaType.isWildcardType() && !mediaType.isWildcardSubtype()) { + return mediaType; + } + } + return MediaType.APPLICATION_JSON; + } + + /** + * Select the body to use for the request + * + * @param obj the body object + * @param formParams the form parameters + * @param contentType the content type of the request + * @return Object the selected body + */ + protected Object selectBody(Object obj, MultiValueMap formParams, MediaType contentType) { + boolean isForm = MediaType.MULTIPART_FORM_DATA.isCompatibleWith(contentType) || MediaType.APPLICATION_FORM_URLENCODED.isCompatibleWith(contentType); + return isForm ? formParams : obj; + } + + /** + * Invoke API by sending HTTP request with the given options. + * + * @param the return type to use + * @param path The sub-path of the HTTP URL + * @param method The request method + * @param pathParams The path parameters + * @param queryParams The query parameters + * @param body The request body object + * @param headerParams The header parameters + * @param formParams The form parameters + * @param accept The request's Accept header + * @param contentType The request's Content-Type header + * @param authNames The authentications to apply + * @param returnType The return type into which to deserialize the response + * @return The response body in chosen type + */ + public ResponseSpec invokeAPI(String path, HttpMethod method, Map pathParams, MultiValueMap queryParams, Object body, HttpHeaders headerParams, MultiValueMap cookieParams, MultiValueMap formParams, List accept, MediaType contentType, String[] authNames, ParameterizedTypeReference returnType) throws RestClientException { + final RestClient.RequestBodySpec requestBuilder = prepareRequest(path, method, pathParams, queryParams, body, headerParams, cookieParams, formParams, accept, contentType, authNames); + return requestBuilder.retrieve(); + } + + /** + * Include queryParams in uriParams taking into account the paramName + * @param queryParams The query parameters + * @param uriParams The path parameters + * return templatized query string + */ + protected String generateQueryUri(MultiValueMap queryParams, Map uriParams) { + StringBuilder queryBuilder = new StringBuilder(); + queryParams.forEach((name, values) -> { + if (CollectionUtils.isEmpty(values)) { + if (queryBuilder.length() != 0) { + queryBuilder.append('&'); + } + queryBuilder.append(name); + } else { + int valueItemCounter = 0; + for (Object value : values) { + if (queryBuilder.length() != 0) { + queryBuilder.append('&'); + } + queryBuilder.append(name); + if (value != null) { + String templatizedKey = name + valueItemCounter++; + uriParams.put(templatizedKey, value.toString()); + queryBuilder.append('=').append("{").append(templatizedKey).append("}"); + } + } + } + }); + return queryBuilder.toString(); + } + + protected RestClient.RequestBodySpec prepareRequest(String path, HttpMethod method, Map pathParams, + MultiValueMap queryParams, Object body, HttpHeaders headerParams, + MultiValueMap cookieParams, MultiValueMap formParams, List accept, + MediaType contentType, String[] authNames) { + updateParamsForAuth(authNames, queryParams, headerParams, cookieParams); + + String baseUrl = basePath; + if (serverIndex != null) { + if (serverIndex < 0 || serverIndex >= servers.size()) { + throw new ArrayIndexOutOfBoundsException(String.format( + java.util.Locale.ROOT, + "Invalid index %d when selecting the host settings. Must be less than %d", serverIndex, servers.size() + )); + } + baseUrl = servers.get(serverIndex).URL(serverVariables); + } + + final UriComponentsBuilder builder = UriComponentsBuilder + .fromUriString(baseUrl) + .path(path); + + String finalUri = builder.build(false).toUriString(); + Map uriParams = new HashMap<>(); + uriParams.putAll(pathParams); + + if (queryParams != null && !queryParams.isEmpty()) { + //Include queryParams in uriParams taking into account the paramName + String queryUri = generateQueryUri(queryParams, uriParams); + //Append to finalUri the templatized query string like "?param1={param1Value}&....... + finalUri += "?" + queryUri; + } + + final RestClient.RequestBodySpec requestBuilder = restClient.method(method).uri(finalUri, uriParams); + + if (accept != null) { + requestBuilder.accept(accept.toArray(new MediaType[accept.size()])); + } + if(contentType != null) { + requestBuilder.contentType(contentType); + } + + addHeadersToRequest(headerParams, requestBuilder); + addHeadersToRequest(defaultHeaders, requestBuilder); + addCookiesToRequest(cookieParams, requestBuilder); + addCookiesToRequest(defaultCookies, requestBuilder); + + if (MediaType.MULTIPART_FORM_DATA.isCompatibleWith(contentType)) { + formParams.forEach( + (k, v) -> { + if (v instanceof java.util.ArrayList && !v.isEmpty()) { + Object first = v.get(0); + if (first != null && first.getClass().isEnum()) { + v.set(0, first.toString()); + } + } + }); + } + + var selectedBody = selectBody(body, formParams, contentType); + if (selectedBody != null) { + requestBuilder.body(selectedBody); + } + + return requestBuilder; + } + + /** + * Add headers to the request that is being built + * @param headers The headers to add + * @param requestBuilder The current request + */ + protected void addHeadersToRequest(HttpHeaders headers, RestClient.RequestBodySpec requestBuilder) { + for (Entry> entry : headers.headerSet()) { + List values = entry.getValue(); + for(String value : values) { + if (value != null) { + requestBuilder.header(entry.getKey(), value); + } + } + } + } + + /** + * Add cookies to the request that is being built + * + * @param cookies The cookies to add + * @param requestBuilder The current request + */ + protected void addCookiesToRequest(MultiValueMap cookies, RestClient.RequestBodySpec requestBuilder) { + if (!cookies.isEmpty()) { + requestBuilder.header("Cookie", buildCookieHeader(cookies)); + } + } + + /** + * Build cookie header. Keeps a single value per cookie (as per + * RFC6265 section 5.3). + * + * @param cookies map all cookies + * @return header string for cookies. + */ + protected String buildCookieHeader(MultiValueMap cookies) { + final StringBuilder cookieValue = new StringBuilder(); + String delimiter = ""; + for (final Map.Entry> entry : cookies.entrySet()) { + final String value = entry.getValue().get(entry.getValue().size() - 1); + cookieValue.append(String.format(java.util.Locale.ROOT, "%s%s=%s", delimiter, entry.getKey(), value)); + delimiter = "; "; + } + return cookieValue.toString(); + } + + /** + * Update query and header parameters based on authentication settings. + * + * @param authNames The authentications to apply + * @param queryParams The query parameters + * @param headerParams The header parameters + * @param cookieParams the cookie parameters + */ + protected void updateParamsForAuth(String[] authNames, MultiValueMap queryParams, HttpHeaders headerParams, MultiValueMap cookieParams) { + for (String authName : authNames) { + Authentication auth = authentications.get(authName); + if (auth == null) { + throw new RestClientException("Authentication undefined: " + authName); + } + auth.applyToParams(queryParams, headerParams, cookieParams); + } + } + + /** + * Formats the specified collection path parameter to a string value. + * + * @param collectionFormat The collection format of the parameter. + * @param values The values of the parameter. + * @return String representation of the parameter + */ + public String collectionPathParameterToString(CollectionFormat collectionFormat, Collection values) { + // create the value based on the collection format + if (CollectionFormat.MULTI.equals(collectionFormat)) { + // not valid for path params + return parameterToString(values); + } + + // collectionFormat is assumed to be "csv" by default + if(collectionFormat == null) { + collectionFormat = CollectionFormat.CSV; + } + + return collectionFormat.collectionToString(values); + } +} diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/JavaTimeFormatter.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/JavaTimeFormatter.java new file mode 100644 index 000000000000..851221be6254 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/JavaTimeFormatter.java @@ -0,0 +1,68 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package org.openapitools.client; + +import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; + +/** + * Class that add parsing/formatting support for Java 8+ {@code OffsetDateTime} class. + * It's generated for java clients when {@code AbstractJavaCodegen#dateLibrary} specified as {@code java8}. + */ +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class JavaTimeFormatter { + private DateTimeFormatter offsetDateTimeFormatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME; + + /** + * Get the date format used to parse/format {@code OffsetDateTime} parameters. + * + * @return DateTimeFormatter + */ + public DateTimeFormatter getOffsetDateTimeFormatter() { + return offsetDateTimeFormatter; + } + + /** + * Set the date format used to parse/format {@code OffsetDateTime} parameters. + * + * @param offsetDateTimeFormatter {@code DateTimeFormatter} + */ + public void setOffsetDateTimeFormatter(DateTimeFormatter offsetDateTimeFormatter) { + this.offsetDateTimeFormatter = offsetDateTimeFormatter; + } + + /** + * Parse the given string into {@code OffsetDateTime} object. + * + * @param str String + * @return {@code OffsetDateTime} + */ + public OffsetDateTime parseOffsetDateTime(String str) { + try { + return OffsetDateTime.parse(str, offsetDateTimeFormatter); + } catch (DateTimeParseException e) { + throw new RuntimeException(e); + } + } + + /** + * Format the given {@code OffsetDateTime} object into string. + * + * @param offsetDateTime {@code OffsetDateTime} + * @return {@code OffsetDateTime} in string format + */ + public String formatOffsetDateTime(OffsetDateTime offsetDateTime) { + return offsetDateTimeFormatter.format(offsetDateTime); + } +} \ No newline at end of file diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/RFC3339DateFormat.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/RFC3339DateFormat.java new file mode 100644 index 000000000000..99f90d424b16 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/RFC3339DateFormat.java @@ -0,0 +1,57 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package org.openapitools.client; + +import java.text.DateFormat; +import java.text.FieldPosition; +import java.text.ParsePosition; +import java.util.Date; +import java.text.DecimalFormat; +import java.util.GregorianCalendar; +import java.util.TimeZone; +import com.fasterxml.jackson.databind.util.StdDateFormat; + +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class RFC3339DateFormat extends DateFormat { + private static final long serialVersionUID = 1L; + private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC"); + + private final StdDateFormat fmt = new StdDateFormat() + .withTimeZone(TIMEZONE_Z) + .withColonInTimeZone(true); + + public RFC3339DateFormat() { + this.calendar = new GregorianCalendar(); + this.numberFormat = new DecimalFormat(); + } + + @Override + public Date parse(String source) { + return parse(source, new ParsePosition(0)); + } + + @Override + public Date parse(String source, ParsePosition pos) { + return fmt.parse(source, pos); + } + + @Override + public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) { + return fmt.format(date, toAppendTo, fieldPosition); + } + + @Override + public Object clone() { + return super.clone(); + } +} diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/RFC3339InstantDeserializer.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/RFC3339InstantDeserializer.java new file mode 100644 index 000000000000..5e609a91d94a --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/RFC3339InstantDeserializer.java @@ -0,0 +1,100 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package org.openapitools.client; + +import java.io.IOException; +import java.time.Instant; +import java.time.OffsetDateTime; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; +import java.time.temporal.Temporal; +import java.time.temporal.TemporalAccessor; +import java.util.function.BiFunction; +import java.util.function.Function; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeFeature; +import com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer; + +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class RFC3339InstantDeserializer extends InstantDeserializer { + private static final long serialVersionUID = 1L; + private final static boolean DEFAULT_NORMALIZE_ZONE_ID = JavaTimeFeature.NORMALIZE_DESERIALIZED_ZONE_ID.enabledByDefault(); + private final static boolean DEFAULT_ALWAYS_ALLOW_STRINGIFIED_DATE_TIMESTAMPS + = JavaTimeFeature.ALWAYS_ALLOW_STRINGIFIED_DATE_TIMESTAMPS.enabledByDefault(); + + public static final RFC3339InstantDeserializer INSTANT = new RFC3339InstantDeserializer<>( + Instant.class, DateTimeFormatter.ISO_INSTANT, + Instant::from, + a -> Instant.ofEpochMilli( a.value ), + a -> Instant.ofEpochSecond( a.integer, a.fraction ), + null, + true, // yes, replace zero offset with Z + DEFAULT_NORMALIZE_ZONE_ID, + DEFAULT_ALWAYS_ALLOW_STRINGIFIED_DATE_TIMESTAMPS + ); + + public static final RFC3339InstantDeserializer OFFSET_DATE_TIME = new RFC3339InstantDeserializer<>( + OffsetDateTime.class, DateTimeFormatter.ISO_OFFSET_DATE_TIME, + OffsetDateTime::from, + a -> OffsetDateTime.ofInstant( Instant.ofEpochMilli( a.value ), a.zoneId ), + a -> OffsetDateTime.ofInstant( Instant.ofEpochSecond( a.integer, a.fraction ), a.zoneId ), + (d, z) -> ( d.isEqual( OffsetDateTime.MIN ) || d.isEqual( OffsetDateTime.MAX ) ? + d : + d.withOffsetSameInstant( z.getRules().getOffset( d.toLocalDateTime() ) ) ), + true, // yes, replace zero offset with Z + DEFAULT_NORMALIZE_ZONE_ID, + DEFAULT_ALWAYS_ALLOW_STRINGIFIED_DATE_TIMESTAMPS + ); + + public static final RFC3339InstantDeserializer ZONED_DATE_TIME = new RFC3339InstantDeserializer<>( + ZonedDateTime.class, DateTimeFormatter.ISO_ZONED_DATE_TIME, + ZonedDateTime::from, + a -> ZonedDateTime.ofInstant( Instant.ofEpochMilli( a.value ), a.zoneId ), + a -> ZonedDateTime.ofInstant( Instant.ofEpochSecond( a.integer, a.fraction ), a.zoneId ), + ZonedDateTime::withZoneSameInstant, + false, // keep zero offset and Z separate since zones explicitly supported + DEFAULT_NORMALIZE_ZONE_ID, + DEFAULT_ALWAYS_ALLOW_STRINGIFIED_DATE_TIMESTAMPS + ); + + protected RFC3339InstantDeserializer( + Class supportedType, + DateTimeFormatter formatter, + Function parsedToValue, + Function fromMilliseconds, + Function fromNanoseconds, + BiFunction adjust, + boolean replaceZeroOffsetAsZ, + boolean normalizeZoneId, + boolean readNumericStringsAsTimestamp) { + super( + supportedType, + formatter, + parsedToValue, + fromMilliseconds, + fromNanoseconds, + adjust, + replaceZeroOffsetAsZ, + normalizeZoneId, + readNumericStringsAsTimestamp + ); + } + + @Override + protected T _fromString(JsonParser p, DeserializationContext ctxt, String string0) throws IOException { + return super._fromString(p, ctxt, string0.replace( ' ', 'T' )); + } +} \ No newline at end of file diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/RFC3339JavaTimeModule.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/RFC3339JavaTimeModule.java new file mode 100644 index 000000000000..489c864a7483 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/RFC3339JavaTimeModule.java @@ -0,0 +1,39 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package org.openapitools.client; + +import java.time.Instant; +import java.time.OffsetDateTime; +import java.time.ZonedDateTime; + +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.databind.Module.SetupContext; + +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class RFC3339JavaTimeModule extends SimpleModule { + private static final long serialVersionUID = 1L; + + public RFC3339JavaTimeModule() { + super("RFC3339JavaTimeModule"); + } + + @Override + public void setupModule(SetupContext context) { + super.setupModule(context); + + addDeserializer(Instant.class, RFC3339InstantDeserializer.INSTANT); + addDeserializer(OffsetDateTime.class, RFC3339InstantDeserializer.OFFSET_DATE_TIME); + addDeserializer(ZonedDateTime.class, RFC3339InstantDeserializer.ZONED_DATE_TIME); + } + +} diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ServerConfiguration.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ServerConfiguration.java new file mode 100644 index 000000000000..94f45f562f3d --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ServerConfiguration.java @@ -0,0 +1,72 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client; + +import java.util.Map; + +/** + * Representing a Server configuration. + */ +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class ServerConfiguration { + public String URL; + public String description; + public Map variables; + + /** + * @param URL A URL to the target host. + * @param description A description of the host designated by the URL. + * @param variables A map between a variable name and its value. The value is used for substitution in the server's URL template. + */ + public ServerConfiguration(String URL, String description, Map variables) { + this.URL = URL; + this.description = description; + this.variables = variables; + } + + /** + * Format URL template using given variables. + * + * @param variables A map between a variable name and its value. + * @return Formatted URL. + */ + public String URL(Map variables) { + String url = this.URL; + + // go through variables and replace placeholders + for (Map.Entry variable: this.variables.entrySet()) { + String name = variable.getKey(); + ServerVariable serverVariable = variable.getValue(); + String value = serverVariable.defaultValue; + + if (variables != null && variables.containsKey(name)) { + value = variables.get(name); + if (serverVariable.enumValues.size() > 0 && !serverVariable.enumValues.contains(value)) { + throw new IllegalArgumentException("The variable " + name + " in the server URL has invalid value " + value + "."); + } + } + url = url.replace("{" + name + "}", value); + } + return url; + } + + /** + * Format URL template using default server variables. + * + * @return Formatted URL. + */ + public String URL() { + return URL(null); + } +} diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ServerVariable.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ServerVariable.java new file mode 100644 index 000000000000..bcfe8a4185b6 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ServerVariable.java @@ -0,0 +1,37 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client; + +import java.util.HashSet; + +/** + * Representing a Server Variable for server URL template substitution. + */ +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class ServerVariable { + public String description; + public String defaultValue; + public HashSet enumValues = null; + + /** + * @param description A description for the server variable. + * @param defaultValue The default value to use for substitution. + * @param enumValues An enumeration of string values to be used if the substitution options are from a limited set. + */ + public ServerVariable(String description, String defaultValue, HashSet enumValues) { + this.description = description; + this.defaultValue = defaultValue; + this.enumValues = enumValues; + } +} diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/StringUtil.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/StringUtil.java new file mode 100644 index 000000000000..70068d6f71d8 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/StringUtil.java @@ -0,0 +1,83 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client; + +import java.util.Collection; +import java.util.Iterator; + +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class StringUtil { + /** + * Check if the given array contains the given value (with case-insensitive comparison). + * + * @param array The array + * @param value The value to search + * @return true if the array contains the value + */ + public static boolean containsIgnoreCase(String[] array, String value) { + for (String str : array) { + if (value == null && str == null) { + return true; + } + if (value != null && value.equalsIgnoreCase(str)) { + return true; + } + } + return false; + } + + /** + * Join an array of strings with the given separator. + *

+ * Note: This might be replaced by utility method from commons-lang or guava someday + * if one of those libraries is added as dependency. + *

+ * + * @param array The array of strings + * @param separator The separator + * @return the resulting string + */ + public static String join(String[] array, String separator) { + int len = array.length; + if (len == 0) { + return ""; + } + + StringBuilder out = new StringBuilder(); + out.append(array[0]); + for (int i = 1; i < len; i++) { + out.append(separator).append(array[i]); + } + return out.toString(); + } + + /** + * Join a list of strings with the given separator. + * + * @param list The list of strings + * @param separator The separator + * @return the resulting string + */ + public static String join(Collection list, String separator) { + Iterator iterator = list.iterator(); + StringBuilder out = new StringBuilder(); + if (iterator.hasNext()) { + out.append(iterator.next()); + } + while (iterator.hasNext()) { + out.append(separator).append(iterator.next()); + } + return out.toString(); + } +} diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/api/DefaultApi.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/api/DefaultApi.java new file mode 100644 index 000000000000..2e1c339911b4 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/api/DefaultApi.java @@ -0,0 +1,273 @@ +package org.openapitools.client.api; + +import org.openapitools.client.ApiClient; + +import org.openapitools.client.model.Animal; +import org.openapitools.client.model.Beverage; +import org.openapitools.client.model.Fruit; + +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Objects; +import java.util.Arrays; +import java.util.stream.Collectors; + +import org.springframework.core.io.FileSystemResource; +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.client.RestClient.ResponseSpec; +import org.springframework.web.client.RestClientResponseException; + +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class DefaultApi { + private ApiClient apiClient; + + public DefaultApi() { + this(new ApiClient()); + } + + public DefaultApi(ApiClient apiClient) { + this.apiClient = apiClient; + } + + public ApiClient getApiClient() { + return apiClient; + } + + public void setApiClient(ApiClient apiClient) { + this.apiClient = apiClient; + } + + /** + * + * + *

200 - OK + * @param animal The animal parameter + * @return Animal + * @throws RestClientResponseException if an error occurs while attempting to invoke the API + */ + private ResponseSpec createAnimalRequestCreation(@jakarta.annotation.Nonnull Animal animal) throws RestClientResponseException { + Object postBody = animal; + // verify the required parameter 'animal' is set + if (animal == null) { + throw new RestClientResponseException("Missing the required parameter 'animal' when calling createAnimal", HttpStatus.BAD_REQUEST.value(), HttpStatus.BAD_REQUEST.getReasonPhrase(), null, null, null); + } + // create path and map variables + final Map pathParams = new HashMap<>(); + + final MultiValueMap localVarQueryParams = new LinkedMultiValueMap<>(); + final HttpHeaders headerParams = new HttpHeaders(); + final MultiValueMap cookieParams = new LinkedMultiValueMap<>(); + final MultiValueMap formParams = new LinkedMultiValueMap<>(); + + final String[] localVarAccepts = { + "application/json" + }; + final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + final String[] localVarContentTypes = { + "application/json" + }; + final MediaType localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + + String[] localVarAuthNames = new String[] { }; + + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference<>() {}; + return apiClient.invokeAPI("/animals", HttpMethod.POST, pathParams, localVarQueryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); + } + + /** + * + * + *

200 - OK + * @param animal The animal parameter + * @return Animal + * @throws RestClientResponseException if an error occurs while attempting to invoke the API + */ + public Animal createAnimal(@jakarta.annotation.Nonnull Animal animal) throws RestClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference<>() {}; + return createAnimalRequestCreation(animal).body(localVarReturnType); + } + + /** + * + * + *

200 - OK + * @param animal The animal parameter + * @return ResponseEntity<Animal> + * @throws RestClientResponseException if an error occurs while attempting to invoke the API + */ + public ResponseEntity createAnimalWithHttpInfo(@jakarta.annotation.Nonnull Animal animal) throws RestClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference<>() {}; + return createAnimalRequestCreation(animal).toEntity(localVarReturnType); + } + + /** + * + * + *

200 - OK + * @param animal The animal parameter + * @return ResponseSpec + * @throws RestClientResponseException if an error occurs while attempting to invoke the API + */ + public ResponseSpec createAnimalWithResponseSpec(@jakarta.annotation.Nonnull Animal animal) throws RestClientResponseException { + return createAnimalRequestCreation(animal); + } + + /** + * + * + *

200 - OK + * @param beverage The beverage parameter + * @return Beverage + * @throws RestClientResponseException if an error occurs while attempting to invoke the API + */ + private ResponseSpec createBeverageRequestCreation(@jakarta.annotation.Nonnull Beverage beverage) throws RestClientResponseException { + Object postBody = beverage; + // verify the required parameter 'beverage' is set + if (beverage == null) { + throw new RestClientResponseException("Missing the required parameter 'beverage' when calling createBeverage", HttpStatus.BAD_REQUEST.value(), HttpStatus.BAD_REQUEST.getReasonPhrase(), null, null, null); + } + // create path and map variables + final Map pathParams = new HashMap<>(); + + final MultiValueMap localVarQueryParams = new LinkedMultiValueMap<>(); + final HttpHeaders headerParams = new HttpHeaders(); + final MultiValueMap cookieParams = new LinkedMultiValueMap<>(); + final MultiValueMap formParams = new LinkedMultiValueMap<>(); + + final String[] localVarAccepts = { + "application/json" + }; + final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + final String[] localVarContentTypes = { + "application/json" + }; + final MediaType localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + + String[] localVarAuthNames = new String[] { }; + + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference<>() {}; + return apiClient.invokeAPI("/beverages", HttpMethod.POST, pathParams, localVarQueryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); + } + + /** + * + * + *

200 - OK + * @param beverage The beverage parameter + * @return Beverage + * @throws RestClientResponseException if an error occurs while attempting to invoke the API + */ + public Beverage createBeverage(@jakarta.annotation.Nonnull Beverage beverage) throws RestClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference<>() {}; + return createBeverageRequestCreation(beverage).body(localVarReturnType); + } + + /** + * + * + *

200 - OK + * @param beverage The beverage parameter + * @return ResponseEntity<Beverage> + * @throws RestClientResponseException if an error occurs while attempting to invoke the API + */ + public ResponseEntity createBeverageWithHttpInfo(@jakarta.annotation.Nonnull Beverage beverage) throws RestClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference<>() {}; + return createBeverageRequestCreation(beverage).toEntity(localVarReturnType); + } + + /** + * + * + *

200 - OK + * @param beverage The beverage parameter + * @return ResponseSpec + * @throws RestClientResponseException if an error occurs while attempting to invoke the API + */ + public ResponseSpec createBeverageWithResponseSpec(@jakarta.annotation.Nonnull Beverage beverage) throws RestClientResponseException { + return createBeverageRequestCreation(beverage); + } + + /** + * + * + *

200 - OK + * @param fruit The fruit parameter + * @return Fruit + * @throws RestClientResponseException if an error occurs while attempting to invoke the API + */ + private ResponseSpec createFruitRequestCreation(@jakarta.annotation.Nonnull Fruit fruit) throws RestClientResponseException { + Object postBody = fruit; + // verify the required parameter 'fruit' is set + if (fruit == null) { + throw new RestClientResponseException("Missing the required parameter 'fruit' when calling createFruit", HttpStatus.BAD_REQUEST.value(), HttpStatus.BAD_REQUEST.getReasonPhrase(), null, null, null); + } + // create path and map variables + final Map pathParams = new HashMap<>(); + + final MultiValueMap localVarQueryParams = new LinkedMultiValueMap<>(); + final HttpHeaders headerParams = new HttpHeaders(); + final MultiValueMap cookieParams = new LinkedMultiValueMap<>(); + final MultiValueMap formParams = new LinkedMultiValueMap<>(); + + final String[] localVarAccepts = { + "application/json" + }; + final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); + final String[] localVarContentTypes = { + "application/json" + }; + final MediaType localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); + + String[] localVarAuthNames = new String[] { }; + + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference<>() {}; + return apiClient.invokeAPI("/fruits", HttpMethod.POST, pathParams, localVarQueryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); + } + + /** + * + * + *

200 - OK + * @param fruit The fruit parameter + * @return Fruit + * @throws RestClientResponseException if an error occurs while attempting to invoke the API + */ + public Fruit createFruit(@jakarta.annotation.Nonnull Fruit fruit) throws RestClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference<>() {}; + return createFruitRequestCreation(fruit).body(localVarReturnType); + } + + /** + * + * + *

200 - OK + * @param fruit The fruit parameter + * @return ResponseEntity<Fruit> + * @throws RestClientResponseException if an error occurs while attempting to invoke the API + */ + public ResponseEntity createFruitWithHttpInfo(@jakarta.annotation.Nonnull Fruit fruit) throws RestClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference<>() {}; + return createFruitRequestCreation(fruit).toEntity(localVarReturnType); + } + + /** + * + * + *

200 - OK + * @param fruit The fruit parameter + * @return ResponseSpec + * @throws RestClientResponseException if an error occurs while attempting to invoke the API + */ + public ResponseSpec createFruitWithResponseSpec(@jakarta.annotation.Nonnull Fruit fruit) throws RestClientResponseException { + return createFruitRequestCreation(fruit); + } +} diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/ApiKeyAuth.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/ApiKeyAuth.java new file mode 100644 index 000000000000..1e3913752560 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/ApiKeyAuth.java @@ -0,0 +1,75 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.auth; + +import org.springframework.http.HttpHeaders; +import org.springframework.util.MultiValueMap; + +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class ApiKeyAuth implements Authentication { + private final String location; + private final String paramName; + + private String apiKey; + private String apiKeyPrefix; + + public ApiKeyAuth(String location, String paramName) { + this.location = location; + this.paramName = paramName; + } + + public String getLocation() { + return location; + } + + public String getParamName() { + return paramName; + } + + public String getApiKey() { + return apiKey; + } + + public void setApiKey(String apiKey) { + this.apiKey = apiKey; + } + + public String getApiKeyPrefix() { + return apiKeyPrefix; + } + + public void setApiKeyPrefix(String apiKeyPrefix) { + this.apiKeyPrefix = apiKeyPrefix; + } + + @Override + public void applyToParams(MultiValueMap queryParams, HttpHeaders headerParams, MultiValueMap cookieParams) { + if (apiKey == null) { + return; + } + String value; + if (apiKeyPrefix != null) { + value = apiKeyPrefix + " " + apiKey; + } else { + value = apiKey; + } + if (location.equals("query")) { + queryParams.add(paramName, value); + } else if (location.equals("header")) { + headerParams.add(paramName, value); + } else if (location.equals("cookie")) { + cookieParams.add(paramName, value); + } + } +} diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/Authentication.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/Authentication.java new file mode 100644 index 000000000000..81714a1e507f --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/Authentication.java @@ -0,0 +1,29 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.auth; + +import org.springframework.http.HttpHeaders; +import org.springframework.util.MultiValueMap; + +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public interface Authentication { + /** + * Apply authentication settings to header and / or query parameters. + * + * @param queryParams The query parameters for the request + * @param headerParams The header parameters for the request + * @param cookieParams The cookie parameters for the request + */ + void applyToParams(MultiValueMap queryParams, HttpHeaders headerParams, MultiValueMap cookieParams); +} diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java new file mode 100644 index 000000000000..e437cb32c215 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java @@ -0,0 +1,51 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.auth; + +import java.nio.charset.StandardCharsets; +import java.util.Base64; + +import org.springframework.http.HttpHeaders; +import org.springframework.util.MultiValueMap; + +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class HttpBasicAuth implements Authentication { + private String username; + private String password; + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + @Override + public void applyToParams(MultiValueMap queryParams, HttpHeaders headerParams, MultiValueMap cookieParams) { + if (username == null && password == null) { + return; + } + String str = (username == null ? "" : username) + ":" + (password == null ? "" : password); + headerParams.add(HttpHeaders.AUTHORIZATION, "Basic " + Base64.getEncoder().encodeToString(str.getBytes(StandardCharsets.UTF_8))); + } +} diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/HttpBearerAuth.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/HttpBearerAuth.java new file mode 100644 index 000000000000..9387122e50b6 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/HttpBearerAuth.java @@ -0,0 +1,69 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.auth; + +import java.util.Optional; +import java.util.function.Supplier; +import org.springframework.http.HttpHeaders; +import org.springframework.util.MultiValueMap; + +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class HttpBearerAuth implements Authentication { + private final String scheme; + private Supplier tokenSupplier; + + public HttpBearerAuth(String scheme) { + this.scheme = scheme; + } + + /** + * Gets the token, which together with the scheme, will be sent as the value of the Authorization header. + * + * @return The bearer token + */ + public String getBearerToken() { + return tokenSupplier.get(); + } + + /** + * Sets the token, which together with the scheme, will be sent as the value of the Authorization header. + * + * @param bearerToken The bearer token to send in the Authorization header + */ + public void setBearerToken(String bearerToken) { + this.tokenSupplier = () -> bearerToken; + } + + /** + * Sets the supplier of tokens, which together with the scheme, will be sent as the value of the Authorization header. + * + * @param tokenSupplier The supplier of bearer tokens to send in the Authorization header + */ + public void setBearerToken(Supplier tokenSupplier) { + this.tokenSupplier = tokenSupplier; + } + + @Override + public void applyToParams(MultiValueMap queryParams, HttpHeaders headerParams, MultiValueMap cookieParams) { + String bearerToken = Optional.ofNullable(tokenSupplier).map(Supplier::get).orElse(null); + if (bearerToken == null) { + return; + } + headerParams.add(HttpHeaders.AUTHORIZATION, (scheme != null ? upperCaseBearer(scheme) + " " : "") + bearerToken); + } + + private static String upperCaseBearer(String scheme) { + return ("bearer".equalsIgnoreCase(scheme)) ? "Bearer" : scheme; + } +} diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Animal.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Animal.java new file mode 100644 index 000000000000..27cb27ea66d8 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Animal.java @@ -0,0 +1,41 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Arrays; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import org.openapitools.client.model.Cat; +import org.openapitools.client.model.Dog; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonIgnore; + +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@JsonIgnoreProperties( + value = "", // ignore manually set , it will be automatically generated by Jackson during serialization + allowSetters = true // allows the to be set during deserialization +) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "", visible = true) + +public interface Animal { +} + diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Apple.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Apple.java new file mode 100644 index 000000000000..b008fc16398a --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Apple.java @@ -0,0 +1,138 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Arrays; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonIgnore; + +/** + * Apple + */ +@JsonPropertyOrder({ + Apple.JSON_PROPERTY_FRUIT_TYPE, + Apple.JSON_PROPERTY_SEEDS +}) +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class Apple implements Fruit { + public static final String JSON_PROPERTY_FRUIT_TYPE = "fruitType"; + @jakarta.annotation.Nonnull + private String fruitType; + + public static final String JSON_PROPERTY_SEEDS = "seeds"; + @jakarta.annotation.Nullable + private Integer seeds; + + public Apple() { + } + + public Apple fruitType(@jakarta.annotation.Nonnull String fruitType) { + + this.fruitType = fruitType; + return this; + } + + /** + * Get fruitType + * @return fruitType + */ + @jakarta.annotation.Nonnull + @JsonProperty(value = JSON_PROPERTY_FRUIT_TYPE, required = true) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + + public String getFruitType() { + return fruitType; + } + + + @JsonProperty(value = JSON_PROPERTY_FRUIT_TYPE, required = true) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setFruitType(@jakarta.annotation.Nonnull String fruitType) { + this.fruitType = fruitType; + } + + public Apple seeds(@jakarta.annotation.Nullable Integer seeds) { + + this.seeds = seeds; + return this; + } + + /** + * Get seeds + * @return seeds + */ + @jakarta.annotation.Nullable + @JsonProperty(value = JSON_PROPERTY_SEEDS, required = false) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public Integer getSeeds() { + return seeds; + } + + + @JsonProperty(value = JSON_PROPERTY_SEEDS, required = false) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setSeeds(@jakarta.annotation.Nullable Integer seeds) { + this.seeds = seeds; + } + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Apple apple = (Apple) o; + return Objects.equals(this.fruitType, apple.fruitType) && + Objects.equals(this.seeds, apple.seeds); + } + + @Override + public int hashCode() { + return Objects.hash(fruitType, seeds); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Apple {\n"); + sb.append(" fruitType: ").append(toIndentedString(fruitType)).append("\n"); + sb.append(" seeds: ").append(toIndentedString(seeds)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + return o == null ? "null" : o.toString().replace("\n", "\n "); + } + +} + diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Banana.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Banana.java new file mode 100644 index 000000000000..64ff94b98b3a --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Banana.java @@ -0,0 +1,138 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Arrays; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonIgnore; + +/** + * Banana + */ +@JsonPropertyOrder({ + Banana.JSON_PROPERTY_FRUIT_TYPE, + Banana.JSON_PROPERTY_LENGTH +}) +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class Banana implements Fruit { + public static final String JSON_PROPERTY_FRUIT_TYPE = "fruitType"; + @jakarta.annotation.Nonnull + private String fruitType; + + public static final String JSON_PROPERTY_LENGTH = "length"; + @jakarta.annotation.Nullable + private Integer length; + + public Banana() { + } + + public Banana fruitType(@jakarta.annotation.Nonnull String fruitType) { + + this.fruitType = fruitType; + return this; + } + + /** + * Get fruitType + * @return fruitType + */ + @jakarta.annotation.Nonnull + @JsonProperty(value = JSON_PROPERTY_FRUIT_TYPE, required = true) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + + public String getFruitType() { + return fruitType; + } + + + @JsonProperty(value = JSON_PROPERTY_FRUIT_TYPE, required = true) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setFruitType(@jakarta.annotation.Nonnull String fruitType) { + this.fruitType = fruitType; + } + + public Banana length(@jakarta.annotation.Nullable Integer length) { + + this.length = length; + return this; + } + + /** + * Get length + * @return length + */ + @jakarta.annotation.Nullable + @JsonProperty(value = JSON_PROPERTY_LENGTH, required = false) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public Integer getLength() { + return length; + } + + + @JsonProperty(value = JSON_PROPERTY_LENGTH, required = false) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setLength(@jakarta.annotation.Nullable Integer length) { + this.length = length; + } + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Banana banana = (Banana) o; + return Objects.equals(this.fruitType, banana.fruitType) && + Objects.equals(this.length, banana.length); + } + + @Override + public int hashCode() { + return Objects.hash(fruitType, length); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Banana {\n"); + sb.append(" fruitType: ").append(toIndentedString(fruitType)).append("\n"); + sb.append(" length: ").append(toIndentedString(length)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + return o == null ? "null" : o.toString().replace("\n", "\n "); + } + +} + diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Beverage.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Beverage.java new file mode 100644 index 000000000000..d7d0dcc2f304 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Beverage.java @@ -0,0 +1,46 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Arrays; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import org.openapitools.client.model.Soda; +import org.openapitools.client.model.Water; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonIgnore; + +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@JsonIgnoreProperties( + value = "beverageType", // ignore manually set beverageType, it will be automatically generated by Jackson during serialization + allowSetters = true // allows the beverageType to be set during deserialization +) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "beverageType", visible = true, defaultImpl = Water.class) +@JsonSubTypes({ + @JsonSubTypes.Type(value = Soda.class, name = "SODA"), + @JsonSubTypes.Type(value = Water.class, name = "WATER"), +}) + +public interface Beverage { + public String getBeverageType(); +} + diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Cat.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Cat.java new file mode 100644 index 000000000000..16191da7491f --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Cat.java @@ -0,0 +1,103 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Arrays; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonIgnore; + +/** + * Cat + */ +@JsonPropertyOrder({ + Cat.JSON_PROPERTY_DECLAWED +}) +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class Cat implements Animal { + public static final String JSON_PROPERTY_DECLAWED = "declawed"; + @jakarta.annotation.Nullable + private Boolean declawed; + + public Cat() { + } + + public Cat declawed(@jakarta.annotation.Nullable Boolean declawed) { + + this.declawed = declawed; + return this; + } + + /** + * Get declawed + * @return declawed + */ + @jakarta.annotation.Nullable + @JsonProperty(value = JSON_PROPERTY_DECLAWED, required = false) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public Boolean getDeclawed() { + return declawed; + } + + + @JsonProperty(value = JSON_PROPERTY_DECLAWED, required = false) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setDeclawed(@jakarta.annotation.Nullable Boolean declawed) { + this.declawed = declawed; + } + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Cat cat = (Cat) o; + return Objects.equals(this.declawed, cat.declawed); + } + + @Override + public int hashCode() { + return Objects.hash(declawed); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Cat {\n"); + sb.append(" declawed: ").append(toIndentedString(declawed)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + return o == null ? "null" : o.toString().replace("\n", "\n "); + } + +} + diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Dog.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Dog.java new file mode 100644 index 000000000000..0392d22fd70c --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Dog.java @@ -0,0 +1,103 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Arrays; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonIgnore; + +/** + * Dog + */ +@JsonPropertyOrder({ + Dog.JSON_PROPERTY_BARK +}) +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class Dog implements Animal { + public static final String JSON_PROPERTY_BARK = "bark"; + @jakarta.annotation.Nullable + private Boolean bark; + + public Dog() { + } + + public Dog bark(@jakarta.annotation.Nullable Boolean bark) { + + this.bark = bark; + return this; + } + + /** + * Get bark + * @return bark + */ + @jakarta.annotation.Nullable + @JsonProperty(value = JSON_PROPERTY_BARK, required = false) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public Boolean getBark() { + return bark; + } + + + @JsonProperty(value = JSON_PROPERTY_BARK, required = false) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setBark(@jakarta.annotation.Nullable Boolean bark) { + this.bark = bark; + } + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Dog dog = (Dog) o; + return Objects.equals(this.bark, dog.bark); + } + + @Override + public int hashCode() { + return Objects.hash(bark); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Dog {\n"); + sb.append(" bark: ").append(toIndentedString(bark)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + return o == null ? "null" : o.toString().replace("\n", "\n "); + } + +} + diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Fruit.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Fruit.java new file mode 100644 index 000000000000..39eba6978a18 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Fruit.java @@ -0,0 +1,46 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Arrays; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import org.openapitools.client.model.Apple; +import org.openapitools.client.model.Banana; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonIgnore; + +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@JsonIgnoreProperties( + value = "fruitType", // ignore manually set fruitType, it will be automatically generated by Jackson during serialization + allowSetters = true // allows the fruitType to be set during deserialization +) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "fruitType", visible = true, defaultImpl = Apple.class) +@JsonSubTypes({ + @JsonSubTypes.Type(value = Apple.class, name = "APPLE"), + @JsonSubTypes.Type(value = Banana.class, name = "BANANA"), +}) + +public interface Fruit { + public String getFruitType(); +} + diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Soda.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Soda.java new file mode 100644 index 000000000000..01ce757fe667 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Soda.java @@ -0,0 +1,138 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Arrays; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonIgnore; + +/** + * Soda + */ +@JsonPropertyOrder({ + Soda.JSON_PROPERTY_BEVERAGE_TYPE, + Soda.JSON_PROPERTY_SUGAR_GRAMS +}) +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class Soda implements Beverage { + public static final String JSON_PROPERTY_BEVERAGE_TYPE = "beverageType"; + @jakarta.annotation.Nonnull + private String beverageType; + + public static final String JSON_PROPERTY_SUGAR_GRAMS = "sugarGrams"; + @jakarta.annotation.Nullable + private Integer sugarGrams; + + public Soda() { + } + + public Soda beverageType(@jakarta.annotation.Nonnull String beverageType) { + + this.beverageType = beverageType; + return this; + } + + /** + * Get beverageType + * @return beverageType + */ + @jakarta.annotation.Nonnull + @JsonProperty(value = JSON_PROPERTY_BEVERAGE_TYPE, required = true) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + + public String getBeverageType() { + return beverageType; + } + + + @JsonProperty(value = JSON_PROPERTY_BEVERAGE_TYPE, required = true) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setBeverageType(@jakarta.annotation.Nonnull String beverageType) { + this.beverageType = beverageType; + } + + public Soda sugarGrams(@jakarta.annotation.Nullable Integer sugarGrams) { + + this.sugarGrams = sugarGrams; + return this; + } + + /** + * Get sugarGrams + * @return sugarGrams + */ + @jakarta.annotation.Nullable + @JsonProperty(value = JSON_PROPERTY_SUGAR_GRAMS, required = false) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public Integer getSugarGrams() { + return sugarGrams; + } + + + @JsonProperty(value = JSON_PROPERTY_SUGAR_GRAMS, required = false) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setSugarGrams(@jakarta.annotation.Nullable Integer sugarGrams) { + this.sugarGrams = sugarGrams; + } + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Soda soda = (Soda) o; + return Objects.equals(this.beverageType, soda.beverageType) && + Objects.equals(this.sugarGrams, soda.sugarGrams); + } + + @Override + public int hashCode() { + return Objects.hash(beverageType, sugarGrams); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Soda {\n"); + sb.append(" beverageType: ").append(toIndentedString(beverageType)).append("\n"); + sb.append(" sugarGrams: ").append(toIndentedString(sugarGrams)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + return o == null ? "null" : o.toString().replace("\n", "\n "); + } + +} + diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Water.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Water.java new file mode 100644 index 000000000000..b28836db5275 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Water.java @@ -0,0 +1,138 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Arrays; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonIgnore; + +/** + * Water + */ +@JsonPropertyOrder({ + Water.JSON_PROPERTY_BEVERAGE_TYPE, + Water.JSON_PROPERTY_SPARKLING +}) +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class Water implements Beverage { + public static final String JSON_PROPERTY_BEVERAGE_TYPE = "beverageType"; + @jakarta.annotation.Nonnull + private String beverageType; + + public static final String JSON_PROPERTY_SPARKLING = "sparkling"; + @jakarta.annotation.Nullable + private Boolean sparkling; + + public Water() { + } + + public Water beverageType(@jakarta.annotation.Nonnull String beverageType) { + + this.beverageType = beverageType; + return this; + } + + /** + * Get beverageType + * @return beverageType + */ + @jakarta.annotation.Nonnull + @JsonProperty(value = JSON_PROPERTY_BEVERAGE_TYPE, required = true) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + + public String getBeverageType() { + return beverageType; + } + + + @JsonProperty(value = JSON_PROPERTY_BEVERAGE_TYPE, required = true) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setBeverageType(@jakarta.annotation.Nonnull String beverageType) { + this.beverageType = beverageType; + } + + public Water sparkling(@jakarta.annotation.Nullable Boolean sparkling) { + + this.sparkling = sparkling; + return this; + } + + /** + * Get sparkling + * @return sparkling + */ + @jakarta.annotation.Nullable + @JsonProperty(value = JSON_PROPERTY_SPARKLING, required = false) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public Boolean getSparkling() { + return sparkling; + } + + + @JsonProperty(value = JSON_PROPERTY_SPARKLING, required = false) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setSparkling(@jakarta.annotation.Nullable Boolean sparkling) { + this.sparkling = sparkling; + } + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Water water = (Water) o; + return Objects.equals(this.beverageType, water.beverageType) && + Objects.equals(this.sparkling, water.sparkling); + } + + @Override + public int hashCode() { + return Objects.hash(beverageType, sparkling); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Water {\n"); + sb.append(" beverageType: ").append(toIndentedString(beverageType)).append("\n"); + sb.append(" sparkling: ").append(toIndentedString(sparkling)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + return o == null ? "null" : o.toString().replace("\n", "\n "); + } + +} + diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/api/DefaultApiTest.java b/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/api/DefaultApiTest.java new file mode 100644 index 000000000000..15f2ff6833b6 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/api/DefaultApiTest.java @@ -0,0 +1,76 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.api; + +import org.openapitools.client.model.Animal; +import org.openapitools.client.model.Beverage; +import org.openapitools.client.model.Fruit; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * API tests for DefaultApi + */ +@Disabled +public class DefaultApiTest { + + private final DefaultApi api = new DefaultApi(); + + + /** + * + * + * + */ + @Test + public void createAnimalTest() { + Animal animal = null; + Animal response = api.createAnimal(animal); + + // TODO: test validations + } + + /** + * + * + * + */ + @Test + public void createBeverageTest() { + Beverage beverage = null; + Beverage response = api.createBeverage(beverage); + + // TODO: test validations + } + + /** + * + * + * + */ + @Test + public void createFruitTest() { + Fruit fruit = null; + Fruit response = api.createFruit(fruit); + + // TODO: test validations + } + +} diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/AnimalTest.java b/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/AnimalTest.java new file mode 100644 index 000000000000..642b7101ecbf --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/AnimalTest.java @@ -0,0 +1,34 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import org.openapitools.client.model.Cat; +import org.openapitools.client.model.Dog; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for Animal + */ +class AnimalTest { +} diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/AppleTest.java b/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/AppleTest.java new file mode 100644 index 000000000000..95b3a1688fe2 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/AppleTest.java @@ -0,0 +1,50 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for Apple + */ +class AppleTest { + private final Apple model = new Apple(); + + /** + * Model tests for Apple + */ + @Test + void testApple() { + // TODO: test Apple + } + + /** + * Test the property 'seeds' + */ + @Test + void seedsTest() { + // TODO: test seeds + } + +} diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/BananaTest.java b/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/BananaTest.java new file mode 100644 index 000000000000..76a04e5047b3 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/BananaTest.java @@ -0,0 +1,50 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for Banana + */ +class BananaTest { + private final Banana model = new Banana(); + + /** + * Model tests for Banana + */ + @Test + void testBanana() { + // TODO: test Banana + } + + /** + * Test the property 'length' + */ + @Test + void lengthTest() { + // TODO: test length + } + +} diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/BeverageTest.java b/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/BeverageTest.java new file mode 100644 index 000000000000..cda5e3bd9b31 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/BeverageTest.java @@ -0,0 +1,34 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import org.openapitools.client.model.Soda; +import org.openapitools.client.model.Water; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for Beverage + */ +class BeverageTest { +} diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/CatTest.java b/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/CatTest.java new file mode 100644 index 000000000000..7b405adc7262 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/CatTest.java @@ -0,0 +1,47 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for Cat + */ +class CatTest { + private final Cat model = new Cat(); + + /** + * Model tests for Cat + */ + @Test + void testCat() { + // TODO: test Cat + } + + /** + * Test the property 'declawed' + */ + @Test + void declawedTest() { + // TODO: test declawed + } + +} diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/DogTest.java b/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/DogTest.java new file mode 100644 index 000000000000..bc7dcaae7e8a --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/DogTest.java @@ -0,0 +1,47 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for Dog + */ +class DogTest { + private final Dog model = new Dog(); + + /** + * Model tests for Dog + */ + @Test + void testDog() { + // TODO: test Dog + } + + /** + * Test the property 'bark' + */ + @Test + void barkTest() { + // TODO: test bark + } + +} diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/FruitTest.java b/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/FruitTest.java new file mode 100644 index 000000000000..e199cd7b473b --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/FruitTest.java @@ -0,0 +1,34 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import org.openapitools.client.model.Apple; +import org.openapitools.client.model.Banana; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for Fruit + */ +class FruitTest { +} diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/SodaTest.java b/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/SodaTest.java new file mode 100644 index 000000000000..f9cf3755c336 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/SodaTest.java @@ -0,0 +1,50 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for Soda + */ +class SodaTest { + private final Soda model = new Soda(); + + /** + * Model tests for Soda + */ + @Test + void testSoda() { + // TODO: test Soda + } + + /** + * Test the property 'sugarGrams' + */ + @Test + void sugarGramsTest() { + // TODO: test sugarGrams + } + +} diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/WaterTest.java b/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/WaterTest.java new file mode 100644 index 000000000000..d22b1f3184bc --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/test/java/org/openapitools/client/model/WaterTest.java @@ -0,0 +1,50 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for Water + */ +class WaterTest { + private final Water model = new Water(); + + /** + * Model tests for Water + */ + @Test + void testWater() { + // TODO: test Water + } + + /** + * Test the property 'sparkling' + */ + @Test + void sparklingTest() { + // TODO: test sparkling + } + +} diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/.openapi-generator-ignore b/samples/client/others/kotlin-oneof-jackson-default-impl/.openapi-generator-ignore new file mode 100644 index 000000000000..7484ee590a38 --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/.openapi-generator/FILES b/samples/client/others/kotlin-oneof-jackson-default-impl/.openapi-generator/FILES new file mode 100644 index 000000000000..10e1864e0a8b --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/.openapi-generator/FILES @@ -0,0 +1,31 @@ +README.md +build.gradle +docs/Animal.md +docs/Apple.md +docs/Banana.md +docs/Beverage.md +docs/Cat.md +docs/DefaultApi.md +docs/Dog.md +docs/Fruit.md +docs/Soda.md +docs/Water.md +gradle/wrapper/gradle-wrapper.jar +gradle/wrapper/gradle-wrapper.properties +gradlew +gradlew.bat +settings.gradle +src/main/kotlin/org/openapitools/client/apis/DefaultApi.kt +src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +src/main/kotlin/org/openapitools/client/infrastructure/CollectionFormats.kt +src/main/kotlin/org/openapitools/client/infrastructure/ResponseExt.kt +src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +src/main/kotlin/org/openapitools/client/models/Animal.kt +src/main/kotlin/org/openapitools/client/models/Apple.kt +src/main/kotlin/org/openapitools/client/models/Banana.kt +src/main/kotlin/org/openapitools/client/models/Beverage.kt +src/main/kotlin/org/openapitools/client/models/Cat.kt +src/main/kotlin/org/openapitools/client/models/Dog.kt +src/main/kotlin/org/openapitools/client/models/Fruit.kt +src/main/kotlin/org/openapitools/client/models/Soda.kt +src/main/kotlin/org/openapitools/client/models/Water.kt diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/.openapi-generator/VERSION b/samples/client/others/kotlin-oneof-jackson-default-impl/.openapi-generator/VERSION new file mode 100644 index 000000000000..186c33c96ed8 --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/.openapi-generator/VERSION @@ -0,0 +1 @@ +7.24.0-SNAPSHOT diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/README.md b/samples/client/others/kotlin-oneof-jackson-default-impl/README.md new file mode 100644 index 000000000000..3599419ac462 --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/README.md @@ -0,0 +1,72 @@ +# org.openapitools.client - Kotlin client library for Jackson defaultImpl oneOf sample + +Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + + +## Overview +This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [openapi-spec](https://github.com/OAI/OpenAPI-Specification) from a remote server, you can easily generate an API client. + +- API version: 0.0.1 +- Package version: +- Generator version: 7.24.0-SNAPSHOT +- Build package: org.openapitools.codegen.languages.KotlinClientCodegen + +## Requires + +* Kotlin 2.2.20 +* Gradle 8.14 + +## Build + +First, create the gradle wrapper script: + +``` +gradle wrapper +``` + +Then, run: + +``` +./gradlew check assemble +``` + +This runs all tests and packages the library. + +## Features/Implementation Notes + +* Supports JSON inputs/outputs, File inputs, and Form inputs. +* Supports collection formats for query parameters: csv, tsv, ssv, pipes. +* Some Kotlin and Java types are fully qualified to avoid conflicts with types defined in OpenAPI definitions. +* Implementation of ApiClient is intended to reduce method counts, specifically to benefit Android targets. + + +## Documentation for API Endpoints + +All URIs are relative to *http://localhost:8080* + +| Class | Method | HTTP request | Description | +| ------------ | ------------- | ------------- | ------------- | +| *DefaultApi* | [**createAnimal**](docs/DefaultApi.md#createanimal) | **POST** animals | | +| *DefaultApi* | [**createBeverage**](docs/DefaultApi.md#createbeverage) | **POST** beverages | | +| *DefaultApi* | [**createFruit**](docs/DefaultApi.md#createfruit) | **POST** fruits | | + + + +## Documentation for Models + + - [org.openapitools.client.models.Animal](docs/Animal.md) + - [org.openapitools.client.models.Apple](docs/Apple.md) + - [org.openapitools.client.models.Banana](docs/Banana.md) + - [org.openapitools.client.models.Beverage](docs/Beverage.md) + - [org.openapitools.client.models.Cat](docs/Cat.md) + - [org.openapitools.client.models.Dog](docs/Dog.md) + - [org.openapitools.client.models.Fruit](docs/Fruit.md) + - [org.openapitools.client.models.Soda](docs/Soda.md) + - [org.openapitools.client.models.Water](docs/Water.md) + + + +## Documentation for Authorization + +Endpoints do not require authorization. + diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build.gradle b/samples/client/others/kotlin-oneof-jackson-default-impl/build.gradle new file mode 100644 index 000000000000..9806188d8a65 --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/build.gradle @@ -0,0 +1,81 @@ +group 'org.openapitools' +version '1.0.0' + +wrapper { + gradleVersion = '8.14.3' + distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" +} + +buildscript { + ext.kotlin_version = '2.2.20' + ext.retrofitVersion = '3.0.0' + ext.spotless_version = "7.2.1" + + repositories { + maven { url "https://repo1.maven.org/maven2" } + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath "com.diffplug.spotless:spotless-plugin-gradle:$spotless_version" + } +} + +apply plugin: 'kotlin' +apply plugin: 'maven-publish' +apply plugin: 'com.diffplug.spotless' + +repositories { + maven { url "https://repo1.maven.org/maven2" } +} + +// Use spotless plugin to automatically format code, remove unused import, etc +// To apply changes directly to the file, run `gradlew spotlessApply` +// Ref: https://github.com/diffplug/spotless/tree/main/plugin-gradle +spotless { + // comment out below to run spotless as part of the `check` task + enforceCheck false + + format 'misc', { + // define the files (e.g. '*.gradle', '*.md') to apply `misc` to + target '.gitignore' + + // define the steps to apply to those files + trimTrailingWhitespace() + indentWithSpaces() // Takes an integer argument if you don't like 4 + endWithNewline() + } + kotlin { + ktfmt() + } +} + +test { + useJUnitPlatform() +} + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" + implementation "com.fasterxml.jackson.module:jackson-module-kotlin:2.20.0" + implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.20.0" + implementation "com.squareup.okhttp3:logging-interceptor:5.1.0" + implementation "com.squareup.retrofit2:retrofit:$retrofitVersion" + implementation "com.squareup.retrofit2:converter-jackson:$retrofitVersion" + implementation "com.squareup.retrofit2:converter-scalars:$retrofitVersion" + testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" +} + +java { + withSourcesJar() +} + +publishing { + publications { + maven(MavenPublication) { + groupId = 'org.openapitools' + artifactId = 'kotlin-oneof-jackson-default-impl' + version = '1.0.0' + from components.java + } + } +} diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/META-INF/kotlin-oneof-jackson-default-impl.kotlin_module b/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/META-INF/kotlin-oneof-jackson-default-impl.kotlin_module new file mode 100644 index 0000000000000000000000000000000000000000..ef915de2ec8bf18a9c861cecd52841cc1946b03e GIT binary patch literal 24 YcmZQzU|?ooU|@n`AjQC-#Gu6h00D0RQ~&?~ literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/apis/DefaultApi.class b/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/apis/DefaultApi.class new file mode 100644 index 0000000000000000000000000000000000000000..72fa482998b6c467cd2b3e649e11aa2f212a1c20 GIT binary patch literal 1694 zcmbVMTTc@~6h5;pyW1^bLD2%FqX)TtJ?ChMGZ{|Dq`SttTcL3OiX9RM>YuKX0T-xDE2uIpghcj2% zxR&-CR;RwBwmaMaLLk$mU1~ejZPNr~jD%ZXH@`^fNp^~`^dOs@Fv5yW<-r@d4mpVQpV9?MLNnj;p zZ8BByD0ihzT~{coxIpQTvR1(@|V@SeJRUfy7&5y*ocUDmL}&-yR#C zzTO}{sY+}yMj##eupxuc>R8hwje*^IJ+Kmuo+-D4a=2^1Ws26Q zq6lj3ZUSpw3w}U=v;qN3TKmKUsen=q+u_SuZ_U!Onx$pVdKP}69IQXScvIyRP8 zD-zhaw6cdf6rDuJG8c+FZmQg+41@iM5sWJTe@f#k{emH2o|g-OwQ-uFWMQj?sUolx zB`PmmChGYnt+u3a^R?*J$@6vx-;=4okI-fdi!gP<8!lD8haEM4?7ND$*?TT|#la`2 z-=72)W31$MN1)4tH;<@C+e|TUfMRu+V)QZVMEG8n?Q)0dm^DZSH3o?!`UyIYC%DqU zfTuX8F-InjlmrX%xS``Bjq@fB0}B%-QLxV!h#<`rO!sMS4AW$;Ofv(seVUuYG`Frs zgN_u?I1L_$1jlIb9FpEXg+vMNgkKisORxZoCAbUsPJu|c4-ZaZO2R`4OA;m|EK69C UuquPiM-tW~%t**dSeLNz2h9=3Hvj+t literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApiClient$Companion.class b/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/infrastructure/ApiClient$Companion.class new file mode 100644 index 0000000000000000000000000000000000000000..44183e882a2be8fd3e55a9bf2e27a4508a32a225 GIT binary patch literal 1941 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 H&u{nzfu!PV literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/infrastructure/CollectionFormats$CSVParams.class b/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/infrastructure/CollectionFormats$CSVParams.class new file mode 100644 index 0000000000000000000000000000000000000000..1caef78830282bce18c097c8d9b528686a047599 GIT binary patch literal 2336 zcmbtWO;g)e6g^KivMh`dA~6nW5<*CVA&v|2TNK49_CS{}(%P zW_dTp;mKa!(mKQa-rY-M6qcDe0xLh6SD-W8-19@%@r>p{i>eXYfoHl#%@aA{jzwv| z!f@5vwXMB40a2!HGVD?&3R1b4*wT6q1&pY;iXtU%&hea(xU&qYNpUuc_f({DgP}0F zaoP3Lx<@5l2mqkMb|oIKxmqW`1Rd=9U?n z^aV++gB0~6NerN5?uiNY6zN+>%w}k|McMt~`0%DG6(v>Djt^COByEg-c~w%x-VnWI zrBFORoRwzS;)qhvbDA`&=xJS=NzbHCew5QnpC&Kfpc9==R9#kBbe0(>i}+l5p=h~L zT0bwWjwSDZee!*tZ1TiBnpU!!I-XYgHTmQxc|bTg%Y^T@JJFSW&-S;=P1D-rzE_T` zU3OagF2m#h+Hy1ag4)el-z805=*kcGNK@H{v*VefZ8Kb7ZF`~9vTNRf!yVG=Lbq{J zC#?EgWHeZJJbSs_+O&f;p=lC&-M374-3%PDjyETIvCbOKInZ3q^X#DNnw;CzX4Qt@ z4lH}g5xCc4i1iE3(3dY!uMtUJM}Aa zKhs3QGL6C*$Y6!WT*m+d$kVC=nK=hJgh6OA;8Q}7#I0$4_z2ggrhh~37g~353^3F@-j*Ul$a=<7N*{o}7`R9H``4e-uWCPCKL1 zqVs>C`;O>t5sgUE8i9$3ib=ZZw@0{pg!9pLXa^{YJVuCEWUoV8JfkfV?E?y@C%Q5o z#&nBhAd+7c6*NYyYGJ)dE|h9`JhqknJ~H^4Zmc(#E&7tiOM{$7ibo>2}hn%v^(p0TWu{ot1gtTmNyvgpTC{&YI$7lS`8ftxm#U`H1F2Kh?=h6 z3b>HU;!^sWhbbs))z_!^>ZJ8c>Ln95p?ceB-g!?-&isc;S!DkdIamSLzKyL{1Pux!{D5k?A8zPZH+~Y~u0p$QGJV}S8Z(VyBYHbWrjZ|~_ljv`=qf)% zYht)_G-p)U(v3{1kjon*nL@H)RFaj%`(IPZ%s@W1G)j^JNz6hj!y;Mw4r#>l%=1h> zJ3{A`()-_1W(Yh-!|U?D%jwLaG%2;)-Q;I{>H0e}P44U~U(Uo`o)N7BkKxf}2V5G9 z#N|^&hQYqsNzA%1TOaHbvywG`+hw>~7t&pAx3=8iRmf_hdfj)px4{Dup5x1GL+nZ( zj%tR9AKOxkmTSvHp#~YEd7qjkS<72S!ux0x=g3XbZ^j_n=Y8g$WKkbMd1%R8+b9plpu#@=H5JXEC*s(1=j zB&bpHd@eCfBuzVP23< zm~R+<0(JTp$R>#;)X2L*>l2!zFC$M+u}W*5v>#HUUv45{gl}zphw3Jn d!aTm;#Gpb^VL>6Q@I&+rD5RoIN#VA_;}7ux8AJd8 literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/infrastructure/CollectionFormats$SPACEParams.class b/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/infrastructure/CollectionFormats$SPACEParams.class new file mode 100644 index 0000000000000000000000000000000000000000..87b58b3cee8940113382d51e4da391812777a9cb GIT binary patch literal 906 zcmbtSOK;Oa5dLXop7LJ=7h88YszvJ3~E`TP3)hkFbw zow0GD(*B`zVj!F#ACFEwnj}vF3~Zb#Gz~tN$#^!?7bmT4o>_mODzzS4ng%<2T|sBu}Md0ulB^tWx`zv((mF z#;s6TD~ZNp*CcTu4^)~^d!1;fBH2?`QASg1<3zff7CYcXfBFy|v<+Fp+hjc=KOY0=aqS00zw;dc literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/infrastructure/CollectionFormats$SSVParams.class b/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/infrastructure/CollectionFormats$SSVParams.class new file mode 100644 index 0000000000000000000000000000000000000000..301c1163d7879f5e5444e1c64c2c199e8ee72463 GIT binary patch literal 2041 zcmbtU%~RV(6#uPkY*}#=<2Vi>C541G7)nIwS6WjVa7uCFK&Q@d;k1Ya*2pWWT{F#% z{wqE8*j^f@)5&;p>>t(XldRYVa%q{7v~S<{@4ct@_dkEW2C#xnhSeb4cY`CL_>nY0 z;A_|OrBKF|YA@v4gdNXxLgCf|-xr>dfm#c~HaB{@+1&b`hrF$`V3+Yz8~8~vWR|3o zW|`soOryn*x!W<)cN*`*qZopX9K)T%!1z+Rt>ZSKHzHKrck3#0s-;ITuQ1&34up4@*vIe% zDGu_A^Vr;JQK_mIGplUn@gA-^$m3cbBgi;NW0WCn4y0yy5~qB*W)P;r`NA=jXSUy! z4e1VQyb^}|C84}YRq=wOmz#SGl{0n;u6kwIS;EZY7RDWn;Wo8ySe`T`i-`zvIYRsa zgKdJIfT1)~xtJS6ZeN(*d@&T?stkr9k9(MQVBtd&#~|X;*QpzP#}`@LXJC^yDg=HY zt{w2ODSqq-<&nx9!(`HPuRq>;Xw>yHlf^ux*b1b2kz_o*EB1KDHw=Fz!+0k0aNCE& z{bzoCs48b24bACZN5wy-cGnW>VRhIr>CQVUoQI1A2M_R&VYHFBd@c;%<%ZJ~S?%K# zEeR|7fNFUd5%i;5Kgoz%AZnLPb@$|sV~tty+dXlt!X&*{9m^(GVU*64T^{S6ELsa} z^`>1e<_p%iT}&6Ph4ez|%`cg>JyOW5PLQNX5~rB4SuD%mC5=RGKeY?Fak{UU-~5_! zqR@+%`d#`vhkz2esUH0KK#5>)zQw&m9jN)F&-1c<eMKskk>W#qT{uU2qbWfPMrrcLNTGI^EKXjClZBbXp zQcKe5FR7Km0%W*-UhRxDUsp8H@3Z;@=$ zSVfJzTXa65^EvS?e2Wb_8>IaS0sV9vsX9K3pU?3{9gpy39bcik4W_Y#ueWhUqolE{ Tk<<7lenvDhF;Ui-(s=wYhxiu} literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/infrastructure/CollectionFormats$TSVParams.class b/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/infrastructure/CollectionFormats$TSVParams.class new file mode 100644 index 0000000000000000000000000000000000000000..0d2228d8fe38b646ddb8c97a59c117398305ddf8 GIT binary patch literal 2039 zcmbtUO;a035Ph=}(rT^PLY8HWgM)1xBM4p~Urt1bK@LH-45>hI;WR7*j9AU$oe>q^ z$Y04R$K(=Isgz6QV}4XBy{ok(z?Xz7X{TrUA(N^^9_I{tTQYJ;l3Lj3B`}3 z2?Afco-c(mu2g#=*CuRxrX32m7WlsKj11ID5Vp9{6Pp`bKk$&ZbQbI~acccIDTd5~ zRMIRmT%T+-`7w9fM*40;YE!LjF+4nfy3n=qx!QL(OeocUbuqTQ--wtsh1m(YRNCcA z1%^iiw7V9VwYKk93GOJSU?azH=P)q7RBrRQMeL0T75Ck`ih^qC5zQ+MH@pMk9VY%U zeL;r(yy868cbZhH>cz||TX}qds}AzGmd6k>4$>HANSgzx8J@-|U+yx9Q{jB!7|N5| z@5_d4`!!w)L;i|b-lVE{!O^SrJ%-8|zl2x4G8im5%;OeD9gN^MUEQEQxs)u%BF5#2 z@kb1{3Aze~(q!dgZVb77VY>arP<&_7Z-zYXW5R)j2c(Wk#HFv(ZSWmmWbu%J3`L+Y&t3o)0!IToXlIZ zZ26{LF6Il?s9j7Kt=aT!>g_L?v^`YFERT_uTV{=Z`~izVvi9wN!Txk-I> zVX8hlq`pemf?dIIts#|IYqxepxEb{{HF_iPxWC0i8SRt9+=kp&JQ~sr6F;_5ZtR{`h0KectShHeXjtgf*XQEodq^8$mnt#EOhExRrQrb;A$%VU8YSI%*cA zsHimDXkDS*6FRqO%}*DdQxvAAU!(Xt?Jayy-wfGi=q<03T<+T8I!d%759Dxz^mURg zWbusFEVUwR5`K=R2^~ies{|E6l-@y1zd6N+9o%`1@$*m*2B1nks1iYqQRFia)Ec;# zKrE91bqhwO{=ml_Octj)_=K?(V}(U_iuvD2*JlJw#xVJ=PXhCtY$Co<`YAN%TO^+} zmQkbV7OhWdioS>=eTOw#8)W?{5&di%sX9K7e_!CsIv(SzI=)7A8%$#X-)!TGMoD8) UBd76g{2S89#6nr)uEvvp0X@4H9smFU literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/infrastructure/CollectionFormats.class b/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/infrastructure/CollectionFormats.class new file mode 100644 index 0000000000000000000000000000000000000000..d69409cc94f3619b63bb68d2f1303801630536b8 GIT binary patch literal 1100 zcmbtT&rcIU6#izn+ijOB1yNe?7m5lR;Qn3M`hld6p+y>J?~QyjXTAv;szk-x>0 zS5GD$OvBMX%J{ZQZQ>1fC-28M?|u8;?3%;Rx;FO%eDGtvACzmS?&$pdTw&P{Ite@NUFFt28Ij87ee97k1oNboU4sF|-JpLYk^_De6EfS-5s%wEk*WU|EYy_}NiF8a2%3war3XnQ_GOw-{xDEh_C;G7 zNf}k8wB_m5G1!7bS0R09Ow*e|a)rEbP9`XoA*mII= zL~);D=LvmCdI4oTBE3j@nRJQpr=-jDu2Z~&XQ+^_6W0{w77pRoabvV@V!DnZX6l&5 gtwS(_Iov)(VA6HRz%$4i%o~&p$_5Jtiw1Xp10kO)v;Y7A literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/infrastructure/Serializer.class b/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/infrastructure/Serializer.class new file mode 100644 index 0000000000000000000000000000000000000000..622a3586ef6d9002177825de3aa5a9e4e1e4c2ae GIT binary patch literal 2480 zcmbW2-%}G;6vw}J6OzpmA)>W{KU#&>pu&QR+G5oJi(N<-njaw2HZGe>T-fX~yBmh- z6Ho2`(WgGPID<|*(_!pe|ENySO#-45WN>Hq{@Q!bIrnq!J?G#5{`?z21{TAp=T}v4 zgS+O29eSPt5*CuDZ5aQ)f171!0#(*2oXYBLb^J z(uk$38--%VnADOu2Sup(lwqVjhniQZJ6vr^*0w_K24b_b~Vp2gLE->6^zrHQU zI4+U7tAsb>R`R@R3;MZ+rXY#Wgv`tMoZ(J;nQwQk&X7xW*K+C=KG3S;xXPdyb4EEc zQP7Mc!`&mee^}0V5(D@mfqs0+&>Qe@{{T0<-B2b-F!1!p$v@fAOCpUy!R0!`SbHu9 ztfzR;x@-+wr@1L^U>r9YZsxVjRJml#8gq+ASu;wx@N$-rPHw(HE;tTMJE?@_KE6ue9=`s-u{l7|R>VhucpyN0!_YUK z(X(Z`82j#@&(FJ@<##Lt>k+ zyP;j{Ce#7tM){mdq4W&ZGR_{@$7zvx#{Pn|^a`K6#QE2_ zxQi=0xVDQMI~a}bVr&QFkzG98L58ZarJl*x&|l)TP|&pLGU8-?ioQ+)lcd%u!qtUK zglB+y5tuYr;OoazEIsbU3iTyC!*i;28lNF(v&)F+$Tr>_3>|Zr*YO?l%U}TtC@w<@ Y#9Io`5g-zwq@zwiGF;0)du zIO6%Y%3i~AWy20V&k4#^$F|(CT=!}gXJ=fyE}a~NfVn0&WZ9AKt@4$XHLDutkP^tw z+O8eGA}~HSzrElrp)BdnbWx2j36$rnUcG!%2BGDDTzATAvbr94Zdtmn7s}A4ILG-_ zpUnJlb4DPuA)TfrkY17gx`1A@s*e1~stFvPS1zns;fgP9H)z8M%9optBUc=Y0I9L@ zr2;Z27)WE6K(Pz80(#Kb0}W;YMl21`WVmVv0!Je|PYe}Jy|cqeROZ*c(6Qa}+D5%> zyNrb^o$`6>rffRlInND3zgZ1Ee}OJr{!Gk2Ymna_f!r-CJR8MgaBRGbF9Lb4INu7B z!H73Jm#IB2usu0J|EgYNQ{c)DSH4u}3LGhV2Y!)O(h`NOr?Yk|+kc8K4_=Ps&B zn=Y=}nVmXNznvz9lMq!<(*r!7Sf=`_4CsH2eb4r-6mSyHsrG%I$Bu6W>=FS{;l%o|DIErAu-)z! z?{@|EcWbnYt1=qc)gT8ZP?x@SLE*5~yTG(DZ2=c>8m}0b#j8A^yl~a>1qL2psE(Z> zRY>Oq`nP(Xd6P96N?O+H8!0-hsR!uMx)ONcY9HH5nx<4cE=2yp?fr(fS2Hy8!EJ*- z&CDB`-pf&sr@b8Xho9U2ia-J#lXyTW7tDTx+_aUAHRkh8@_v8_u-u92QVIuC~5;+qEt?>noOjUELol ztzK0+OVYR1JW)QAU@gT+SEVoO7LV}`$it5s?7nQ*V#rHyK{gWXeVy1HkjA3d^sClI zTQM`)UttjXvJoEz0gkiO(kvVe1L{I!kQO=1a?EoaP*>X{x&r4Ju1MiJSKQ!ERd{`+ zd+04q+(mzB@-B)$P^ICm2tvV+(MX8~j-i+G5;X_oZP<-L&Ipj0SCTTS;caU7Xtc&J z3g`jfw?qT)@Z~P`Qqhc_rlK`OSLz^%$R6(TN3e0!I2 zo|={$?Gf(BNLS?IqsY@wMm9Qf*N>-&tVQ8CMDrb-MHjSATBBVzN3@>2nU^6Ws}eEG zQPqd>3$z#HZhN@1CAG+cvfr#jbM;MR-FNLBE9^t*&g1#@_#f_W?~Lj<^tE6W%PFc{z} zkB{hS1jq!)2G|#1I6z;3kpNEx7!9yLz<~fS1vnGnWVHB5^n4TV(WFk3s`bbI1-uBy AhX4Qo literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/models/Apple.class b/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/models/Apple.class new file mode 100644 index 0000000000000000000000000000000000000000..8679c8da50cd47021b3d2a5d2074ca930a0a41c2 GIT binary patch literal 3374 zcmb7GT~i!Y8h%dCSJOu&*^ zM_pjT54I|P%l5366Z*a@D>c`#y|B{s>o#ZSTP@cvKnR#S)~;1?EpMyx=H`xF3k%2y zRWG!+>|k+nU7)g3^P831mJIFS!=_u=v1$$Jdlk#` z{Ll&=ip!i|3&<-7?<@-Bb}hGU3v}HM+D>@mPK$C*+IC$EjISsYcID@I%+}Dm%N)ibK|cXSo&9r$y4K$pU%=25Z}Pt&yN# zvjVGWQ&Hed+6l3j(oRU+GPz!ai9Q3pC<$cBYM#S@fh-0EN-3`;2a4#zP!}{D6X;KE z?>V&y1H)>6L?9b(JM_xw$lfOfmX5iZru^%1tF9d8mP__+tL=steNTo#yB7MvsueV% zFe{Vt205J)C~n!|<^9MFlqXY0BzFqv)LM&UI(R^1&rAV>iPQ2u=I8V2$pX!;`K>zw zt50XmRIKGr zjhquRr=lV`Cnj}NSOohO>Ug_;!>+_f8NZqpUba*K?-W4a4mGWY9WUQ>!tE%)mKQRy zK2Cc$L0PrKZNGlS^6IWFS!sTw-8v-iQ}!M>sOtF;^^KH%$3Kr*aM5zzH7B$ei+BMq z8d$(fy?OjW;FUDdB*{{Udr>$f6&2FUC3eVH=-zEh()>Cb4hyw< z)qK*8BT*FS+pAl~$f{eR#gf;WyBS)isSn7pp#*k#?L$XN^OWk$fgc{;J!NReG($5V z-Zl8AnLY8K8=79^w3}mAe{@ej_VDh4HZLxWmULa1+ORgCDH(dk%noOdiTT{4f8?`z z-YhJ4nMc&#mGAClmQAxK-c>Vd5N>(G?BzbebRLdi7E&-&6p^C2+;8?#v9zF@{Sk<` z^4&)n!VhpYM_EuFjIa7gTRoX>`)a$nX$Lpd)1#v2*DQD43LG_07RM5-^%$x1(j0)C_~nI%s~uSj`OdCdtpxk{ zLF@yN#+u&_YW8JEF*7gtekjAhYQ=Rf@jP2kmYJfVq+TZa=snKz9J@J|)N7PlD{`%y zbG`@2V1u*2@}$bN!RgYGuh2jBC5}!_e}UsuGhg7uXWY>6KEEYilE-Pnm6_=?7@+(C z*H6WVF^ZF%5hfv_Bz3ihzi@R(Kdla71k?vV5EXQ;~ayvLd%c^c=_D z(cIrZK~AhrP0xIZXJcBoxRHU-JN!USdCWoQ*n@fWVGQF`QAiacGJ}wt`W(mqLm@Ux z`3abcOew|+i76J>m8Uwa({Am<1fDwt`NS`g=bnsgbONS=(?{;(B&Rr!^ZEmv#UW@1 zX`Lah#}7xee(P|2GaoWWS>1erqe==hPKs}!y&E}RnHS^4aW^}0H#>1Rlenje{oWkt zVo0WWlj8CMnW!8X9nCTabQQmqC>@k|LS@7Q%*MoSQ7sFt+u+f;jvHs_5#`1nbyS`C z8h-@#O^M^)lbDjGE!10*&}a}vBg&XUd4NAHjhN4DE42Tikogx3B|gCUTT3JNsiol- zza!9oVo7QRXpE%ziP;&;8auqIo}*OMStS>6F`_t@kPx_p*SV+cZ*f$yI6F1{Pvo-q zr~eD>Q{*!DryoLFRcvPX`wG=)QPJT1#NIr+&!!vMg8n@Q$fmb*J8?TPJd0(#K_03o z3o7+gT4b=vuZDM_Dx$^J6^3JV1DPtWMt^VOS`}~MdKGK9u>m3RHr6*VBym#WCJR3L w8qqf=k(U^g7?+rkcurzi;nT0{{R3 literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/models/Banana.class b/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/models/Banana.class new file mode 100644 index 0000000000000000000000000000000000000000..4786b4bda59e217077b8736b6fecb2e1a45220fa GIT binary patch literal 3384 zcmb7GT~i!Y8h%dCSJOm|(8L1ze7)~;p7-Q#(~Rw6-mOetcb^vRv~TmD@51E&s!YQ`wcZdf>Sg>AGGh zLz~kjuCMtd=7)FY1#)}RX;}gtxBZqK-ni4`JnvZUcDN%jx~z=YwZctb+HR172`Z~z zxY}|YLX7>E6h-8wW6kU65I9};LdSM1yL*j_P1?RIoeKHWq`y zUM<4FpgJEC$c8(1KqisBj}0w7b2H8P*CSV5KFTkbt=qEYgqJ)w2>n(q^!yd+*P}oy zoAL%poe?N*Tj7<1*!7jiQ&uE*GQ5;pPNLd>NMzqo0fV{I^jzlXv+2bg4X=64I|8du zX3qE%`=_XI$F^ca1^!lkLd{1lOzrF&R88$A`SPU9iYQ}T`FBb{553rn0>g35mfNLr zK}?;AYvqC%*HK|D98{|9?s;{q5-T%`H5p!!DvWmupo0e*vTnuOH|=mI3bS-W=GWiT zZcb2EtZ>KMx+>i*#|l_*UcJ>kBK=b)A5v6xeT4W%O1|x)M=ZD`9cRrBt@$FJ!ygRH z;g8*UJTLHKnrM=0Da8Fi9FdR;>4g$o<%@Lijtpr278?)iwR)%>#-IgUC}JK9242F; zs+3=5kMga6)gd6Lk+(i*Nr$fMPcz!L=xyF1ed|>v^VmMpRx08O{;c}QRW?a4+)+I! z-9HjRfu8;9WsKyO3?&O+YwTrcou)n@$GV!Z(`z5vYBtN+7IWZ#5AL2Zv=f@4nGfz7 z{MF2^c+d?^FLK$*F{?lPNI&u5?wmF&7Kcl^E=+Auo6VFAJ!57EvnRxC?%^l-te!Uu zOC9Dhb$0dpk1|W9*%hCv6(tC_G-h`5oM1YYBbd1q3>1J;PBCdY_ zafa}H+|6+=IPZ_I`dD1=jj>)RP+O-7gIQfSJFXAx^NS7)8dT(oVRkR5{-LnIm&&$R3`^F^5#>v#Z zY`fNKtFdYMH`EiP!spebvo3vGt&`1>1ZzD;YQH##Ajf`r;n8Bp)6mqUVJ{=*wnY=mDN(_sKFp>-NmooTyqiXKsJ>{6;q=R5of zI4~uSdskvgnzm4nNkXGe6pbh&3gtdtSr{^(+EHjfppf|thML~T#ajzQ_b8>|7QaK# zequ>#1!#<<_=(vW&o#DqRXxWksIy8IaVerWl8_L%j8}Q4>~C^Zu{b|5`6+VQdz1fx z_D|$8_a+}eTTyJL`1dWU(Wauo^{M@J_JB<%vIYIW=p&o%_U*)N$M8Is@E7t>MOjd( zr_v&WO@1}J1yvDE?k+PND;vmEu^RophHF*4j_Xyd;l>6;fH$zdfq?+01Kec6M_(iQ w<^tpcj06}BFc#o!fWZLI1UMI<9AG@a^5s7=BiEEXQ^d1=5nFP-vSb4dBW(g%-+3oHj6G(j;SND3H_I+GrHZE01<% z+FK6%5)KSkt{j+5xbdSH-c{^0rZcU}jAnOVz0dQ0@BaPIAAbU9V2fcbP69XX3(5PT zj^jwVohTGiyS>;KByEa;NO&M@Fb3y{54am~8MwRcBhk?|atw2U&?DIXv%X+hxV66h z9NN-JD1!$K?sg~cxrbb7kv#21?h)^FRV-aDWvsal>G&6&&y#LM?intP1+_`J3N8sYt)636US^oA z@^&PMGGi>K0Z+b3cu)P;v?sL)L_)Zdx&XR2S@vEa<3tQ=5DH}y;ZYR-)DoKNrgGFd zYQ==LH1+c2VN6zXsiI2OCyQdlTk(9N=64#8X;$n|cB0h(A66PBjpAN&cWJ3agEwg}ub?MjB&`32p z`F9w8J~_T#vKFn9<(wRs=(C*Jl2y#nULNj6vloNKljFKoW6cG}TDEGr`)l8y{+d7i zrBGPT7xT_k^Rh#yMOL%NG(~5cG^I>a9@A8unbY42vws~I=!#o@onie|`Hvm}%8atP zc9w57mLfi^4)1z(*zIbVwYxsigD}P=!Vo8vxD|p-J-s#{f-Zg;tObQ3EHgL^wJGhP;3M=R0RU_WSD%n{( yK+eOh>|4kC9`X96q5dxeEe@*y literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/models/Cat.class b/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/models/Cat.class new file mode 100644 index 0000000000000000000000000000000000000000..90bc4e5f61b9efb5e87c4f70fbb9b347a4aec47b GIT binary patch literal 2741 zcma)8TXWM!6#iDe$%>OGHY6cX$|VqA2uji$5TFf#G)^6$gr?Kxp|i0?qF9z(X`Pan z4p01qPTR*mw0+>AooS&%XF4fNr!)OcolehMiX(#un6aeYqqE=n&bQ~R{Lg=n{{S$D zRfZF;w_&(V)8S1^xUTIRRogNhVKm&DNwaw_QeX`F7T@NE&7BS7#`>07C2Nc!dC_t# zahYK_U)guKLO3ROW($OGRH|;nxWj#6dUqSPvBj%(-*pV`IIiHrqTv$FZ+gVR6FajE ziEVDTOa`@PR&D-;Sz{QlNS0fsSogT)_>slFalK{ReBCx_Wh`G<%^-n34RK@`ay>X@ zkj6k73I-YCV$<^X&|j5;;)^@|N97@vRwsFTB?xy#c$TxlaG*=1z)EZf zsZ8^G^>T?7RGgrF-LFW?*>>xu5%|-#RJmB-a$j~*7-tx1@VXh8KeohXd*8Sts5ZWi z3LT;>n_|XIBWZ@LB9^X&w|AOm5BIf*e@Ce2GMMMKy{atmL{AJ~%O14JLMy*rM;4BQ;I#blx=I1SLlK=;! zxO==lWjNZa?#qtcCf}<1DZEMe+%vC9oM-5TFcESc;0)fzI~v}?IXVbjv1xh?+26 zUs@GCwKS${W6BgQi!7kmto^!gDW_-Xb!!x>Gp0aW`+$y(Mxo63FXgm>Otp-Rp zxyKtO9fn}Ou==!50DS2*W#EUoKv_# zv*ExSLy+Ah(Sis!X-wZ92KsD5^~w4nSyIwML3J52M`IasmLMd(fg|xRzd?dkils+5 z7=*n=_86Gjj-PG2og%IUs1&~+C5k(Yk&wGVfK&iT6n}yK6Ac2|GEvYHNjDQXgmhQP z(nppK$EYqt7$sz-P4Of-bs@7JXx)qH+$Op*ziFZ;B~AYhZLpCrJvcK z!{qrACDS;9*9cBVIvpxG)K*fJGLV=L@p=$36jNq=49CON@-&mFY0~>KCV_o=fm&Kf zZ!bSdipfKg?lS7d5FsZK{zfYHLjd*=(+}vi0vR^}rEejsS}sIon86z%m(S=aOKhT8 z`W}h+gVLW+zC|MTptK8RS;C*8>o=Tl8{_-v8e%E+UmQpgz*W7gIAG8K literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/models/Dog.class b/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/models/Dog.class new file mode 100644 index 0000000000000000000000000000000000000000..7013689759d09da6fa3b2d4024b0af228b59ce8a GIT binary patch literal 2729 zcma)8-*3}a6#lNAAC8;0ZUSv7jPaw;B&E3RegOqG3Up1E0;8(LP+ZL-i9Q_(WEt{3_+*j6 zKn4m130-X3!5;dH^C$G{z0xaJ>Yi|H*WB7}n6^s^y4*3ZS$BEM5m!Ao5PqvFJb#(; zuzXTO@=NIy{{TaJ!xHmhf(Hx59$Xo860YgFv==i(x9T-_7|!?NQ4AG&X$~h}B%~*# zmXv8$1{$wLNiZ}EuL9nKf4RdJ70lc#@yy~7#-v6^88qRo2;X)$7!Gua6j_OFAC+f8 z*2yJS)Nq3KbH560ciXF5X5>rTQRQNR%l+6%W1L~6!RuCJ{@50q;eK&fP)&T*DRPXm zY>7>;w#eO@V+B-_UcJ?v>qs$X)M4pbcxR_+^>AP7@NbLszYMN&$62w3HJ8O{Oz1d; z!e9zThKWw1?WXI%j9JNblR4`6Gou7Eu5p~_r#{SC~ByVi|XW8L!a$kSEshF9gzD)((UkBui{tknqV7Wa9> zqC>C?a{T##z1{j(1br8lc{9d7)Q#N*sjqk~ziKVml9@qeF9PB7X4IhpW~f3EVFl#m zaZd_WXqKX!8DNR1c!6@u) zva4WP7(W-fog%J9XcWI6lN5ItBQbZA0I2|wEd31QM;b)5Wul-Zl5RF~i0Q77rH?Fa zj-9#;VU&=Skm5;l>Oy8c(7G4XnN4(MeltW*N}Bl%$|o{4Ni711)XTKh%RIL~hspCL zN@j2buMwP#bUIdYC{$9DGLV>$@Ol(67E@+?49DZt3N(|c>C*cNrht8Vky?68Z!bSd zipfKg?lS7d7$Gka{z6*)J_37$nTPaRfsC7k(znp5T0TZ)n8h10m(S=aOKhSv`5lsp zhm(Im`36b#;p8rqWeIi9HE(ACm`Wy@IOZZ6gqDUpWPW}hX Cxm*VT literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/models/Fruit.class b/samples/client/others/kotlin-oneof-jackson-default-impl/build/classes/kotlin/main/org/openapitools/client/models/Fruit.class new file mode 100644 index 0000000000000000000000000000000000000000..6e3d733be66753c43d1cb387730db665d3423298 GIT binary patch literal 1826 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 literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab new file mode 100644 index 0000000000000000000000000000000000000000..1d0a59a03353a15562ca7c3e2b63cfe53c6ea6d9 GIT binary patch literal 4096 zcmeH@Jqp4=5QWG1Q-xsf1;oxr3S-4u`m*n@edJ%WLf5?XA8}N8I zd;tq``v97r+4Rnw9Nd7QY}UI16S92)o}_;U`W3TN0z_nV1Ugl-)d5(OvpvwNnT_J~ fA4P9bO$KB@24p}6WIzUFKn7$$24p}6{?Wh(c~d^q literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..cdc661d970076f88ed0beb49c3f4b8e00dc8f206 GIT binary patch literal 4096 zcmeH|OK*Ze6ot<(Dyu%yoq}$-*i&LAzxj%5eucVe7tXod=PP@oz3KPHcPpe8L7Q?Z<*t#y$7W6be8 z@VBya_B^>?0GIg|yYT6FbQdiD0%om%2F^dn0)m(*cxmHbThU<_$ xn+K8MVswUoPwZD}wWmLAKK9%%^nIf@pOE~^3S;7zh4BKq#h63nQyUFv zRKO7c#SB{X}j_aWKpE?(pj7=frtha zLIN!4nOE2&kFodvz<%YhWhnR0kz3stC#%`BRq5)y{>jIBXI<*|i?|p9E)3>ldts+JOK7 literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..bf17d66dcb492af96bfbb493353cf5fc4eb8a329 GIT binary patch literal 32768 zcmeIuuS)}A7zgkZ4Pp=`2un`EVbEX^t4aG1!;*i4hNXegXcP<@41&dIG>Jv<2ZC{J z3$uvGqEETMz}sfnG$|I$ZCJKZyhc2oNApW`Tz& zU;TMqDzky^1X6+1xNLrP2kF~MfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5Xf5K4=Vv8 A&;S4c literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len new file mode 100644 index 0000000000000000000000000000000000000000..131e265740f37d77b7c4a3676d2a7704ca3e4a29 GIT binary patch literal 8 McmZQz0D%Su009U9fdBvi literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab new file mode 100644 index 0000000000000000000000000000000000000000..04a0a107e09d07d07005e2dc372c5131e6d70867 GIT binary patch literal 4096 zcmeIuUj_m}0LSrP|KAe5>;-!1p#$t0dfF4EQ^b-=L_~^Jiii@ihv@?K9kuk-d;Eso z&+NznouO)=WxRgBhq5|yL@(wG@G*NgpM=G>of;EoyIu*W4A zoZ%U}W$A<)JYrmt_ISk%ld81E9j>unlU89JmpH)%K5&k4U7F$$$CzV^Q9~NxumAO) a3%Gy_xPS||fD5>Q3%Gy_xPS}%TY(q5(N$6a literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..e33ef55c53a63f7ce097c9f04aa9703f48b984fb GIT binary patch literal 4096 zcmeH|OHacv5QOKq@DR7C+z_`UZ6$7%g5Ye?hax3y6@WQt|JY zmV2cqE#P3g(vHTXIujm`Kk%52urCWeuq!jz9PiB-T#Q4`Ntu1)ayzgt71hyEfi84_ z_b`&KPey6+SmNFHv^-R`RarxgT}4OR(5c0-(4?dRc-VSg;?GBURc|7FlUmeq4m$xd#%k^)JAq(D+2DUcLM3Y?Jw EA4-5|&j0`b literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..161abe026e826804806f5b95c13fb3ac5d1c9ae0 GIT binary patch literal 8 McmZQz00H(C004RbYybcN literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..14f7c061cc4bef2fdb72d8ebd5cc8c9a23a22d1b GIT binary patch literal 8 McmZQz00Bk`001HY8UO$Q literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..c1f99d4026680e243c9b16ea568dda619bca65f9 GIT binary patch literal 106 zcmdOA@JLNeNi9+cN=?o$N>OmjFH#6dEh^3|E=kQR@klJr@J%cTOUx-v4KB$qN=#2> JWMCi<0RXKe5*Gjf literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..8cd6c2c06cf3828b963ae1ad488f3266cc6079a8 GIT binary patch literal 32768 zcmeI&KPyFX7zgl!ZYhhB{3(A*WW{1O8N32fio67pMN*V27BUztqzsJ8VlXHRDcP71 z3lo_?>yh{^SRUQ-lQR^NxTRUAW#8;hseA?EIb{=b+z&Kx&jqM zrXa8z8S~xiYbiwitB8weJFws1^{+}ROMn0Y0t5&UAnPU(LXOVUKS)58SQWOCK1PBnwtiWe9tFH5Z+01@GiV+}?8G-uv zemDN!(UO@$Wh$}}bBC6PC(AV6SONqH5FkK+009C72oNAZfB*pk1PBlyK!5-N0_h6G z?|h@3gU#uNN+Upk009C72oU%yfrS{fv^cQ!SM%~V=QtKFF11eQZEyP$$b-OLEV+C1 z*7Vb^D{jsO7y J1PEkF;2U9TTlCWjI}@1Kwn&m z`#0IqlAbshqZipK0*<&8hfmTk0fz^<6T4#Q0Mk3U7G2RT1CyKTVnd9?#g#mXZP9mu t?S&kRff$R&GwD@;ftdGS>zM&FU@WQt|JY zmV2cqE#P3g(vHTXIujm`Kk%52urCWeuq!jz9PiB-T#Q4`Ntu1)ayzgt71hyEfi84_ z_b`&KPey6+SmNFHv^-R`RarxgT}4OR(5c0-(4?dRc-VSg;?GBURc|7FlUmeq4m$xd#%k^)JAq(D+2DUcLM3Y?Jw EA4-5|&j0`b literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..161abe026e826804806f5b95c13fb3ac5d1c9ae0 GIT binary patch literal 8 McmZQz00H(C004RbYybcN literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..14f7c061cc4bef2fdb72d8ebd5cc8c9a23a22d1b GIT binary patch literal 8 McmZQz00Bk`001HY8UO$Q literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..63a40a3fc10cf0c4285cb4b06ab11614c57a1225 GIT binary patch literal 2573 zcmeHJ+e*YR5S>ry7uY8+__o_p7DNyW`W&{|8q78&or?Gg;urX}o|*PR1%28Ek=?Rw zC)0G!oXngwr;Rm@joGc;hS+3Ph}n&egB#d(yfMSWwdwDSA8pMcn$|uOewQ>*q%GyN zCqs@p+&xktCO=yN{uZNwdb02vTpj!YhsW$3v*lUwF|5fi<0Zy+ut)frRyywlZ|7Hu zTpT>Ipx*(l!J8S^5y%+l2pstwzxagp&tZ8NUak`JQs_E*a3pLwSRGY3N39438s+JT z?OQz^dHYELe(%G7z}uVjX_>fBYjkKte;QS=7qzrAS+gB@hhl;Q$_HT z9z=iuDsljeL=i3R#rwemjAWxn$O%ks} lU9|~osM0S1`C`%4?1j^_g*mOYcjo#@(kb`4ilPvj?>yh{^SRUQ-lQR^NxTRUAW#8;hseA?EIb{=b+z&Kx&jqM zrXa8z8S~xiYbiwitB8weJFws1^{+}ROMn0Y0t5&UAnPU(LXOVUKS)58SQWOCK1PBnwtiWe9tFH5Z+01@GiV+}?8G-uv zemDN!(UO@$Wh$}}bBC6PC(AV6SONqH5FkK+009C72oNAZfB*pk1PBlyK!5-N0_h6G z?|h@3gU#uNN+Upk009C72oU%yfrS{fv^cQ!SM%~V=QtKFF11eQZEyP$$b-OLEV+C1 z*7Vb^D{jsO7y J1PEkF;2U9eSnEDq8~2%LkOPe|RU{AdV_hQMeD jjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kgRc_9D*#r_JH literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..212ae48abe42835a9709df09f71e11bff634ca5e GIT binary patch literal 4096 zcmeIu!3lsc5Jb`6QEWl1B#25tj3jIS4msI@m&qZ+GP{=tOjH^NNqMtzk(GteTsi4# zR%IDoXe!#-b(7VF@=+i9n>G^jxL!UN_*uXL7O;Q?EMNf(Sik}nuz&?D@Tb5F<2(~f literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..c32b442ac5e8df6c18d0384cc6c5c8fc4804b79e GIT binary patch literal 8 LcmZQz0D}|&0Bitd literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..2a17e6e5bd9e7704741c2a3ae485eb2d2e302b87 GIT binary patch literal 8 LcmZQz0D}$y0FVHQ literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..b1a9df70af75f3c404ee6cd63cb60da9851f4aaa GIT binary patch literal 123 zcmdOA@JLNeNi9+cN=?o$N>OmjFH#6dEh^3|E=kQR@klJr@J%cTOUx-v4KB$qN=#4n zU;qLpAm(9kVsK;#W^iSQX9#5oV(TTlCWjI}@1Kwn&m z`#0IqlAbshqZipK0*<&8hfmTk0fz^<6T4#Q0Mk3U7G2RT1CyKTVnd9?#g#mXZP9mu t?S&kRff$R&GwD@;ftdGS>zM&FUKYa$ zXaRcwG4O7QKmLrHf8ikA|2f7;IT#H&m9VS$-b%Xb8P_ms?v-cUq0Akl0XLwBH2HT- z%e~N(7I3g#X$Ip_oC%M|A9zd$*q4PK*p(S!y?2jc~M&?%FzjWPWSv|W-c5>5|6i5mr1(E_ufuulE;EWXb E0Ks%<-v9sr literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..161abe026e826804806f5b95c13fb3ac5d1c9ae0 GIT binary patch literal 8 McmZQz00H(C004RbYybcN literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..14f7c061cc4bef2fdb72d8ebd5cc8c9a23a22d1b GIT binary patch literal 8 McmZQz00Bk`001HY8UO$Q literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..63a40a3fc10cf0c4285cb4b06ab11614c57a1225 GIT binary patch literal 2573 zcmeHJ+e*YR5S>ry7uY8+__o_p7DNyW`W&{|8q78&or?Gg;urX}o|*PR1%28Ek=?Rw zC)0G!oXngwr;Rm@joGc;hS+3Ph}n&egB#d(yfMSWwdwDSA8pMcn$|uOewQ>*q%GyN zCqs@p+&xktCO=yN{uZNwdb02vTpj!YhsW$3v*lUwF|5fi<0Zy+ut)frRyywlZ|7Hu zTpT>Ipx*(l!J8S^5y%+l2pstwzxagp&tZ8NUak`JQs_E*a3pLwSRGY3N39438s+JT z?OQz^dHYELe(%G7z}uVjX_>fBYjkKte;QS=7qzrAS+gB@hhl;Q$_HT z9z=iuDsljeL=i3R#rwemjAWxn$O%ks} lU9|~osM0S1`C`%4?1j^_g*mOYcjo#@(kb`4ilPvj41Ofa zU?2+vQ3lUwbX>k)cdwi7uFvy4@8|WcyRNRjNnKKvcn}~!fI!I#R97TP-{ic{`jWlE z79&7_K#>LFd*f>UVYJ9ywIe{F2m<%f<2_f?TZC3x5FkK+009C72oNYcfy>yqv1!%s z-Lkv#7ABCMz)6gLUCVc+mmr&y*CW>X*3?2a(@8~u009C7%2VJe)^50%J1)=dZJn0D zZ44e7$#8LEU&Upd^2oNAZfB*pk1PBlyK!5-N0t5&UAn;XSF|0&i_rON z|Cjxb*G^^v1PBlyK!5-N0t5(@qQFWlbujp`U5dM9d8dg8w|`fEl;w=F5g*oSvuYlI8jP-@o3jH8r3H)PNdL18P7G Rr~x&g2GoEWPy_#9;00J%Q|XoFK1KE2-^Tv+3#4i*;!fnk`; zJ?EbLGm`J~HNjE*?8b-yv^d5I8GmlY&>(E0= zkB(`+=X%f_4i=SqFdq3o;c@>1kI4XWnd^?IOkuMhn<2OuhlEU-e&cf8vo1N+(Nckh z?*Q+9CY>LQQnO>h?yjdLzN)RtDr#&LY;8-YusRNBmcq%pusy%&&-;F+aC-Ba6?A#y zcN*wx1~1ox9n0A@c0#qE`4huVEa@!Jx19Y8uX`w~N3W7)u5_YHyQNf ZH!ULZiV8#pq5@HYs6bR8DsVIfJ^*BKZjk^0 literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..5f92aa7216e5bebf08b1f77d55e3a070b71a5a83 GIT binary patch literal 8 McmZQz00H(E005c*i~s-t literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..8fe89d82d540f0f9c8b866f249f77e7623cde7a1 GIT binary patch literal 8 McmZQz00Bk?001fgA^-pY literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..81e338243a4d39f116f7be5e6bb285665fba7bd2 GIT binary patch literal 9927 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 literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len new file mode 100644 index 0000000000000000000000000000000000000000..131e265740f37d77b7c4a3676d2a7704ca3e4a29 GIT binary patch literal 8 McmZQz0D%Su009U9fdBvi literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab new file mode 100644 index 0000000000000000000000000000000000000000..57e2e772aabc9498a52f6e7fd784ed71f948d44f GIT binary patch literal 4096 zcmbR3vzw0r2*3o00RjRL>I0B!0OJ2Z01`n~!wBSqFbsg?q@f&SahNw3ZQ~0 zAk75S9R2VA|2aTfi_AT0x=`Is3P*8TkdzX?d&0qI{r`qYpA|1($^ z7!rW=H6Z=%`~UwQtPBhtKzav|mI2aQY(RbAApXGTmQlIU5Eu=C(GVC7fzc2c4S~@R X7!85Z5Eu=C(GVC7fzc2cjv)X57Vtfh literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..cdc661d970076f88ed0beb49c3f4b8e00dc8f206 GIT binary patch literal 4096 zcmeH|OK*Ze6ot<(Dyu%yoq}$-*i&LAzxj%5eucVe7tXod=PP@oz3KPHcPpe8L7Q?Z<*t#y$7W6be8 z@VBya_B^>?0GIg|yYT6FbQdiD0%om%2F^dn0)m(*cxmHbThU<_$ xn+K8MVswUoPwZD}wWmLAKK9%%^nIf@pOE~^3So1iGo2}2jI>I$32yYXGD$G3Ofc4_&T6YmJ5u%hS}i6jU+UOaMy1+-uM<=- zNYUlEfJO<$F@vRDAxF)XDaXvMSz4=gneTIMMtjM1i_rN22ROweeXa8fL#1%W^5&sh&x8LyS?;tN@Trn#HvRTi~ zF1QGXkSAsEg-c@@y+{?Ew;Z{c^K(@$^H}vmO&sZ>p=%yesX2eG zQMYVBXKTC#Tb6VS4_YhgdekL%ihMkHKfI6DquHabCzm_LTg|I+E)hN4GNKW+S)aOA vkfcIWA5tr)Wautg`5)lP+5

Xv+x3^iTXJq!nd%E?ZLT9%X?jYpln2pv2Kq literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..bf17d66dcb492af96bfbb493353cf5fc4eb8a329 GIT binary patch literal 32768 zcmeIuuS)}A7zgkZ4Pp=`2un`EVbEX^t4aG1!;*i4hNXegXcP<@41&dIG>Jv<2ZC{J z3$uvGqEETMz}sfnG$|I$ZCJKZyhc2oNApW`Tz& zU;TMqDzky^1X6+1xNLrP2kF~MfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5Xf5K4=Vv8 A&;S4c literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len new file mode 100644 index 0000000000000000000000000000000000000000..131e265740f37d77b7c4a3676d2a7704ca3e4a29 GIT binary patch literal 8 McmZQz0D%Su009U9fdBvi literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab new file mode 100644 index 0000000000000000000000000000000000000000..25400f81b51859d4b63711c12c3807012ffd98ad GIT binary patch literal 4096 zcmbR3vzw0r2$(~LI{m?Kcr&~q?s}^J*AhjP`p6)pT|F&9$`YZ1193h z-id8MmMn@@dyvl)))C5vQHf#3@5x+=XGbemShErpajE3JcDcS8M0rcPF}jXQ!K9h$ it}dYBVjKf7EYeQA{=}{MB0PeR$A>rVObnOKAIuN4BzJQ3`Ic;X2=LkNkbVaikK};<{?86xj7H;pLKD>8IAw}0*L~3wOg4Z@dfFP z0?*pMueWbZm?l7g009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N u0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5*BBJcr%)&&s& literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len new file mode 100644 index 0000000000000000000000000000000000000000..131e265740f37d77b7c4a3676d2a7704ca3e4a29 GIT binary patch literal 8 McmZQz0D%Su009U9fdBvi literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab new file mode 100644 index 0000000000000000000000000000000000000000..30fa3bac395a16a29eb1e1dbeb178fd1df69c993 GIT binary patch literal 4096 zcmbR3vzw0r2v|S_3|^#6Yld-3TVl^YF#(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R HARGb!W;7QR literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..fbd2f149c09dfd4bd5d184cae9b8c604dbf197b7 GIT binary patch literal 4096 zcmeIuK?=hl5QX8MXzox=3fT#U><6($P$!I&`*#s~0hi^y1N=NbC;A~dbLX>|NF9`F z$=#^*xAHK(l3kj~ORYIsk^T~GY=dGv0xP%SrW5-wu}mkz7S?$Gn2*Hp^y?jYU=V-+ W1Rwwb2tWV=5P$##AOL|s6!-#E<7!U; literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..09407efabbe5467ec2b0cdc5cce0a25e55419604 GIT binary patch literal 8 McmZQz00Bk;000^Q5&!@I literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..93a595bd1bbabaf1bd4ee4909ac49e65e67fa3f4 GIT binary patch literal 8 LcmZQz0D}bp0H^?= literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..4634cbee1f1d4d0f8ad96f65ac6553f5bd62ba94 GIT binary patch literal 325 zcmdtd!3o1K3_#J0;t7-;YACrBLJheKM@&l~BWj^7K$UKsz<;9IE0_h3^=+eGENp)EGvPRfKA=wi~@L9CF!K MG`##jkn-F40#OZoGynhq literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..7369ee28c4ac0baaee6bc957245251d79de90bde GIT binary patch literal 32768 zcmeIuu?;{#7>40XSV3bF!zjfZ3WbD1X%|yy)W#5%Tj3fP$#eC8dA~fN3`Ot=5Fn6I zV2JIxI**JKqzMopK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0Rl+^TfE-yrAzwcm;eC+1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7e?PXwm8a~bRYCv(jtK!5-N0t5&UAV7csfsX{% W*mY^`wolSM8s!`MMU<+3#=J$B6hkx1M(PcL~Z&@y8CUtk5BGj(NMyK!w-0bcQ{L= z0v7NZc`99^4$m+fN+-C5IjrFxE=ST1R&WF7WBvmB-r<@J*nkb#fDPDy4cLGU*nkb# JfDQbsfd(T+Kwkg= literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..9c33a919885185848b519a396ec49cb57b93e793 GIT binary patch literal 4096 zcmeH|O>crg5Qg7hR8IX!Zwh+ptsZ(NZ8fAQ2G*wOukSOXEA6of%V{+Nv*R+)yfX}v z9yO@fs|xK^tI>h04|NJ^FII`}A7YOqDU$+r;XYSz_+w7Y7Wx^vb(?QAB; tD&8elbK_6T*fps$eDUhpJct?c3dx_WKvp0tkQK-ZWCgMUS%Lp5@B@o&Mf(5% literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..86da64f83c6c1f74cba0db6ab09bbbac4a46d1a8 GIT binary patch literal 8 McmZQz00Fig007JYzW@LL literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..003bc0ebfc327ee4e08df4a177e7f368d2dea681 GIT binary patch literal 8 LcmZQz0D}(z0Qdm$ literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..add58948f4049877f7d6e428054d99139a6bbbae GIT binary patch literal 133 zcmW;6%L#xm5CuR#@vl9k1G|u11X1w5m_-FKvWfkRZw}K(hRL$%nKvg^4^H&N;!hv= l4uJv<2ZC{J z3$uvGqEETMz}d3-BiwNg~-M9Xf!w_J*{N)jMI zfB*pk1PBly@GpVS_`6x3J4%PV#N~TqcO`v02@n{+zhL2OOhI>!1pPwO9j|;F`oPT$xw`TiRet0$$HWC9Z71|0eJ~9z)0} z4!2Ff^e12VY+uxna~R`0-_MNL<``zpYX83a?B~PX-;0v(`#Wb0F~bPEhuIjfIKd-M zF~J!&omq@`oZ|@>nBo$5xWcM6^Z&abXjDK2R6qq(Km}Al1yn!dE$u38ZjD|($jYwdVt7iA+&gJMjxLw zM}z^nI-w&Ts*bq&K+Zl3Mma*hyhHkgFk>&oFyf1O&g|?2KH4iu(2IDqlrTc_LKL!f z!7FU_oo$0>n1k$-f4E9x>U&`y&kR|3b}}~iW%DdcsA=z`pCBl@Guu)$rGTr39w6#bw4e|F v`yTKcmnJE^F^`2C*RW(=&NVbDSDsMEvtK4|&8BeEo`xl#@{wO4wdl=g0Q}sJ#)fIYuF8w;b;5qQ5|Yr$ND~; zYFg)-)urZjtwr5xS@&Aiqt^ATO}%Pc@7k3SAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ TfB*pk1PBlyK!5;&e-iirr=JPL literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len new file mode 100644 index 0000000000000000000000000000000000000000..131e265740f37d77b7c4a3676d2a7704ca3e4a29 GIT binary patch literal 8 McmZQz0D%Su009U9fdBvi literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab new file mode 100644 index 0000000000000000000000000000000000000000..f73a92d5e24ae76d3ed9e1e227ca60af69ea1b44 GIT binary patch literal 4096 zcmeIze{j!r90%}si#D32HA{ZmgckB+7Gfm7u9KX`N#zs?E!jlXf`C zxs;Q%jODc45^F7-bL7W4oMUxJEcWTKtM2^SAN{%aAK%C4KA+F`bDz)i{eHdP9}X{0 z2u8bGYJdM3jsJF4gAnF9jEvedH{Vlx`@eswwf5T3m=K!Ybl%~A8s(nf+nwu~!$Pj% za{kQetmpZY*puV<60^98BY2vF*vvch;Rtr+61Hb4Tkr;x+3D60;yIDG@hjGTXv=yb zRM$k&7+&T|R5|C-E7M=RA((=N!cY9L|VC z*dsoK0i4A?T+4JGU>DYJ6hcS#WD2LT1vfI8``MT`*pMlztR9E5=DKyxt6a{D+`;p# z;%TPbAy1CxVJ_f)7O|XXSjv`awSN+IJNPLtavgizDNj!13a(`V4>OOA66MLq znahQo%deTkvz)@#cgc@qIF<`Jip3nxDh}a&N%G@p_Tgft^9Oce!zS`$f41UGCUG?r zxQ}tX#u#=?w*LN%qOrWf5BMAR^BiOE4&fAg^A~3G5I3-rC%Bi5HK^TunA`aZw{jyl z@eDVx$vx_mPq2^$T+V&WXQO87lSBC?7jhoI<*STo9>Od>#_4>AQ@DrEF}XzuPcw^S zYOix7%lRnpXsMs^ab|KUd+{fBXKbqwI`Ij%XFl6-ADc0*wLF>01kPd{H!_Boc)dD` zI=7K0r}8&$<~d&EDWWHGn#3b(LZY6zb(hwJ$j*D&Hr zX0{9Aedh9A?&jO9;R5!*H-y*u7GGf{bJ(GM2-$p%lUc?IOzfaP@=0cKJx8#H!#K2~ z{>Y{5%L-;N^*;TPvzW$RY{v#^)+a}@Dc@rv4>6vp_uD_1&A@G}z7|E-d6@${*+001 zXIa6MjO}dy;9wrCz0L~mQQsWR5*D(EC%BpE52$a>=Q@^i6;r#aZ|1Oo-!YGg z-PAXqXD&B$E~_}3oxAIooWg0`!b$v{^Cp{O<|;1!1hN*#H0l literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream new file mode 100644 index 0000000000000000000000000000000000000000..48f79fbb97222902e61aab4fb8532473d8310261 GIT binary patch literal 20480 zcmeHO-E-SE5=UxTwruCyO{VQ#=Vm(BmnOWVX=mh6`oxXQ%t7rMEE?HpT^gd$KC+IJ_y;2s~ z^@#I%Wh&QLzX34?TbAu%&#)~-f&HarJ7nb8YvOnYaYcZ~fyTb2oBmu#(Mcd5so01p z2mzXZIoYhmED8aEbl+OoA{q{u`LBxnr0|19M}y&Drna@-V1j-r167zp)ClZEuZ6&| z571YtD~O5RfWGR_OJfd4dfG(27-{HTfj3h6*>XhBqd1!K)eqTJtI%W0jqRBRMBDw2iCq`9uJJ8a zOl&O?dNTGc&sdS(XPvCWn9TP+ToR9q%THpUqHSPCRtOz&-4yA2hKbN|g503f5EpbP zoH*K79S3hvlbLtaC2NQ1*dz0#v32HKdSKX_jJCH)TjLym;kb^+WNl)dd@{VNMCefS z*PsG?5G&n>pRLIO55aJ{eZ?XTGex}z+ZTF7jaJ&WZ4wN=Wy|bI)WOVti%>#&9Ce1a zqQ`5;zBT5gOH8taQKNMCA+hFeX#c|qrg@GLOj=`Y`YyWLdK9#(u4^o0$jUyEk!O zrsXHswqZ@|$TOKDO%tpiF0$!QR@8p5E>DE_Yo>xdh!xrFheqJ`z^~tJyIqOr1RY#q zcR)US`C&vtP_kZI5uITp)Ovrr z(t>nPM@Lcf^=%M1K188l^EUo5Ib;#6Nrd7h!G29H`NJoc4#6L#2bdv{*uj2JUf{Nb zG~FDIE#1`UVADhg_RW>&t=~Z~>sv67L4br=NSaTEH~$5Jj%g6f{6YQUpTVjeUYz9LCFN-UnJA=5q zS z6bUhZ{Fvtt!&*3SigkQFJP@E3*cbiig)xaYg(1|h!s4xt_Hl$AymDcQ=gjQgkhd5Qfp{B`lsg z@(802$Ha5&1;kQe$o83082UgHSJTqU2eg-(j!o>i@@p^qdPaDFN9@pECPFr&u7`!;&)|$hcLND0`Jsj6a$SgSM_+gpuJWJ;1) zqLa3&^=8xY`RqdvF2c(b(A-V}n9A}b@KL@ef#lASa%h(ONuc>GPy(Kpo=H%p5;X~Y zlCnvFbCWj-E-oRHK-1Jr0+>$HqzL$QO@bhmiAms-oJ<0|ot;ULK%ORn%FVtcxcEd$ z0?tw@DJXs0kbpv(C4-vEplIqPq3$W%@2I|aWjoPJrz@jAO64T3t^~moD4BsvT;mG~CSLN_^xWn)x(d_Ir{NM~*-FS|IGpGj zqrx!4^j<=D{IK(D*({yC0I@*yn-l@Nk-c+f_-A>t_!%end8QI+ZgN?PHT?`%i7J)2 zRbom~xJoqJ$y_D6+yt!>E1#-WB4XECl}Mt*q!LGVno)@|YrC&RxV7`+6mk^fq0Iir*tE5pC_3mDs{PuM$JN`^m7d3!9_};$NkAt#q|STut$h z(nRq~2#Uw_lORd(FbWkWY#;x*1T5aYxd+_8i{iIlN)f#_sX)LzyHsFd=kE#>>8t7r zL@X3kph(-&mYp6Yd80?ns{0{Z)0h8yAxjUoD?Qjzf7H{Wk_6O@EW9VWw2kt^PTm+} z3-5*OzU-UCZ=m;JA4e94D$(;!{GtkBj-9dI2`-JC2>mxfcoLWMsxICNGI5WyC{<)2 zLy-MaEW^ZVhh?yt&w(;TtPJY=JYPaFIWeIyY+r?nY4|RpNUqt&7W@?pCbdz8oO>PY z6%+1t?Pal4RDn~dGyJ$|>l>v)So(`2G4c3Y8!>VA;Y;yY8=5^AnTfbQzR-aEPf)QA zpSu*U0$TK2EO@|5>HoT$GX9!j4~kNes4&Y%MCIx0X^Y(|{R~CGL5|0gHNJzZIpdq* z2EbiIbv;3MTBC9szBP``cT#xmG%w`G(1;pYK{X%|97hw`1Q@w>oIsi<~&r%d+oeJ3RK9ma`qkbCR( zUE<@oP=$RZ2_KY1v-WO>l#*9!hjMRvGL^dU8Uj^Q1xh0+C9lRRt}K3(m>g8l^R>iV zU9`$|yE!~jZ8b+Rd#jz6%562H`d{sV+5@!*Y7f*Ns69}7p!PuRf!YJL2Wk)09;iJ~ Ud!Y6}?Sa|@wFhbsRPez60jpO>Z~y=R literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len new file mode 100644 index 0000000000000000000000000000000000000000..21a0fe254f4509bf6ba3837a964314da8d2ac82c GIT binary patch literal 8 McmZQz00FBR009&L(*OVf literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.len b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.len new file mode 100644 index 0000000000000000000000000000000000000000..79208b602e26680cc38febc2634d728011917bb0 GIT binary patch literal 8 McmZQz00GVg006oGssI20 literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at new file mode 100644 index 0000000000000000000000000000000000000000..850dbd0f8e985562b7658b93e707c851c858892d GIT binary patch literal 2185 zcmeHIO;5ux4DCwCx^=znz_EuOcH>{5U62q++#?nZB(zRx`TzLYtPLdn+B9hgD%o;g zY{z~{llx$!)mEGAS-%x#n>`dJd(x)-C@a0MHmZDoREJmf`K4c~!l<3j1Nx>Uw0iNg`O$8XDh-$iF!xQ-cn*thfnP5Xtx?J>e*iM$`B|r__3XSZlmEzdG9Y_@3GMbPr|p-n&zziZ{Do7- z@D?R(;YAV)voT}1Yv;AKU<Q`;<;WcAF#pxDGAwy~XH!P)7non( ZJNP;%VJZKk?)`DYxXb+|5c?MO*xwj39bNzc literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i b/samples/client/others/kotlin-oneof-jackson-default-impl/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i new file mode 100644 index 0000000000000000000000000000000000000000..8de6a35537c556abd9e715202847637bef4f5713 GIT binary patch literal 32768 zcmeHQc~nzZ8V{~%Q9zL~;+9&MOhrYiZJ?;BD=Gz)qo&qs#4Dp-}MQ;l}2867;a z)`EM)Em(1=XvI>MiVNDJ8F4hO69qN6#%0D-Jvcv3=W%*odi(N{_p)H#A6)LYf8YJ? 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 Ssl``czH;8d2cJBS?Eime(1ig2 literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/reports/problems/problems-report.html b/samples/client/others/kotlin-oneof-jackson-default-impl/build/reports/problems/problems-report.html new file mode 100644 index 000000000000..2c55de6eebe4 --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/build/reports/problems/problems-report.html @@ -0,0 +1,663 @@ + + + + + + + + + + + + + Gradle Configuration Cache + + + +

+ +
+ Loading... +
+ + + + + + diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Animal.md b/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Animal.md new file mode 100644 index 000000000000..6c37c4720729 --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Animal.md @@ -0,0 +1,11 @@ + +# Animal + +## Properties +| Name | Type | Description | Notes | +| ------------ | ------------- | ------------- | ------------- | +| **bark** | **kotlin.Boolean** | | [optional] | +| **declawed** | **kotlin.Boolean** | | [optional] | + + + diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Apple.md b/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Apple.md new file mode 100644 index 000000000000..383fb22a5244 --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Apple.md @@ -0,0 +1,11 @@ + +# Apple + +## Properties +| Name | Type | Description | Notes | +| ------------ | ------------- | ------------- | ------------- | +| **fruitType** | **kotlin.String** | | | +| **seeds** | **kotlin.Int** | | [optional] | + + + diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Banana.md b/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Banana.md new file mode 100644 index 000000000000..810a98ec722e --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Banana.md @@ -0,0 +1,11 @@ + +# Banana + +## Properties +| Name | Type | Description | Notes | +| ------------ | ------------- | ------------- | ------------- | +| **fruitType** | **kotlin.String** | | | +| **length** | **kotlin.Int** | | [optional] | + + + diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Beverage.md b/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Beverage.md new file mode 100644 index 000000000000..a7a9c70225e2 --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Beverage.md @@ -0,0 +1,12 @@ + +# Beverage + +## Properties +| Name | Type | Description | Notes | +| ------------ | ------------- | ------------- | ------------- | +| **beverageType** | **kotlin.String** | | | +| **sparkling** | **kotlin.Boolean** | | [optional] | +| **sugarGrams** | **kotlin.Int** | | [optional] | + + + diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Cat.md b/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Cat.md new file mode 100644 index 000000000000..6901dc7d977c --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Cat.md @@ -0,0 +1,10 @@ + +# Cat + +## Properties +| Name | Type | Description | Notes | +| ------------ | ------------- | ------------- | ------------- | +| **declawed** | **kotlin.Boolean** | | [optional] | + + + diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/docs/DefaultApi.md b/samples/client/others/kotlin-oneof-jackson-default-impl/docs/DefaultApi.md new file mode 100644 index 000000000000..8417be8239ab --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/docs/DefaultApi.md @@ -0,0 +1,116 @@ +# DefaultApi + +All URIs are relative to *http://localhost:8080* + +| Method | HTTP request | Description | +| ------------- | ------------- | ------------- | +| [**createAnimal**](DefaultApi.md#createAnimal) | **POST** animals | | +| [**createBeverage**](DefaultApi.md#createBeverage) | **POST** beverages | | +| [**createFruit**](DefaultApi.md#createFruit) | **POST** fruits | | + + + + + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(DefaultApi::class.java) +val animal : Animal = // Animal | + +val result : Animal = webService.createAnimal(animal) +``` + +### Parameters +| Name | Type | Description | Notes | +| ------------- | ------------- | ------------- | ------------- | +| **animal** | [**Animal**](Animal.md)| | | + +### Return type + +[**Animal**](Animal.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + + + + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(DefaultApi::class.java) +val beverage : Beverage = // Beverage | + +val result : Beverage = webService.createBeverage(beverage) +``` + +### Parameters +| Name | Type | Description | Notes | +| ------------- | ------------- | ------------- | ------------- | +| **beverage** | [**Beverage**](Beverage.md)| | | + +### Return type + +[**Beverage**](Beverage.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + + + + +### Example +```kotlin +// Import classes: +//import org.openapitools.client.* +//import org.openapitools.client.infrastructure.* +//import org.openapitools.client.models.* + +val apiClient = ApiClient() +val webService = apiClient.createWebservice(DefaultApi::class.java) +val fruit : Fruit = // Fruit | + +val result : Fruit = webService.createFruit(fruit) +``` + +### Parameters +| Name | Type | Description | Notes | +| ------------- | ------------- | ------------- | ------------- | +| **fruit** | [**Fruit**](Fruit.md)| | | + +### Return type + +[**Fruit**](Fruit.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Dog.md b/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Dog.md new file mode 100644 index 000000000000..8485f7e80dad --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Dog.md @@ -0,0 +1,10 @@ + +# Dog + +## Properties +| Name | Type | Description | Notes | +| ------------ | ------------- | ------------- | ------------- | +| **bark** | **kotlin.Boolean** | | [optional] | + + + diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Fruit.md b/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Fruit.md new file mode 100644 index 000000000000..018541e15299 --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Fruit.md @@ -0,0 +1,12 @@ + +# Fruit + +## Properties +| Name | Type | Description | Notes | +| ------------ | ------------- | ------------- | ------------- | +| **fruitType** | **kotlin.String** | | | +| **seeds** | **kotlin.Int** | | [optional] | +| **length** | **kotlin.Int** | | [optional] | + + + diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Soda.md b/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Soda.md new file mode 100644 index 000000000000..7c701f073d09 --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Soda.md @@ -0,0 +1,11 @@ + +# Soda + +## Properties +| Name | Type | Description | Notes | +| ------------ | ------------- | ------------- | ------------- | +| **beverageType** | **kotlin.String** | | | +| **sugarGrams** | **kotlin.Int** | | [optional] | + + + diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Water.md b/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Water.md new file mode 100644 index 000000000000..adac6b0874a5 --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/docs/Water.md @@ -0,0 +1,11 @@ + +# Water + +## Properties +| Name | Type | Description | Notes | +| ------------ | ------------- | ------------- | ------------- | +| **beverageType** | **kotlin.String** | | | +| **sparkling** | **kotlin.Boolean** | | [optional] | + + + diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/gradle/wrapper/gradle-wrapper.jar b/samples/client/others/kotlin-oneof-jackson-default-impl/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..2c3521197d7c4586c843d1d3e9090525f1898cde GIT binary patch literal 43504 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 yu?e%!_ptzGB|8GrCfu%p?(_ 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 TZiJi*F`$tkWLn) literal 0 HcmV?d00001 diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/gradle/wrapper/gradle-wrapper.properties b/samples/client/others/kotlin-oneof-jackson-default-impl/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000000..7705927e949f --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-all.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/gradlew b/samples/client/others/kotlin-oneof-jackson-default-impl/gradlew new file mode 100644 index 000000000000..51eb8bb47109 --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/gradlew @@ -0,0 +1,252 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while +APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path +[ -h "$app_path" ] +do +ls=$( ls -ld "$app_path" ) +link=${ls#*' -> '} +case $link in #( +/*) app_path=$link ;; #( +*) app_path=$APP_HOME$link ;; +esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { +echo "$*" +} >&2 + +die () { +echo +echo "$*" +echo +exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( +CYGWIN* ) cygwin=true ;; #( +Darwin* ) darwin=true ;; #( +MSYS* | MINGW* ) msys=true ;; #( +NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then +if [ -x "$JAVA_HOME/jre/sh/java" ] ; then +# IBM's JDK on AIX uses strange locations for the executables +JAVACMD=$JAVA_HOME/jre/sh/java +else +JAVACMD=$JAVA_HOME/bin/java +fi +if [ ! -x "$JAVACMD" ] ; then +die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi +else +JAVACMD=java +if ! command -v java >/dev/null 2>&1 +then +die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then +case $MAX_FD in #( +max*) +# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. +# shellcheck disable=SC2039,SC3045 +MAX_FD=$( ulimit -H -n ) || +warn "Could not query maximum file descriptor limit" +esac +case $MAX_FD in #( +'' | soft) :;; #( +*) +# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. +# shellcheck disable=SC2039,SC3045 +ulimit -n "$MAX_FD" || +warn "Could not set maximum file descriptor limit to $MAX_FD" +esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then +APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) +CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + +JAVACMD=$( cygpath --unix "$JAVACMD" ) + +# Now convert the arguments - kludge to limit ourselves to /bin/sh +for arg do +if +case $arg in #( +-*) false ;; # don't mess with options #( +/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath +[ -e "$t" ] ;; #( +*) false ;; +esac +then +arg=$( cygpath --path --ignore --mixed "$arg" ) +fi +# Roll the args list around exactly as many times as the number of +# args, so each arg winds up back in the position where it started, but +# possibly modified. +# +# NB: a `for` loop captures its iteration list before it begins, so +# changing the positional parameters here affects neither the number of +# iterations, nor the values presented in `arg`. +shift # remove old arg +set -- "$@" "$arg" # push replacement arg +done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ +"-Dorg.gradle.appname=$APP_BASE_NAME" \ +-classpath "$CLASSPATH" \ +org.gradle.wrapper.GradleWrapperMain \ +"$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then +die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( +printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | +xargs -n1 | +sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | +tr '\n' ' ' +)" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/gradlew.bat b/samples/client/others/kotlin-oneof-jackson-default-impl/gradlew.bat new file mode 100644 index 000000000000..9d21a21834d5 --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/gradlew.bat @@ -0,0 +1,94 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/settings.gradle b/samples/client/others/kotlin-oneof-jackson-default-impl/settings.gradle new file mode 100644 index 000000000000..fbacb1bd89a5 --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'kotlin-oneof-jackson-default-impl' diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/apis/DefaultApi.kt b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/apis/DefaultApi.kt new file mode 100644 index 000000000000..1abd1a24186d --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/apis/DefaultApi.kt @@ -0,0 +1,53 @@ +package org.openapitools.client.apis + +import org.openapitools.client.infrastructure.CollectionFormats.* +import retrofit2.http.* +import retrofit2.Call +import okhttp3.RequestBody +import com.fasterxml.jackson.annotation.JsonProperty + +import org.openapitools.client.models.Animal +import org.openapitools.client.models.Beverage +import org.openapitools.client.models.Fruit + +interface DefaultApi { + /** + * POST animals + * + * + * Responses: + * - 200: OK + * + * @param animal + * @return [Call]<[Animal]> + */ + @POST("animals") + fun createAnimal(@Body animal: Animal): Call + + /** + * POST beverages + * + * + * Responses: + * - 200: OK + * + * @param beverage + * @return [Call]<[Beverage]> + */ + @POST("beverages") + fun createBeverage(@Body beverage: Beverage): Call + + /** + * POST fruits + * + * + * Responses: + * - 200: OK + * + * @param fruit + * @return [Call]<[Fruit]> + */ + @POST("fruits") + fun createFruit(@Body fruit: Fruit): Call + +} diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt new file mode 100644 index 000000000000..dc406de1531a --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -0,0 +1,115 @@ +package org.openapitools.client.infrastructure + + +import okhttp3.Call +import okhttp3.Interceptor +import okhttp3.OkHttpClient +import retrofit2.Retrofit +import okhttp3.logging.HttpLoggingInterceptor +import retrofit2.Converter +import retrofit2.CallAdapter +import retrofit2.converter.scalars.ScalarsConverterFactory +import com.fasterxml.jackson.databind.ObjectMapper +import retrofit2.converter.jackson.JacksonConverterFactory + + +class ApiClient( + private var baseUrl: String = defaultBasePath, + private val okHttpClientBuilder: OkHttpClient.Builder? = null, + private val serializerBuilder: ObjectMapper = Serializer.jacksonObjectMapper, + private val callFactory: Call.Factory? = null, + private val callAdapterFactories: List = listOf( + ), + private val converterFactories: List = listOf( + ScalarsConverterFactory.create(), + JacksonConverterFactory.create(serializerBuilder), + ) +) { + private val apiAuthorizations = mutableMapOf() + var logger: ((String) -> Unit)? = null + + private val retrofitBuilder: Retrofit.Builder by lazy { + Retrofit.Builder() + .baseUrl(baseUrl) + .apply { + callAdapterFactories.forEach { + addCallAdapterFactory(it) + } + } + .apply { + converterFactories.forEach { + addConverterFactory(it) + } + } + } + + private val clientBuilder: OkHttpClient.Builder by lazy { + okHttpClientBuilder ?: defaultClientBuilder + } + + private val defaultClientBuilder: OkHttpClient.Builder by lazy { + OkHttpClient() + .newBuilder() + .addInterceptor(HttpLoggingInterceptor { message -> logger?.invoke(message) } + .apply { level = HttpLoggingInterceptor.Level.BODY } + ) + } + + init { + normalizeBaseUrl() + } + + /** + * Adds an authorization to be used by the client + * @param authName Authentication name + * @param authorization Authorization interceptor + * @return ApiClient + */ + fun addAuthorization(authName: String, authorization: Interceptor): ApiClient { + if (apiAuthorizations.containsKey(authName)) { + throw RuntimeException("auth name $authName already in api authorizations") + } + apiAuthorizations[authName] = authorization + clientBuilder.addInterceptor(authorization) + return this + } + + fun setLogger(logger: (String) -> Unit): ApiClient { + this.logger = logger + return this + } + + fun createService(serviceClass: Class): S { + val usedCallFactory = this.callFactory ?: clientBuilder.build() + return retrofitBuilder.callFactory(usedCallFactory).build().create(serviceClass) + } + + private fun normalizeBaseUrl() { + if (!baseUrl.endsWith("/")) { + baseUrl += "/" + } + } + + private inline fun Iterable.runOnFirst(callback: U.() -> Unit) { + for (element in this) { + if (element is U) { + callback.invoke(element) + break + } + } + } + + companion object { + protected const val BASE_URL_KEY: String = "org.openapitools.client.baseUrl" + @Deprecated( + message = "Please use the capitalized constant `BASE_URL_KEY` instead.", + replaceWith = ReplaceWith("BASE_URL_KEY") + ) + protected const val baseUrlKey: String = BASE_URL_KEY + + @JvmStatic + val defaultBasePath: String by lazy { + System.getProperties().getProperty(BASE_URL_KEY, "http://localhost:8080") + } + } +} diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/infrastructure/CollectionFormats.kt b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/infrastructure/CollectionFormats.kt new file mode 100644 index 000000000000..7f404da69ea0 --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/infrastructure/CollectionFormats.kt @@ -0,0 +1,56 @@ +package org.openapitools.client.infrastructure + +class CollectionFormats { + + open class CSVParams { + + var params: List + + constructor(params: List) { + this.params = params + } + + constructor(vararg params: String) { + this.params = listOf(*params) + } + + override fun toString(): String { + return params.joinToString(",") + } + } + + open class SSVParams : CSVParams { + + constructor(params: List) : super(params) + + constructor(vararg params: String) : super(*params) + + override fun toString(): String { + return params.joinToString(" ") + } + } + + class TSVParams : CSVParams { + + constructor(params: List) : super(params) + + constructor(vararg params: String) : super(*params) + + override fun toString(): String { + return params.joinToString("\t") + } + } + + class PIPESParams : CSVParams { + + constructor(params: List) : super(params) + + constructor(vararg params: String) : super(*params) + + override fun toString(): String { + return params.joinToString("|") + } + } + + class SPACEParams : SSVParams() +} diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExt.kt b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExt.kt new file mode 100644 index 000000000000..0f121a95f5be --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExt.kt @@ -0,0 +1,4 @@ +package org.openapitools.client.infrastructure + +import retrofit2.Response + diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt new file mode 100644 index 000000000000..80783430664b --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -0,0 +1,17 @@ +package org.openapitools.client.infrastructure + +import com.fasterxml.jackson.databind.DeserializationFeature +import com.fasterxml.jackson.databind.ObjectMapper +import com.fasterxml.jackson.databind.SerializationFeature +import com.fasterxml.jackson.annotation.JsonInclude +import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper + +object Serializer { + @JvmStatic + val jacksonObjectMapper: ObjectMapper = jacksonObjectMapper() + .findAndRegisterModules() + .setSerializationInclusion(JsonInclude.Include.NON_ABSENT) + .configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE, true) + .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false) + .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) +} diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Animal.kt b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Animal.kt new file mode 100644 index 000000000000..9831903e1cff --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Animal.kt @@ -0,0 +1,54 @@ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "DuplicatedCode", + "EnumEntryName", + "RemoveRedundantQualifierName", + "RemoveRedundantCallsOfConversionMethods", + "REDUNDANT_CALL_OF_CONVERSION_METHOD", + "RedundantUnitReturnType", + "RemoveEmptyClassBody", + "UnnecessaryVariable", + "UnusedImport", + "UnnecessaryVariable", + "unused" +) + +package org.openapitools.client.models + +import org.openapitools.client.models.Cat +import org.openapitools.client.models.Dog + +import com.fasterxml.jackson.annotation.JsonEnumDefaultValue +import com.fasterxml.jackson.annotation.JsonProperty + +/** + * + * + * @param bark + * @param declawed + */ + + +data class Animal ( + + @param:JsonProperty("bark") + @get:JsonProperty("bark") + val bark: kotlin.Boolean? = null, + + @param:JsonProperty("declawed") + @get:JsonProperty("declawed") + val declawed: kotlin.Boolean? = null + +) { + + +} + diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Apple.kt b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Apple.kt new file mode 100644 index 000000000000..c1caa3c474b9 --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Apple.kt @@ -0,0 +1,52 @@ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "DuplicatedCode", + "EnumEntryName", + "RemoveRedundantQualifierName", + "RemoveRedundantCallsOfConversionMethods", + "REDUNDANT_CALL_OF_CONVERSION_METHOD", + "RedundantUnitReturnType", + "RemoveEmptyClassBody", + "UnnecessaryVariable", + "UnusedImport", + "UnnecessaryVariable", + "unused" +) + +package org.openapitools.client.models + + +import com.fasterxml.jackson.annotation.JsonEnumDefaultValue +import com.fasterxml.jackson.annotation.JsonProperty + +/** + * + * + * @param fruitType + * @param seeds + */ + + +data class Apple ( + + @param:JsonProperty("fruitType") + @get:JsonProperty("fruitType") + val fruitType: kotlin.String, + + @param:JsonProperty("seeds") + @get:JsonProperty("seeds") + val seeds: kotlin.Int? = null + +) { + + +} + diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Banana.kt b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Banana.kt new file mode 100644 index 000000000000..103d48bf00b0 --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Banana.kt @@ -0,0 +1,52 @@ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "DuplicatedCode", + "EnumEntryName", + "RemoveRedundantQualifierName", + "RemoveRedundantCallsOfConversionMethods", + "REDUNDANT_CALL_OF_CONVERSION_METHOD", + "RedundantUnitReturnType", + "RemoveEmptyClassBody", + "UnnecessaryVariable", + "UnusedImport", + "UnnecessaryVariable", + "unused" +) + +package org.openapitools.client.models + + +import com.fasterxml.jackson.annotation.JsonEnumDefaultValue +import com.fasterxml.jackson.annotation.JsonProperty + +/** + * + * + * @param fruitType + * @param length + */ + + +data class Banana ( + + @param:JsonProperty("fruitType") + @get:JsonProperty("fruitType") + val fruitType: kotlin.String, + + @param:JsonProperty("length") + @get:JsonProperty("length") + val length: kotlin.Int? = null + +) { + + +} + diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Beverage.kt b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Beverage.kt new file mode 100644 index 000000000000..bc82ca1ab1c2 --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Beverage.kt @@ -0,0 +1,62 @@ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "DuplicatedCode", + "EnumEntryName", + "RemoveRedundantQualifierName", + "RemoveRedundantCallsOfConversionMethods", + "REDUNDANT_CALL_OF_CONVERSION_METHOD", + "RedundantUnitReturnType", + "RemoveEmptyClassBody", + "UnnecessaryVariable", + "UnusedImport", + "UnnecessaryVariable", + "unused" +) + +package org.openapitools.client.models + +import org.openapitools.client.models.Soda +import org.openapitools.client.models.Water + +import com.fasterxml.jackson.annotation.JsonEnumDefaultValue +import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.annotation.JsonIgnoreProperties +import com.fasterxml.jackson.annotation.JsonSubTypes +import com.fasterxml.jackson.annotation.JsonTypeInfo + +/** + * + * + * @param beverageType + * @param sparkling + * @param sugarGrams + */ +@JsonIgnoreProperties( + value = ["beverageType"], // ignore manually set beverageType, it will be automatically generated by Jackson during serialization + allowSetters = true // allows the beverageType to be set during deserialization +) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "beverageType", visible = true, defaultImpl = Water::class) +@JsonSubTypes( + JsonSubTypes.Type(value = Soda::class, name = "SODA"), + JsonSubTypes.Type(value = Water::class, name = "WATER") +) + +interface Beverage { + + @get:JsonProperty("beverageType") + val beverageType: kotlin.String + @get:JsonProperty("sparkling") + val sparkling: kotlin.Boolean? + @get:JsonProperty("sugarGrams") + val sugarGrams: kotlin.Int? + +} + diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Cat.kt b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Cat.kt new file mode 100644 index 000000000000..ed40c6089e51 --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Cat.kt @@ -0,0 +1,47 @@ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "DuplicatedCode", + "EnumEntryName", + "RemoveRedundantQualifierName", + "RemoveRedundantCallsOfConversionMethods", + "REDUNDANT_CALL_OF_CONVERSION_METHOD", + "RedundantUnitReturnType", + "RemoveEmptyClassBody", + "UnnecessaryVariable", + "UnusedImport", + "UnnecessaryVariable", + "unused" +) + +package org.openapitools.client.models + + +import com.fasterxml.jackson.annotation.JsonEnumDefaultValue +import com.fasterxml.jackson.annotation.JsonProperty + +/** + * + * + * @param declawed + */ + + +data class Cat ( + + @param:JsonProperty("declawed") + @get:JsonProperty("declawed") + val declawed: kotlin.Boolean? = null + +) { + + +} + diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Dog.kt b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Dog.kt new file mode 100644 index 000000000000..02840ba666bd --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Dog.kt @@ -0,0 +1,47 @@ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "DuplicatedCode", + "EnumEntryName", + "RemoveRedundantQualifierName", + "RemoveRedundantCallsOfConversionMethods", + "REDUNDANT_CALL_OF_CONVERSION_METHOD", + "RedundantUnitReturnType", + "RemoveEmptyClassBody", + "UnnecessaryVariable", + "UnusedImport", + "UnnecessaryVariable", + "unused" +) + +package org.openapitools.client.models + + +import com.fasterxml.jackson.annotation.JsonEnumDefaultValue +import com.fasterxml.jackson.annotation.JsonProperty + +/** + * + * + * @param bark + */ + + +data class Dog ( + + @param:JsonProperty("bark") + @get:JsonProperty("bark") + val bark: kotlin.Boolean? = null + +) { + + +} + diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Fruit.kt b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Fruit.kt new file mode 100644 index 000000000000..a4a64f5e3eef --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Fruit.kt @@ -0,0 +1,62 @@ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "DuplicatedCode", + "EnumEntryName", + "RemoveRedundantQualifierName", + "RemoveRedundantCallsOfConversionMethods", + "REDUNDANT_CALL_OF_CONVERSION_METHOD", + "RedundantUnitReturnType", + "RemoveEmptyClassBody", + "UnnecessaryVariable", + "UnusedImport", + "UnnecessaryVariable", + "unused" +) + +package org.openapitools.client.models + +import org.openapitools.client.models.Apple +import org.openapitools.client.models.Banana + +import com.fasterxml.jackson.annotation.JsonEnumDefaultValue +import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.annotation.JsonIgnoreProperties +import com.fasterxml.jackson.annotation.JsonSubTypes +import com.fasterxml.jackson.annotation.JsonTypeInfo + +/** + * + * + * @param fruitType + * @param seeds + * @param length + */ +@JsonIgnoreProperties( + value = ["fruitType"], // ignore manually set fruitType, it will be automatically generated by Jackson during serialization + allowSetters = true // allows the fruitType to be set during deserialization +) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "fruitType", visible = true, defaultImpl = Apple::class) +@JsonSubTypes( + JsonSubTypes.Type(value = Apple::class, name = "APPLE"), + JsonSubTypes.Type(value = Banana::class, name = "BANANA") +) + +interface Fruit { + + @get:JsonProperty("fruitType") + val fruitType: kotlin.String + @get:JsonProperty("seeds") + val seeds: kotlin.Int? + @get:JsonProperty("length") + val length: kotlin.Int? + +} + diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Soda.kt b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Soda.kt new file mode 100644 index 000000000000..33391ff9a169 --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Soda.kt @@ -0,0 +1,52 @@ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "DuplicatedCode", + "EnumEntryName", + "RemoveRedundantQualifierName", + "RemoveRedundantCallsOfConversionMethods", + "REDUNDANT_CALL_OF_CONVERSION_METHOD", + "RedundantUnitReturnType", + "RemoveEmptyClassBody", + "UnnecessaryVariable", + "UnusedImport", + "UnnecessaryVariable", + "unused" +) + +package org.openapitools.client.models + + +import com.fasterxml.jackson.annotation.JsonEnumDefaultValue +import com.fasterxml.jackson.annotation.JsonProperty + +/** + * + * + * @param beverageType + * @param sugarGrams + */ + + +data class Soda ( + + @param:JsonProperty("beverageType") + @get:JsonProperty("beverageType") + val beverageType: kotlin.String, + + @param:JsonProperty("sugarGrams") + @get:JsonProperty("sugarGrams") + val sugarGrams: kotlin.Int? = null + +) { + + +} + diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Water.kt b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Water.kt new file mode 100644 index 000000000000..99a2a042fcda --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/client/models/Water.kt @@ -0,0 +1,52 @@ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "DuplicatedCode", + "EnumEntryName", + "RemoveRedundantQualifierName", + "RemoveRedundantCallsOfConversionMethods", + "REDUNDANT_CALL_OF_CONVERSION_METHOD", + "RedundantUnitReturnType", + "RemoveEmptyClassBody", + "UnnecessaryVariable", + "UnusedImport", + "UnnecessaryVariable", + "unused" +) + +package org.openapitools.client.models + + +import com.fasterxml.jackson.annotation.JsonEnumDefaultValue +import com.fasterxml.jackson.annotation.JsonProperty + +/** + * + * + * @param beverageType + * @param sparkling + */ + + +data class Water ( + + @param:JsonProperty("beverageType") + @get:JsonProperty("beverageType") + val beverageType: kotlin.String, + + @param:JsonProperty("sparkling") + @get:JsonProperty("sparkling") + val sparkling: kotlin.Boolean? = null + +) { + + +} + diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/apis/DefaultApiTest.kt b/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/apis/DefaultApiTest.kt new file mode 100644 index 000000000000..cba08eb255f0 --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/apis/DefaultApiTest.kt @@ -0,0 +1,64 @@ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "DuplicatedCode", + "EnumEntryName", + "RemoveRedundantQualifierName", + "RemoveRedundantCallsOfConversionMethods", + "REDUNDANT_CALL_OF_CONVERSION_METHOD", + "RedundantUnitReturnType", + "RemoveEmptyClassBody", + "UnnecessaryVariable", + "UnusedImport", + "UnnecessaryVariable", + "unused" +) + +package org.openapitools.client.apis + +import io.kotlintest.shouldBe +import io.kotlintest.specs.ShouldSpec + +import org.openapitools.client.apis.DefaultApi +import org.openapitools.client.models.Animal +import org.openapitools.client.models.Beverage +import org.openapitools.client.models.Fruit + +class DefaultApiTest : ShouldSpec() { + init { + // uncomment below to create an instance of DefaultApi + //val apiInstance = DefaultApi() + + // to test createAnimal + should("test createAnimal") { + // uncomment below to test createAnimal + //val animal : Animal = // Animal | + //val result : Animal = apiInstance.createAnimal(animal) + //result shouldBe ("TODO") + } + + // to test createBeverage + should("test createBeverage") { + // uncomment below to test createBeverage + //val beverage : Beverage = // Beverage | + //val result : Beverage = apiInstance.createBeverage(beverage) + //result shouldBe ("TODO") + } + + // to test createFruit + should("test createFruit") { + // uncomment below to test createFruit + //val fruit : Fruit = // Fruit | + //val result : Fruit = apiInstance.createFruit(fruit) + //result shouldBe ("TODO") + } + + } +} diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/AnimalTest.kt b/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/AnimalTest.kt new file mode 100644 index 000000000000..c31bbcdd3461 --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/AnimalTest.kt @@ -0,0 +1,51 @@ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "DuplicatedCode", + "EnumEntryName", + "RemoveRedundantQualifierName", + "RemoveRedundantCallsOfConversionMethods", + "REDUNDANT_CALL_OF_CONVERSION_METHOD", + "RedundantUnitReturnType", + "RemoveEmptyClassBody", + "UnnecessaryVariable", + "UnusedImport", + "UnnecessaryVariable", + "unused" +) + +package org.openapitools.client.models + +import io.kotlintest.shouldBe +import io.kotlintest.specs.ShouldSpec + +import org.openapitools.client.models.Animal +import org.openapitools.client.models.Cat +import org.openapitools.client.models.Dog + +class AnimalTest : ShouldSpec() { + init { + // uncomment below to create an instance of Animal + //val modelInstance = Animal() + + // to test the property `bark` + should("test bark") { + // uncomment below to test the property + //modelInstance.bark shouldBe ("TODO") + } + + // to test the property `declawed` + should("test declawed") { + // uncomment below to test the property + //modelInstance.declawed shouldBe ("TODO") + } + + } +} diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/AppleTest.kt b/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/AppleTest.kt new file mode 100644 index 000000000000..1c832405042e --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/AppleTest.kt @@ -0,0 +1,43 @@ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "DuplicatedCode", + "EnumEntryName", + "RemoveRedundantQualifierName", + "RemoveRedundantCallsOfConversionMethods", + "REDUNDANT_CALL_OF_CONVERSION_METHOD", + "RedundantUnitReturnType", + "RemoveEmptyClassBody", + "UnnecessaryVariable", + "UnusedImport", + "UnnecessaryVariable", + "unused" +) + +package org.openapitools.client.models + +import io.kotlintest.shouldBe +import io.kotlintest.specs.ShouldSpec + +import org.openapitools.client.models.Apple + +class AppleTest : ShouldSpec() { + init { + // uncomment below to create an instance of Apple + //val modelInstance = Apple() + + // to test the property `seeds` + should("test seeds") { + // uncomment below to test the property + //modelInstance.seeds shouldBe ("TODO") + } + + } +} diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/BananaTest.kt b/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/BananaTest.kt new file mode 100644 index 000000000000..55d93751d892 --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/BananaTest.kt @@ -0,0 +1,43 @@ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "DuplicatedCode", + "EnumEntryName", + "RemoveRedundantQualifierName", + "RemoveRedundantCallsOfConversionMethods", + "REDUNDANT_CALL_OF_CONVERSION_METHOD", + "RedundantUnitReturnType", + "RemoveEmptyClassBody", + "UnnecessaryVariable", + "UnusedImport", + "UnnecessaryVariable", + "unused" +) + +package org.openapitools.client.models + +import io.kotlintest.shouldBe +import io.kotlintest.specs.ShouldSpec + +import org.openapitools.client.models.Banana + +class BananaTest : ShouldSpec() { + init { + // uncomment below to create an instance of Banana + //val modelInstance = Banana() + + // to test the property `length` + should("test length") { + // uncomment below to test the property + //modelInstance.length shouldBe ("TODO") + } + + } +} diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/BeverageTest.kt b/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/BeverageTest.kt new file mode 100644 index 000000000000..50319cf7b4ce --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/BeverageTest.kt @@ -0,0 +1,57 @@ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "DuplicatedCode", + "EnumEntryName", + "RemoveRedundantQualifierName", + "RemoveRedundantCallsOfConversionMethods", + "REDUNDANT_CALL_OF_CONVERSION_METHOD", + "RedundantUnitReturnType", + "RemoveEmptyClassBody", + "UnnecessaryVariable", + "UnusedImport", + "UnnecessaryVariable", + "unused" +) + +package org.openapitools.client.models + +import io.kotlintest.shouldBe +import io.kotlintest.specs.ShouldSpec + +import org.openapitools.client.models.Beverage +import org.openapitools.client.models.Soda +import org.openapitools.client.models.Water + +class BeverageTest : ShouldSpec() { + init { + // uncomment below to create an instance of Beverage + //val modelInstance = Beverage() + + // to test the property `beverageType` + should("test beverageType") { + // uncomment below to test the property + //modelInstance.beverageType shouldBe ("TODO") + } + + // to test the property `sparkling` + should("test sparkling") { + // uncomment below to test the property + //modelInstance.sparkling shouldBe ("TODO") + } + + // to test the property `sugarGrams` + should("test sugarGrams") { + // uncomment below to test the property + //modelInstance.sugarGrams shouldBe ("TODO") + } + + } +} diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/CatTest.kt b/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/CatTest.kt new file mode 100644 index 000000000000..7da9bed8d2ed --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/CatTest.kt @@ -0,0 +1,43 @@ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "DuplicatedCode", + "EnumEntryName", + "RemoveRedundantQualifierName", + "RemoveRedundantCallsOfConversionMethods", + "REDUNDANT_CALL_OF_CONVERSION_METHOD", + "RedundantUnitReturnType", + "RemoveEmptyClassBody", + "UnnecessaryVariable", + "UnusedImport", + "UnnecessaryVariable", + "unused" +) + +package org.openapitools.client.models + +import io.kotlintest.shouldBe +import io.kotlintest.specs.ShouldSpec + +import org.openapitools.client.models.Cat + +class CatTest : ShouldSpec() { + init { + // uncomment below to create an instance of Cat + //val modelInstance = Cat() + + // to test the property `declawed` + should("test declawed") { + // uncomment below to test the property + //modelInstance.declawed shouldBe ("TODO") + } + + } +} diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/DogTest.kt b/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/DogTest.kt new file mode 100644 index 000000000000..ccd11a99ebb6 --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/DogTest.kt @@ -0,0 +1,43 @@ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "DuplicatedCode", + "EnumEntryName", + "RemoveRedundantQualifierName", + "RemoveRedundantCallsOfConversionMethods", + "REDUNDANT_CALL_OF_CONVERSION_METHOD", + "RedundantUnitReturnType", + "RemoveEmptyClassBody", + "UnnecessaryVariable", + "UnusedImport", + "UnnecessaryVariable", + "unused" +) + +package org.openapitools.client.models + +import io.kotlintest.shouldBe +import io.kotlintest.specs.ShouldSpec + +import org.openapitools.client.models.Dog + +class DogTest : ShouldSpec() { + init { + // uncomment below to create an instance of Dog + //val modelInstance = Dog() + + // to test the property `bark` + should("test bark") { + // uncomment below to test the property + //modelInstance.bark shouldBe ("TODO") + } + + } +} diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/FruitTest.kt b/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/FruitTest.kt new file mode 100644 index 000000000000..cbc254be0116 --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/FruitTest.kt @@ -0,0 +1,57 @@ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "DuplicatedCode", + "EnumEntryName", + "RemoveRedundantQualifierName", + "RemoveRedundantCallsOfConversionMethods", + "REDUNDANT_CALL_OF_CONVERSION_METHOD", + "RedundantUnitReturnType", + "RemoveEmptyClassBody", + "UnnecessaryVariable", + "UnusedImport", + "UnnecessaryVariable", + "unused" +) + +package org.openapitools.client.models + +import io.kotlintest.shouldBe +import io.kotlintest.specs.ShouldSpec + +import org.openapitools.client.models.Fruit +import org.openapitools.client.models.Apple +import org.openapitools.client.models.Banana + +class FruitTest : ShouldSpec() { + init { + // uncomment below to create an instance of Fruit + //val modelInstance = Fruit() + + // to test the property `fruitType` + should("test fruitType") { + // uncomment below to test the property + //modelInstance.fruitType shouldBe ("TODO") + } + + // to test the property `seeds` + should("test seeds") { + // uncomment below to test the property + //modelInstance.seeds shouldBe ("TODO") + } + + // to test the property `length` + should("test length") { + // uncomment below to test the property + //modelInstance.length shouldBe ("TODO") + } + + } +} diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/SodaTest.kt b/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/SodaTest.kt new file mode 100644 index 000000000000..414ae09de946 --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/SodaTest.kt @@ -0,0 +1,43 @@ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "DuplicatedCode", + "EnumEntryName", + "RemoveRedundantQualifierName", + "RemoveRedundantCallsOfConversionMethods", + "REDUNDANT_CALL_OF_CONVERSION_METHOD", + "RedundantUnitReturnType", + "RemoveEmptyClassBody", + "UnnecessaryVariable", + "UnusedImport", + "UnnecessaryVariable", + "unused" +) + +package org.openapitools.client.models + +import io.kotlintest.shouldBe +import io.kotlintest.specs.ShouldSpec + +import org.openapitools.client.models.Soda + +class SodaTest : ShouldSpec() { + init { + // uncomment below to create an instance of Soda + //val modelInstance = Soda() + + // to test the property `sugarGrams` + should("test sugarGrams") { + // uncomment below to test the property + //modelInstance.sugarGrams shouldBe ("TODO") + } + + } +} diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/WaterTest.kt b/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/WaterTest.kt new file mode 100644 index 000000000000..b778fefa7ccd --- /dev/null +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/src/test/kotlin/org/openapitools/client/models/WaterTest.kt @@ -0,0 +1,43 @@ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "DuplicatedCode", + "EnumEntryName", + "RemoveRedundantQualifierName", + "RemoveRedundantCallsOfConversionMethods", + "REDUNDANT_CALL_OF_CONVERSION_METHOD", + "RedundantUnitReturnType", + "RemoveEmptyClassBody", + "UnnecessaryVariable", + "UnusedImport", + "UnnecessaryVariable", + "unused" +) + +package org.openapitools.client.models + +import io.kotlintest.shouldBe +import io.kotlintest.specs.ShouldSpec + +import org.openapitools.client.models.Water + +class WaterTest : ShouldSpec() { + init { + // uncomment below to create an instance of Water + //val modelInstance = Water() + + // to test the property `sparkling` + should("test sparkling") { + // uncomment below to test the property + //modelInstance.sparkling shouldBe ("TODO") + } + + } +} diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/.openapi-generator-ignore b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/.openapi-generator-ignore new file mode 100644 index 000000000000..7484ee590a38 --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/.openapi-generator/FILES b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/.openapi-generator/FILES new file mode 100644 index 000000000000..e84510ea86bf --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/.openapi-generator/FILES @@ -0,0 +1,22 @@ +README.md +pom.xml +src/main/java/org/openapitools/OpenApiGeneratorApplication.java +src/main/java/org/openapitools/RFC3339DateFormat.java +src/main/java/org/openapitools/api/AnimalsApi.java +src/main/java/org/openapitools/api/ApiUtil.java +src/main/java/org/openapitools/api/BeveragesApi.java +src/main/java/org/openapitools/api/FruitsApi.java +src/main/java/org/openapitools/configuration/HomeController.java +src/main/java/org/openapitools/configuration/SpringDocConfiguration.java +src/main/java/org/openapitools/model/Animal.java +src/main/java/org/openapitools/model/Apple.java +src/main/java/org/openapitools/model/Banana.java +src/main/java/org/openapitools/model/Beverage.java +src/main/java/org/openapitools/model/Cat.java +src/main/java/org/openapitools/model/Dog.java +src/main/java/org/openapitools/model/Fruit.java +src/main/java/org/openapitools/model/Soda.java +src/main/java/org/openapitools/model/Water.java +src/main/resources/application.properties +src/main/resources/openapi.yaml +src/test/java/org/openapitools/OpenApiGeneratorApplicationTests.java diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/.openapi-generator/VERSION b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/.openapi-generator/VERSION new file mode 100644 index 000000000000..186c33c96ed8 --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/.openapi-generator/VERSION @@ -0,0 +1 @@ +7.24.0-SNAPSHOT diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/README.md b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/README.md new file mode 100644 index 000000000000..5cd22b6081a2 --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/README.md @@ -0,0 +1,21 @@ +# OpenAPI generated server + +Spring Boot Server + +## Overview +This server was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. +By using the [OpenAPI-Spec](https://openapis.org), you can easily generate a server stub. +This is an example of building a OpenAPI-enabled server in Java using the SpringBoot framework. + + +The underlying library integrating OpenAPI to Spring Boot is [springdoc](https://springdoc.org). +Springdoc will generate an OpenAPI v3 specification based on the generated Controller and Model classes. +The specification is available to download using the following url: +http://localhost:8080/v3/api-docs/ + +Start your server as a simple java application + +You can view the api documentation in swagger-ui by pointing to +http://localhost:8080/swagger-ui.html + +Change default port value in application.properties \ No newline at end of file diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/pom.xml b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/pom.xml new file mode 100644 index 000000000000..7ba57148eecb --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/pom.xml @@ -0,0 +1,78 @@ + + 4.0.0 + org.openapitools.openapi3 + springboot-oneof-jackson-default-impl + jar + springboot-oneof-jackson-default-impl + 0.0.1-SNAPSHOT + + 17 + ${java.version} + UTF-8 + 2.6.0 + 5.17.14 + + + org.springframework.boot + spring-boot-starter-parent + 3.3.13 + + + + + src/main/java + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.data + spring-data-commons + + + + org.springdoc + springdoc-openapi-starter-webmvc-ui + ${springdoc.version} + + + + com.google.code.findbugs + jsr305 + 3.0.2 + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + + + org.openapitools + jackson-databind-nullable + 0.2.10 + + + + org.springframework.boot + spring-boot-starter-validation + + + com.fasterxml.jackson.core + jackson-databind + + + org.springframework.boot + spring-boot-starter-test + test + + + diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/OpenApiGeneratorApplication.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/OpenApiGeneratorApplication.java new file mode 100644 index 000000000000..97252a8a9402 --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/OpenApiGeneratorApplication.java @@ -0,0 +1,30 @@ +package org.openapitools; + +import com.fasterxml.jackson.databind.Module; +import org.openapitools.jackson.nullable.JsonNullableModule; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.FilterType; +import org.springframework.context.annotation.FullyQualifiedAnnotationBeanNameGenerator; + +@SpringBootApplication( + nameGenerator = FullyQualifiedAnnotationBeanNameGenerator.class +) +@ComponentScan( + basePackages = {"org.openapitools", "org.openapitools.api" , "org.openapitools.configuration"}, + nameGenerator = FullyQualifiedAnnotationBeanNameGenerator.class +) +public class OpenApiGeneratorApplication { + + public static void main(String[] args) { + SpringApplication.run(OpenApiGeneratorApplication.class, args); + } + + @Bean(name = "org.openapitools.OpenApiGeneratorApplication.jsonNullableModule") + public Module jsonNullableModule() { + return new JsonNullableModule(); + } + +} \ No newline at end of file diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/RFC3339DateFormat.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/RFC3339DateFormat.java new file mode 100644 index 000000000000..bcd3936d8b34 --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/RFC3339DateFormat.java @@ -0,0 +1,38 @@ +package org.openapitools; + +import com.fasterxml.jackson.databind.util.StdDateFormat; + +import java.text.DateFormat; +import java.text.FieldPosition; +import java.text.ParsePosition; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.TimeZone; + +public class RFC3339DateFormat extends DateFormat { + private static final long serialVersionUID = 1L; + private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC"); + + private final StdDateFormat fmt = new StdDateFormat() + .withTimeZone(TIMEZONE_Z) + .withColonInTimeZone(true); + + public RFC3339DateFormat() { + this.calendar = new GregorianCalendar(); + } + + @Override + public Date parse(String source, ParsePosition pos) { + return fmt.parse(source, pos); + } + + @Override + public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) { + return fmt.format(date, toAppendTo, fieldPosition); + } + + @Override + public Object clone() { + return this; + } +} \ No newline at end of file diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApi.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApi.java new file mode 100644 index 000000000000..9b962b30983a --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApi.java @@ -0,0 +1,83 @@ +/* + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +package org.openapitools.api; + +import org.openapitools.model.Animal; +import io.swagger.v3.oas.annotations.ExternalDocumentation; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.enums.ParameterIn; +import io.swagger.v3.oas.annotations.media.ExampleObject; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.context.request.NativeWebRequest; +import org.springframework.web.multipart.MultipartFile; + +import jakarta.validation.Valid; +import jakarta.validation.constraints.*; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import jakarta.annotation.Generated; + +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Validated +@Tag(name = "animals", description = "the animals API") +public interface AnimalsApi { + + default Optional getRequest() { + return Optional.empty(); + } + + String PATH_CREATE_ANIMAL = "/animals"; + /** + * POST /animals + * + * @param animal (required) + * @return OK (status code 200) + */ + @Operation( + operationId = "createAnimal", + tags = { "default" }, + responses = { + @ApiResponse(responseCode = "200", description = "OK", content = { + @Content(mediaType = "application/json", schema = @Schema(implementation = Animal.class)) + }) + } + ) + @RequestMapping( + method = RequestMethod.POST, + value = AnimalsApi.PATH_CREATE_ANIMAL, + produces = { "application/json" }, + consumes = { "application/json" } + ) + default ResponseEntity createAnimal( + @Parameter(name = "Animal", description = "", required = true) @Valid @RequestBody Animal animal + ) { + getRequest().ifPresent(request -> { + for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { + if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { + String exampleString = "{ \"bark\" : true }"; + ApiUtil.setExampleResponse(request, "application/json", exampleString); + break; + } + } + }); + return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); + + } + +} diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApiController.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApiController.java new file mode 100644 index 000000000000..0396d402f61b --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApiController.java @@ -0,0 +1,46 @@ +package org.openapitools.api; + +import org.openapitools.model.Animal; + + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.CookieValue; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.context.request.NativeWebRequest; + +import jakarta.validation.constraints.*; +import jakarta.validation.Valid; + +import java.util.List; +import java.util.Map; +import java.util.Optional; +import jakarta.annotation.Generated; + +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Controller +@RequestMapping("${openapi.jacksonDefaultImplOneOfSample.base-path:}") +public class AnimalsApiController implements AnimalsApi { + + private final NativeWebRequest request; + + @Autowired + public AnimalsApiController(NativeWebRequest request) { + this.request = request; + } + + @Override + public Optional getRequest() { + return Optional.ofNullable(request); + } + +} diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/ApiUtil.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/ApiUtil.java new file mode 100644 index 000000000000..44bf770ccc47 --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/ApiUtil.java @@ -0,0 +1,21 @@ +package org.openapitools.api; + +import org.springframework.web.context.request.NativeWebRequest; + +import jakarta.servlet.http.HttpServletResponse; +import java.io.IOException; + +public class ApiUtil { + public static void setExampleResponse(NativeWebRequest req, String contentType, String example) { + try { + HttpServletResponse res = req.getNativeResponse(HttpServletResponse.class); + if (res != null) { + res.setCharacterEncoding("UTF-8"); + res.addHeader("Content-Type", contentType); + res.getWriter().print(example); + } + } catch (IOException e) { + throw new RuntimeException(e); + } + } +} diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApi.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApi.java new file mode 100644 index 000000000000..f5376d56850b --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApi.java @@ -0,0 +1,83 @@ +/* + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +package org.openapitools.api; + +import org.openapitools.model.Beverage; +import io.swagger.v3.oas.annotations.ExternalDocumentation; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.enums.ParameterIn; +import io.swagger.v3.oas.annotations.media.ExampleObject; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.context.request.NativeWebRequest; +import org.springframework.web.multipart.MultipartFile; + +import jakarta.validation.Valid; +import jakarta.validation.constraints.*; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import jakarta.annotation.Generated; + +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Validated +@Tag(name = "beverages", description = "the beverages API") +public interface BeveragesApi { + + default Optional getRequest() { + return Optional.empty(); + } + + String PATH_CREATE_BEVERAGE = "/beverages"; + /** + * POST /beverages + * + * @param beverage (required) + * @return OK (status code 200) + */ + @Operation( + operationId = "createBeverage", + tags = { "default" }, + responses = { + @ApiResponse(responseCode = "200", description = "OK", content = { + @Content(mediaType = "application/json", schema = @Schema(implementation = Beverage.class)) + }) + } + ) + @RequestMapping( + method = RequestMethod.POST, + value = BeveragesApi.PATH_CREATE_BEVERAGE, + produces = { "application/json" }, + consumes = { "application/json" } + ) + default ResponseEntity createBeverage( + @Parameter(name = "Beverage", description = "", required = true) @Valid @RequestBody Beverage beverage + ) { + getRequest().ifPresent(request -> { + for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { + if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { + String exampleString = "{ \"beverageType\" : \"beverageType\" }"; + ApiUtil.setExampleResponse(request, "application/json", exampleString); + break; + } + } + }); + return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); + + } + +} diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApiController.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApiController.java new file mode 100644 index 000000000000..1133f307b361 --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApiController.java @@ -0,0 +1,46 @@ +package org.openapitools.api; + +import org.openapitools.model.Beverage; + + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.CookieValue; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.context.request.NativeWebRequest; + +import jakarta.validation.constraints.*; +import jakarta.validation.Valid; + +import java.util.List; +import java.util.Map; +import java.util.Optional; +import jakarta.annotation.Generated; + +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Controller +@RequestMapping("${openapi.jacksonDefaultImplOneOfSample.base-path:}") +public class BeveragesApiController implements BeveragesApi { + + private final NativeWebRequest request; + + @Autowired + public BeveragesApiController(NativeWebRequest request) { + this.request = request; + } + + @Override + public Optional getRequest() { + return Optional.ofNullable(request); + } + +} diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApi.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApi.java new file mode 100644 index 000000000000..ad9a3505f602 --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApi.java @@ -0,0 +1,83 @@ +/* + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +package org.openapitools.api; + +import org.openapitools.model.Fruit; +import io.swagger.v3.oas.annotations.ExternalDocumentation; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.enums.ParameterIn; +import io.swagger.v3.oas.annotations.media.ExampleObject; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.context.request.NativeWebRequest; +import org.springframework.web.multipart.MultipartFile; + +import jakarta.validation.Valid; +import jakarta.validation.constraints.*; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import jakarta.annotation.Generated; + +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Validated +@Tag(name = "fruits", description = "the fruits API") +public interface FruitsApi { + + default Optional getRequest() { + return Optional.empty(); + } + + String PATH_CREATE_FRUIT = "/fruits"; + /** + * POST /fruits + * + * @param fruit (required) + * @return OK (status code 200) + */ + @Operation( + operationId = "createFruit", + tags = { "default" }, + responses = { + @ApiResponse(responseCode = "200", description = "OK", content = { + @Content(mediaType = "application/json", schema = @Schema(implementation = Fruit.class)) + }) + } + ) + @RequestMapping( + method = RequestMethod.POST, + value = FruitsApi.PATH_CREATE_FRUIT, + produces = { "application/json" }, + consumes = { "application/json" } + ) + default ResponseEntity createFruit( + @Parameter(name = "Fruit", description = "", required = true) @Valid @RequestBody Fruit fruit + ) { + getRequest().ifPresent(request -> { + for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) { + if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { + String exampleString = "{ \"fruitType\" : \"fruitType\" }"; + ApiUtil.setExampleResponse(request, "application/json", exampleString); + break; + } + } + }); + return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); + + } + +} diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApiController.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApiController.java new file mode 100644 index 000000000000..427f3d767719 --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApiController.java @@ -0,0 +1,46 @@ +package org.openapitools.api; + +import org.openapitools.model.Fruit; + + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.CookieValue; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.context.request.NativeWebRequest; + +import jakarta.validation.constraints.*; +import jakarta.validation.Valid; + +import java.util.List; +import java.util.Map; +import java.util.Optional; +import jakarta.annotation.Generated; + +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Controller +@RequestMapping("${openapi.jacksonDefaultImplOneOfSample.base-path:}") +public class FruitsApiController implements FruitsApi { + + private final NativeWebRequest request; + + @Autowired + public FruitsApiController(NativeWebRequest request) { + this.request = request; + } + + @Override + public Optional getRequest() { + return Optional.ofNullable(request); + } + +} diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/configuration/HomeController.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/configuration/HomeController.java new file mode 100644 index 000000000000..9aa29284ab5f --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/configuration/HomeController.java @@ -0,0 +1,20 @@ +package org.openapitools.configuration; + +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.GetMapping; + +/** + * Home redirection to OpenAPI api documentation + */ +@Controller +public class HomeController { + + @RequestMapping("/") + public String index() { + return "redirect:swagger-ui.html"; + } + +} \ No newline at end of file diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/configuration/SpringDocConfiguration.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/configuration/SpringDocConfiguration.java new file mode 100644 index 000000000000..3372a3bae8fe --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/configuration/SpringDocConfiguration.java @@ -0,0 +1,27 @@ +package org.openapitools.configuration; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.info.Contact; +import io.swagger.v3.oas.models.info.License; +import io.swagger.v3.oas.models.Components; +import io.swagger.v3.oas.models.security.SecurityScheme; + +@Configuration +public class SpringDocConfiguration { + + @Bean(name = "org.openapitools.configuration.SpringDocConfiguration.apiInfo") + OpenAPI apiInfo() { + return new OpenAPI() + .info( + new Info() + .title("Jackson defaultImpl oneOf sample") + .description("Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). ") + .version("0.0.1") + ) + ; + } +} \ No newline at end of file diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java new file mode 100644 index 000000000000..d4adb52b5896 --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java @@ -0,0 +1,32 @@ +package org.openapitools.model; + +import java.net.URI; +import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import org.openapitools.model.Cat; +import org.openapitools.model.Dog; +import org.springframework.lang.Nullable; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import org.openapitools.jackson.nullable.JsonNullable; +import java.time.OffsetDateTime; +import jakarta.validation.Valid; +import jakarta.validation.constraints.*; +import io.swagger.v3.oas.annotations.media.Schema; + + +import java.util.*; +import jakarta.annotation.Generated; + + + +@JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION, defaultImpl = Dog.class) +@JsonSubTypes({ + @JsonSubTypes.Type(value = Dog.class), + @JsonSubTypes.Type(value = Cat.class) +}) +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public interface Animal { +} diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java new file mode 100644 index 000000000000..3200c2d59aa3 --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java @@ -0,0 +1,123 @@ +package org.openapitools.model; + +import java.net.URI; +import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import org.springframework.lang.Nullable; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import org.openapitools.jackson.nullable.JsonNullable; +import java.time.OffsetDateTime; +import jakarta.validation.Valid; +import jakarta.validation.constraints.*; +import io.swagger.v3.oas.annotations.media.Schema; + + +import java.util.*; +import jakarta.annotation.Generated; + +/** + * Apple + */ + +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class Apple implements Fruit { + + private String fruitType; + + @JsonInclude(JsonInclude.Include.NON_NULL) + private @Nullable Integer seeds; + + public Apple() { + super(); + } + + /** + * Constructor with only required parameters + */ + public Apple(String fruitType) { + this.fruitType = fruitType; + } + + public Apple fruitType(String fruitType) { + this.fruitType = fruitType; + return this; + } + + /** + * Get fruitType + * @return fruitType + */ + @NotNull + @Schema(name = "fruitType", requiredMode = Schema.RequiredMode.REQUIRED) + @JsonProperty("fruitType") + public String getFruitType() { + return fruitType; + } + + @JsonProperty("fruitType") + public void setFruitType(String fruitType) { + this.fruitType = fruitType; + } + + public Apple seeds(@Nullable Integer seeds) { + this.seeds = seeds; + return this; + } + + /** + * Get seeds + * @return seeds + */ + + @Schema(name = "seeds", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @JsonProperty("seeds") + public @Nullable Integer getSeeds() { + return seeds; + } + + @JsonProperty("seeds") + public void setSeeds(@Nullable Integer seeds) { + this.seeds = seeds; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Apple apple = (Apple) o; + return Objects.equals(this.fruitType, apple.fruitType) && + Objects.equals(this.seeds, apple.seeds); + } + + @Override + public int hashCode() { + return Objects.hash(fruitType, seeds); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Apple {\n"); + sb.append(" fruitType: ").append(toIndentedString(fruitType)).append("\n"); + sb.append(" seeds: ").append(toIndentedString(seeds)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(@Nullable Object o) { + return o == null ? "null" : o.toString().replace("\n", "\n "); + } +} + diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java new file mode 100644 index 000000000000..9f02d8a8bf42 --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java @@ -0,0 +1,123 @@ +package org.openapitools.model; + +import java.net.URI; +import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import org.springframework.lang.Nullable; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import org.openapitools.jackson.nullable.JsonNullable; +import java.time.OffsetDateTime; +import jakarta.validation.Valid; +import jakarta.validation.constraints.*; +import io.swagger.v3.oas.annotations.media.Schema; + + +import java.util.*; +import jakarta.annotation.Generated; + +/** + * Banana + */ + +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class Banana implements Fruit { + + private String fruitType; + + @JsonInclude(JsonInclude.Include.NON_NULL) + private @Nullable Integer length; + + public Banana() { + super(); + } + + /** + * Constructor with only required parameters + */ + public Banana(String fruitType) { + this.fruitType = fruitType; + } + + public Banana fruitType(String fruitType) { + this.fruitType = fruitType; + return this; + } + + /** + * Get fruitType + * @return fruitType + */ + @NotNull + @Schema(name = "fruitType", requiredMode = Schema.RequiredMode.REQUIRED) + @JsonProperty("fruitType") + public String getFruitType() { + return fruitType; + } + + @JsonProperty("fruitType") + public void setFruitType(String fruitType) { + this.fruitType = fruitType; + } + + public Banana length(@Nullable Integer length) { + this.length = length; + return this; + } + + /** + * Get length + * @return length + */ + + @Schema(name = "length", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @JsonProperty("length") + public @Nullable Integer getLength() { + return length; + } + + @JsonProperty("length") + public void setLength(@Nullable Integer length) { + this.length = length; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Banana banana = (Banana) o; + return Objects.equals(this.fruitType, banana.fruitType) && + Objects.equals(this.length, banana.length); + } + + @Override + public int hashCode() { + return Objects.hash(fruitType, length); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Banana {\n"); + sb.append(" fruitType: ").append(toIndentedString(fruitType)).append("\n"); + sb.append(" length: ").append(toIndentedString(length)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(@Nullable Object o) { + return o == null ? "null" : o.toString().replace("\n", "\n "); + } +} + diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java new file mode 100644 index 000000000000..a657f712d2af --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java @@ -0,0 +1,38 @@ +package org.openapitools.model; + +import java.net.URI; +import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import org.openapitools.model.Soda; +import org.openapitools.model.Water; +import org.springframework.lang.Nullable; +import org.openapitools.jackson.nullable.JsonNullable; +import java.time.OffsetDateTime; +import jakarta.validation.Valid; +import jakarta.validation.constraints.*; +import io.swagger.v3.oas.annotations.media.Schema; + + +import java.util.*; +import jakarta.annotation.Generated; + + +@JsonIgnoreProperties( + value = "beverageType", // ignore manually set beverageType, it will be automatically generated by Jackson during serialization + allowSetters = true // allows the beverageType to be set during deserialization +) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "beverageType", visible = true, defaultImpl = Water.class) +@JsonSubTypes({ + @JsonSubTypes.Type(value = Soda.class, name = "SODA"), + @JsonSubTypes.Type(value = Water.class, name = "WATER") +}) + +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public interface Beverage { + public String getBeverageType(); +} diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java new file mode 100644 index 000000000000..58304d1342ea --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java @@ -0,0 +1,84 @@ +package org.openapitools.model; + +import java.net.URI; +import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import org.springframework.lang.Nullable; +import org.openapitools.jackson.nullable.JsonNullable; +import java.time.OffsetDateTime; +import jakarta.validation.Valid; +import jakarta.validation.constraints.*; +import io.swagger.v3.oas.annotations.media.Schema; + + +import java.util.*; +import jakarta.annotation.Generated; + +/** + * Cat + */ + +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class Cat implements Animal { + + @JsonInclude(JsonInclude.Include.NON_NULL) + private @Nullable Boolean declawed; + + public Cat declawed(@Nullable Boolean declawed) { + this.declawed = declawed; + return this; + } + + /** + * Get declawed + * @return declawed + */ + + @Schema(name = "declawed", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @JsonProperty("declawed") + public @Nullable Boolean getDeclawed() { + return declawed; + } + + @JsonProperty("declawed") + public void setDeclawed(@Nullable Boolean declawed) { + this.declawed = declawed; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Cat cat = (Cat) o; + return Objects.equals(this.declawed, cat.declawed); + } + + @Override + public int hashCode() { + return Objects.hash(declawed); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Cat {\n"); + sb.append(" declawed: ").append(toIndentedString(declawed)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(@Nullable Object o) { + return o == null ? "null" : o.toString().replace("\n", "\n "); + } +} + diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java new file mode 100644 index 000000000000..839d1f59dd89 --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java @@ -0,0 +1,84 @@ +package org.openapitools.model; + +import java.net.URI; +import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import org.springframework.lang.Nullable; +import org.openapitools.jackson.nullable.JsonNullable; +import java.time.OffsetDateTime; +import jakarta.validation.Valid; +import jakarta.validation.constraints.*; +import io.swagger.v3.oas.annotations.media.Schema; + + +import java.util.*; +import jakarta.annotation.Generated; + +/** + * Dog + */ + +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class Dog implements Animal { + + @JsonInclude(JsonInclude.Include.NON_NULL) + private @Nullable Boolean bark; + + public Dog bark(@Nullable Boolean bark) { + this.bark = bark; + return this; + } + + /** + * Get bark + * @return bark + */ + + @Schema(name = "bark", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @JsonProperty("bark") + public @Nullable Boolean getBark() { + return bark; + } + + @JsonProperty("bark") + public void setBark(@Nullable Boolean bark) { + this.bark = bark; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Dog dog = (Dog) o; + return Objects.equals(this.bark, dog.bark); + } + + @Override + public int hashCode() { + return Objects.hash(bark); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Dog {\n"); + sb.append(" bark: ").append(toIndentedString(bark)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(@Nullable Object o) { + return o == null ? "null" : o.toString().replace("\n", "\n "); + } +} + diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java new file mode 100644 index 000000000000..1727ba18074c --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java @@ -0,0 +1,38 @@ +package org.openapitools.model; + +import java.net.URI; +import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import org.openapitools.model.Apple; +import org.openapitools.model.Banana; +import org.springframework.lang.Nullable; +import org.openapitools.jackson.nullable.JsonNullable; +import java.time.OffsetDateTime; +import jakarta.validation.Valid; +import jakarta.validation.constraints.*; +import io.swagger.v3.oas.annotations.media.Schema; + + +import java.util.*; +import jakarta.annotation.Generated; + + +@JsonIgnoreProperties( + value = "fruitType", // ignore manually set fruitType, it will be automatically generated by Jackson during serialization + allowSetters = true // allows the fruitType to be set during deserialization +) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "fruitType", visible = true, defaultImpl = Apple.class) +@JsonSubTypes({ + @JsonSubTypes.Type(value = Apple.class, name = "APPLE"), + @JsonSubTypes.Type(value = Banana.class, name = "BANANA") +}) + +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public interface Fruit { + public String getFruitType(); +} diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java new file mode 100644 index 000000000000..e76a081d1488 --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java @@ -0,0 +1,123 @@ +package org.openapitools.model; + +import java.net.URI; +import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import org.springframework.lang.Nullable; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import org.openapitools.jackson.nullable.JsonNullable; +import java.time.OffsetDateTime; +import jakarta.validation.Valid; +import jakarta.validation.constraints.*; +import io.swagger.v3.oas.annotations.media.Schema; + + +import java.util.*; +import jakarta.annotation.Generated; + +/** + * Soda + */ + +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class Soda implements Beverage { + + private String beverageType; + + @JsonInclude(JsonInclude.Include.NON_NULL) + private @Nullable Integer sugarGrams; + + public Soda() { + super(); + } + + /** + * Constructor with only required parameters + */ + public Soda(String beverageType) { + this.beverageType = beverageType; + } + + public Soda beverageType(String beverageType) { + this.beverageType = beverageType; + return this; + } + + /** + * Get beverageType + * @return beverageType + */ + @NotNull + @Schema(name = "beverageType", requiredMode = Schema.RequiredMode.REQUIRED) + @JsonProperty("beverageType") + public String getBeverageType() { + return beverageType; + } + + @JsonProperty("beverageType") + public void setBeverageType(String beverageType) { + this.beverageType = beverageType; + } + + public Soda sugarGrams(@Nullable Integer sugarGrams) { + this.sugarGrams = sugarGrams; + return this; + } + + /** + * Get sugarGrams + * @return sugarGrams + */ + + @Schema(name = "sugarGrams", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @JsonProperty("sugarGrams") + public @Nullable Integer getSugarGrams() { + return sugarGrams; + } + + @JsonProperty("sugarGrams") + public void setSugarGrams(@Nullable Integer sugarGrams) { + this.sugarGrams = sugarGrams; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Soda soda = (Soda) o; + return Objects.equals(this.beverageType, soda.beverageType) && + Objects.equals(this.sugarGrams, soda.sugarGrams); + } + + @Override + public int hashCode() { + return Objects.hash(beverageType, sugarGrams); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Soda {\n"); + sb.append(" beverageType: ").append(toIndentedString(beverageType)).append("\n"); + sb.append(" sugarGrams: ").append(toIndentedString(sugarGrams)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(@Nullable Object o) { + return o == null ? "null" : o.toString().replace("\n", "\n "); + } +} + diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java new file mode 100644 index 000000000000..86b262803f20 --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java @@ -0,0 +1,123 @@ +package org.openapitools.model; + +import java.net.URI; +import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import org.springframework.lang.Nullable; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import org.openapitools.jackson.nullable.JsonNullable; +import java.time.OffsetDateTime; +import jakarta.validation.Valid; +import jakarta.validation.constraints.*; +import io.swagger.v3.oas.annotations.media.Schema; + + +import java.util.*; +import jakarta.annotation.Generated; + +/** + * Water + */ + +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class Water implements Beverage { + + private String beverageType; + + @JsonInclude(JsonInclude.Include.NON_NULL) + private @Nullable Boolean sparkling; + + public Water() { + super(); + } + + /** + * Constructor with only required parameters + */ + public Water(String beverageType) { + this.beverageType = beverageType; + } + + public Water beverageType(String beverageType) { + this.beverageType = beverageType; + return this; + } + + /** + * Get beverageType + * @return beverageType + */ + @NotNull + @Schema(name = "beverageType", requiredMode = Schema.RequiredMode.REQUIRED) + @JsonProperty("beverageType") + public String getBeverageType() { + return beverageType; + } + + @JsonProperty("beverageType") + public void setBeverageType(String beverageType) { + this.beverageType = beverageType; + } + + public Water sparkling(@Nullable Boolean sparkling) { + this.sparkling = sparkling; + return this; + } + + /** + * Get sparkling + * @return sparkling + */ + + @Schema(name = "sparkling", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @JsonProperty("sparkling") + public @Nullable Boolean getSparkling() { + return sparkling; + } + + @JsonProperty("sparkling") + public void setSparkling(@Nullable Boolean sparkling) { + this.sparkling = sparkling; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Water water = (Water) o; + return Objects.equals(this.beverageType, water.beverageType) && + Objects.equals(this.sparkling, water.sparkling); + } + + @Override + public int hashCode() { + return Objects.hash(beverageType, sparkling); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Water {\n"); + sb.append(" beverageType: ").append(toIndentedString(beverageType)).append("\n"); + sb.append(" sparkling: ").append(toIndentedString(sparkling)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(@Nullable Object o) { + return o == null ? "null" : o.toString().replace("\n", "\n "); + } +} + diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/resources/application.properties b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/resources/application.properties new file mode 100644 index 000000000000..7e90813e59b2 --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/resources/application.properties @@ -0,0 +1,3 @@ +server.port=8080 +spring.jackson.date-format=org.openapitools.RFC3339DateFormat +spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/resources/openapi.yaml b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/resources/openapi.yaml new file mode 100644 index 000000000000..f6a72dac7da3 --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/resources/openapi.yaml @@ -0,0 +1,171 @@ +openapi: 3.0.1 +info: + description: | + Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + title: Jackson defaultImpl oneOf sample + version: 0.0.1 +servers: +- url: http://localhost:8080 +paths: + /animals: + post: + operationId: createAnimal + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Animal" + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Animal" + description: OK + tags: + - default + x-content-type: application/json + x-accepts: + - application/json + x-tags: + - tag: default + /fruits: + post: + operationId: createFruit + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Fruit" + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Fruit" + description: OK + tags: + - default + x-content-type: application/json + x-accepts: + - application/json + x-tags: + - tag: default + /beverages: + post: + operationId: createBeverage + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Beverage" + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Beverage" + description: OK + tags: + - default + x-content-type: application/json + x-accepts: + - application/json + x-tags: + - tag: default +components: + schemas: + Animal: + oneOf: + - $ref: "#/components/schemas/Dog" + - $ref: "#/components/schemas/Cat" + x-jackson-default-impl: Dog + x-one-of-name: Animal + Dog: + example: + bark: true + properties: + bark: + type: boolean + type: object + Cat: + properties: + declawed: + type: boolean + type: object + Fruit: + discriminator: + mapping: + APPLE: "#/components/schemas/Apple" + BANANA: "#/components/schemas/Banana" + propertyName: fruitType + example: + fruitType: fruitType + oneOf: + - $ref: "#/components/schemas/Apple" + - $ref: "#/components/schemas/Banana" + properties: + fruitType: + type: string + required: + - fruitType + type: object + x-one-of-name: Fruit + Apple: + properties: + fruitType: + type: string + seeds: + type: integer + required: + - fruitType + type: object + Banana: + properties: + fruitType: + type: string + length: + type: integer + required: + - fruitType + type: object + Beverage: + discriminator: + mapping: + WATER: "#/components/schemas/Water" + SODA: "#/components/schemas/Soda" + propertyName: beverageType + example: + beverageType: beverageType + oneOf: + - $ref: "#/components/schemas/Water" + - $ref: "#/components/schemas/Soda" + properties: + beverageType: + type: string + required: + - beverageType + type: object + x-jackson-default-impl: Water + x-one-of-name: Beverage + Water: + properties: + beverageType: + type: string + sparkling: + type: boolean + required: + - beverageType + type: object + Soda: + properties: + beverageType: + type: string + sugarGrams: + type: integer + required: + - beverageType + type: object diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/test/java/org/openapitools/OpenApiGeneratorApplicationTests.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/test/java/org/openapitools/OpenApiGeneratorApplicationTests.java new file mode 100644 index 000000000000..3681f67e7705 --- /dev/null +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/test/java/org/openapitools/OpenApiGeneratorApplicationTests.java @@ -0,0 +1,13 @@ +package org.openapitools; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class OpenApiGeneratorApplicationTests { + + @Test + void contextLoads() { + } + +} \ No newline at end of file diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/.openapi-generator-ignore b/samples/server/petstore/java-camel-oneof-jackson-default-impl/.openapi-generator-ignore new file mode 100644 index 000000000000..7484ee590a38 --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/.openapi-generator/FILES b/samples/server/petstore/java-camel-oneof-jackson-default-impl/.openapi-generator/FILES new file mode 100644 index 000000000000..1fa23ce9433e --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/.openapi-generator/FILES @@ -0,0 +1,25 @@ +README.md +pom.xml +src/main/java/org/openapitools/OpenApiGeneratorApplication.java +src/main/java/org/openapitools/RFC3339DateFormat.java +src/main/java/org/openapitools/RestConfiguration.java +src/main/java/org/openapitools/ValidationErrorProcessor.java +src/main/java/org/openapitools/api/AnimalsApi.java +src/main/java/org/openapitools/api/AnimalsApiRoutesImpl.java +src/main/java/org/openapitools/api/AnimalsApiValidator.java +src/main/java/org/openapitools/api/BeveragesApi.java +src/main/java/org/openapitools/api/BeveragesApiRoutesImpl.java +src/main/java/org/openapitools/api/BeveragesApiValidator.java +src/main/java/org/openapitools/api/FruitsApi.java +src/main/java/org/openapitools/api/FruitsApiRoutesImpl.java +src/main/java/org/openapitools/api/FruitsApiValidator.java +src/main/java/org/openapitools/model/Animal.java +src/main/java/org/openapitools/model/Apple.java +src/main/java/org/openapitools/model/Banana.java +src/main/java/org/openapitools/model/Beverage.java +src/main/java/org/openapitools/model/Cat.java +src/main/java/org/openapitools/model/Dog.java +src/main/java/org/openapitools/model/Fruit.java +src/main/java/org/openapitools/model/Soda.java +src/main/java/org/openapitools/model/Water.java +src/main/resources/application.properties diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/.openapi-generator/VERSION b/samples/server/petstore/java-camel-oneof-jackson-default-impl/.openapi-generator/VERSION new file mode 100644 index 000000000000..186c33c96ed8 --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/.openapi-generator/VERSION @@ -0,0 +1 @@ +7.24.0-SNAPSHOT diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/README.md b/samples/server/petstore/java-camel-oneof-jackson-default-impl/README.md new file mode 100644 index 000000000000..e20452e84920 --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/README.md @@ -0,0 +1,7 @@ +# OpenAPI generated server + +Apache Camel Server + +```bash +mvn clean test +``` \ No newline at end of file diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/pom.xml b/samples/server/petstore/java-camel-oneof-jackson-default-impl/pom.xml new file mode 100644 index 000000000000..032343175dca --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/pom.xml @@ -0,0 +1,180 @@ + + + + 4.0.0 + + org.openapitools + java-camel-oneof-jackson-default-impl + jar + java-camel-oneof-jackson-default-impl + 0.0.1 + + + scm:git:git@github.com:openapitools/openapi-generator.git + scm:git:git@github.com:openapitools/openapi-generator.git + https://github.com/openapitools/openapi-generator + + + + + Unlicense + http://unlicense.org + repo + + + + + + OpenAPI-Generator Contributors + team@openapitools.org + OpenAPITools.org + http://openapitools.org + + + + + UTF-8 + 2.7.8 + 3.20.1 + + + + + + org.apache.camel + camel-bom + ${org.apache.camel.version} + pom + import + + + org.apache.camel.springboot + camel-spring-boot-bom + ${org.apache.camel.version} + pom + import + + + org.springframework.boot + spring-boot-dependencies + ${org.springframework.boot.version} + pom + import + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.10.1 + + 11 + + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + maven-surefire-plugin + 2.22.2 + + + + + + + org.apache.camel.springboot + camel-spring-boot-starter + + + + org.apache.camel.springboot + camel-servlet-starter + + + + org.springframework.boot + spring-boot-starter-web + + + + org.openapitools + jackson-databind-nullable + 0.2.10 + + + io.swagger.core.v3 + swagger-annotations + 2.2.8 + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + 2.15.2 + + + com.fasterxml.jackson.datatype + jackson-datatype-jdk8 + 2.15.2 + + + org.apache.camel + camel-jackson + + + org.apache.camel + camel-jacksonxml + + + + org.apache.camel + camel-jaxb + + + org.apache.camel + camel-direct + + + + org.apache.camel + camel-bean-validator + + + + + com.mashape.unirest + unirest-java + 1.4.9 + test + + + + org.apache.camel + camel-test-spring-junit5 + test + + + + org.springframework.boot + spring-boot-starter-test + test + + + + diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/OpenApiGeneratorApplication.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/OpenApiGeneratorApplication.java new file mode 100644 index 000000000000..97252a8a9402 --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/OpenApiGeneratorApplication.java @@ -0,0 +1,30 @@ +package org.openapitools; + +import com.fasterxml.jackson.databind.Module; +import org.openapitools.jackson.nullable.JsonNullableModule; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.FilterType; +import org.springframework.context.annotation.FullyQualifiedAnnotationBeanNameGenerator; + +@SpringBootApplication( + nameGenerator = FullyQualifiedAnnotationBeanNameGenerator.class +) +@ComponentScan( + basePackages = {"org.openapitools", "org.openapitools.api" , "org.openapitools.configuration"}, + nameGenerator = FullyQualifiedAnnotationBeanNameGenerator.class +) +public class OpenApiGeneratorApplication { + + public static void main(String[] args) { + SpringApplication.run(OpenApiGeneratorApplication.class, args); + } + + @Bean(name = "org.openapitools.OpenApiGeneratorApplication.jsonNullableModule") + public Module jsonNullableModule() { + return new JsonNullableModule(); + } + +} \ No newline at end of file diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/RFC3339DateFormat.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/RFC3339DateFormat.java new file mode 100644 index 000000000000..bcd3936d8b34 --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/RFC3339DateFormat.java @@ -0,0 +1,38 @@ +package org.openapitools; + +import com.fasterxml.jackson.databind.util.StdDateFormat; + +import java.text.DateFormat; +import java.text.FieldPosition; +import java.text.ParsePosition; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.TimeZone; + +public class RFC3339DateFormat extends DateFormat { + private static final long serialVersionUID = 1L; + private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC"); + + private final StdDateFormat fmt = new StdDateFormat() + .withTimeZone(TIMEZONE_Z) + .withColonInTimeZone(true); + + public RFC3339DateFormat() { + this.calendar = new GregorianCalendar(); + } + + @Override + public Date parse(String source, ParsePosition pos) { + return fmt.parse(source, pos); + } + + @Override + public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) { + return fmt.format(date, toAppendTo, fieldPosition); + } + + @Override + public Object clone() { + return this; + } +} \ No newline at end of file diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/RestConfiguration.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/RestConfiguration.java new file mode 100644 index 000000000000..20e437bf84f8 --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/RestConfiguration.java @@ -0,0 +1,26 @@ +/* +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +* https://openapi-generator.tech +* Do not edit the class manually. +*/ +package org.openapitools.api; + +import org.apache.camel.builder.RouteBuilder; +import org.springframework.stereotype.Component; +import org.apache.camel.model.rest.RestBindingMode; + +@Component +public class RestConfiguration extends RouteBuilder { + @Override + public void configure() throws Exception { + restConfiguration() + .scheme("http") + .host("localhost") + .component("servlet") + .bindingMode(RestBindingMode.auto) + .dataFormatProperty("json.out.disableFeatures", "WRITE_DATES_AS_TIMESTAMPS") + .clientRequestValidation(true) + .apiProperty("api.title", "Jackson defaultImpl oneOf sample") + .apiProperty("api.version", "0.0.1"); + } +} diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/ValidationErrorProcessor.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/ValidationErrorProcessor.java new file mode 100644 index 000000000000..dcc031356ca6 --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/ValidationErrorProcessor.java @@ -0,0 +1,30 @@ +/* +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +* https://openapi-generator.tech +* Do not edit the class manually. +*/ +package org.openapitools; + +import org.apache.camel.Exchange; +import org.apache.camel.Processor; +import org.apache.camel.component.bean.validator.BeanValidationException; +import org.springframework.stereotype.Component; +import com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException; + +@Component("validationErrorProcessor") +public class ValidationErrorProcessor implements Processor { + + @Override + public void process(Exchange exchange) throws Exception { + Exception fault = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class); + int httpStatusCode = 500; + if (fault instanceof BeanValidationException) { + httpStatusCode = 400; + } + if (fault instanceof UnrecognizedPropertyException) { + httpStatusCode = 400; + } + exchange.getIn().setHeader(Exchange.HTTP_RESPONSE_CODE, httpStatusCode); + exchange.getIn().setBody(fault.getMessage()); + } +} \ No newline at end of file diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApi.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApi.java new file mode 100644 index 000000000000..df13701300c5 --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApi.java @@ -0,0 +1,46 @@ +/* +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +* https://openapi-generator.tech +* Do not edit the class manually. +*/ +package org.openapitools.api; + +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.model.rest.RestParamType; +import org.springframework.stereotype.Component; +import org.openapitools.model.*; +import org.apache.camel.model.rest.RestBindingMode; +import org.apache.camel.LoggingLevel; + +@Component +public class AnimalsApi extends RouteBuilder { + + @Override + public void configure() throws Exception { + onException(Exception.class) + .log(LoggingLevel.ERROR, "${exception.message}: ${exception.stacktrace}") + .handled(true) + .process("validationErrorProcessor"); + + + /** + POST /animals + **/ + rest() + .post("/animals") + .description("") + .id("createAnimalApi") + .produces("application/json") + .outType(Animal.class) + .consumes("application/json") + .type(Animal.class) + + .param() + .name("animal") + .type(RestParamType.body) + .required(true) + .endParam() + .to("direct:validate-createAnimal"); + + } +} diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApiRoutesImpl.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApiRoutesImpl.java new file mode 100644 index 000000000000..b9821add903f --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApiRoutesImpl.java @@ -0,0 +1,32 @@ +/* +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +* https://openapi-generator.tech +* Do not edit the class manually. +*/ +package org.openapitools.api; + +import org.apache.camel.builder.RouteBuilder; +import org.springframework.stereotype.Component; +import org.apache.camel.LoggingLevel; +import org.openapitools.model.*; +import org.apache.camel.model.dataformat.JsonLibrary; + +@Component +public class AnimalsApiRoutesImpl extends RouteBuilder { + @Override + public void configure() throws Exception { + + /** + POST /animals + **/ + from("direct:createAnimal") + .id("createAnimal") + .choice() + .when(simple("${body} != null")) + .log(LoggingLevel.INFO, "BODY TYPE: ${body.getClass().getName()}") + .end() + .log(LoggingLevel.INFO, "HEADERS: ${headers}") + .setBody(constant("{ \"bark\" : true }")) + .unmarshal().json(JsonLibrary.Jackson, Animal.class); + } +} diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApiValidator.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApiValidator.java new file mode 100644 index 000000000000..02796c63ab5e --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApiValidator.java @@ -0,0 +1,28 @@ +/* +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +* https://openapi-generator.tech +* Do not edit the class manually. +*/ +package org.openapitools.api; + +import org.apache.camel.builder.RouteBuilder; +import org.springframework.stereotype.Component; +import org.apache.camel.LoggingLevel; + +@Component +public class AnimalsApiValidator extends RouteBuilder { + @Override + public void configure() throws Exception { + onException(Exception.class) + .log(LoggingLevel.ERROR, "${exception.message}: ${exception.stacktrace}") + .handled(true) + .process("validationErrorProcessor"); + + from("direct:validate-createAnimal") + .id("validate-createAnimal") + .to("bean-validator://validate-request") + .to("direct:createAnimal") + .to("bean-validator://validate-response"); + + } +} diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApi.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApi.java new file mode 100644 index 000000000000..9244ffd6a0dc --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApi.java @@ -0,0 +1,46 @@ +/* +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +* https://openapi-generator.tech +* Do not edit the class manually. +*/ +package org.openapitools.api; + +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.model.rest.RestParamType; +import org.springframework.stereotype.Component; +import org.openapitools.model.*; +import org.apache.camel.model.rest.RestBindingMode; +import org.apache.camel.LoggingLevel; + +@Component +public class BeveragesApi extends RouteBuilder { + + @Override + public void configure() throws Exception { + onException(Exception.class) + .log(LoggingLevel.ERROR, "${exception.message}: ${exception.stacktrace}") + .handled(true) + .process("validationErrorProcessor"); + + + /** + POST /beverages + **/ + rest() + .post("/beverages") + .description("") + .id("createBeverageApi") + .produces("application/json") + .outType(Beverage.class) + .consumes("application/json") + .type(Beverage.class) + + .param() + .name("beverage") + .type(RestParamType.body) + .required(true) + .endParam() + .to("direct:validate-createBeverage"); + + } +} diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApiRoutesImpl.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApiRoutesImpl.java new file mode 100644 index 000000000000..79c7ff744b03 --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApiRoutesImpl.java @@ -0,0 +1,32 @@ +/* +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +* https://openapi-generator.tech +* Do not edit the class manually. +*/ +package org.openapitools.api; + +import org.apache.camel.builder.RouteBuilder; +import org.springframework.stereotype.Component; +import org.apache.camel.LoggingLevel; +import org.openapitools.model.*; +import org.apache.camel.model.dataformat.JsonLibrary; + +@Component +public class BeveragesApiRoutesImpl extends RouteBuilder { + @Override + public void configure() throws Exception { + + /** + POST /beverages + **/ + from("direct:createBeverage") + .id("createBeverage") + .choice() + .when(simple("${body} != null")) + .log(LoggingLevel.INFO, "BODY TYPE: ${body.getClass().getName()}") + .end() + .log(LoggingLevel.INFO, "HEADERS: ${headers}") + .setBody(constant("{ \"beverageType\" : \"beverageType\" }")) + .unmarshal().json(JsonLibrary.Jackson, Beverage.class); + } +} diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApiValidator.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApiValidator.java new file mode 100644 index 000000000000..2a64f62c219d --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApiValidator.java @@ -0,0 +1,28 @@ +/* +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +* https://openapi-generator.tech +* Do not edit the class manually. +*/ +package org.openapitools.api; + +import org.apache.camel.builder.RouteBuilder; +import org.springframework.stereotype.Component; +import org.apache.camel.LoggingLevel; + +@Component +public class BeveragesApiValidator extends RouteBuilder { + @Override + public void configure() throws Exception { + onException(Exception.class) + .log(LoggingLevel.ERROR, "${exception.message}: ${exception.stacktrace}") + .handled(true) + .process("validationErrorProcessor"); + + from("direct:validate-createBeverage") + .id("validate-createBeverage") + .to("bean-validator://validate-request") + .to("direct:createBeverage") + .to("bean-validator://validate-response"); + + } +} diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApi.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApi.java new file mode 100644 index 000000000000..18714ea03de9 --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApi.java @@ -0,0 +1,46 @@ +/* +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +* https://openapi-generator.tech +* Do not edit the class manually. +*/ +package org.openapitools.api; + +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.model.rest.RestParamType; +import org.springframework.stereotype.Component; +import org.openapitools.model.*; +import org.apache.camel.model.rest.RestBindingMode; +import org.apache.camel.LoggingLevel; + +@Component +public class FruitsApi extends RouteBuilder { + + @Override + public void configure() throws Exception { + onException(Exception.class) + .log(LoggingLevel.ERROR, "${exception.message}: ${exception.stacktrace}") + .handled(true) + .process("validationErrorProcessor"); + + + /** + POST /fruits + **/ + rest() + .post("/fruits") + .description("") + .id("createFruitApi") + .produces("application/json") + .outType(Fruit.class) + .consumes("application/json") + .type(Fruit.class) + + .param() + .name("fruit") + .type(RestParamType.body) + .required(true) + .endParam() + .to("direct:validate-createFruit"); + + } +} diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApiRoutesImpl.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApiRoutesImpl.java new file mode 100644 index 000000000000..1a83e420128f --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApiRoutesImpl.java @@ -0,0 +1,32 @@ +/* +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +* https://openapi-generator.tech +* Do not edit the class manually. +*/ +package org.openapitools.api; + +import org.apache.camel.builder.RouteBuilder; +import org.springframework.stereotype.Component; +import org.apache.camel.LoggingLevel; +import org.openapitools.model.*; +import org.apache.camel.model.dataformat.JsonLibrary; + +@Component +public class FruitsApiRoutesImpl extends RouteBuilder { + @Override + public void configure() throws Exception { + + /** + POST /fruits + **/ + from("direct:createFruit") + .id("createFruit") + .choice() + .when(simple("${body} != null")) + .log(LoggingLevel.INFO, "BODY TYPE: ${body.getClass().getName()}") + .end() + .log(LoggingLevel.INFO, "HEADERS: ${headers}") + .setBody(constant("{ \"fruitType\" : \"fruitType\" }")) + .unmarshal().json(JsonLibrary.Jackson, Fruit.class); + } +} diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApiValidator.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApiValidator.java new file mode 100644 index 000000000000..309dddb933fb --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApiValidator.java @@ -0,0 +1,28 @@ +/* +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +* https://openapi-generator.tech +* Do not edit the class manually. +*/ +package org.openapitools.api; + +import org.apache.camel.builder.RouteBuilder; +import org.springframework.stereotype.Component; +import org.apache.camel.LoggingLevel; + +@Component +public class FruitsApiValidator extends RouteBuilder { + @Override + public void configure() throws Exception { + onException(Exception.class) + .log(LoggingLevel.ERROR, "${exception.message}: ${exception.stacktrace}") + .handled(true) + .process("validationErrorProcessor"); + + from("direct:validate-createFruit") + .id("validate-createFruit") + .to("bean-validator://validate-request") + .to("direct:createFruit") + .to("bean-validator://validate-response"); + + } +} diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java new file mode 100644 index 000000000000..334019f506b9 --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java @@ -0,0 +1,39 @@ +package org.openapitools.model; + +import java.net.URI; +import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import org.openapitools.model.Cat; +import org.openapitools.model.Dog; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import org.openapitools.jackson.nullable.JsonNullable; +import java.time.OffsetDateTime; +import javax.validation.Valid; +import javax.validation.constraints.*; +import org.hibernate.validator.constraints.*; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; +import io.swagger.v3.oas.annotations.media.Schema; + +import javax.xml.bind.annotation.*; + +import java.util.*; +import javax.annotation.Generated; + + +@JacksonXmlRootElement(localName = "Animal") +@XmlRootElement(name = "Animal") +@XmlAccessorType(XmlAccessType.FIELD) + +@JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION, defaultImpl = Dog.class) +@JsonSubTypes({ + @JsonSubTypes.Type(value = Dog.class), + @JsonSubTypes.Type(value = Cat.class) +}) +@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public interface Animal { +} diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java new file mode 100644 index 000000000000..7ea829d3b2c5 --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java @@ -0,0 +1,129 @@ +package org.openapitools.model; + +import java.net.URI; +import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import org.openapitools.jackson.nullable.JsonNullable; +import java.time.OffsetDateTime; +import javax.validation.Valid; +import javax.validation.constraints.*; +import org.hibernate.validator.constraints.*; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; +import io.swagger.v3.oas.annotations.media.Schema; + +import javax.xml.bind.annotation.*; + +import java.util.*; +import javax.annotation.Generated; + +/** + * Apple + */ + +@JacksonXmlRootElement(localName = "Apple") +@XmlRootElement(name = "Apple") +@XmlAccessorType(XmlAccessType.FIELD) +@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class Apple implements Fruit { + + private String fruitType; + + private Integer seeds; + + public Apple() { + super(); + } + + /** + * Constructor with only required parameters + */ + public Apple(String fruitType) { + this.fruitType = fruitType; + } + + public Apple fruitType(String fruitType) { + this.fruitType = fruitType; + return this; + } + + /** + * Get fruitType + * @return fruitType + */ + @NotNull + @Schema(name = "fruitType", requiredMode = Schema.RequiredMode.REQUIRED) + @JsonProperty("fruitType") + @JacksonXmlProperty(localName = "fruitType") + public String getFruitType() { + return fruitType; + } + + public void setFruitType(String fruitType) { + this.fruitType = fruitType; + } + + public Apple seeds(Integer seeds) { + this.seeds = seeds; + return this; + } + + /** + * Get seeds + * @return seeds + */ + + @Schema(name = "seeds", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @JsonProperty("seeds") + @JacksonXmlProperty(localName = "seeds") + public Integer getSeeds() { + return seeds; + } + + public void setSeeds(Integer seeds) { + this.seeds = seeds; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Apple apple = (Apple) o; + return Objects.equals(this.fruitType, apple.fruitType) && + Objects.equals(this.seeds, apple.seeds); + } + + @Override + public int hashCode() { + return Objects.hash(fruitType, seeds); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Apple {\n"); + sb.append(" fruitType: ").append(toIndentedString(fruitType)).append("\n"); + sb.append(" seeds: ").append(toIndentedString(seeds)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + return o == null ? "null" : o.toString().replace("\n", "\n "); + } +} + diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java new file mode 100644 index 000000000000..1d3d2bb6005a --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java @@ -0,0 +1,129 @@ +package org.openapitools.model; + +import java.net.URI; +import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import org.openapitools.jackson.nullable.JsonNullable; +import java.time.OffsetDateTime; +import javax.validation.Valid; +import javax.validation.constraints.*; +import org.hibernate.validator.constraints.*; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; +import io.swagger.v3.oas.annotations.media.Schema; + +import javax.xml.bind.annotation.*; + +import java.util.*; +import javax.annotation.Generated; + +/** + * Banana + */ + +@JacksonXmlRootElement(localName = "Banana") +@XmlRootElement(name = "Banana") +@XmlAccessorType(XmlAccessType.FIELD) +@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class Banana implements Fruit { + + private String fruitType; + + private Integer length; + + public Banana() { + super(); + } + + /** + * Constructor with only required parameters + */ + public Banana(String fruitType) { + this.fruitType = fruitType; + } + + public Banana fruitType(String fruitType) { + this.fruitType = fruitType; + return this; + } + + /** + * Get fruitType + * @return fruitType + */ + @NotNull + @Schema(name = "fruitType", requiredMode = Schema.RequiredMode.REQUIRED) + @JsonProperty("fruitType") + @JacksonXmlProperty(localName = "fruitType") + public String getFruitType() { + return fruitType; + } + + public void setFruitType(String fruitType) { + this.fruitType = fruitType; + } + + public Banana length(Integer length) { + this.length = length; + return this; + } + + /** + * Get length + * @return length + */ + + @Schema(name = "length", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @JsonProperty("length") + @JacksonXmlProperty(localName = "length") + public Integer getLength() { + return length; + } + + public void setLength(Integer length) { + this.length = length; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Banana banana = (Banana) o; + return Objects.equals(this.fruitType, banana.fruitType) && + Objects.equals(this.length, banana.length); + } + + @Override + public int hashCode() { + return Objects.hash(fruitType, length); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Banana {\n"); + sb.append(" fruitType: ").append(toIndentedString(fruitType)).append("\n"); + sb.append(" length: ").append(toIndentedString(length)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + return o == null ? "null" : o.toString().replace("\n", "\n "); + } +} + diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java new file mode 100644 index 000000000000..c60a7b70ca17 --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java @@ -0,0 +1,45 @@ +package org.openapitools.model; + +import java.net.URI; +import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import org.openapitools.model.Soda; +import org.openapitools.model.Water; +import org.openapitools.jackson.nullable.JsonNullable; +import java.time.OffsetDateTime; +import javax.validation.Valid; +import javax.validation.constraints.*; +import org.hibernate.validator.constraints.*; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; +import io.swagger.v3.oas.annotations.media.Schema; + +import javax.xml.bind.annotation.*; + +import java.util.*; +import javax.annotation.Generated; + + +@JacksonXmlRootElement(localName = "Beverage") +@XmlRootElement(name = "Beverage") +@XmlAccessorType(XmlAccessType.FIELD) +@JsonIgnoreProperties( + value = "beverageType", // ignore manually set beverageType, it will be automatically generated by Jackson during serialization + allowSetters = true // allows the beverageType to be set during deserialization +) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "beverageType", visible = true, defaultImpl = Water.class) +@JsonSubTypes({ + @JsonSubTypes.Type(value = Soda.class, name = "SODA"), + @JsonSubTypes.Type(value = Water.class, name = "WATER") +}) + +@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public interface Beverage { + public String getBeverageType(); +} diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java new file mode 100644 index 000000000000..4a052c4d930c --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java @@ -0,0 +1,90 @@ +package org.openapitools.model; + +import java.net.URI; +import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import org.openapitools.jackson.nullable.JsonNullable; +import java.time.OffsetDateTime; +import javax.validation.Valid; +import javax.validation.constraints.*; +import org.hibernate.validator.constraints.*; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; +import io.swagger.v3.oas.annotations.media.Schema; + +import javax.xml.bind.annotation.*; + +import java.util.*; +import javax.annotation.Generated; + +/** + * Cat + */ + +@JacksonXmlRootElement(localName = "Cat") +@XmlRootElement(name = "Cat") +@XmlAccessorType(XmlAccessType.FIELD) +@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class Cat implements Animal { + + private Boolean declawed; + + public Cat declawed(Boolean declawed) { + this.declawed = declawed; + return this; + } + + /** + * Get declawed + * @return declawed + */ + + @Schema(name = "declawed", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @JsonProperty("declawed") + @JacksonXmlProperty(localName = "declawed") + public Boolean getDeclawed() { + return declawed; + } + + public void setDeclawed(Boolean declawed) { + this.declawed = declawed; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Cat cat = (Cat) o; + return Objects.equals(this.declawed, cat.declawed); + } + + @Override + public int hashCode() { + return Objects.hash(declawed); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Cat {\n"); + sb.append(" declawed: ").append(toIndentedString(declawed)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + return o == null ? "null" : o.toString().replace("\n", "\n "); + } +} + diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java new file mode 100644 index 000000000000..a327080c2cad --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java @@ -0,0 +1,90 @@ +package org.openapitools.model; + +import java.net.URI; +import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import org.openapitools.jackson.nullable.JsonNullable; +import java.time.OffsetDateTime; +import javax.validation.Valid; +import javax.validation.constraints.*; +import org.hibernate.validator.constraints.*; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; +import io.swagger.v3.oas.annotations.media.Schema; + +import javax.xml.bind.annotation.*; + +import java.util.*; +import javax.annotation.Generated; + +/** + * Dog + */ + +@JacksonXmlRootElement(localName = "Dog") +@XmlRootElement(name = "Dog") +@XmlAccessorType(XmlAccessType.FIELD) +@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class Dog implements Animal { + + private Boolean bark; + + public Dog bark(Boolean bark) { + this.bark = bark; + return this; + } + + /** + * Get bark + * @return bark + */ + + @Schema(name = "bark", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @JsonProperty("bark") + @JacksonXmlProperty(localName = "bark") + public Boolean getBark() { + return bark; + } + + public void setBark(Boolean bark) { + this.bark = bark; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Dog dog = (Dog) o; + return Objects.equals(this.bark, dog.bark); + } + + @Override + public int hashCode() { + return Objects.hash(bark); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Dog {\n"); + sb.append(" bark: ").append(toIndentedString(bark)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + return o == null ? "null" : o.toString().replace("\n", "\n "); + } +} + diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java new file mode 100644 index 000000000000..39433645e781 --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java @@ -0,0 +1,45 @@ +package org.openapitools.model; + +import java.net.URI; +import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import org.openapitools.model.Apple; +import org.openapitools.model.Banana; +import org.openapitools.jackson.nullable.JsonNullable; +import java.time.OffsetDateTime; +import javax.validation.Valid; +import javax.validation.constraints.*; +import org.hibernate.validator.constraints.*; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; +import io.swagger.v3.oas.annotations.media.Schema; + +import javax.xml.bind.annotation.*; + +import java.util.*; +import javax.annotation.Generated; + + +@JacksonXmlRootElement(localName = "Fruit") +@XmlRootElement(name = "Fruit") +@XmlAccessorType(XmlAccessType.FIELD) +@JsonIgnoreProperties( + value = "fruitType", // ignore manually set fruitType, it will be automatically generated by Jackson during serialization + allowSetters = true // allows the fruitType to be set during deserialization +) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "fruitType", visible = true, defaultImpl = Apple.class) +@JsonSubTypes({ + @JsonSubTypes.Type(value = Apple.class, name = "APPLE"), + @JsonSubTypes.Type(value = Banana.class, name = "BANANA") +}) + +@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public interface Fruit { + public String getFruitType(); +} diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java new file mode 100644 index 000000000000..889437a8636f --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java @@ -0,0 +1,129 @@ +package org.openapitools.model; + +import java.net.URI; +import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import org.openapitools.jackson.nullable.JsonNullable; +import java.time.OffsetDateTime; +import javax.validation.Valid; +import javax.validation.constraints.*; +import org.hibernate.validator.constraints.*; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; +import io.swagger.v3.oas.annotations.media.Schema; + +import javax.xml.bind.annotation.*; + +import java.util.*; +import javax.annotation.Generated; + +/** + * Soda + */ + +@JacksonXmlRootElement(localName = "Soda") +@XmlRootElement(name = "Soda") +@XmlAccessorType(XmlAccessType.FIELD) +@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class Soda implements Beverage { + + private String beverageType; + + private Integer sugarGrams; + + public Soda() { + super(); + } + + /** + * Constructor with only required parameters + */ + public Soda(String beverageType) { + this.beverageType = beverageType; + } + + public Soda beverageType(String beverageType) { + this.beverageType = beverageType; + return this; + } + + /** + * Get beverageType + * @return beverageType + */ + @NotNull + @Schema(name = "beverageType", requiredMode = Schema.RequiredMode.REQUIRED) + @JsonProperty("beverageType") + @JacksonXmlProperty(localName = "beverageType") + public String getBeverageType() { + return beverageType; + } + + public void setBeverageType(String beverageType) { + this.beverageType = beverageType; + } + + public Soda sugarGrams(Integer sugarGrams) { + this.sugarGrams = sugarGrams; + return this; + } + + /** + * Get sugarGrams + * @return sugarGrams + */ + + @Schema(name = "sugarGrams", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @JsonProperty("sugarGrams") + @JacksonXmlProperty(localName = "sugarGrams") + public Integer getSugarGrams() { + return sugarGrams; + } + + public void setSugarGrams(Integer sugarGrams) { + this.sugarGrams = sugarGrams; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Soda soda = (Soda) o; + return Objects.equals(this.beverageType, soda.beverageType) && + Objects.equals(this.sugarGrams, soda.sugarGrams); + } + + @Override + public int hashCode() { + return Objects.hash(beverageType, sugarGrams); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Soda {\n"); + sb.append(" beverageType: ").append(toIndentedString(beverageType)).append("\n"); + sb.append(" sugarGrams: ").append(toIndentedString(sugarGrams)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + return o == null ? "null" : o.toString().replace("\n", "\n "); + } +} + diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java new file mode 100644 index 000000000000..b0a7a491e229 --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java @@ -0,0 +1,129 @@ +package org.openapitools.model; + +import java.net.URI; +import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import org.openapitools.jackson.nullable.JsonNullable; +import java.time.OffsetDateTime; +import javax.validation.Valid; +import javax.validation.constraints.*; +import org.hibernate.validator.constraints.*; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; +import io.swagger.v3.oas.annotations.media.Schema; + +import javax.xml.bind.annotation.*; + +import java.util.*; +import javax.annotation.Generated; + +/** + * Water + */ + +@JacksonXmlRootElement(localName = "Water") +@XmlRootElement(name = "Water") +@XmlAccessorType(XmlAccessType.FIELD) +@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +public class Water implements Beverage { + + private String beverageType; + + private Boolean sparkling; + + public Water() { + super(); + } + + /** + * Constructor with only required parameters + */ + public Water(String beverageType) { + this.beverageType = beverageType; + } + + public Water beverageType(String beverageType) { + this.beverageType = beverageType; + return this; + } + + /** + * Get beverageType + * @return beverageType + */ + @NotNull + @Schema(name = "beverageType", requiredMode = Schema.RequiredMode.REQUIRED) + @JsonProperty("beverageType") + @JacksonXmlProperty(localName = "beverageType") + public String getBeverageType() { + return beverageType; + } + + public void setBeverageType(String beverageType) { + this.beverageType = beverageType; + } + + public Water sparkling(Boolean sparkling) { + this.sparkling = sparkling; + return this; + } + + /** + * Get sparkling + * @return sparkling + */ + + @Schema(name = "sparkling", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @JsonProperty("sparkling") + @JacksonXmlProperty(localName = "sparkling") + public Boolean getSparkling() { + return sparkling; + } + + public void setSparkling(Boolean sparkling) { + this.sparkling = sparkling; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Water water = (Water) o; + return Objects.equals(this.beverageType, water.beverageType) && + Objects.equals(this.sparkling, water.sparkling); + } + + @Override + public int hashCode() { + return Objects.hash(beverageType, sparkling); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Water {\n"); + sb.append(" beverageType: ").append(toIndentedString(beverageType)).append("\n"); + sb.append(" sparkling: ").append(toIndentedString(sparkling)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + return o == null ? "null" : o.toString().replace("\n", "\n "); + } +} + diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/resources/application.properties b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/resources/application.properties new file mode 100644 index 000000000000..565cb337a76a --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/resources/application.properties @@ -0,0 +1,8 @@ +# NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +# https://openapi-generator.tech +# Do not edit the class manually. + +camel.springboot.name=camel-java-camel-oneof-jackson-default-impl +camel.servlet.mapping.context-path=/api/v1/* + +server.port=8080 \ No newline at end of file diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/test/java/org/openapitools/api/AnimalsApiTest.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/test/java/org/openapitools/api/AnimalsApiTest.java new file mode 100644 index 000000000000..0941916a9469 --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/test/java/org/openapitools/api/AnimalsApiTest.java @@ -0,0 +1,53 @@ +/* +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +* https://openapi-generator.tech +* Do not edit the class manually. +*/ +package org.openapitools.api; + +import org.junit.jupiter.api.Test; +import org.apache.camel.test.spring.junit5.CamelSpringBootTest; +import org.springframework.boot.test.context.SpringBootTest; +import com.mashape.unirest.request.HttpRequest; +import com.mashape.unirest.request.HttpRequestWithBody; +import com.mashape.unirest.http.Unirest; +import com.mashape.unirest.http.JsonNode; +import com.mashape.unirest.http.HttpResponse; +import java.io.InputStream; +import org.junit.jupiter.api.Assertions; + +@CamelSpringBootTest +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) +public class AnimalsApiTest { + private static final String API_URL = "http://127.0.0.1:8080/api/v1"; + + @Test + public void createAnimalTestJson() throws Exception { + String contentType = "application/json"; + String accept = "application/json"; + String url = API_URL + "/animals"; + HttpRequest httpRequest = Unirest.post(url); + httpRequest = httpRequest.header("Content-Type", contentType); + httpRequest = httpRequest.header("Accept", accept); + + String requestBody = "{ \"bark\" : true }"; + httpRequest = ((HttpRequestWithBody) httpRequest).body(requestBody).getHttpRequest(); + + + HttpResponse httpResponse = httpRequest.asJson(); + Assertions.assertTrue(httpResponse.getStatus() < 400 || httpResponse.getStatus() == 415); + } + + @Test + public void createAnimalTestXml() throws Exception { + String contentType = "application/xml"; + String accept = "application/xml"; + String url = API_URL + "/animals"; + HttpRequest httpRequest = Unirest.post(url); + httpRequest = httpRequest.header("Content-Type", contentType); + httpRequest = httpRequest.header("Accept", accept); + + + Assertions.assertTrue(httpResponse.getStatus() < 400 || httpResponse.getStatus() == 415); + } +} \ No newline at end of file diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/test/java/org/openapitools/api/BeveragesApiTest.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/test/java/org/openapitools/api/BeveragesApiTest.java new file mode 100644 index 000000000000..056e6612204e --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/test/java/org/openapitools/api/BeveragesApiTest.java @@ -0,0 +1,53 @@ +/* +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +* https://openapi-generator.tech +* Do not edit the class manually. +*/ +package org.openapitools.api; + +import org.junit.jupiter.api.Test; +import org.apache.camel.test.spring.junit5.CamelSpringBootTest; +import org.springframework.boot.test.context.SpringBootTest; +import com.mashape.unirest.request.HttpRequest; +import com.mashape.unirest.request.HttpRequestWithBody; +import com.mashape.unirest.http.Unirest; +import com.mashape.unirest.http.JsonNode; +import com.mashape.unirest.http.HttpResponse; +import java.io.InputStream; +import org.junit.jupiter.api.Assertions; + +@CamelSpringBootTest +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) +public class BeveragesApiTest { + private static final String API_URL = "http://127.0.0.1:8080/api/v1"; + + @Test + public void createBeverageTestJson() throws Exception { + String contentType = "application/json"; + String accept = "application/json"; + String url = API_URL + "/beverages"; + HttpRequest httpRequest = Unirest.post(url); + httpRequest = httpRequest.header("Content-Type", contentType); + httpRequest = httpRequest.header("Accept", accept); + + String requestBody = "{ \"beverageType\" : \"beverageType\" }"; + httpRequest = ((HttpRequestWithBody) httpRequest).body(requestBody).getHttpRequest(); + + + HttpResponse httpResponse = httpRequest.asJson(); + Assertions.assertTrue(httpResponse.getStatus() < 400 || httpResponse.getStatus() == 415); + } + + @Test + public void createBeverageTestXml() throws Exception { + String contentType = "application/xml"; + String accept = "application/xml"; + String url = API_URL + "/beverages"; + HttpRequest httpRequest = Unirest.post(url); + httpRequest = httpRequest.header("Content-Type", contentType); + httpRequest = httpRequest.header("Accept", accept); + + + Assertions.assertTrue(httpResponse.getStatus() < 400 || httpResponse.getStatus() == 415); + } +} \ No newline at end of file diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/test/java/org/openapitools/api/FruitsApiTest.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/test/java/org/openapitools/api/FruitsApiTest.java new file mode 100644 index 000000000000..0ef06409d292 --- /dev/null +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/test/java/org/openapitools/api/FruitsApiTest.java @@ -0,0 +1,53 @@ +/* +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +* https://openapi-generator.tech +* Do not edit the class manually. +*/ +package org.openapitools.api; + +import org.junit.jupiter.api.Test; +import org.apache.camel.test.spring.junit5.CamelSpringBootTest; +import org.springframework.boot.test.context.SpringBootTest; +import com.mashape.unirest.request.HttpRequest; +import com.mashape.unirest.request.HttpRequestWithBody; +import com.mashape.unirest.http.Unirest; +import com.mashape.unirest.http.JsonNode; +import com.mashape.unirest.http.HttpResponse; +import java.io.InputStream; +import org.junit.jupiter.api.Assertions; + +@CamelSpringBootTest +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) +public class FruitsApiTest { + private static final String API_URL = "http://127.0.0.1:8080/api/v1"; + + @Test + public void createFruitTestJson() throws Exception { + String contentType = "application/json"; + String accept = "application/json"; + String url = API_URL + "/fruits"; + HttpRequest httpRequest = Unirest.post(url); + httpRequest = httpRequest.header("Content-Type", contentType); + httpRequest = httpRequest.header("Accept", accept); + + String requestBody = "{ \"fruitType\" : \"fruitType\" }"; + httpRequest = ((HttpRequestWithBody) httpRequest).body(requestBody).getHttpRequest(); + + + HttpResponse httpResponse = httpRequest.asJson(); + Assertions.assertTrue(httpResponse.getStatus() < 400 || httpResponse.getStatus() == 415); + } + + @Test + public void createFruitTestXml() throws Exception { + String contentType = "application/xml"; + String accept = "application/xml"; + String url = API_URL + "/fruits"; + HttpRequest httpRequest = Unirest.post(url); + httpRequest = httpRequest.header("Content-Type", contentType); + httpRequest = httpRequest.header("Accept", accept); + + + Assertions.assertTrue(httpResponse.getStatus() < 400 || httpResponse.getStatus() == 415); + } +} \ No newline at end of file diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/.openapi-generator-ignore b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/.openapi-generator-ignore new file mode 100644 index 000000000000..7484ee590a38 --- /dev/null +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/.openapi-generator/FILES b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/.openapi-generator/FILES new file mode 100644 index 000000000000..939668c02cfc --- /dev/null +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/.openapi-generator/FILES @@ -0,0 +1,22 @@ +README.md +build.gradle.kts +gradle/wrapper/gradle-wrapper.jar +gradle/wrapper/gradle-wrapper.properties +gradlew +gradlew.bat +pom.xml +settings.gradle +src/main/kotlin/org/openapitools/api/AnimalsApi.kt +src/main/kotlin/org/openapitools/api/ApiUtil.kt +src/main/kotlin/org/openapitools/api/BeveragesApi.kt +src/main/kotlin/org/openapitools/api/Exceptions.kt +src/main/kotlin/org/openapitools/api/FruitsApi.kt +src/main/kotlin/org/openapitools/model/Animal.kt +src/main/kotlin/org/openapitools/model/Apple.kt +src/main/kotlin/org/openapitools/model/Banana.kt +src/main/kotlin/org/openapitools/model/Beverage.kt +src/main/kotlin/org/openapitools/model/Cat.kt +src/main/kotlin/org/openapitools/model/Dog.kt +src/main/kotlin/org/openapitools/model/Fruit.kt +src/main/kotlin/org/openapitools/model/Soda.kt +src/main/kotlin/org/openapitools/model/Water.kt diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/.openapi-generator/VERSION b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/.openapi-generator/VERSION new file mode 100644 index 000000000000..186c33c96ed8 --- /dev/null +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/.openapi-generator/VERSION @@ -0,0 +1 @@ +7.24.0-SNAPSHOT diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/README.md b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/README.md new file mode 100644 index 000000000000..5d4e52b50c5d --- /dev/null +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/README.md @@ -0,0 +1,21 @@ +# jacksonDefaultImplOneOfSample + +This Kotlin based [Spring Boot](https://spring.io/projects/spring-boot) application has been generated using the [OpenAPI Generator](https://github.com/OpenAPITools/openapi-generator). + +## Getting Started + +This document assumes you have either maven or gradle available, either via the wrapper or otherwise. This does not come with a gradle / maven wrapper checked in. + +By default a [`pom.xml`](pom.xml) file will be generated. If you specified `gradleBuildFile=true` when generating this project, a `build.gradle.kts` will also be generated. Note this uses [Gradle Kotlin DSL](https://github.com/gradle/kotlin-dsl). + +To build the project using maven, run: +```bash +mvn package && java -jar target/kotlin-spring-oneof-jackson-default-impl-1.0.0.jar +``` + +To build the project using gradle, run: +```bash +gradle build && java -jar build/libs/kotlin-spring-oneof-jackson-default-impl-1.0.0.jar +``` + +If all builds successfully, the server should run on [http://localhost:8080/](http://localhost:8080/) diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/build.gradle.kts b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/build.gradle.kts new file mode 100644 index 000000000000..30b6a49c9bf6 --- /dev/null +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/build.gradle.kts @@ -0,0 +1,49 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +group = "org.openapitools" +version = "1.0.0" +java.sourceCompatibility = JavaVersion.VERSION_17 + +repositories { + mavenCentral() + maven { url = uri("https://repo.spring.io/milestone") } +} + +tasks.withType { + kotlinOptions.jvmTarget = "17" +} + +tasks.bootJar { + enabled = false +} + +plugins { + val kotlinVersion = "1.9.25" + id("org.jetbrains.kotlin.jvm") version kotlinVersion + id("org.jetbrains.kotlin.plugin.jpa") version kotlinVersion + id("org.jetbrains.kotlin.plugin.spring") version kotlinVersion + id("org.springframework.boot") version "3.3.13" + id("io.spring.dependency-management") version "1.1.7" +} + +dependencies { + implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") + implementation("org.jetbrains.kotlin:kotlin-reflect") + implementation("org.springframework.boot:spring-boot-starter-web") + + implementation("com.google.code.findbugs:jsr305:3.0.2") + implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml") + implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-xml") + implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310") + implementation("com.fasterxml.jackson.module:jackson-module-kotlin") + implementation("org.springframework.data:spring-data-commons") + implementation("org.springframework.boot:spring-boot-starter-validation") + implementation("jakarta.validation:jakarta.validation-api") + + implementation("jakarta.annotation:jakarta.annotation-api:2.1.0") + + testImplementation("org.jetbrains.kotlin:kotlin-test-junit5") + testImplementation("org.springframework.boot:spring-boot-starter-test") { + exclude(module = "junit") + } +} diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/gradle/wrapper/gradle-wrapper.jar b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..e6441136f3d4ba8a0da8d277868979cfbc8ad796 GIT binary patch literal 43453 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 yu?e%!_ptzGB|8GrCfu%p?(_ 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
NnX)EH+Nua)3Y(c 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 '} +case $link in #( +/*) app_path=$link ;; #( +*) app_path=$APP_HOME$link ;; +esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { +echo "$*" +} >&2 + +die () { +echo +echo "$*" +echo +exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( +CYGWIN* ) cygwin=true ;; #( +Darwin* ) darwin=true ;; #( +MSYS* | MINGW* ) msys=true ;; #( +NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then +if [ -x "$JAVA_HOME/jre/sh/java" ] ; then +# IBM's JDK on AIX uses strange locations for the executables +JAVACMD=$JAVA_HOME/jre/sh/java +else +JAVACMD=$JAVA_HOME/bin/java +fi +if [ ! -x "$JAVACMD" ] ; then +die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi +else +JAVACMD=java +if ! command -v java >/dev/null 2>&1 +then +die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then +case $MAX_FD in #( +max*) +# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. +# shellcheck disable=SC2039,SC3045 +MAX_FD=$( ulimit -H -n ) || +warn "Could not query maximum file descriptor limit" +esac +case $MAX_FD in #( +'' | soft) :;; #( +*) +# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. +# shellcheck disable=SC2039,SC3045 +ulimit -n "$MAX_FD" || +warn "Could not set maximum file descriptor limit to $MAX_FD" +esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then +APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) +CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + +JAVACMD=$( cygpath --unix "$JAVACMD" ) + +# Now convert the arguments - kludge to limit ourselves to /bin/sh +for arg do +if +case $arg in #( +-*) false ;; # don't mess with options #( +/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath +[ -e "$t" ] ;; #( +*) false ;; +esac +then +arg=$( cygpath --path --ignore --mixed "$arg" ) +fi +# Roll the args list around exactly as many times as the number of +# args, so each arg winds up back in the position where it started, but +# possibly modified. +# +# NB: a `for` loop captures its iteration list before it begins, so +# changing the positional parameters here affects neither the number of +# iterations, nor the values presented in `arg`. +shift # remove old arg +set -- "$@" "$arg" # push replacement arg +done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ +"-Dorg.gradle.appname=$APP_BASE_NAME" \ +-classpath "$CLASSPATH" \ +org.gradle.wrapper.GradleWrapperMain \ +"$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then +die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( +printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | +xargs -n1 | +sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | +tr '\n' ' ' +)" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/gradlew.bat b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/gradlew.bat new file mode 100644 index 000000000000..25da30dbdeee --- /dev/null +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/pom.xml b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/pom.xml new file mode 100644 index 000000000000..43cb31f6e93c --- /dev/null +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/pom.xml @@ -0,0 +1,158 @@ + + 4.0.0 + org.openapitools + kotlin-spring-oneof-jackson-default-impl + jar + kotlin-spring-oneof-jackson-default-impl + 1.0.0 + + 3.0.2 + 2.1.0 + 1.9.25 + + 1.9.25 + UTF-8 + + + org.springframework.boot + spring-boot-starter-parent + 3.3.13 + + + + repository.spring.milestone + Spring Milestone Repository + https://repo.spring.io/milestone + + + + + spring-milestones + https://repo.spring.io/milestone + + + + ${project.basedir}/src/main/kotlin + ${project.basedir}/src/test/kotlin + + + org.apache.maven.plugins + maven-source-plugin + + + attach-sources + + jar + + + + + + kotlin-maven-plugin + org.jetbrains.kotlin + ${kotlin.version} + + + spring + + 17 + + + + compile + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + + org.jetbrains.kotlin + kotlin-maven-allopen + ${kotlin.version} + + + + + + + + org.jetbrains.kotlin + kotlin-stdlib-jdk8 + ${kotlin.version} + + + org.jetbrains.kotlin + kotlin-reflect + ${kotlin.version} + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.data + spring-data-commons + + + + + + + com.google.code.findbugs + jsr305 + ${findbugs-jsr305.version} + + + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + + + com.fasterxml.jackson.module + jackson-module-kotlin + + + + jakarta.validation + jakarta.validation-api + + + org.springframework.boot + spring-boot-starter-validation + + + + jakarta.annotation + jakarta.annotation-api + ${jakarta-annotation.version} + provided + + + org.springframework.boot + spring-boot-starter-test + test + + + org.jetbrains.kotlin + kotlin-test-junit5 + ${kotlin-test-junit5.version} + test + + + diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/settings.gradle b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/settings.gradle new file mode 100644 index 000000000000..7e501c409e45 --- /dev/null +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/settings.gradle @@ -0,0 +1,15 @@ +pluginManagement { + repositories { + maven { url = uri("https://repo.spring.io/snapshot") } + maven { url = uri("https://repo.spring.io/milestone") } + gradlePluginPortal() + } + resolutionStrategy { + eachPlugin { + if (requested.id.id == "org.springframework.boot") { + useModule("org.springframework.boot:spring-boot-gradle-plugin:${requested.version}") + } + } + } +} +rootProject.name = "kotlin-spring-oneof-jackson-default-impl" diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/AnimalsApi.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/AnimalsApi.kt new file mode 100644 index 000000000000..fdc9443ea5c4 --- /dev/null +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/AnimalsApi.kt @@ -0,0 +1,53 @@ +/** + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). + * https://openapi-generator.tech + * Do not edit the class manually. +*/ +package org.openapitools.api + +import org.openapitools.model.Animal +import org.springframework.http.HttpStatus +import org.springframework.http.MediaType +import org.springframework.http.ResponseEntity + +import org.springframework.web.bind.annotation.* +import org.springframework.validation.annotation.Validated +import org.springframework.web.context.request.NativeWebRequest +import org.springframework.beans.factory.annotation.Autowired + +import jakarta.validation.constraints.DecimalMax +import jakarta.validation.constraints.DecimalMin +import jakarta.validation.constraints.Email +import jakarta.validation.constraints.Max +import jakarta.validation.constraints.Min +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Pattern +import jakarta.validation.constraints.Size +import jakarta.validation.Valid + +import kotlin.collections.List +import kotlin.collections.Map + +@RestController +@Validated +interface AnimalsApi { + + + @RequestMapping( + method = [RequestMethod.POST], + // "/animals" + value = [PATH_CREATE_ANIMAL], + produces = ["application/json"], + consumes = ["application/json"] + ) + fun createAnimal( + @Valid @RequestBody animal: Animal + ): ResponseEntity { + return ResponseEntity(HttpStatus.NOT_IMPLEMENTED) + } + + companion object { + //for your own safety never directly reuse these path definitions in tests + const val PATH_CREATE_ANIMAL: String = "/animals" + } +} diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/ApiUtil.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/ApiUtil.kt new file mode 100644 index 000000000000..03344e13b474 --- /dev/null +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/ApiUtil.kt @@ -0,0 +1,19 @@ +package org.openapitools.api + +import org.springframework.web.context.request.NativeWebRequest + +import jakarta.servlet.http.HttpServletResponse +import java.io.IOException + +object ApiUtil { + fun setExampleResponse(req: NativeWebRequest, contentType: String, example: String) { + try { + val res = req.getNativeResponse(HttpServletResponse::class.java) + res?.characterEncoding = "UTF-8" + res?.addHeader("Content-Type", contentType) + res?.writer?.print(example) + } catch (e: IOException) { + throw RuntimeException(e) + } + } +} diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/BeveragesApi.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/BeveragesApi.kt new file mode 100644 index 000000000000..c77d291cec1f --- /dev/null +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/BeveragesApi.kt @@ -0,0 +1,53 @@ +/** + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). + * https://openapi-generator.tech + * Do not edit the class manually. +*/ +package org.openapitools.api + +import org.openapitools.model.Beverage +import org.springframework.http.HttpStatus +import org.springframework.http.MediaType +import org.springframework.http.ResponseEntity + +import org.springframework.web.bind.annotation.* +import org.springframework.validation.annotation.Validated +import org.springframework.web.context.request.NativeWebRequest +import org.springframework.beans.factory.annotation.Autowired + +import jakarta.validation.constraints.DecimalMax +import jakarta.validation.constraints.DecimalMin +import jakarta.validation.constraints.Email +import jakarta.validation.constraints.Max +import jakarta.validation.constraints.Min +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Pattern +import jakarta.validation.constraints.Size +import jakarta.validation.Valid + +import kotlin.collections.List +import kotlin.collections.Map + +@RestController +@Validated +interface BeveragesApi { + + + @RequestMapping( + method = [RequestMethod.POST], + // "/beverages" + value = [PATH_CREATE_BEVERAGE], + produces = ["application/json"], + consumes = ["application/json"] + ) + fun createBeverage( + @Valid @RequestBody beverage: Beverage + ): ResponseEntity { + return ResponseEntity(HttpStatus.NOT_IMPLEMENTED) + } + + companion object { + //for your own safety never directly reuse these path definitions in tests + const val PATH_CREATE_BEVERAGE: String = "/beverages" + } +} diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/Exceptions.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/Exceptions.kt new file mode 100644 index 000000000000..1bd78f54576a --- /dev/null +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/Exceptions.kt @@ -0,0 +1,30 @@ +package org.openapitools.api + +import org.springframework.context.annotation.Configuration +import org.springframework.http.HttpStatus +import org.springframework.web.bind.annotation.ControllerAdvice +import org.springframework.web.bind.annotation.ExceptionHandler +import jakarta.servlet.http.HttpServletResponse +import jakarta.validation.ConstraintViolationException + +// TODO Extend ApiException for custom exception handling, e.g. the below NotFound exception +sealed class ApiException(msg: String, val code: Int) : Exception(msg) + +class NotFoundException(msg: String, code: Int = HttpStatus.NOT_FOUND.value()) : ApiException(msg, code) + +@Configuration("org.openapitools.api.DefaultExceptionHandler") +@ControllerAdvice +class DefaultExceptionHandler { + + @ExceptionHandler(value = [ApiException::class]) + fun onApiException(ex: ApiException, response: HttpServletResponse): Unit = + response.sendError(ex.code, ex.message) + + @ExceptionHandler(value = [NotImplementedError::class]) + fun onNotImplemented(ex: NotImplementedError, response: HttpServletResponse): Unit = + response.sendError(HttpStatus.NOT_IMPLEMENTED.value()) + + @ExceptionHandler(value = [ConstraintViolationException::class]) + fun onConstraintViolation(ex: ConstraintViolationException, response: HttpServletResponse): Unit = + response.sendError(HttpStatus.BAD_REQUEST.value(), ex.constraintViolations.joinToString(", ") { it.message }) +} diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/FruitsApi.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/FruitsApi.kt new file mode 100644 index 000000000000..877d5654abb2 --- /dev/null +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/FruitsApi.kt @@ -0,0 +1,53 @@ +/** + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). + * https://openapi-generator.tech + * Do not edit the class manually. +*/ +package org.openapitools.api + +import org.openapitools.model.Fruit +import org.springframework.http.HttpStatus +import org.springframework.http.MediaType +import org.springframework.http.ResponseEntity + +import org.springframework.web.bind.annotation.* +import org.springframework.validation.annotation.Validated +import org.springframework.web.context.request.NativeWebRequest +import org.springframework.beans.factory.annotation.Autowired + +import jakarta.validation.constraints.DecimalMax +import jakarta.validation.constraints.DecimalMin +import jakarta.validation.constraints.Email +import jakarta.validation.constraints.Max +import jakarta.validation.constraints.Min +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Pattern +import jakarta.validation.constraints.Size +import jakarta.validation.Valid + +import kotlin.collections.List +import kotlin.collections.Map + +@RestController +@Validated +interface FruitsApi { + + + @RequestMapping( + method = [RequestMethod.POST], + // "/fruits" + value = [PATH_CREATE_FRUIT], + produces = ["application/json"], + consumes = ["application/json"] + ) + fun createFruit( + @Valid @RequestBody fruit: Fruit + ): ResponseEntity { + return ResponseEntity(HttpStatus.NOT_IMPLEMENTED) + } + + companion object { + //for your own safety never directly reuse these path definitions in tests + const val PATH_CREATE_FRUIT: String = "/fruits" + } +} diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Animal.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Animal.kt new file mode 100644 index 000000000000..36bfa5093b32 --- /dev/null +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Animal.kt @@ -0,0 +1,34 @@ +package org.openapitools.model + +import java.util.Objects +import com.fasterxml.jackson.annotation.JsonInclude +import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.annotation.JsonSetter +import com.fasterxml.jackson.annotation.Nulls +import org.openapitools.model.Cat +import org.openapitools.model.Dog +import com.fasterxml.jackson.annotation.JsonSubTypes +import com.fasterxml.jackson.annotation.JsonTypeInfo +import com.fasterxml.jackson.annotation.JsonIgnoreProperties +import jakarta.validation.constraints.DecimalMax +import jakarta.validation.constraints.DecimalMin +import jakarta.validation.constraints.Email +import jakarta.validation.constraints.Max +import jakarta.validation.constraints.Min +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Pattern +import jakarta.validation.constraints.Size +import jakarta.validation.Valid + +/** + * + */ + +@JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION, defaultImpl = Dog::class) +@JsonSubTypes( + JsonSubTypes.Type(value = Dog::class), + JsonSubTypes.Type(value = Cat::class) +) +sealed interface Animal { +} + diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Apple.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Apple.kt new file mode 100644 index 000000000000..23644e5eda59 --- /dev/null +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Apple.kt @@ -0,0 +1,38 @@ +package org.openapitools.model + +import java.util.Objects +import com.fasterxml.jackson.annotation.JsonInclude +import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.annotation.JsonSetter +import com.fasterxml.jackson.annotation.Nulls +import com.fasterxml.jackson.annotation.JsonIgnoreProperties +import com.fasterxml.jackson.annotation.JsonSubTypes +import com.fasterxml.jackson.annotation.JsonTypeInfo +import jakarta.validation.constraints.DecimalMax +import jakarta.validation.constraints.DecimalMin +import jakarta.validation.constraints.Email +import jakarta.validation.constraints.Max +import jakarta.validation.constraints.Min +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Pattern +import jakarta.validation.constraints.Size +import jakarta.validation.Valid + +/** + * + * @param fruitType + * @param seeds + */ +data class Apple( + + @param:JsonProperty("fruitType") + @get:JsonProperty("fruitType", required = true) override val fruitType: kotlin.String = "APPLE", + + @field:JsonInclude(JsonInclude.Include.NON_NULL) + @field:JsonSetter(nulls = Nulls.SKIP) + @param:JsonProperty("seeds") + @get:JsonProperty("seeds") val seeds: kotlin.Int? = null +) : Fruit { + +} + diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Banana.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Banana.kt new file mode 100644 index 000000000000..6f1b63722858 --- /dev/null +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Banana.kt @@ -0,0 +1,38 @@ +package org.openapitools.model + +import java.util.Objects +import com.fasterxml.jackson.annotation.JsonInclude +import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.annotation.JsonSetter +import com.fasterxml.jackson.annotation.Nulls +import com.fasterxml.jackson.annotation.JsonIgnoreProperties +import com.fasterxml.jackson.annotation.JsonSubTypes +import com.fasterxml.jackson.annotation.JsonTypeInfo +import jakarta.validation.constraints.DecimalMax +import jakarta.validation.constraints.DecimalMin +import jakarta.validation.constraints.Email +import jakarta.validation.constraints.Max +import jakarta.validation.constraints.Min +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Pattern +import jakarta.validation.constraints.Size +import jakarta.validation.Valid + +/** + * + * @param fruitType + * @param length + */ +data class Banana( + + @param:JsonProperty("fruitType") + @get:JsonProperty("fruitType", required = true) override val fruitType: kotlin.String = "BANANA", + + @field:JsonInclude(JsonInclude.Include.NON_NULL) + @field:JsonSetter(nulls = Nulls.SKIP) + @param:JsonProperty("length") + @get:JsonProperty("length") val length: kotlin.Int? = null +) : Fruit { + +} + diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Beverage.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Beverage.kt new file mode 100644 index 000000000000..51617977efd8 --- /dev/null +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Beverage.kt @@ -0,0 +1,38 @@ +package org.openapitools.model + +import java.util.Objects +import com.fasterxml.jackson.annotation.JsonIgnoreProperties +import com.fasterxml.jackson.annotation.JsonInclude +import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.annotation.JsonSetter +import com.fasterxml.jackson.annotation.JsonSubTypes +import com.fasterxml.jackson.annotation.JsonTypeInfo +import com.fasterxml.jackson.annotation.Nulls +import org.openapitools.model.Soda +import org.openapitools.model.Water +import jakarta.validation.constraints.DecimalMax +import jakarta.validation.constraints.DecimalMin +import jakarta.validation.constraints.Email +import jakarta.validation.constraints.Max +import jakarta.validation.constraints.Min +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Pattern +import jakarta.validation.constraints.Size +import jakarta.validation.Valid + +/** + * + */ +@JsonIgnoreProperties( + value = ["beverageType"], // ignore manually set beverageType, it will be automatically generated by Jackson during serialization + allowSetters = true // allows the beverageType to be set during deserialization +) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "beverageType", visible = true, defaultImpl = Water::class) +@JsonSubTypes( + JsonSubTypes.Type(value = Soda::class, name = "SODA"), + JsonSubTypes.Type(value = Water::class, name = "WATER") +) +sealed interface Beverage { + val beverageType: kotlin.String +} + diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Cat.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Cat.kt new file mode 100644 index 000000000000..59ee6e3977b5 --- /dev/null +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Cat.kt @@ -0,0 +1,31 @@ +package org.openapitools.model + +import java.util.Objects +import com.fasterxml.jackson.annotation.JsonInclude +import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.annotation.JsonSetter +import com.fasterxml.jackson.annotation.Nulls +import jakarta.validation.constraints.DecimalMax +import jakarta.validation.constraints.DecimalMin +import jakarta.validation.constraints.Email +import jakarta.validation.constraints.Max +import jakarta.validation.constraints.Min +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Pattern +import jakarta.validation.constraints.Size +import jakarta.validation.Valid + +/** + * + * @param declawed + */ +data class Cat( + + @field:JsonInclude(JsonInclude.Include.NON_NULL) + @field:JsonSetter(nulls = Nulls.SKIP) + @param:JsonProperty("declawed") + @get:JsonProperty("declawed") val declawed: kotlin.Boolean? = null +) : Animal { + +} + diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Dog.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Dog.kt new file mode 100644 index 000000000000..69603f0779cf --- /dev/null +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Dog.kt @@ -0,0 +1,31 @@ +package org.openapitools.model + +import java.util.Objects +import com.fasterxml.jackson.annotation.JsonInclude +import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.annotation.JsonSetter +import com.fasterxml.jackson.annotation.Nulls +import jakarta.validation.constraints.DecimalMax +import jakarta.validation.constraints.DecimalMin +import jakarta.validation.constraints.Email +import jakarta.validation.constraints.Max +import jakarta.validation.constraints.Min +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Pattern +import jakarta.validation.constraints.Size +import jakarta.validation.Valid + +/** + * + * @param bark + */ +data class Dog( + + @field:JsonInclude(JsonInclude.Include.NON_NULL) + @field:JsonSetter(nulls = Nulls.SKIP) + @param:JsonProperty("bark") + @get:JsonProperty("bark") val bark: kotlin.Boolean? = null +) : Animal { + +} + diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Fruit.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Fruit.kt new file mode 100644 index 000000000000..53968a634b29 --- /dev/null +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Fruit.kt @@ -0,0 +1,38 @@ +package org.openapitools.model + +import java.util.Objects +import com.fasterxml.jackson.annotation.JsonIgnoreProperties +import com.fasterxml.jackson.annotation.JsonInclude +import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.annotation.JsonSetter +import com.fasterxml.jackson.annotation.JsonSubTypes +import com.fasterxml.jackson.annotation.JsonTypeInfo +import com.fasterxml.jackson.annotation.Nulls +import org.openapitools.model.Apple +import org.openapitools.model.Banana +import jakarta.validation.constraints.DecimalMax +import jakarta.validation.constraints.DecimalMin +import jakarta.validation.constraints.Email +import jakarta.validation.constraints.Max +import jakarta.validation.constraints.Min +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Pattern +import jakarta.validation.constraints.Size +import jakarta.validation.Valid + +/** + * + */ +@JsonIgnoreProperties( + value = ["fruitType"], // ignore manually set fruitType, it will be automatically generated by Jackson during serialization + allowSetters = true // allows the fruitType to be set during deserialization +) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "fruitType", visible = true, defaultImpl = Apple::class) +@JsonSubTypes( + JsonSubTypes.Type(value = Apple::class, name = "APPLE"), + JsonSubTypes.Type(value = Banana::class, name = "BANANA") +) +sealed interface Fruit { + val fruitType: kotlin.String +} + diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Soda.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Soda.kt new file mode 100644 index 000000000000..95e9463a8718 --- /dev/null +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Soda.kt @@ -0,0 +1,38 @@ +package org.openapitools.model + +import java.util.Objects +import com.fasterxml.jackson.annotation.JsonInclude +import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.annotation.JsonSetter +import com.fasterxml.jackson.annotation.Nulls +import com.fasterxml.jackson.annotation.JsonIgnoreProperties +import com.fasterxml.jackson.annotation.JsonSubTypes +import com.fasterxml.jackson.annotation.JsonTypeInfo +import jakarta.validation.constraints.DecimalMax +import jakarta.validation.constraints.DecimalMin +import jakarta.validation.constraints.Email +import jakarta.validation.constraints.Max +import jakarta.validation.constraints.Min +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Pattern +import jakarta.validation.constraints.Size +import jakarta.validation.Valid + +/** + * + * @param beverageType + * @param sugarGrams + */ +data class Soda( + + @param:JsonProperty("beverageType") + @get:JsonProperty("beverageType", required = true) override val beverageType: kotlin.String = "SODA", + + @field:JsonInclude(JsonInclude.Include.NON_NULL) + @field:JsonSetter(nulls = Nulls.SKIP) + @param:JsonProperty("sugarGrams") + @get:JsonProperty("sugarGrams") val sugarGrams: kotlin.Int? = null +) : Beverage { + +} + diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Water.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Water.kt new file mode 100644 index 000000000000..51c30818d206 --- /dev/null +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Water.kt @@ -0,0 +1,38 @@ +package org.openapitools.model + +import java.util.Objects +import com.fasterxml.jackson.annotation.JsonInclude +import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.annotation.JsonSetter +import com.fasterxml.jackson.annotation.Nulls +import com.fasterxml.jackson.annotation.JsonIgnoreProperties +import com.fasterxml.jackson.annotation.JsonSubTypes +import com.fasterxml.jackson.annotation.JsonTypeInfo +import jakarta.validation.constraints.DecimalMax +import jakarta.validation.constraints.DecimalMin +import jakarta.validation.constraints.Email +import jakarta.validation.constraints.Max +import jakarta.validation.constraints.Min +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Pattern +import jakarta.validation.constraints.Size +import jakarta.validation.Valid + +/** + * + * @param beverageType + * @param sparkling + */ +data class Water( + + @param:JsonProperty("beverageType") + @get:JsonProperty("beverageType", required = true) override val beverageType: kotlin.String = "WATER", + + @field:JsonInclude(JsonInclude.Include.NON_NULL) + @field:JsonSetter(nulls = Nulls.SKIP) + @param:JsonProperty("sparkling") + @get:JsonProperty("sparkling") val sparkling: kotlin.Boolean? = null +) : Beverage { + +} + From 9fa7541d5af3680da3af1394c6f49fe85c786069 Mon Sep 17 00:00:00 2001 From: Jachym Metlicka Date: Wed, 15 Jul 2026 23:22:44 +0200 Subject: [PATCH 13/23] fix compiled samples --- ...java-camel-oneof-jackson-default-impl.yaml | 4 +- .../reports/problems/problems-report.html | 663 ------------------ .../pom.xml | 10 +- .../java/org/openapitools/model/Animal.java | 7 - .../java/org/openapitools/model/Apple.java | 9 - .../java/org/openapitools/model/Banana.java | 9 - .../java/org/openapitools/model/Beverage.java | 7 - .../main/java/org/openapitools/model/Cat.java | 8 - .../main/java/org/openapitools/model/Dog.java | 8 - .../java/org/openapitools/model/Fruit.java | 7 - .../java/org/openapitools/model/Soda.java | 9 - .../java/org/openapitools/model/Water.java | 9 - .../org/openapitools/api/AnimalsApiTest.java | 53 -- .../openapitools/api/BeveragesApiTest.java | 53 -- .../org/openapitools/api/FruitsApiTest.java | 53 -- 15 files changed, 4 insertions(+), 905 deletions(-) delete mode 100644 samples/client/others/kotlin-oneof-jackson-default-impl/build/reports/problems/problems-report.html delete mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/test/java/org/openapitools/api/AnimalsApiTest.java delete mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/test/java/org/openapitools/api/BeveragesApiTest.java delete mode 100644 samples/server/petstore/java-camel-oneof-jackson-default-impl/src/test/java/org/openapitools/api/FruitsApiTest.java diff --git a/bin/configs/java-camel-oneof-jackson-default-impl.yaml b/bin/configs/java-camel-oneof-jackson-default-impl.yaml index 84bb2466c3f8..1218a037762b 100644 --- a/bin/configs/java-camel-oneof-jackson-default-impl.yaml +++ b/bin/configs/java-camel-oneof-jackson-default-impl.yaml @@ -2,13 +2,15 @@ generatorName: java-camel outputDir: samples/server/petstore/java-camel-oneof-jackson-default-impl inputSpec: modules/openapi-generator/src/test/resources/3_0/jackson-default-impl-oneof.yaml templateDir: modules/openapi-generator/src/main/resources/java-camel-server +globalProperties: + apiTests: "false" + modelTests: "false" additionalProperties: hideGenerationTimestamp: true artifactId: java-camel-oneof-jackson-default-impl camelRestBindingMode: "auto" performBeanValidation: true camelDataformatProperties: "json.out.disableFeatures=WRITE_DATES_AS_TIMESTAMPS" - withXml: true jackson: true camelUseDefaultValidationErrorProcessor: true camelRestClientRequestValidation: true diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build/reports/problems/problems-report.html b/samples/client/others/kotlin-oneof-jackson-default-impl/build/reports/problems/problems-report.html deleted file mode 100644 index 2c55de6eebe4..000000000000 --- a/samples/client/others/kotlin-oneof-jackson-default-impl/build/reports/problems/problems-report.html +++ /dev/null @@ -1,663 +0,0 @@ - - - - - - - - - - - - - Gradle Configuration Cache - - - -
- -
- Loading... -
- - - - - - diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/pom.xml b/samples/server/petstore/java-camel-oneof-jackson-default-impl/pom.xml index 032343175dca..df123fafd2e2 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/pom.xml +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/pom.xml @@ -137,15 +137,7 @@ Do not edit the class manually. org.apache.camel camel-jackson - - org.apache.camel - camel-jacksonxml - - - - org.apache.camel - camel-jaxb - + org.apache.camel camel-direct diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java index 334019f506b9..506d1e12630b 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java @@ -14,20 +14,13 @@ import javax.validation.Valid; import javax.validation.constraints.*; import org.hibernate.validator.constraints.*; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; import io.swagger.v3.oas.annotations.media.Schema; -import javax.xml.bind.annotation.*; import java.util.*; import javax.annotation.Generated; -@JacksonXmlRootElement(localName = "Animal") -@XmlRootElement(name = "Animal") -@XmlAccessorType(XmlAccessType.FIELD) @JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION, defaultImpl = Dog.class) @JsonSubTypes({ diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java index 7ea829d3b2c5..4747ea4ae427 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java @@ -13,12 +13,8 @@ import javax.validation.Valid; import javax.validation.constraints.*; import org.hibernate.validator.constraints.*; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; import io.swagger.v3.oas.annotations.media.Schema; -import javax.xml.bind.annotation.*; import java.util.*; import javax.annotation.Generated; @@ -27,9 +23,6 @@ * Apple */ -@JacksonXmlRootElement(localName = "Apple") -@XmlRootElement(name = "Apple") -@XmlAccessorType(XmlAccessType.FIELD) @Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") public class Apple implements Fruit { @@ -60,7 +53,6 @@ public Apple fruitType(String fruitType) { @NotNull @Schema(name = "fruitType", requiredMode = Schema.RequiredMode.REQUIRED) @JsonProperty("fruitType") - @JacksonXmlProperty(localName = "fruitType") public String getFruitType() { return fruitType; } @@ -81,7 +73,6 @@ public Apple seeds(Integer seeds) { @Schema(name = "seeds", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @JsonProperty("seeds") - @JacksonXmlProperty(localName = "seeds") public Integer getSeeds() { return seeds; } diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java index 1d3d2bb6005a..987e6988c5a5 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java @@ -13,12 +13,8 @@ import javax.validation.Valid; import javax.validation.constraints.*; import org.hibernate.validator.constraints.*; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; import io.swagger.v3.oas.annotations.media.Schema; -import javax.xml.bind.annotation.*; import java.util.*; import javax.annotation.Generated; @@ -27,9 +23,6 @@ * Banana */ -@JacksonXmlRootElement(localName = "Banana") -@XmlRootElement(name = "Banana") -@XmlAccessorType(XmlAccessType.FIELD) @Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") public class Banana implements Fruit { @@ -60,7 +53,6 @@ public Banana fruitType(String fruitType) { @NotNull @Schema(name = "fruitType", requiredMode = Schema.RequiredMode.REQUIRED) @JsonProperty("fruitType") - @JacksonXmlProperty(localName = "fruitType") public String getFruitType() { return fruitType; } @@ -81,7 +73,6 @@ public Banana length(Integer length) { @Schema(name = "length", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @JsonProperty("length") - @JacksonXmlProperty(localName = "length") public Integer getLength() { return length; } diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java index c60a7b70ca17..5f4607e14c08 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java @@ -15,20 +15,13 @@ import javax.validation.Valid; import javax.validation.constraints.*; import org.hibernate.validator.constraints.*; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; import io.swagger.v3.oas.annotations.media.Schema; -import javax.xml.bind.annotation.*; import java.util.*; import javax.annotation.Generated; -@JacksonXmlRootElement(localName = "Beverage") -@XmlRootElement(name = "Beverage") -@XmlAccessorType(XmlAccessType.FIELD) @JsonIgnoreProperties( value = "beverageType", // ignore manually set beverageType, it will be automatically generated by Jackson during serialization allowSetters = true // allows the beverageType to be set during deserialization diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java index 4a052c4d930c..f731b90b4db9 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java @@ -10,12 +10,8 @@ import javax.validation.Valid; import javax.validation.constraints.*; import org.hibernate.validator.constraints.*; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; import io.swagger.v3.oas.annotations.media.Schema; -import javax.xml.bind.annotation.*; import java.util.*; import javax.annotation.Generated; @@ -24,9 +20,6 @@ * Cat */ -@JacksonXmlRootElement(localName = "Cat") -@XmlRootElement(name = "Cat") -@XmlAccessorType(XmlAccessType.FIELD) @Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") public class Cat implements Animal { @@ -44,7 +37,6 @@ public Cat declawed(Boolean declawed) { @Schema(name = "declawed", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @JsonProperty("declawed") - @JacksonXmlProperty(localName = "declawed") public Boolean getDeclawed() { return declawed; } diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java index a327080c2cad..2e3f5e6230c2 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java @@ -10,12 +10,8 @@ import javax.validation.Valid; import javax.validation.constraints.*; import org.hibernate.validator.constraints.*; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; import io.swagger.v3.oas.annotations.media.Schema; -import javax.xml.bind.annotation.*; import java.util.*; import javax.annotation.Generated; @@ -24,9 +20,6 @@ * Dog */ -@JacksonXmlRootElement(localName = "Dog") -@XmlRootElement(name = "Dog") -@XmlAccessorType(XmlAccessType.FIELD) @Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") public class Dog implements Animal { @@ -44,7 +37,6 @@ public Dog bark(Boolean bark) { @Schema(name = "bark", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @JsonProperty("bark") - @JacksonXmlProperty(localName = "bark") public Boolean getBark() { return bark; } diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java index 39433645e781..66dcc1754e4b 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java @@ -15,20 +15,13 @@ import javax.validation.Valid; import javax.validation.constraints.*; import org.hibernate.validator.constraints.*; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; import io.swagger.v3.oas.annotations.media.Schema; -import javax.xml.bind.annotation.*; import java.util.*; import javax.annotation.Generated; -@JacksonXmlRootElement(localName = "Fruit") -@XmlRootElement(name = "Fruit") -@XmlAccessorType(XmlAccessType.FIELD) @JsonIgnoreProperties( value = "fruitType", // ignore manually set fruitType, it will be automatically generated by Jackson during serialization allowSetters = true // allows the fruitType to be set during deserialization diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java index 889437a8636f..862d73d25096 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java @@ -13,12 +13,8 @@ import javax.validation.Valid; import javax.validation.constraints.*; import org.hibernate.validator.constraints.*; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; import io.swagger.v3.oas.annotations.media.Schema; -import javax.xml.bind.annotation.*; import java.util.*; import javax.annotation.Generated; @@ -27,9 +23,6 @@ * Soda */ -@JacksonXmlRootElement(localName = "Soda") -@XmlRootElement(name = "Soda") -@XmlAccessorType(XmlAccessType.FIELD) @Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") public class Soda implements Beverage { @@ -60,7 +53,6 @@ public Soda beverageType(String beverageType) { @NotNull @Schema(name = "beverageType", requiredMode = Schema.RequiredMode.REQUIRED) @JsonProperty("beverageType") - @JacksonXmlProperty(localName = "beverageType") public String getBeverageType() { return beverageType; } @@ -81,7 +73,6 @@ public Soda sugarGrams(Integer sugarGrams) { @Schema(name = "sugarGrams", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @JsonProperty("sugarGrams") - @JacksonXmlProperty(localName = "sugarGrams") public Integer getSugarGrams() { return sugarGrams; } diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java index b0a7a491e229..f1920b6d1524 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java @@ -13,12 +13,8 @@ import javax.validation.Valid; import javax.validation.constraints.*; import org.hibernate.validator.constraints.*; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; import io.swagger.v3.oas.annotations.media.Schema; -import javax.xml.bind.annotation.*; import java.util.*; import javax.annotation.Generated; @@ -27,9 +23,6 @@ * Water */ -@JacksonXmlRootElement(localName = "Water") -@XmlRootElement(name = "Water") -@XmlAccessorType(XmlAccessType.FIELD) @Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") public class Water implements Beverage { @@ -60,7 +53,6 @@ public Water beverageType(String beverageType) { @NotNull @Schema(name = "beverageType", requiredMode = Schema.RequiredMode.REQUIRED) @JsonProperty("beverageType") - @JacksonXmlProperty(localName = "beverageType") public String getBeverageType() { return beverageType; } @@ -81,7 +73,6 @@ public Water sparkling(Boolean sparkling) { @Schema(name = "sparkling", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @JsonProperty("sparkling") - @JacksonXmlProperty(localName = "sparkling") public Boolean getSparkling() { return sparkling; } diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/test/java/org/openapitools/api/AnimalsApiTest.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/test/java/org/openapitools/api/AnimalsApiTest.java deleted file mode 100644 index 0941916a9469..000000000000 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/test/java/org/openapitools/api/AnimalsApiTest.java +++ /dev/null @@ -1,53 +0,0 @@ -/* -* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). -* https://openapi-generator.tech -* Do not edit the class manually. -*/ -package org.openapitools.api; - -import org.junit.jupiter.api.Test; -import org.apache.camel.test.spring.junit5.CamelSpringBootTest; -import org.springframework.boot.test.context.SpringBootTest; -import com.mashape.unirest.request.HttpRequest; -import com.mashape.unirest.request.HttpRequestWithBody; -import com.mashape.unirest.http.Unirest; -import com.mashape.unirest.http.JsonNode; -import com.mashape.unirest.http.HttpResponse; -import java.io.InputStream; -import org.junit.jupiter.api.Assertions; - -@CamelSpringBootTest -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) -public class AnimalsApiTest { - private static final String API_URL = "http://127.0.0.1:8080/api/v1"; - - @Test - public void createAnimalTestJson() throws Exception { - String contentType = "application/json"; - String accept = "application/json"; - String url = API_URL + "/animals"; - HttpRequest httpRequest = Unirest.post(url); - httpRequest = httpRequest.header("Content-Type", contentType); - httpRequest = httpRequest.header("Accept", accept); - - String requestBody = "{ \"bark\" : true }"; - httpRequest = ((HttpRequestWithBody) httpRequest).body(requestBody).getHttpRequest(); - - - HttpResponse httpResponse = httpRequest.asJson(); - Assertions.assertTrue(httpResponse.getStatus() < 400 || httpResponse.getStatus() == 415); - } - - @Test - public void createAnimalTestXml() throws Exception { - String contentType = "application/xml"; - String accept = "application/xml"; - String url = API_URL + "/animals"; - HttpRequest httpRequest = Unirest.post(url); - httpRequest = httpRequest.header("Content-Type", contentType); - httpRequest = httpRequest.header("Accept", accept); - - - Assertions.assertTrue(httpResponse.getStatus() < 400 || httpResponse.getStatus() == 415); - } -} \ No newline at end of file diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/test/java/org/openapitools/api/BeveragesApiTest.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/test/java/org/openapitools/api/BeveragesApiTest.java deleted file mode 100644 index 056e6612204e..000000000000 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/test/java/org/openapitools/api/BeveragesApiTest.java +++ /dev/null @@ -1,53 +0,0 @@ -/* -* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). -* https://openapi-generator.tech -* Do not edit the class manually. -*/ -package org.openapitools.api; - -import org.junit.jupiter.api.Test; -import org.apache.camel.test.spring.junit5.CamelSpringBootTest; -import org.springframework.boot.test.context.SpringBootTest; -import com.mashape.unirest.request.HttpRequest; -import com.mashape.unirest.request.HttpRequestWithBody; -import com.mashape.unirest.http.Unirest; -import com.mashape.unirest.http.JsonNode; -import com.mashape.unirest.http.HttpResponse; -import java.io.InputStream; -import org.junit.jupiter.api.Assertions; - -@CamelSpringBootTest -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) -public class BeveragesApiTest { - private static final String API_URL = "http://127.0.0.1:8080/api/v1"; - - @Test - public void createBeverageTestJson() throws Exception { - String contentType = "application/json"; - String accept = "application/json"; - String url = API_URL + "/beverages"; - HttpRequest httpRequest = Unirest.post(url); - httpRequest = httpRequest.header("Content-Type", contentType); - httpRequest = httpRequest.header("Accept", accept); - - String requestBody = "{ \"beverageType\" : \"beverageType\" }"; - httpRequest = ((HttpRequestWithBody) httpRequest).body(requestBody).getHttpRequest(); - - - HttpResponse httpResponse = httpRequest.asJson(); - Assertions.assertTrue(httpResponse.getStatus() < 400 || httpResponse.getStatus() == 415); - } - - @Test - public void createBeverageTestXml() throws Exception { - String contentType = "application/xml"; - String accept = "application/xml"; - String url = API_URL + "/beverages"; - HttpRequest httpRequest = Unirest.post(url); - httpRequest = httpRequest.header("Content-Type", contentType); - httpRequest = httpRequest.header("Accept", accept); - - - Assertions.assertTrue(httpResponse.getStatus() < 400 || httpResponse.getStatus() == 415); - } -} \ No newline at end of file diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/test/java/org/openapitools/api/FruitsApiTest.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/test/java/org/openapitools/api/FruitsApiTest.java deleted file mode 100644 index 0ef06409d292..000000000000 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/test/java/org/openapitools/api/FruitsApiTest.java +++ /dev/null @@ -1,53 +0,0 @@ -/* -* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). -* https://openapi-generator.tech -* Do not edit the class manually. -*/ -package org.openapitools.api; - -import org.junit.jupiter.api.Test; -import org.apache.camel.test.spring.junit5.CamelSpringBootTest; -import org.springframework.boot.test.context.SpringBootTest; -import com.mashape.unirest.request.HttpRequest; -import com.mashape.unirest.request.HttpRequestWithBody; -import com.mashape.unirest.http.Unirest; -import com.mashape.unirest.http.JsonNode; -import com.mashape.unirest.http.HttpResponse; -import java.io.InputStream; -import org.junit.jupiter.api.Assertions; - -@CamelSpringBootTest -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) -public class FruitsApiTest { - private static final String API_URL = "http://127.0.0.1:8080/api/v1"; - - @Test - public void createFruitTestJson() throws Exception { - String contentType = "application/json"; - String accept = "application/json"; - String url = API_URL + "/fruits"; - HttpRequest httpRequest = Unirest.post(url); - httpRequest = httpRequest.header("Content-Type", contentType); - httpRequest = httpRequest.header("Accept", accept); - - String requestBody = "{ \"fruitType\" : \"fruitType\" }"; - httpRequest = ((HttpRequestWithBody) httpRequest).body(requestBody).getHttpRequest(); - - - HttpResponse httpResponse = httpRequest.asJson(); - Assertions.assertTrue(httpResponse.getStatus() < 400 || httpResponse.getStatus() == 415); - } - - @Test - public void createFruitTestXml() throws Exception { - String contentType = "application/xml"; - String accept = "application/xml"; - String url = API_URL + "/fruits"; - HttpRequest httpRequest = Unirest.post(url); - httpRequest = httpRequest.header("Content-Type", contentType); - httpRequest = httpRequest.header("Accept", accept); - - - Assertions.assertTrue(httpResponse.getStatus() < 400 || httpResponse.getStatus() == 415); - } -} \ No newline at end of file From b168935fc392533ec45852baf68cff0641973376 Mon Sep 17 00:00:00 2001 From: Jachym Metlicka Date: Wed, 15 Jul 2026 23:48:37 +0200 Subject: [PATCH 14/23] implement CR feedback --- docs/generators/java-camel.md | 2 +- docs/generators/java.md | 2 +- docs/generators/kotlin.md | 2 +- docs/generators/spring.md | 2 +- .../codegen/languages/JavaClientCodegen.java | 2 +- .../languages/KotlinClientCodegen.java | 2 +- .../codegen/languages/SpringCodegen.java | 2 +- .../kotlin/KotlinClientCodegenModelTest.java | 46 ++++++------------- 8 files changed, 22 insertions(+), 38 deletions(-) diff --git a/docs/generators/java-camel.md b/docs/generators/java-camel.md index 638920e06c3c..8c81cd56389a 100644 --- a/docs/generators/java-camel.md +++ b/docs/generators/java-camel.md @@ -108,7 +108,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |substituteGenericPagedModel|Detect schemas that represent paginated responses (an object with a 'content' array property and a 'page' pagination-metadata property) and replace their generated references with PagedModel<T>. By default this uses a generated type in the config package (default 'org.openapitools.configuration'), but `importMappings.PagedModel` can override it to a custom/FQCN-mapped type. The detected page schemas and the pagination metadata schema are suppressed from code generation.| |false| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|server title name or client service name| |OpenAPI Spring| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |empty map| |unhandledException|Declare operation methods to throw a generic exception and allow unhandled exceptions (useful for Spring `@ControllerAdvice` directives).| |false| |useBeanValidation|Use BeanValidation API annotations| |true| |useDeductionForOneOfInterfaces|Annotate discriminator-free oneOf interfaces with Jackson's @JsonTypeInfo(use = Id.DEDUCTION) and @JsonSubTypes so the concrete subtype is resolved from the JSON field set rather than a type-tag property. Has no effect when a discriminator is present (name-based resolution is used instead). Requires subtypes to have structurally distinct sets of properties.| |false| diff --git a/docs/generators/java.md b/docs/generators/java.md index 7ccaf890d948..e7d55faf4c6e 100644 --- a/docs/generators/java.md +++ b/docs/generators/java.md @@ -93,7 +93,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |supportUrlQuery|Generate toUrlQueryString in POJO (default to true). Available on `native`, `apache-httpclient` libraries.| |false| |supportVertxFuture|Also generate api methods that return a vertx Future instead of taking a callback. Only `vertx` supports this option. Requires vertx 4 or greater.| |false| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |empty map| |useAbstractionForFiles|Use alternative types instead of java.io.File to allow passing bytes without a file on disk. Available on resttemplate, webclient, restclient, libraries| |false| |useBeanValidation|Use BeanValidation API annotations| |false| |useDeductionForOneOfInterfaces|Annotate discriminator-free oneOf interfaces with Jackson's @JsonTypeInfo(use = Id.DEDUCTION) and @JsonSubTypes so the concrete subtype is resolved from the JSON field set rather than a type-tag property. Has no effect when a discriminator is present (name-based resolution is used instead). Requires subtypes to have structurally distinct sets of properties.| |false| diff --git a/docs/generators/kotlin.md b/docs/generators/kotlin.md index 49a0ef45f38c..81986870b871 100644 --- a/docs/generators/kotlin.md +++ b/docs/generators/kotlin.md @@ -49,7 +49,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |null| |sourceFolder|source folder for generated code| |src/main/kotlin| |supportAndroidApiLevel25AndBelow|[WARNING] This flag will generate code that has a known security vulnerability. It uses `kotlin.io.createTempFile` instead of `java.nio.file.Files.createTempFile` in order to support Android API level 25 and below. For more info, please check the following links https://github.com/OpenAPITools/openapi-generator/security/advisories/GHSA-23x4-m842-fmwf, https://github.com/OpenAPITools/openapi-generator/pull/9284| |false| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |empty map| |useCoroutines|Whether to use the Coroutines adapter with the retrofit2 library.| |false| |useJackson3|Use Jackson 3 dependencies (tools.jackson package). Not yet supported for kotlin-client; reserved for future use.| |false| |useNonAsciiHeaders|Allow to use non-ascii headers with the okhttp library| |false| diff --git a/docs/generators/spring.md b/docs/generators/spring.md index ffc0c3ce4ad5..05bfc93836f2 100644 --- a/docs/generators/spring.md +++ b/docs/generators/spring.md @@ -101,7 +101,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |substituteGenericPagedModel|Detect schemas that represent paginated responses (an object with a 'content' array property and a 'page' pagination-metadata property) and replace their generated references with PagedModel<T>. By default this uses a generated type in the config package (default 'org.openapitools.configuration'), but `importMappings.PagedModel` can override it to a custom/FQCN-mapped type. The detected page schemas and the pagination metadata schema are suppressed from code generation.| |false| |testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi| |title|server title name or client service name| |OpenAPI Spring| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |null| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |empty map| |unhandledException|Declare operation methods to throw a generic exception and allow unhandled exceptions (useful for Spring `@ControllerAdvice` directives).| |false| |useBeanValidation|Use BeanValidation API annotations| |true| |useDeductionForOneOfInterfaces|Annotate discriminator-free oneOf interfaces with Jackson's @JsonTypeInfo(use = Id.DEDUCTION) and @JsonSubTypes so the concrete subtype is resolved from the JSON field set rather than a type-tag property. Has no effect when a discriminator is present (name-based resolution is used instead). Requires subtypes to have structurally distinct sets of properties.| |false| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java index 2e1b5a76b2f7..3faddb842125 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java @@ -286,7 +286,7 @@ public JavaClientCodegen() { cliOptions.add(CliOption.newBoolean(USE_UNARY_INTERCEPTOR, "If true it will generate ResponseInterceptors using a UnaryOperator. This can be usefull for manipulating the request before it gets passed, for example doing your own decryption", this.useUnaryInterceptor)); cliOptions.add(CliOption.newBoolean(USE_JSPECIFY, "Use Jspecify for null checks. Only supported for " + JSPECIFY_SUPPORTED_LIBRARIES, useJspecify)); cliOptions.add(CliOption.newBoolean(USE_DEDUCTION_FOR_ONE_OF_INTERFACES, USE_DEDUCTION_FOR_ONE_OF_INTERFACES_DESC, useDeductionForOneOfInterfaces)); - cliOptions.add(new CliOption(TYPE_INFO_DEFAULT_IMPLS, TYPE_INFO_DEFAULT_IMPLS_DESC)); + cliOptions.add(new CliOption(TYPE_INFO_DEFAULT_IMPLS, TYPE_INFO_DEFAULT_IMPLS_DESC).defaultValue("empty map")); supportedLibraries.put(JERSEY2, "HTTP client: Jersey client 2.25.1. JSON processing: Jackson 2.17.1"); supportedLibraries.put(JERSEY3, "HTTP client: Jersey client 3.1.11. JSON processing: Jackson 2.x (3.x if `useJackson3=true`, requires Java 17+)"); 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 f2a0a7cb492b..d7659662d98c 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 @@ -298,7 +298,7 @@ public KotlinClientCodegen() { cliOptions.add(new CliOption(MAP_FILE_BINARY_TO_BYTE_ARRAY, "Map File and Binary to ByteArray (default: false)").defaultValue(Boolean.FALSE.toString())); cliOptions.add(CliOption.newBoolean(GENERATE_ONEOF_ANYOF_WRAPPERS, "Generate oneOf, anyOf schemas as wrappers. Only `jvm-retrofit2`(library) with `gson` or `kotlinx_serialization`(serializationLibrary) support this option.")); - cliOptions.add(new CliOption(CodegenConstants.TYPE_INFO_DEFAULT_IMPLS, CodegenConstants.TYPE_INFO_DEFAULT_IMPLS_DESC)); + cliOptions.add(new CliOption(CodegenConstants.TYPE_INFO_DEFAULT_IMPLS, CodegenConstants.TYPE_INFO_DEFAULT_IMPLS_DESC).defaultValue("empty map")); cliOptions.add(CliOption.newBoolean(COMPANION_OBJECT, "Whether to generate companion objects in data classes, enabling companion extensions.", false)); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java index f7d9d7dce383..e71d86685661 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java @@ -339,7 +339,7 @@ public SpringCodegen() { optionalAcceptNullable)); cliOptions.add(CliOption.newBoolean(USE_DEDUCTION_FOR_ONE_OF_INTERFACES, USE_DEDUCTION_FOR_ONE_OF_INTERFACES_DESC, useDeductionForOneOfInterfaces)); - cliOptions.add(new CliOption(TYPE_INFO_DEFAULT_IMPLS, TYPE_INFO_DEFAULT_IMPLS_DESC)); + cliOptions.add(new CliOption(TYPE_INFO_DEFAULT_IMPLS, TYPE_INFO_DEFAULT_IMPLS_DESC).defaultValue("empty map")); cliOptions.add(CliOption.newString(SPRING_API_VERSION, "Value for 'version' attribute in @RequestMapping (for Spring 7 and above).")); cliOptions.add(CliOption.newString(USE_HTTP_SERVICE_PROXY_FACTORY_INTERFACES_CONFIGURATOR, "Generate HttpInterfacesAbstractConfigurator based on an HttpServiceProxyFactory instance (as opposed to a WebClient instance, when disabled) for generating Spring HTTP interfaces.") 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 ae5b2f24b05f..2f23b40ce5b8 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 @@ -1174,55 +1174,39 @@ public void testTypeInfoDefaultImplsConfigOptionEmitsDefaultImpl() throws IOExce TestUtils.assertFileNotContains(fruitModel, "defaultImpl = Apple::class"); } - @Test - public void testTypeInfoDefaultImplsOverridesXJacksonDefaultImpl() throws IOException { - // When both typeInfoDefaultImpls and x-jackson-default-impl are set for the same schema, - // typeInfoDefaultImpls takes precedence. - File output = Files.createTempDirectory("test").toFile(); - output.deleteOnExit(); - - final CodegenConfigurator configurator = new CodegenConfigurator() - .setGeneratorName("kotlin") - .setInputSpec("src/test/resources/3_0/spring/jackson-default-impl.yaml") - .setOutputDir(output.getAbsolutePath().replace("\\", "/")) - .addAdditionalProperty(CodegenConstants.SERIALIZATION_LIBRARY, "jackson") - // x-jackson-default-impl says Apple; override with Banana via config - .addAdditionalProperty(CodegenConstants.TYPE_INFO_DEFAULT_IMPLS, Map.of("Fruit", "Banana")); - - DefaultGenerator generator = new DefaultGenerator(); - generator.opts(configurator.toClientOptInput()).generate(); - - Path fruitModel = Paths.get(output.getAbsolutePath(), - "src/main/kotlin/org/openapitools/client/models/Fruit.kt"); - TestUtils.assertFileContains(fruitModel, "defaultImpl = Banana::class"); - TestUtils.assertFileNotContains(fruitModel, "defaultImpl = Apple::class"); - } - @Test public void testNoDefaultImplWhenNeitherSourceIsSet() throws IOException { // When neither typeInfoDefaultImpls nor x-jackson-default-impl is set, // the @JsonTypeInfo annotation must not include defaultImpl. + // Uses a spec with discriminator-based oneOf so @JsonTypeInfo is actually generated, + // making the negative assertion on defaultImpl meaningful. File output = Files.createTempDirectory("test").toFile(); output.deleteOnExit(); final CodegenConfigurator configurator = new CodegenConfigurator() .setGeneratorName("kotlin") - .setInputSpec("src/test/resources/3_0/petstore.yaml") + .setInputSpec("src/test/resources/3_0/oneof_polymorphism_and_inheritance.yaml") .setOutputDir(output.getAbsolutePath().replace("\\", "/")) .addAdditionalProperty(CodegenConstants.SERIALIZATION_LIBRARY, "jackson"); DefaultGenerator generator = new DefaultGenerator(); generator.opts(configurator.toClientOptInput()).generate(); - // No file should contain defaultImpl in a @JsonTypeInfo annotation + // The oneOf interface code path must be exercised (at least one @JsonTypeInfo emitted)... File modelsDir = Paths.get(output.getAbsolutePath(), "src/main/kotlin/org/openapitools/client/models").toFile(); - if (modelsDir.exists()) { - for (File modelFile : modelsDir.listFiles()) { - String content = Files.readString(modelFile.toPath()); - Assert.assertFalse(content.contains("defaultImpl"), - "Expected no 'defaultImpl' in " + modelFile.getName() + " but found it"); + Assert.assertTrue(modelsDir.exists(), "Expected generated models directory"); + boolean sawJsonTypeInfo = false; + for (File modelFile : modelsDir.listFiles()) { + String content = Files.readString(modelFile.toPath()); + if (content.contains("@JsonTypeInfo")) { + sawJsonTypeInfo = true; } + // ...but no model may include defaultImpl since neither source is set. + Assert.assertFalse(content.contains("defaultImpl"), + "Expected no 'defaultImpl' in " + modelFile.getName() + " but found it"); } + Assert.assertTrue(sawJsonTypeInfo, + "Expected at least one generated model with @JsonTypeInfo to exercise the code path"); } } From 9ae62a11b4ac68ec96a2cd028493f37ec493c22f Mon Sep 17 00:00:00 2001 From: Jachym Metlicka Date: Sat, 8 Aug 2026 01:04:12 +0200 Subject: [PATCH 15/23] updated samples --- .../.openapi-generator/FILES | 1 + .../.openapi-generator/VERSION | 2 +- .../restclient-jackson-default-impl/README.md | 2 +- .../build.gradle | 4 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../restclient-jackson-default-impl/pom.xml | 4 +- .../org/openapitools/client/ApiClient.java | 48 ++++++++++++++----- .../client/JavaTimeFormatter.java | 2 +- .../client/RFC3339DateFormat.java | 2 +- .../client/RFC3339InstantDeserializer.java | 2 +- .../client/RFC3339JavaTimeModule.java | 2 +- .../client/ServerConfiguration.java | 2 +- .../openapitools/client/ServerVariable.java | 2 +- .../org/openapitools/client/StringUtil.java | 2 +- .../openapitools/client/api/DefaultApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/Authentication.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../org/openapitools/client/model/Apple.java | 2 +- .../org/openapitools/client/model/Banana.java | 2 +- .../openapitools/client/model/Beverage.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../org/openapitools/client/model/Fruit.java | 2 +- .../org/openapitools/client/model/Soda.java | 2 +- .../org/openapitools/client/model/Water.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../README.md | 4 +- .../build.gradle | 10 ++-- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../resttemplate-springBoot4-jackson3/pom.xml | 2 +- .../.openapi-generator/VERSION | 2 +- .../pom.xml | 2 +- .../java/org/openapitools/api/AnimalsApi.java | 4 +- .../org/openapitools/api/BeveragesApi.java | 4 +- .../java/org/openapitools/api/FruitsApi.java | 4 +- .../java/org/openapitools/model/Animal.java | 2 +- .../java/org/openapitools/model/Apple.java | 2 +- .../java/org/openapitools/model/Banana.java | 2 +- .../java/org/openapitools/model/Beverage.java | 2 +- .../main/java/org/openapitools/model/Cat.java | 2 +- .../main/java/org/openapitools/model/Dog.java | 2 +- .../java/org/openapitools/model/Fruit.java | 2 +- .../java/org/openapitools/model/Soda.java | 2 +- .../java/org/openapitools/model/Water.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../pom.xml | 4 +- .../org/openapitools/RestConfiguration.java | 2 +- .../ValidationErrorProcessor.java | 2 +- .../java/org/openapitools/api/AnimalsApi.java | 2 +- .../api/AnimalsApiRoutesImpl.java | 2 +- .../openapitools/api/AnimalsApiValidator.java | 2 +- .../org/openapitools/api/BeveragesApi.java | 2 +- .../api/BeveragesApiRoutesImpl.java | 2 +- .../api/BeveragesApiValidator.java | 2 +- .../java/org/openapitools/api/FruitsApi.java | 2 +- .../openapitools/api/FruitsApiRoutesImpl.java | 2 +- .../openapitools/api/FruitsApiValidator.java | 2 +- .../java/org/openapitools/model/Animal.java | 2 +- .../java/org/openapitools/model/Apple.java | 2 +- .../java/org/openapitools/model/Banana.java | 2 +- .../java/org/openapitools/model/Beverage.java | 2 +- .../main/java/org/openapitools/model/Cat.java | 2 +- .../main/java/org/openapitools/model/Dog.java | 2 +- .../java/org/openapitools/model/Fruit.java | 2 +- .../java/org/openapitools/model/Soda.java | 2 +- .../java/org/openapitools/model/Water.java | 2 +- .../src/main/resources/application.properties | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin/org/openapitools/api/AnimalsApi.kt | 2 +- .../org/openapitools/api/BeveragesApi.kt | 2 +- .../kotlin/org/openapitools/api/FruitsApi.kt | 2 +- 74 files changed, 121 insertions(+), 94 deletions(-) diff --git a/samples/client/others/java/restclient-jackson-default-impl/.openapi-generator/FILES b/samples/client/others/java/restclient-jackson-default-impl/.openapi-generator/FILES index 8a3defa37c61..ba2c8c8392b4 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/.openapi-generator/FILES +++ b/samples/client/others/java/restclient-jackson-default-impl/.openapi-generator/FILES @@ -25,6 +25,7 @@ pom.xml settings.gradle src/main/AndroidManifest.xml src/main/java/org/openapitools/client/ApiClient.java +src/main/java/org/openapitools/client/ExceptionProvider.java src/main/java/org/openapitools/client/JavaTimeFormatter.java src/main/java/org/openapitools/client/RFC3339DateFormat.java src/main/java/org/openapitools/client/RFC3339InstantDeserializer.java diff --git a/samples/client/others/java/restclient-jackson-default-impl/.openapi-generator/VERSION b/samples/client/others/java/restclient-jackson-default-impl/.openapi-generator/VERSION index 186c33c96ed8..8fc8df61083a 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/.openapi-generator/VERSION +++ b/samples/client/others/java/restclient-jackson-default-impl/.openapi-generator/VERSION @@ -1 +1 @@ -7.24.0-SNAPSHOT +7.25.0-SNAPSHOT diff --git a/samples/client/others/java/restclient-jackson-default-impl/README.md b/samples/client/others/java/restclient-jackson-default-impl/README.md index ba82d69e06cd..b12c1f41b76a 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/README.md +++ b/samples/client/others/java/restclient-jackson-default-impl/README.md @@ -4,7 +4,7 @@ Jackson defaultImpl oneOf sample - API version: 0.0.1 -- Generator version: 7.24.0-SNAPSHOT +- Generator version: 7.25.0-SNAPSHOT Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). diff --git a/samples/client/others/java/restclient-jackson-default-impl/build.gradle b/samples/client/others/java/restclient-jackson-default-impl/build.gradle index fea236ea8ff0..fc44fe63eb83 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/build.gradle +++ b/samples/client/others/java/restclient-jackson-default-impl/build.gradle @@ -97,9 +97,9 @@ if(hasProperty('target') && target == 'android') { } ext { - jackson_version = "2.21.1" + jackson_version = "2.21.5" jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.10" + jackson_databind_nullable_version = "0.2.11" spring_web_version = "6.2.16" jakarta_annotation_version = "2.1.1" bean_validation_version = "3.1.1" diff --git a/samples/client/others/java/restclient-jackson-default-impl/gradle/wrapper/gradle-wrapper.properties b/samples/client/others/java/restclient-jackson-default-impl/gradle/wrapper/gradle-wrapper.properties index b82aa23a4f05..4f5eb9dcc0ef 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/gradle/wrapper/gradle-wrapper.properties +++ b/samples/client/others/java/restclient-jackson-default-impl/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.5-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/samples/client/others/java/restclient-jackson-default-impl/pom.xml b/samples/client/others/java/restclient-jackson-default-impl/pom.xml index d394f73b0528..79d27be5cb61 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/pom.xml +++ b/samples/client/others/java/restclient-jackson-default-impl/pom.xml @@ -264,11 +264,11 @@ UTF-8 6.2.16 - 2.21.1 + 2.21.5 2.1.1 2.21 - 0.2.10 + 0.2.11 3.1.1 5.10.2 diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ApiClient.java index 96611230936e..bcc76dde8b46 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ApiClient.java @@ -63,7 +63,7 @@ import org.openapitools.client.auth.HttpBearerAuth; import org.openapitools.client.auth.ApiKeyAuth; -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class ApiClient extends JavaTimeFormatter { public enum CollectionFormat { CSV(","), TSV("\t"), SSV(" "), PIPES("|"), MULTI(null); @@ -97,6 +97,13 @@ protected String collectionToString(Collection collection) { protected final ObjectMapper mapper; protected Map authentications; + /** + * The {@link ExceptionProvider} used to create exceptions thrown by this client. + * Defaults to {@link ExceptionProvider#DEFAULT}. Can be replaced to customize the exceptions + * thrown by this client by calling {@link #setExceptionProvider(ExceptionProvider)}. + */ + protected ExceptionProvider exceptionProvider = ExceptionProvider.DEFAULT; + public ApiClient() { this(null); @@ -240,6 +247,25 @@ public Map getAuthentications() { return authentications; } + /** + * Get the current {@link ExceptionProvider}. + * @return the exception provider + */ + public ExceptionProvider getExceptionProvider() { + return exceptionProvider; + } + + /** + * Set a custom {@link ExceptionProvider} to control which exception types are thrown + * by this client. + * @param exceptionProvider the exception provider + * @return this client instance + */ + public ApiClient setExceptionProvider(ExceptionProvider exceptionProvider) { + this.exceptionProvider = exceptionProvider; + return this; + } + /** * Get authentication for the given name. * @@ -261,7 +287,7 @@ public void setBearerToken(String bearerToken) { return; } } - throw new RuntimeException("No Bearer authentication configured!"); + throw exceptionProvider.bearerAuthException(); } /** @@ -276,7 +302,7 @@ public void setBearerToken(Supplier tokenSupplier) { return; } } - throw new RuntimeException("No Bearer authentication configured!"); + throw exceptionProvider.bearerAuthException(); } /** @@ -290,7 +316,7 @@ public void setUsername(String username) { return; } } - throw new RuntimeException("No HTTP basic authentication configured!"); + throw exceptionProvider.httpBasicAuthException(); } /** @@ -304,7 +330,7 @@ public void setPassword(String password) { return; } } - throw new RuntimeException("No HTTP basic authentication configured!"); + throw exceptionProvider.httpBasicAuthException(); } /** @@ -318,7 +344,7 @@ public void setApiKey(String apiKey) { return; } } - throw new RuntimeException("No API key authentication configured!"); + throw exceptionProvider.apiKeyAuthException(); } /** @@ -332,7 +358,7 @@ public void setApiKeyPrefix(String apiKeyPrefix) { return; } } - throw new RuntimeException("No API key authentication configured!"); + throw exceptionProvider.apiKeyAuthException(); } /** @@ -387,7 +413,7 @@ public Date parseDate(String str) { try { return dateFormat.parse(str); } catch (ParseException e) { - throw new RuntimeException(e); + throw exceptionProvider.dateTimeException(e); } } @@ -455,7 +481,7 @@ public MultiValueMap parameterToMultiValueMapJson(CollectionForm try { return parameterToMultiValueMap(collectionFormat, name, mapper.writeValueAsString(value)); } catch (JsonProcessingException e) { - throw new RuntimeException(e); + throw exceptionProvider.jacksonException(e); } } @@ -464,7 +490,7 @@ public MultiValueMap parameterToMultiValueMapJson(CollectionForm try { values.add(mapper.writeValueAsString(o)); } catch (JsonProcessingException e) { - throw new RuntimeException(e); + throw exceptionProvider.jacksonException(e); } } return parameterToMultiValueMap(collectionFormat, name, "[" + StringUtils.collectionToDelimitedString(values, collectionFormat.separator) + "]"); @@ -808,7 +834,7 @@ protected void updateParamsForAuth(String[] authNames, MultiValueMap extends InstantDeserializer { private static final long serialVersionUID = 1L; private final static boolean DEFAULT_NORMALIZE_ZONE_ID = JavaTimeFeature.NORMALIZE_DESERIALIZED_ZONE_ID.enabledByDefault(); diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/RFC3339JavaTimeModule.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/RFC3339JavaTimeModule.java index 489c864a7483..fe0bb9f03e84 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/RFC3339JavaTimeModule.java +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/RFC3339JavaTimeModule.java @@ -19,7 +19,7 @@ import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.databind.Module.SetupContext; -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class RFC3339JavaTimeModule extends SimpleModule { private static final long serialVersionUID = 1L; diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ServerConfiguration.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ServerConfiguration.java index 94f45f562f3d..5fc5898f6602 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ServerConfiguration.java +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ServerConfiguration.java @@ -18,7 +18,7 @@ /** * Representing a Server configuration. */ -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class ServerConfiguration { public String URL; public String description; diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ServerVariable.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ServerVariable.java index bcfe8a4185b6..ceb86d1b3a4c 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ServerVariable.java +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ServerVariable.java @@ -18,7 +18,7 @@ /** * Representing a Server Variable for server URL template substitution. */ -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class ServerVariable { public String description; public String defaultValue; diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/StringUtil.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/StringUtil.java index 70068d6f71d8..0dee3a49d407 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/StringUtil.java +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/StringUtil.java @@ -16,7 +16,7 @@ import java.util.Collection; import java.util.Iterator; -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class StringUtil { /** * Check if the given array contains the given value (with case-insensitive comparison). diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/api/DefaultApi.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/api/DefaultApi.java index 2e1c339911b4..eff0bd508420 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/api/DefaultApi.java +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/api/DefaultApi.java @@ -26,7 +26,7 @@ import org.springframework.web.client.RestClient.ResponseSpec; import org.springframework.web.client.RestClientResponseException; -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class DefaultApi { private ApiClient apiClient; diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/ApiKeyAuth.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/ApiKeyAuth.java index 1e3913752560..d67b5254811d 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/ApiKeyAuth.java +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/ApiKeyAuth.java @@ -16,7 +16,7 @@ import org.springframework.http.HttpHeaders; import org.springframework.util.MultiValueMap; -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class ApiKeyAuth implements Authentication { private final String location; private final String paramName; diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/Authentication.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/Authentication.java index 81714a1e507f..1f014a59da85 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/Authentication.java +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/Authentication.java @@ -16,7 +16,7 @@ import org.springframework.http.HttpHeaders; import org.springframework.util.MultiValueMap; -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public interface Authentication { /** * Apply authentication settings to header and / or query parameters. diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java index e437cb32c215..a54a4747c8ac 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java @@ -19,7 +19,7 @@ import org.springframework.http.HttpHeaders; import org.springframework.util.MultiValueMap; -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class HttpBasicAuth implements Authentication { private String username; private String password; diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/HttpBearerAuth.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/HttpBearerAuth.java index 9387122e50b6..beb1c5d166c2 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/HttpBearerAuth.java +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/auth/HttpBearerAuth.java @@ -18,7 +18,7 @@ import org.springframework.http.HttpHeaders; import org.springframework.util.MultiValueMap; -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class HttpBearerAuth implements Authentication { private final String scheme; private Supplier tokenSupplier; diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Animal.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Animal.java index 27cb27ea66d8..8a529674806e 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Animal.java +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Animal.java @@ -29,7 +29,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonIgnore; -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") @JsonIgnoreProperties( value = "", // ignore manually set , it will be automatically generated by Jackson during serialization allowSetters = true // allows the to be set during deserialization diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Apple.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Apple.java index b008fc16398a..9d63a0c12ad6 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Apple.java +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Apple.java @@ -34,7 +34,7 @@ Apple.JSON_PROPERTY_FRUIT_TYPE, Apple.JSON_PROPERTY_SEEDS }) -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Apple implements Fruit { public static final String JSON_PROPERTY_FRUIT_TYPE = "fruitType"; @jakarta.annotation.Nonnull diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Banana.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Banana.java index 64ff94b98b3a..eaaf9d1b4728 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Banana.java +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Banana.java @@ -34,7 +34,7 @@ Banana.JSON_PROPERTY_FRUIT_TYPE, Banana.JSON_PROPERTY_LENGTH }) -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Banana implements Fruit { public static final String JSON_PROPERTY_FRUIT_TYPE = "fruitType"; @jakarta.annotation.Nonnull diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Beverage.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Beverage.java index d7d0dcc2f304..bb871e978af8 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Beverage.java +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Beverage.java @@ -29,7 +29,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonIgnore; -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") @JsonIgnoreProperties( value = "beverageType", // ignore manually set beverageType, it will be automatically generated by Jackson during serialization allowSetters = true // allows the beverageType to be set during deserialization diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Cat.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Cat.java index 16191da7491f..3f4bef88ce43 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Cat.java +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Cat.java @@ -30,7 +30,7 @@ @JsonPropertyOrder({ Cat.JSON_PROPERTY_DECLAWED }) -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Cat implements Animal { public static final String JSON_PROPERTY_DECLAWED = "declawed"; @jakarta.annotation.Nullable diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Dog.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Dog.java index 0392d22fd70c..dd668d94ac83 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Dog.java +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Dog.java @@ -30,7 +30,7 @@ @JsonPropertyOrder({ Dog.JSON_PROPERTY_BARK }) -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Dog implements Animal { public static final String JSON_PROPERTY_BARK = "bark"; @jakarta.annotation.Nullable diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Fruit.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Fruit.java index 39eba6978a18..5b535d8f5651 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Fruit.java +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Fruit.java @@ -29,7 +29,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonIgnore; -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") @JsonIgnoreProperties( value = "fruitType", // ignore manually set fruitType, it will be automatically generated by Jackson during serialization allowSetters = true // allows the fruitType to be set during deserialization diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Soda.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Soda.java index 01ce757fe667..911ca94d7c75 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Soda.java +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Soda.java @@ -34,7 +34,7 @@ Soda.JSON_PROPERTY_BEVERAGE_TYPE, Soda.JSON_PROPERTY_SUGAR_GRAMS }) -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Soda implements Beverage { public static final String JSON_PROPERTY_BEVERAGE_TYPE = "beverageType"; @jakarta.annotation.Nonnull diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Water.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Water.java index b28836db5275..13fac34b6d14 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Water.java +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Water.java @@ -34,7 +34,7 @@ Water.JSON_PROPERTY_BEVERAGE_TYPE, Water.JSON_PROPERTY_SPARKLING }) -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Water implements Beverage { public static final String JSON_PROPERTY_BEVERAGE_TYPE = "beverageType"; @jakarta.annotation.Nonnull diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/.openapi-generator/VERSION b/samples/client/others/kotlin-oneof-jackson-default-impl/.openapi-generator/VERSION index 186c33c96ed8..8fc8df61083a 100644 --- a/samples/client/others/kotlin-oneof-jackson-default-impl/.openapi-generator/VERSION +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/.openapi-generator/VERSION @@ -1 +1 @@ -7.24.0-SNAPSHOT +7.25.0-SNAPSHOT diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/README.md b/samples/client/others/kotlin-oneof-jackson-default-impl/README.md index 3599419ac462..6c35694dccf1 100644 --- a/samples/client/others/kotlin-oneof-jackson-default-impl/README.md +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/README.md @@ -8,12 +8,12 @@ This API client was generated by the [OpenAPI Generator](https://openapi-generat - API version: 0.0.1 - Package version: -- Generator version: 7.24.0-SNAPSHOT +- Generator version: 7.25.0-SNAPSHOT - Build package: org.openapitools.codegen.languages.KotlinClientCodegen ## Requires -* Kotlin 2.2.20 +* Kotlin 2.4.0 * Gradle 8.14 ## Build diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/build.gradle b/samples/client/others/kotlin-oneof-jackson-default-impl/build.gradle index 9806188d8a65..ed78a5564b4f 100644 --- a/samples/client/others/kotlin-oneof-jackson-default-impl/build.gradle +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/build.gradle @@ -2,12 +2,12 @@ group 'org.openapitools' version '1.0.0' wrapper { - gradleVersion = '8.14.3' + gradleVersion = '8.14.5' distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '2.2.20' + ext.kotlin_version = '2.4.0' ext.retrofitVersion = '3.0.0' ext.spotless_version = "7.2.1" @@ -56,9 +56,9 @@ test { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - implementation "com.fasterxml.jackson.module:jackson-module-kotlin:2.20.0" - implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.20.0" - implementation "com.squareup.okhttp3:logging-interceptor:5.1.0" + implementation "com.fasterxml.jackson.module:jackson-module-kotlin:2.22.1" + implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.22.1" + implementation "com.squareup.okhttp3:logging-interceptor:5.4.0" implementation "com.squareup.retrofit2:retrofit:$retrofitVersion" implementation "com.squareup.retrofit2:converter-jackson:$retrofitVersion" implementation "com.squareup.retrofit2:converter-scalars:$retrofitVersion" diff --git a/samples/client/others/kotlin-oneof-jackson-default-impl/gradle/wrapper/gradle-wrapper.properties b/samples/client/others/kotlin-oneof-jackson-default-impl/gradle/wrapper/gradle-wrapper.properties index 7705927e949f..70fe02a53692 100644 --- a/samples/client/others/kotlin-oneof-jackson-default-impl/gradle/wrapper/gradle-wrapper.properties +++ b/samples/client/others/kotlin-oneof-jackson-default-impl/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.5-all.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME 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 diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/.openapi-generator/VERSION b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/.openapi-generator/VERSION index 186c33c96ed8..8fc8df61083a 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/.openapi-generator/VERSION +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/.openapi-generator/VERSION @@ -1 +1 @@ -7.24.0-SNAPSHOT +7.25.0-SNAPSHOT diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/pom.xml b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/pom.xml index 7ba57148eecb..3a2991afc2c7 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/pom.xml +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/pom.xml @@ -58,7 +58,7 @@ org.openapitools jackson-databind-nullable - 0.2.10 + 0.2.11 diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApi.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApi.java index 9b962b30983a..3d60218875a0 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApi.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApi.java @@ -1,5 +1,5 @@ /* - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.25.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ @@ -33,7 +33,7 @@ import java.util.Optional; import jakarta.annotation.Generated; -@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") @Validated @Tag(name = "animals", description = "the animals API") public interface AnimalsApi { diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApi.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApi.java index f5376d56850b..8f4ad1808a59 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApi.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApi.java @@ -1,5 +1,5 @@ /* - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.25.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ @@ -33,7 +33,7 @@ import java.util.Optional; import jakarta.annotation.Generated; -@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") @Validated @Tag(name = "beverages", description = "the beverages API") public interface BeveragesApi { diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApi.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApi.java index ad9a3505f602..13ce39785b11 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApi.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApi.java @@ -1,5 +1,5 @@ /* - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.25.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ @@ -33,7 +33,7 @@ import java.util.Optional; import jakarta.annotation.Generated; -@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") @Validated @Tag(name = "fruits", description = "the fruits API") public interface FruitsApi { diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java index d4adb52b5896..553babbdf18f 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java @@ -27,6 +27,6 @@ @JsonSubTypes.Type(value = Dog.class), @JsonSubTypes.Type(value = Cat.class) }) -@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public interface Animal { } diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java index 3200c2d59aa3..afaf49b54388 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java @@ -23,7 +23,7 @@ * Apple */ -@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Apple implements Fruit { private String fruitType; diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java index 9f02d8a8bf42..1233862b3333 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java @@ -23,7 +23,7 @@ * Banana */ -@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Banana implements Fruit { private String fruitType; diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java index a657f712d2af..b2b3468a06a0 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java @@ -32,7 +32,7 @@ @JsonSubTypes.Type(value = Water.class, name = "WATER") }) -@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public interface Beverage { public String getBeverageType(); } diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java index 58304d1342ea..9c8ba78f46c0 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java @@ -20,7 +20,7 @@ * Cat */ -@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Cat implements Animal { @JsonInclude(JsonInclude.Include.NON_NULL) diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java index 839d1f59dd89..6474eab33c57 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java @@ -20,7 +20,7 @@ * Dog */ -@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Dog implements Animal { @JsonInclude(JsonInclude.Include.NON_NULL) diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java index 1727ba18074c..0efb0956e4b2 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java @@ -32,7 +32,7 @@ @JsonSubTypes.Type(value = Banana.class, name = "BANANA") }) -@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public interface Fruit { public String getFruitType(); } diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java index e76a081d1488..0a0ff5b8451b 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java @@ -23,7 +23,7 @@ * Soda */ -@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Soda implements Beverage { private String beverageType; diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java index 86b262803f20..3167aa81d140 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java @@ -23,7 +23,7 @@ * Water */ -@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Water implements Beverage { private String beverageType; diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/.openapi-generator/VERSION b/samples/server/petstore/java-camel-oneof-jackson-default-impl/.openapi-generator/VERSION index 186c33c96ed8..8fc8df61083a 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/.openapi-generator/VERSION +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/.openapi-generator/VERSION @@ -1 +1 @@ -7.24.0-SNAPSHOT +7.25.0-SNAPSHOT diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/pom.xml b/samples/server/petstore/java-camel-oneof-jackson-default-impl/pom.xml index df123fafd2e2..2f7c6adb2e8f 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/pom.xml +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/pom.xml @@ -1,6 +1,6 @@ @@ -116,7 +116,7 @@ Do not edit the class manually. org.openapitools jackson-databind-nullable - 0.2.10 + 0.2.11 io.swagger.core.v3 diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/RestConfiguration.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/RestConfiguration.java index 20e437bf84f8..fcae55f5d9a8 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/RestConfiguration.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/RestConfiguration.java @@ -1,5 +1,5 @@ /* -* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.25.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/ValidationErrorProcessor.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/ValidationErrorProcessor.java index dcc031356ca6..025309f324e6 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/ValidationErrorProcessor.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/ValidationErrorProcessor.java @@ -1,5 +1,5 @@ /* -* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.25.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApi.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApi.java index df13701300c5..f5734cdb6b45 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApi.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApi.java @@ -1,5 +1,5 @@ /* -* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.25.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApiRoutesImpl.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApiRoutesImpl.java index b9821add903f..fac967846a7b 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApiRoutesImpl.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApiRoutesImpl.java @@ -1,5 +1,5 @@ /* -* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.25.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApiValidator.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApiValidator.java index 02796c63ab5e..b1b2434fa5a0 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApiValidator.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/AnimalsApiValidator.java @@ -1,5 +1,5 @@ /* -* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.25.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApi.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApi.java index 9244ffd6a0dc..809059817bbd 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApi.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApi.java @@ -1,5 +1,5 @@ /* -* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.25.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApiRoutesImpl.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApiRoutesImpl.java index 79c7ff744b03..4e22f5095080 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApiRoutesImpl.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApiRoutesImpl.java @@ -1,5 +1,5 @@ /* -* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.25.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApiValidator.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApiValidator.java index 2a64f62c219d..738a1e05f0ca 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApiValidator.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/BeveragesApiValidator.java @@ -1,5 +1,5 @@ /* -* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.25.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApi.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApi.java index 18714ea03de9..afd432a2de01 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApi.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApi.java @@ -1,5 +1,5 @@ /* -* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.25.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApiRoutesImpl.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApiRoutesImpl.java index 1a83e420128f..9f8b1d685432 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApiRoutesImpl.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApiRoutesImpl.java @@ -1,5 +1,5 @@ /* -* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.25.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApiValidator.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApiValidator.java index 309dddb933fb..73a8642330fc 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApiValidator.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/api/FruitsApiValidator.java @@ -1,5 +1,5 @@ /* -* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.25.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java index 506d1e12630b..7c4fe901190c 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java @@ -27,6 +27,6 @@ @JsonSubTypes.Type(value = Dog.class), @JsonSubTypes.Type(value = Cat.class) }) -@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public interface Animal { } diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java index 4747ea4ae427..bb102e2d106e 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java @@ -23,7 +23,7 @@ * Apple */ -@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Apple implements Fruit { private String fruitType; diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java index 987e6988c5a5..5bcc23a7d9a7 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java @@ -23,7 +23,7 @@ * Banana */ -@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Banana implements Fruit { private String fruitType; diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java index 5f4607e14c08..fa80f78bf70c 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java @@ -32,7 +32,7 @@ @JsonSubTypes.Type(value = Water.class, name = "WATER") }) -@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public interface Beverage { public String getBeverageType(); } diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java index f731b90b4db9..906c2c26a673 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java @@ -20,7 +20,7 @@ * Cat */ -@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Cat implements Animal { private Boolean declawed; diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java index 2e3f5e6230c2..c3e63d9423bb 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java @@ -20,7 +20,7 @@ * Dog */ -@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Dog implements Animal { private Boolean bark; diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java index 66dcc1754e4b..05a2c003939d 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java @@ -32,7 +32,7 @@ @JsonSubTypes.Type(value = Banana.class, name = "BANANA") }) -@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public interface Fruit { public String getFruitType(); } diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java index 862d73d25096..4d62be02b220 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java @@ -23,7 +23,7 @@ * Soda */ -@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Soda implements Beverage { private String beverageType; diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java index f1920b6d1524..d1861ddf7f41 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java @@ -23,7 +23,7 @@ * Water */ -@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.24.0-SNAPSHOT") +@Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Water implements Beverage { private String beverageType; diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/resources/application.properties b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/resources/application.properties index 565cb337a76a..4d2536c758bb 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/resources/application.properties +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/resources/application.properties @@ -1,4 +1,4 @@ -# NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). +# NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.25.0-SNAPSHOT). # https://openapi-generator.tech # Do not edit the class manually. diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/.openapi-generator/VERSION b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/.openapi-generator/VERSION index 186c33c96ed8..8fc8df61083a 100644 --- a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/.openapi-generator/VERSION +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/.openapi-generator/VERSION @@ -1 +1 @@ -7.24.0-SNAPSHOT +7.25.0-SNAPSHOT diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/AnimalsApi.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/AnimalsApi.kt index fdc9443ea5c4..5594e926b19d 100644 --- a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/AnimalsApi.kt +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/AnimalsApi.kt @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.25.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/BeveragesApi.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/BeveragesApi.kt index c77d291cec1f..d3d549355f64 100644 --- a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/BeveragesApi.kt +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/BeveragesApi.kt @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.25.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/FruitsApi.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/FruitsApi.kt index 877d5654abb2..554902f5e7dd 100644 --- a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/FruitsApi.kt +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/api/FruitsApi.kt @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.24.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.25.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ From fb5132ee13285969a763f89fa89d158a788810c5 Mon Sep 17 00:00:00 2001 From: Jachym Metlicka Date: Sat, 8 Aug 2026 01:27:06 +0200 Subject: [PATCH 16/23] updated samples --- .../client/ExceptionProvider.java | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ExceptionProvider.java diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ExceptionProvider.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ExceptionProvider.java new file mode 100644 index 000000000000..d6147533b9f6 --- /dev/null +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/ExceptionProvider.java @@ -0,0 +1,80 @@ +/* + * Jackson defaultImpl oneOf sample + * Sample spec exercising Jackson @JsonTypeInfo(defaultImpl = ...) on oneOf interfaces, driven by the x-jackson-default-impl vendor extension (spec-based) and the typeInfoDefaultImpls generator option (config-based). + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client; + +import org.springframework.web.client.RestClientException; +import java.text.ParseException; + +/** + * Extension point for customizing exceptions thrown by the generated API client. + *

+ * The default implementation throws {@link RuntimeException}. To use custom exception + * types, implement this interface and pass the instance to + * {@link ApiClient#setExceptionProvider(ExceptionProvider)}. + *

+ *
{@code
+ * apiClient.setExceptionProvider(new ExceptionProvider() {
+ *     public RuntimeException bearerAuthException() {
+ *         return new MyAuthException("No Bearer authentication configured!");
+ *     }
+ * });
+ * }
+ */ +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") +public interface ExceptionProvider { + + /** Returns an exception indicating that no Bearer authentication is configured. */ + default RuntimeException bearerAuthException() { + return new RuntimeException("No Bearer authentication configured!"); + } + + /** Returns an exception indicating that no HTTP basic authentication is configured. */ + default RuntimeException httpBasicAuthException() { + return new RuntimeException("No HTTP basic authentication configured!"); + } + + /** Returns an exception indicating that no API key authentication is configured. */ + default RuntimeException apiKeyAuthException() { + return new RuntimeException("No API key authentication configured!"); + } + + /** Returns an exception indicating that no OAuth2 authentication is configured. */ + default RuntimeException oAuth2Exception() { + return new RuntimeException("No OAuth2 authentication configured!"); + } + + /** Wraps a date/time parse exception. */ + default RuntimeException dateTimeException(ParseException e) { + return new RuntimeException(e); + } + + /** Wraps a Jackson serialization/deserialization exception. */ + default RuntimeException jacksonException(Exception e) { + return new RuntimeException(e); + } + + /** + * Returns an exception indicating that the requested authentication scheme is not configured. + * + * @param authName the name of the authentication scheme that could not be found + * @return a {@link RestClientException} describing the missing authentication + */ + default RestClientException undefinedAuthenticationException(String authName) { + return new RestClientException("Authentication undefined: " + authName); + } + + /** The default {@link ExceptionProvider} instance. */ + ExceptionProvider DEFAULT = new ExceptionProvider() {}; + +} \ No newline at end of file From 8d5365a8687643cda3d470ef4340112629f7c471 Mon Sep 17 00:00:00 2001 From: Jachym Metlicka Date: Thu, 13 Aug 2026 20:33:27 +0200 Subject: [PATCH 17/23] Update samples and documentation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../build.gradle | 6 ++-- .../git_push.sh | 31 +++++++++---------- .../resttemplate-springBoot4-jackson3/pom.xml | 2 +- .../java/org/openapitools/model/Animal.java | 1 - .../java/org/openapitools/model/Apple.java | 2 -- .../java/org/openapitools/model/Banana.java | 2 -- .../java/org/openapitools/model/Beverage.java | 1 - .../main/java/org/openapitools/model/Cat.java | 2 -- .../main/java/org/openapitools/model/Dog.java | 2 -- .../java/org/openapitools/model/Fruit.java | 1 - .../java/org/openapitools/model/Soda.java | 2 -- .../java/org/openapitools/model/Water.java | 2 -- .../java/org/openapitools/model/Animal.java | 1 - .../java/org/openapitools/model/Apple.java | 1 - .../java/org/openapitools/model/Banana.java | 1 - .../java/org/openapitools/model/Beverage.java | 1 - .../main/java/org/openapitools/model/Cat.java | 1 - .../main/java/org/openapitools/model/Dog.java | 1 - .../java/org/openapitools/model/Fruit.java | 1 - .../java/org/openapitools/model/Soda.java | 1 - .../java/org/openapitools/model/Water.java | 1 - .../kotlin/org/openapitools/model/Animal.kt | 3 -- .../kotlin/org/openapitools/model/Apple.kt | 5 --- .../kotlin/org/openapitools/model/Banana.kt | 5 --- .../kotlin/org/openapitools/model/Beverage.kt | 3 -- .../main/kotlin/org/openapitools/model/Cat.kt | 5 --- .../main/kotlin/org/openapitools/model/Dog.kt | 5 --- .../kotlin/org/openapitools/model/Fruit.kt | 3 -- .../kotlin/org/openapitools/model/Soda.kt | 5 --- .../kotlin/org/openapitools/model/Water.kt | 5 --- 30 files changed, 19 insertions(+), 83 deletions(-) diff --git a/samples/client/others/java/restclient-jackson-default-impl/build.gradle b/samples/client/others/java/restclient-jackson-default-impl/build.gradle index fc44fe63eb83..2f58c32cfc94 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/build.gradle +++ b/samples/client/others/java/restclient-jackson-default-impl/build.gradle @@ -78,8 +78,10 @@ if(hasProperty('target') && target == 'android') { apply plugin: 'java' apply plugin: 'maven-publish' - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } publishing { publications { diff --git a/samples/client/others/java/restclient-jackson-default-impl/git_push.sh b/samples/client/others/java/restclient-jackson-default-impl/git_push.sh index f53a75d4fabe..a35991cd51a1 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/git_push.sh +++ b/samples/client/others/java/restclient-jackson-default-impl/git_push.sh @@ -8,24 +8,24 @@ git_repo_id=$2 release_note=$3 git_host=$4 -if [ "$git_host" = "" ]; then +if [ -z "${git_host}" ]; then git_host="github.com" - echo "[INFO] No command line input provided. Set \$git_host to $git_host" + echo "[INFO] No command line input provided. Set \${git_host} to ${git_host}" fi -if [ "$git_user_id" = "" ]; then +if [ -z "${git_user_id}" ]; then git_user_id="GIT_USER_ID" - echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" + echo "[INFO] No command line input provided. Set \${git_user_id} to ${git_user_id}" fi -if [ "$git_repo_id" = "" ]; then +if [ -z "${git_repo_id}" ]; then git_repo_id="GIT_REPO_ID" - echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" + echo "[INFO] No command line input provided. Set \${git_repo_id} to ${git_repo_id}" fi -if [ "$release_note" = "" ]; then +if [ -z "${release_note}" ]; then release_note="Minor update" - echo "[INFO] No command line input provided. Set \$release_note to $release_note" + echo "[INFO] No command line input provided. Set \${release_note} to ${release_note}" fi # Initialize the local directory as a Git repository @@ -35,19 +35,16 @@ git init git add . # Commits the tracked changes and prepares them to be pushed to a remote repository. -git commit -m "$release_note" +git commit -m "${release_note}" # Sets the new remote -git_remote=$(git remote) -if [ "$git_remote" = "" ]; then # git remote not defined - - if [ "$GIT_TOKEN" = "" ]; then - echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." - git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git +if [ -z "$(git remote)" ]; then # git remote not defined + if [ -z "${GIT_TOKEN:-}" ]; then + echo "[INFO] \${GIT_TOKEN} (environment variable) is not set. Using the git credential in your environment." + git remote add origin "https://${git_host}/${git_user_id}/${git_repo_id}.git" else - git remote add origin https://${git_user_id}:"${GIT_TOKEN}"@${git_host}/${git_user_id}/${git_repo_id}.git + git remote add origin "https://${git_user_id}:${GIT_TOKEN}@${git_host}/${git_user_id}/${git_repo_id}.git" fi - fi git pull origin master diff --git a/samples/client/petstore/java/resttemplate-springBoot4-jackson3/pom.xml b/samples/client/petstore/java/resttemplate-springBoot4-jackson3/pom.xml index 859141904ec9..b5c5141bdd3d 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.5 + 7.0.8 3.1.5 3.0.0 diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java index 553babbdf18f..53e3c92af3ef 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java @@ -2,7 +2,6 @@ import java.net.URI; import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import org.openapitools.model.Cat; diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java index afaf49b54388..d12f4de10fec 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java @@ -2,7 +2,6 @@ import java.net.URI; import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import org.springframework.lang.Nullable; @@ -28,7 +27,6 @@ public class Apple implements Fruit { private String fruitType; - @JsonInclude(JsonInclude.Include.NON_NULL) private @Nullable Integer seeds; public Apple() { diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java index 1233862b3333..7210e1bcabd0 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java @@ -2,7 +2,6 @@ import java.net.URI; import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import org.springframework.lang.Nullable; @@ -28,7 +27,6 @@ public class Banana implements Fruit { private String fruitType; - @JsonInclude(JsonInclude.Include.NON_NULL) private @Nullable Integer length; public Banana() { diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java index b2b3468a06a0..16f89d8cc091 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java @@ -3,7 +3,6 @@ import java.net.URI; import java.util.Objects; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonSubTypes; diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java index 9c8ba78f46c0..11730ebb0153 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java @@ -2,7 +2,6 @@ import java.net.URI; import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import org.springframework.lang.Nullable; @@ -23,7 +22,6 @@ @Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Cat implements Animal { - @JsonInclude(JsonInclude.Include.NON_NULL) private @Nullable Boolean declawed; public Cat declawed(@Nullable Boolean declawed) { diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java index 6474eab33c57..9e3c0ce9d02d 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java @@ -2,7 +2,6 @@ import java.net.URI; import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import org.springframework.lang.Nullable; @@ -23,7 +22,6 @@ @Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Dog implements Animal { - @JsonInclude(JsonInclude.Include.NON_NULL) private @Nullable Boolean bark; public Dog bark(@Nullable Boolean bark) { diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java index 0efb0956e4b2..7970debffcce 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java @@ -3,7 +3,6 @@ import java.net.URI; import java.util.Objects; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonSubTypes; diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java index 0a0ff5b8451b..e28d92b9cf86 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java @@ -2,7 +2,6 @@ import java.net.URI; import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import org.springframework.lang.Nullable; @@ -28,7 +27,6 @@ public class Soda implements Beverage { private String beverageType; - @JsonInclude(JsonInclude.Include.NON_NULL) private @Nullable Integer sugarGrams; public Soda() { diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java index 3167aa81d140..b60fe261411b 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java @@ -2,7 +2,6 @@ import java.net.URI; import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import org.springframework.lang.Nullable; @@ -28,7 +27,6 @@ public class Water implements Beverage { private String beverageType; - @JsonInclude(JsonInclude.Include.NON_NULL) private @Nullable Boolean sparkling; public Water() { diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java index 7c4fe901190c..b410f8e9a07a 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java @@ -2,7 +2,6 @@ import java.net.URI; import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import org.openapitools.model.Cat; diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java index bb102e2d106e..ed44f50c1097 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java @@ -2,7 +2,6 @@ import java.net.URI; import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java index 5bcc23a7d9a7..ee6780722ffa 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java @@ -2,7 +2,6 @@ import java.net.URI; import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java index fa80f78bf70c..c1590d26b563 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java @@ -3,7 +3,6 @@ import java.net.URI; import java.util.Objects; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonSubTypes; diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java index 906c2c26a673..ddc13e360cb9 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java @@ -2,7 +2,6 @@ import java.net.URI; import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import org.openapitools.jackson.nullable.JsonNullable; diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java index c3e63d9423bb..215dc41d74d5 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java @@ -2,7 +2,6 @@ import java.net.URI; import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import org.openapitools.jackson.nullable.JsonNullable; diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java index 05a2c003939d..9336af212fd9 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java @@ -3,7 +3,6 @@ import java.net.URI; import java.util.Objects; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonSubTypes; diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java index 4d62be02b220..de367fddbd03 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java @@ -2,7 +2,6 @@ import java.net.URI; import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java index d1861ddf7f41..14faf4537d55 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java @@ -2,7 +2,6 @@ import java.net.URI; import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Animal.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Animal.kt index 36bfa5093b32..7c3971dd4b73 100644 --- a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Animal.kt +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Animal.kt @@ -1,10 +1,7 @@ package org.openapitools.model import java.util.Objects -import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.annotation.JsonSetter -import com.fasterxml.jackson.annotation.Nulls import org.openapitools.model.Cat import org.openapitools.model.Dog import com.fasterxml.jackson.annotation.JsonSubTypes diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Apple.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Apple.kt index 23644e5eda59..2234acaf204e 100644 --- a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Apple.kt +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Apple.kt @@ -1,10 +1,7 @@ package org.openapitools.model import java.util.Objects -import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.annotation.JsonSetter -import com.fasterxml.jackson.annotation.Nulls import com.fasterxml.jackson.annotation.JsonIgnoreProperties import com.fasterxml.jackson.annotation.JsonSubTypes import com.fasterxml.jackson.annotation.JsonTypeInfo @@ -28,8 +25,6 @@ data class Apple( @param:JsonProperty("fruitType") @get:JsonProperty("fruitType", required = true) override val fruitType: kotlin.String = "APPLE", - @field:JsonInclude(JsonInclude.Include.NON_NULL) - @field:JsonSetter(nulls = Nulls.SKIP) @param:JsonProperty("seeds") @get:JsonProperty("seeds") val seeds: kotlin.Int? = null ) : Fruit { diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Banana.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Banana.kt index 6f1b63722858..dabfc55953df 100644 --- a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Banana.kt +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Banana.kt @@ -1,10 +1,7 @@ package org.openapitools.model import java.util.Objects -import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.annotation.JsonSetter -import com.fasterxml.jackson.annotation.Nulls import com.fasterxml.jackson.annotation.JsonIgnoreProperties import com.fasterxml.jackson.annotation.JsonSubTypes import com.fasterxml.jackson.annotation.JsonTypeInfo @@ -28,8 +25,6 @@ data class Banana( @param:JsonProperty("fruitType") @get:JsonProperty("fruitType", required = true) override val fruitType: kotlin.String = "BANANA", - @field:JsonInclude(JsonInclude.Include.NON_NULL) - @field:JsonSetter(nulls = Nulls.SKIP) @param:JsonProperty("length") @get:JsonProperty("length") val length: kotlin.Int? = null ) : Fruit { diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Beverage.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Beverage.kt index 51617977efd8..ded07da74cf1 100644 --- a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Beverage.kt +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Beverage.kt @@ -2,12 +2,9 @@ package org.openapitools.model import java.util.Objects import com.fasterxml.jackson.annotation.JsonIgnoreProperties -import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.annotation.JsonSetter import com.fasterxml.jackson.annotation.JsonSubTypes import com.fasterxml.jackson.annotation.JsonTypeInfo -import com.fasterxml.jackson.annotation.Nulls import org.openapitools.model.Soda import org.openapitools.model.Water import jakarta.validation.constraints.DecimalMax diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Cat.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Cat.kt index 59ee6e3977b5..e67c40d658f2 100644 --- a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Cat.kt +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Cat.kt @@ -1,10 +1,7 @@ package org.openapitools.model import java.util.Objects -import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.annotation.JsonSetter -import com.fasterxml.jackson.annotation.Nulls import jakarta.validation.constraints.DecimalMax import jakarta.validation.constraints.DecimalMin import jakarta.validation.constraints.Email @@ -21,8 +18,6 @@ import jakarta.validation.Valid */ data class Cat( - @field:JsonInclude(JsonInclude.Include.NON_NULL) - @field:JsonSetter(nulls = Nulls.SKIP) @param:JsonProperty("declawed") @get:JsonProperty("declawed") val declawed: kotlin.Boolean? = null ) : Animal { diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Dog.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Dog.kt index 69603f0779cf..6c24acfdd063 100644 --- a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Dog.kt +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Dog.kt @@ -1,10 +1,7 @@ package org.openapitools.model import java.util.Objects -import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.annotation.JsonSetter -import com.fasterxml.jackson.annotation.Nulls import jakarta.validation.constraints.DecimalMax import jakarta.validation.constraints.DecimalMin import jakarta.validation.constraints.Email @@ -21,8 +18,6 @@ import jakarta.validation.Valid */ data class Dog( - @field:JsonInclude(JsonInclude.Include.NON_NULL) - @field:JsonSetter(nulls = Nulls.SKIP) @param:JsonProperty("bark") @get:JsonProperty("bark") val bark: kotlin.Boolean? = null ) : Animal { diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Fruit.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Fruit.kt index 53968a634b29..7e74c911b20d 100644 --- a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Fruit.kt +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Fruit.kt @@ -2,12 +2,9 @@ package org.openapitools.model import java.util.Objects import com.fasterxml.jackson.annotation.JsonIgnoreProperties -import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.annotation.JsonSetter import com.fasterxml.jackson.annotation.JsonSubTypes import com.fasterxml.jackson.annotation.JsonTypeInfo -import com.fasterxml.jackson.annotation.Nulls import org.openapitools.model.Apple import org.openapitools.model.Banana import jakarta.validation.constraints.DecimalMax diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Soda.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Soda.kt index 95e9463a8718..c0772a9c8e08 100644 --- a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Soda.kt +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Soda.kt @@ -1,10 +1,7 @@ package org.openapitools.model import java.util.Objects -import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.annotation.JsonSetter -import com.fasterxml.jackson.annotation.Nulls import com.fasterxml.jackson.annotation.JsonIgnoreProperties import com.fasterxml.jackson.annotation.JsonSubTypes import com.fasterxml.jackson.annotation.JsonTypeInfo @@ -28,8 +25,6 @@ data class Soda( @param:JsonProperty("beverageType") @get:JsonProperty("beverageType", required = true) override val beverageType: kotlin.String = "SODA", - @field:JsonInclude(JsonInclude.Include.NON_NULL) - @field:JsonSetter(nulls = Nulls.SKIP) @param:JsonProperty("sugarGrams") @get:JsonProperty("sugarGrams") val sugarGrams: kotlin.Int? = null ) : Beverage { diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Water.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Water.kt index 51c30818d206..c5438b2ad9ab 100644 --- a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Water.kt +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Water.kt @@ -1,10 +1,7 @@ package org.openapitools.model import java.util.Objects -import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.annotation.JsonSetter -import com.fasterxml.jackson.annotation.Nulls import com.fasterxml.jackson.annotation.JsonIgnoreProperties import com.fasterxml.jackson.annotation.JsonSubTypes import com.fasterxml.jackson.annotation.JsonTypeInfo @@ -28,8 +25,6 @@ data class Water( @param:JsonProperty("beverageType") @get:JsonProperty("beverageType", required = true) override val beverageType: kotlin.String = "WATER", - @field:JsonInclude(JsonInclude.Include.NON_NULL) - @field:JsonSetter(nulls = Nulls.SKIP) @param:JsonProperty("sparkling") @get:JsonProperty("sparkling") val sparkling: kotlin.Boolean? = null ) : Beverage { From 092fb2380265cad9668c9268111e8c85dd832de1 Mon Sep 17 00:00:00 2001 From: Jachym Metlicka Date: Wed, 19 Aug 2026 19:29:12 +0200 Subject: [PATCH 18/23] Fix Jackson defaultImpl oneOf resolution and related issues - Extract shared JacksonDefaultImplResolver used by AbstractJavaCodegen, KotlinClientCodegen and KotlinSpringServerCodegen (dedup resolution logic) - Preserve external/FQN class names for defaultImpl (add import, emit simple name) instead of mangling them through toModelName - JavaMicroprofileServerCodegen: strip x-jackson-default-impl before model post-processing so the vendor extension no longer leaks defaultImpl - Guard typeInfoAnnotation with discriminator in Java/oneof_interface.mustache so deduction-based oneOf keeps defaultImpl and drops the bogus property="" - Correct kotlin-client typeInfoDefaultImpls description (discriminator/jackson only) and regenerate docs/generators/kotlin.md - Move ext{} version block before the android branch in Java build.gradle templates (base + 12 libraries) to fix -Ptarget=android config failure - Default stricter generateJsonInclude/JsonSetterNulls options on Spring-family jackson-default-impl configs and render them in java-camel-server pojo - Add useDeductionForOneOfInterfaces to the restclient sample config - Regenerate all affected samples Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- ...java-camel-oneof-jackson-default-impl.yaml | 2 + .../java-restclient-jackson-default-impl.yaml | 1 + ...lin-spring-oneof-jackson-default-impl.yaml | 2 + ...pring-boot-oneof-jackson-default-impl.yaml | 2 + docs/generators/kotlin.md | 2 +- .../languages/AbstractJavaCodegen.java | 26 +---- .../languages/JacksonDefaultImplResolver.java | 99 +++++++++++++++++++ .../JavaMicroprofileServerCodegen.java | 21 +++- .../languages/KotlinClientCodegen.java | 33 +++---- .../languages/KotlinSpringServerCodegen.java | 26 +---- .../main/resources/Java/build.gradle.mustache | 40 ++++---- .../apache-httpclient/build.gradle.mustache | 46 ++++----- .../libraries/feign/build.gradle.mustache | 40 ++++---- .../google-api-client/build.gradle.mustache | 30 +++--- .../libraries/jersey2/build.gradle.mustache | 60 +++++------ .../libraries/jersey3/build.gradle.mustache | 62 ++++++------ .../okhttp-gson/build.gradle.mustache | 26 ++--- .../rest-assured/build.gradle.mustache | 54 +++++----- .../restclient/build.gradle.mustache | 60 +++++------ .../libraries/resteasy/build.gradle.mustache | 28 +++--- .../resttemplate/build.gradle.mustache | 76 +++++++------- .../libraries/retrofit2/build.gradle.mustache | 60 +++++------ .../libraries/webclient/build.gradle.mustache | 94 +++++++++--------- .../resources/Java/oneof_interface.mustache | 2 +- .../resources/java-camel-server/pojo.mustache | 11 +++ .../java/apache-httpclient/build.gradle | 24 ++--- .../echo_api/java/feign-gson/build.gradle | 20 ++-- .../build.gradle | 8 +- .../echo_api/java/okhttp-gson/build.gradle | 8 +- .../echo_api/java/restclient/build.gradle | 22 ++--- .../echo_api/java/resteasy/build.gradle | 24 ++--- .../echo_api/java/resttemplate/build.gradle | 22 ++--- .../java/jersey2-oneOf-Mixed/build.gradle | 20 ++-- .../jersey2-oneOf-duplicates/build.gradle | 20 ++-- .../java/okhttp-gson-oneOf-array/build.gradle | 10 +- .../java/okhttp-gson-oneOf/build.gradle | 8 +- .../java/okhttp-gson-streaming/build.gradle | 8 +- .../restclient-enum-in-multipart/build.gradle | 22 ++--- .../build.gradle | 22 ++--- .../org/openapitools/client/model/Animal.java | 11 +-- .../restclient-sealedInterface/build.gradle | 22 ++--- .../org/openapitools/client/model/Animal.java | 6 -- .../build.gradle | 22 ++--- .../build.gradle | 22 ++--- .../build.gradle | 22 ++--- .../webclient-sealedInterface/build.gradle | 24 ++--- .../org/openapitools/client/model/Animal.java | 6 -- .../build.gradle | 24 ++--- .../org/openapitools/client/model/Animal.java | 6 -- .../build.gradle | 24 ++--- .../apache-httpclient-jackson3/build.gradle | 22 ++--- .../java/apache-httpclient/build.gradle | 24 ++--- .../petstore/java/feign-hc5/build.gradle | 26 ++--- .../java/feign-no-nullable/build.gradle | 26 ++--- .../client/petstore/java/feign/build.gradle | 26 ++--- .../java/google-api-client/build.gradle | 26 ++--- .../jersey2-java8-localdatetime/build.gradle | 22 ++--- .../petstore/java/jersey2-java8/build.gradle | 22 ++--- .../java/jersey3-jackson3/build.gradle | 28 +++--- .../petstore/java/jersey3-oneOf/build.gradle | 22 ++--- .../client/petstore/java/jersey3/build.gradle | 30 +++--- .../build.gradle | 8 +- .../java/okhttp-gson-3.1/build.gradle | 8 +- .../okhttp-gson-awsv4signature/build.gradle | 8 +- .../build.gradle | 8 +- .../okhttp-gson-group-parameter/build.gradle | 8 +- .../build.gradle | 8 +- .../okhttp-gson-parcelableModel/build.gradle | 8 +- .../java/okhttp-gson-swagger1/build.gradle | 10 +- .../java/okhttp-gson-swagger2/build.gradle | 10 +- .../petstore/java/okhttp-gson/build.gradle | 8 +- .../java/rest-assured-jackson/build.gradle | 20 ++-- .../petstore/java/rest-assured/build.gradle | 18 ++-- .../restclient-nullable-arrays/build.gradle | 22 ++--- .../build.gradle | 22 ++--- .../build.gradle | 22 ++--- .../build.gradle | 20 ++-- .../build.gradle | 20 ++-- .../java/restclient-swagger2/build.gradle | 24 ++--- .../build.gradle | 22 ++--- .../build.gradle | 22 ++--- .../petstore/java/restclient/build.gradle | 22 ++--- .../petstore/java/resteasy/build.gradle | 24 ++--- .../java/resttemplate-jakarta/build.gradle | 22 ++--- .../build.gradle | 22 ++--- .../build.gradle | 20 ++-- .../build.gradle | 20 ++-- .../java/resttemplate-swagger1/build.gradle | 24 ++--- .../java/resttemplate-swagger2/build.gradle | 24 ++--- .../java/resttemplate-withXml/build.gradle | 22 ++--- .../petstore/java/resttemplate/build.gradle | 22 ++--- .../java/retrofit2-play26/build.gradle | 30 +++--- .../petstore/java/retrofit2/build.gradle | 18 ++-- .../petstore/java/retrofit2rx2/build.gradle | 20 ++-- .../petstore/java/retrofit2rx3/build.gradle | 20 ++-- .../java/webclient-jakarta/build.gradle | 24 ++--- .../webclient-nullable-arrays/build.gradle | 24 ++--- .../build.gradle | 22 ++--- .../build.gradle | 22 ++--- .../java/webclient-swagger2/build.gradle | 26 ++--- .../build.gradle | 24 ++--- .../petstore/java/webclient/build.gradle | 24 ++--- .../java/jersey2-java8/build.gradle | 20 ++-- .../build.gradle | 20 ++-- .../java/jersey2-java8-swagger1/build.gradle | 24 ++--- .../java/jersey2-java8-swagger2/build.gradle | 24 ++--- .../petstore/java/jersey2-java8/build.gradle | 26 ++--- .../java/org/openapitools/model/Animal.java | 1 + .../java/org/openapitools/model/Apple.java | 3 + .../java/org/openapitools/model/Banana.java | 3 + .../java/org/openapitools/model/Beverage.java | 1 + .../main/java/org/openapitools/model/Cat.java | 2 + .../main/java/org/openapitools/model/Dog.java | 2 + .../java/org/openapitools/model/Fruit.java | 1 + .../java/org/openapitools/model/Soda.java | 3 + .../java/org/openapitools/model/Water.java | 3 + .../java/org/openapitools/model/Animal.java | 1 + .../java/org/openapitools/model/Apple.java | 3 + .../java/org/openapitools/model/Banana.java | 3 + .../java/org/openapitools/model/Beverage.java | 1 + .../main/java/org/openapitools/model/Cat.java | 2 + .../main/java/org/openapitools/model/Dog.java | 2 + .../java/org/openapitools/model/Fruit.java | 1 + .../java/org/openapitools/model/Soda.java | 3 + .../java/org/openapitools/model/Water.java | 3 + .../kotlin/org/openapitools/model/Animal.kt | 3 + .../kotlin/org/openapitools/model/Apple.kt | 6 ++ .../kotlin/org/openapitools/model/Banana.kt | 6 ++ .../kotlin/org/openapitools/model/Beverage.kt | 3 + .../main/kotlin/org/openapitools/model/Cat.kt | 5 + .../main/kotlin/org/openapitools/model/Dog.kt | 5 + .../kotlin/org/openapitools/model/Fruit.kt | 3 + .../kotlin/org/openapitools/model/Soda.kt | 6 ++ .../kotlin/org/openapitools/model/Water.kt | 6 ++ 134 files changed, 1359 insertions(+), 1212 deletions(-) create mode 100644 modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JacksonDefaultImplResolver.java diff --git a/bin/configs/java-camel-oneof-jackson-default-impl.yaml b/bin/configs/java-camel-oneof-jackson-default-impl.yaml index 1218a037762b..5adf86951ab8 100644 --- a/bin/configs/java-camel-oneof-jackson-default-impl.yaml +++ b/bin/configs/java-camel-oneof-jackson-default-impl.yaml @@ -19,5 +19,7 @@ additionalProperties: useSpringBoot3: false useOneOfInterfaces: "true" useDeductionForOneOfInterfaces: "true" + generateJsonIncludeAnnotations: "true" + generateJsonSetterNullsAnnotations: "true" typeInfoDefaultImpls: Fruit: Apple diff --git a/bin/configs/java-restclient-jackson-default-impl.yaml b/bin/configs/java-restclient-jackson-default-impl.yaml index a5a9d92ae88e..680d6ff3cba7 100644 --- a/bin/configs/java-restclient-jackson-default-impl.yaml +++ b/bin/configs/java-restclient-jackson-default-impl.yaml @@ -7,5 +7,6 @@ additionalProperties: artifactId: restclient-jackson-default-impl hideGenerationTimestamp: "true" useOneOfInterfaces: "true" + useDeductionForOneOfInterfaces: "true" typeInfoDefaultImpls: Fruit: Apple diff --git a/bin/configs/kotlin-spring-oneof-jackson-default-impl.yaml b/bin/configs/kotlin-spring-oneof-jackson-default-impl.yaml index 6feadf22d89b..e146bf9100a4 100644 --- a/bin/configs/kotlin-spring-oneof-jackson-default-impl.yaml +++ b/bin/configs/kotlin-spring-oneof-jackson-default-impl.yaml @@ -12,5 +12,7 @@ additionalProperties: useSpringBoot3: "true" useOneOfInterfaces: "true" useDeductionForOneOfInterfaces: "true" + generateJsonIncludeAnnotations: "true" + generateJsonSetterNullsAnnotations: "true" typeInfoDefaultImpls: Fruit: Apple diff --git a/bin/configs/spring-boot-oneof-jackson-default-impl.yaml b/bin/configs/spring-boot-oneof-jackson-default-impl.yaml index 34420b3c0c53..90d68aa42c68 100644 --- a/bin/configs/spring-boot-oneof-jackson-default-impl.yaml +++ b/bin/configs/spring-boot-oneof-jackson-default-impl.yaml @@ -10,5 +10,7 @@ additionalProperties: hideGenerationTimestamp: "true" useOneOfInterfaces: "true" useDeductionForOneOfInterfaces: "true" + generateJsonIncludeAnnotations: "true" + generateJsonSetterNullsAnnotations: "true" typeInfoDefaultImpls: Fruit: Apple diff --git a/docs/generators/kotlin.md b/docs/generators/kotlin.md index 81986870b871..7851b85c979c 100644 --- a/docs/generators/kotlin.md +++ b/docs/generators/kotlin.md @@ -49,7 +49,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |null| |sourceFolder|source folder for generated code| |src/main/kotlin| |supportAndroidApiLevel25AndBelow|[WARNING] This flag will generate code that has a known security vulnerability. It uses `kotlin.io.createTempFile` instead of `java.nio.file.Files.createTempFile` in order to support Android API level 25 and below. For more info, please check the following links https://github.com/OpenAPITools/openapi-generator/security/advisories/GHSA-23x4-m842-fmwf, https://github.com/OpenAPITools/openapi-generator/pull/9284| |false| -|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). Applies to both deduction-based and discriminator-based oneOf interfaces. Overrides x-jackson-default-impl when both are set for the same schema. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |empty map| +|typeInfoDefaultImpls|Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). For kotlin-client this applies to discriminator-based oneOf interfaces only (deduction-based oneOf is not supported by the kotlin-client templates). Overrides x-jackson-default-impl when both are set for the same schema. Requires the jackson serialization library. Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`| |empty map| |useCoroutines|Whether to use the Coroutines adapter with the retrofit2 library.| |false| |useJackson3|Use Jackson 3 dependencies (tools.jackson package). Not yet supported for kotlin-client; reserved for future use.| |false| |useNonAsciiHeaders|Allow to use non-ascii headers with the okhttp library| |false| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java index 0ba070910e89..155a1aed8670 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java @@ -755,33 +755,15 @@ public Map postProcessAllModels(Map objs) if (!typeInfoDefaultImpls.isEmpty() || allModels.values().stream() .anyMatch(cm -> cm.vendorExtensions.containsKey(VendorExtension.X_JACKSON_DEFAULT_IMPL.getName()))) { for (CodegenModel cm : allModels.values()) { - Object rawAnnotationExt = cm.vendorExtensions.get(VendorExtension.X_JACKSON_DEFAULT_IMPL.getName()); - String schemaAnnotation = rawAnnotationExt instanceof String ? (String) rawAnnotationExt : null; - String configValue = typeInfoDefaultImpls.get(cm.schemaName); - String rawValue; - if (configValue != null && !configValue.isBlank()) { - if (schemaAnnotation != null && !schemaAnnotation.isBlank()) { - LOGGER.warn("typeInfoDefaultImpls overrides x-jackson-default-impl on schema '{}': '{}' → '{}'", - cm.schemaName, schemaAnnotation, configValue); - } - rawValue = configValue; - } else if (schemaAnnotation != null && !schemaAnnotation.isBlank()) { - rawValue = schemaAnnotation; - } else { - continue; - } - String resolved = toModelName(rawValue); + String resolved = JacksonDefaultImplResolver.resolve( + typeInfoDefaultImpls, cm, this::toModelName, allModels.keySet(), LOGGER::warn); if (resolved != null && !resolved.isBlank()) { - if (!allModels.containsKey(resolved)) { - LOGGER.warn("x-jackson-default-impl / typeInfoDefaultImpls on schema '{}' refers to '{}' which is not a known model in this spec. " + - "This is valid for external or catch-all classes, but may indicate a typo.", cm.schemaName, resolved); - } - cm.vendorExtensions.put("x-jackson-resolved-default-impl", resolved); + cm.vendorExtensions.put(JacksonDefaultImplResolver.RESOLVED_DEFAULT_IMPL, resolved); // When a discriminator is present, the typeInfoAnnotation partial is rendered // inside {{#discriminator}}, so the template engine resolves 'vendorExtensions' // against CodegenDiscriminator (not CodegenModel). Store there too. if (cm.discriminator != null) { - cm.discriminator.getVendorExtensions().put("x-jackson-resolved-default-impl", resolved); + cm.discriminator.getVendorExtensions().put(JacksonDefaultImplResolver.RESOLVED_DEFAULT_IMPL, resolved); } } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JacksonDefaultImplResolver.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JacksonDefaultImplResolver.java new file mode 100644 index 000000000000..99d2bc44385f --- /dev/null +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JacksonDefaultImplResolver.java @@ -0,0 +1,99 @@ +/* + * Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openapitools.codegen.languages; + +import org.openapitools.codegen.CodegenModel; +import org.openapitools.codegen.VendorExtension; + +import java.util.Map; +import java.util.Set; +import java.util.function.Consumer; +import java.util.function.Function; + +/** + * Shared resolution of the Jackson {@code defaultImpl} for oneOf interfaces. + * + *

The default implementation can be provided either per-schema via the + * {@code x-jackson-default-impl} vendor extension, or via the {@code typeInfoDefaultImpls} + * generator option (keyed by schema name). The config option takes precedence over the + * vendor extension. + * + *

This logic is shared by {@link AbstractJavaCodegen}, {@link KotlinClientCodegen} and + * {@link KotlinSpringServerCodegen}. The latter two are siblings under + * {@code AbstractKotlinCodegen}, so the copy cannot be shared through inheritance; keeping it in + * one place avoids the three implementations silently drifting apart. + */ +final class JacksonDefaultImplResolver { + + static final String RESOLVED_DEFAULT_IMPL = "x-jackson-resolved-default-impl"; + + private JacksonDefaultImplResolver() { + } + + /** + * Resolve the {@code defaultImpl} class reference for the given model, if any. + * + * @param typeInfoDefaultImpls the {@code typeInfoDefaultImpls} config map (schema name to class) + * @param cm the model being processed + * @param toModelName the generator's schema-name to model-name mapping + * @param knownModelNames the set of generated model names in this spec + * @param warn sink for warning messages + * @return the class reference to emit as {@code defaultImpl} (a generated model name, an external + * simple class name, or {@code null} when nothing is configured) + */ + static String resolve(Map typeInfoDefaultImpls, + CodegenModel cm, + Function toModelName, + Set knownModelNames, + Consumer warn) { + Object rawAnnotationExt = cm.vendorExtensions.get(VendorExtension.X_JACKSON_DEFAULT_IMPL.getName()); + String schemaAnnotation = rawAnnotationExt instanceof String ? (String) rawAnnotationExt : null; + String configValue = typeInfoDefaultImpls == null ? null : typeInfoDefaultImpls.get(cm.schemaName); + + String rawValue; + if (configValue != null && !configValue.isBlank()) { + if (schemaAnnotation != null && !schemaAnnotation.isBlank()) { + warn.accept(String.format("typeInfoDefaultImpls overrides x-jackson-default-impl on schema '%s': '%s' \u2192 '%s'", + cm.schemaName, schemaAnnotation, configValue)); + } + rawValue = configValue; + } else if (schemaAnnotation != null && !schemaAnnotation.isBlank()) { + rawValue = schemaAnnotation; + } else { + return null; + } + + String resolvedModelName = toModelName.apply(rawValue); + if (resolvedModelName != null && knownModelNames.contains(resolvedModelName)) { + // A generated model in this spec: its import is already contributed by the oneOf + // interface (mappedModels / interfaceModels), so only the class name is needed. + return resolvedModelName; + } + + // Not a generated model: this is a valid external or catch-all class. Preserve the name + // verbatim instead of running it through toModelName (which would mangle a qualified name), + // and register the import when it is fully qualified so the reference resolves. + warn.accept(String.format("x-jackson-default-impl / typeInfoDefaultImpls on schema '%s' refers to '%s' which is not a known model in this spec. " + + "This is valid for external or catch-all classes, but may indicate a typo.", cm.schemaName, rawValue)); + int lastDot = rawValue.lastIndexOf('.'); + if (lastDot > 0 && lastDot < rawValue.length() - 1) { + cm.imports.add(rawValue); + return rawValue.substring(lastDot + 1); + } + return rawValue; + } +} diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicroprofileServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicroprofileServerCodegen.java index 9065c00b6b80..0189e3660940 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicroprofileServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicroprofileServerCodegen.java @@ -1,15 +1,18 @@ package org.openapitools.codegen.languages; +import org.openapitools.codegen.CodegenModel; import org.openapitools.codegen.CodegenOperation; import org.openapitools.codegen.CodegenResponse; import org.openapitools.codegen.CodegenType; import org.openapitools.codegen.VendorExtension; import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.OperationMap; import org.openapitools.codegen.model.OperationsMap; import java.io.File; import java.util.List; +import java.util.Map; import static org.openapitools.codegen.CodegenConstants.TYPE_INFO_DEFAULT_IMPLS; @@ -28,8 +31,9 @@ public JavaMicroprofileServerCodegen() { modelPackage = "org.openapitools.server.model"; setLibrary("microprofile"); - // The microprofile library uses its own model.mustache which does not route to - // oneof_interface.mustache, so typeInfoDefaultImpls / x-jackson-default-impl have no effect. + // The microprofile library renders oneOf interfaces through its own model.mustache, but does + // not support Jackson's @JsonTypeInfo(defaultImpl = ...) on them, so typeInfoDefaultImpls and + // x-jackson-default-impl have no meaningful effect here. cliOptions.removeIf(opt -> TYPE_INFO_DEFAULT_IMPLS.equals(opt.getOpt())); } @@ -53,10 +57,21 @@ public void processOpts() { super.processOpts(); additionalProperties.put(MICROPROFILE_SERVER, microprofileServer); // Clear any typeInfoDefaultImpls that the parent may have read; the microprofile - // model template does not support oneOf interfaces, so the option has no effect. + // model template does not support Jackson defaultImpl on oneOf interfaces. typeInfoDefaultImpls.clear(); } + @Override + public Map postProcessAllModels(Map objs) { + // The inherited resolution in AbstractJavaCodegen would otherwise turn a schema-level + // x-jackson-default-impl into a defaultImpl = ... annotation, which the microprofile + // templates do not support. Strip the opt-in extension before that resolution runs. + for (CodegenModel cm : getAllModels(objs).values()) { + cm.vendorExtensions.remove(VendorExtension.X_JACKSON_DEFAULT_IMPL.getName()); + } + return super.postProcessAllModels(objs); + } + @Override public List getSupportedVendorExtensions() { List extensions = super.getSupportedVendorExtensions(); 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 1c87bc0f8d4c..ab7f1c2589e6 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 @@ -296,7 +296,14 @@ public KotlinClientCodegen() { cliOptions.add(new CliOption(MAP_FILE_BINARY_TO_BYTE_ARRAY, "Map File and Binary to ByteArray (default: false)").defaultValue(Boolean.FALSE.toString())); cliOptions.add(CliOption.newBoolean(GENERATE_ONEOF_ANYOF_WRAPPERS, "Generate oneOf, anyOf schemas as wrappers. Only `jvm-retrofit2`(library) with `gson` or `kotlinx_serialization`(serializationLibrary) support this option.")); - cliOptions.add(new CliOption(CodegenConstants.TYPE_INFO_DEFAULT_IMPLS, CodegenConstants.TYPE_INFO_DEFAULT_IMPLS_DESC).defaultValue("empty map")); + cliOptions.add(new CliOption(CodegenConstants.TYPE_INFO_DEFAULT_IMPLS, + "Map of schema name to default Jackson deserialization class for @JsonTypeInfo(defaultImpl=...). " + + "For kotlin-client this applies to discriminator-based oneOf interfaces only " + + "(deduction-based oneOf is not supported by the kotlin-client templates). " + + "Overrides x-jackson-default-impl when both are set for the same schema. " + + "Requires the jackson serialization library. " + + "Example: yaml `typeInfoDefaultImpls: {PostRegistrationRequest: PostRegistrationBasicRequest}`") + .defaultValue("empty map")); cliOptions.add(CliOption.newBoolean(COMPANION_OBJECT, "Whether to generate companion objects in data classes, enabling companion extensions.", false)); @@ -1008,30 +1015,12 @@ public Map postProcessAllModels(Map objs) if (cm.discriminator == null) { continue; } - Object rawAnnotationExt = cm.vendorExtensions.get(VendorExtension.X_JACKSON_DEFAULT_IMPL.getName()); - String schemaAnnotation = rawAnnotationExt instanceof String ? (String) rawAnnotationExt : null; - String configValue = typeInfoDefaultImpls.get(cm.schemaName); - String rawValue; - if (configValue != null && !configValue.isBlank()) { - if (schemaAnnotation != null && !schemaAnnotation.isBlank()) { - LOGGER.warn("typeInfoDefaultImpls overrides x-jackson-default-impl on schema '{}': '{}' → '{}'", - cm.schemaName, schemaAnnotation, configValue); - } - rawValue = configValue; - } else if (schemaAnnotation != null && !schemaAnnotation.isBlank()) { - rawValue = schemaAnnotation; - } else { - continue; - } - String resolved = toModelName(rawValue); + String resolved = JacksonDefaultImplResolver.resolve( + typeInfoDefaultImpls, cm, this::toModelName, allModelsMap.keySet(), LOGGER::warn); if (resolved != null && !resolved.isBlank()) { - if (!allModelsMap.containsKey(resolved)) { - LOGGER.warn("x-jackson-default-impl / typeInfoDefaultImpls on schema '{}' refers to '{}' which is not a known model in this spec. " + - "This is valid for external or catch-all classes, but may indicate a typo.", cm.schemaName, resolved); - } // typeInfoAnnotation.mustache is rendered inside {{#discriminator}}, // so JMustache resolves 'vendorExtensions' against CodegenDiscriminator. - cm.discriminator.getVendorExtensions().put("x-jackson-resolved-default-impl", resolved); + cm.discriminator.getVendorExtensions().put(JacksonDefaultImplResolver.RESOLVED_DEFAULT_IMPL, resolved); } } } 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 a5d9c7291f10..73515b575492 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 @@ -1482,33 +1482,15 @@ public Map postProcessAllModels(Map objs) // on each model. This drives defaultImpl = ... in @JsonTypeInfo for both deduction-based // and discriminator-based oneOf interfaces. for (CodegenModel cm : allModelsMap.values()) { - Object rawAnnotationExt = cm.vendorExtensions.get(VendorExtension.X_JACKSON_DEFAULT_IMPL.getName()); - String schemaAnnotation = rawAnnotationExt instanceof String ? (String) rawAnnotationExt : null; - String configValue = typeInfoDefaultImpls.get(cm.schemaName); - String rawValue; - if (configValue != null && !configValue.isBlank()) { - if (schemaAnnotation != null && !schemaAnnotation.isBlank()) { - LOGGER.warn("typeInfoDefaultImpls overrides x-jackson-default-impl on schema '{}': '{}' → '{}'", - cm.schemaName, schemaAnnotation, configValue); - } - rawValue = configValue; - } else if (schemaAnnotation != null && !schemaAnnotation.isBlank()) { - rawValue = schemaAnnotation; - } else { - continue; - } - String resolved = toModelName(rawValue); + String resolved = JacksonDefaultImplResolver.resolve( + typeInfoDefaultImpls, cm, this::toModelName, allModelsMap.keySet(), LOGGER::warn); if (resolved != null && !resolved.isBlank()) { - if (!allModelsMap.containsKey(resolved)) { - LOGGER.warn("x-jackson-default-impl / typeInfoDefaultImpls on schema '{}' refers to '{}' which is not a known model in this spec. " + - "This is valid for external or catch-all classes, but may indicate a typo.", cm.schemaName, resolved); - } - cm.vendorExtensions.put("x-jackson-resolved-default-impl", resolved); + cm.vendorExtensions.put(JacksonDefaultImplResolver.RESOLVED_DEFAULT_IMPL, resolved); // When a discriminator is present, the typeInfoAnnotation partial is rendered // inside {{#discriminator}}, so JMustache resolves 'vendorExtensions' against // CodegenDiscriminator (not CodegenModel). Store there too. if (cm.discriminator != null) { - cm.discriminator.getVendorExtensions().put("x-jackson-resolved-default-impl", resolved); + cm.discriminator.getVendorExtensions().put(JacksonDefaultImplResolver.RESOLVED_DEFAULT_IMPL, resolved); } } } diff --git a/modules/openapi-generator/src/main/resources/Java/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/build.gradle.mustache index 27fb0af3b472..a673f0feaf8e 100644 --- a/modules/openapi-generator/src/main/resources/Java/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/build.gradle.mustache @@ -18,6 +18,26 @@ repositories { mavenCentral() } +ext { + swagger_annotations_version = "1.6.3" + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_version = "2.21.5" + {{#openApiNullable}} + jackson_databind_nullable_version = "0.2.11" + {{/openApiNullable}} + jakarta_annotation_version = "1.3.5" + {{#useBeanValidation}} + bean_validation_version = "3.0.2" + {{/useBeanValidation}} + jersey_version = "1.19.4" + jodatime_version = "2.9.9" + junit_version = "5.10.2" + {{#useReflectionEqualsHashCode}} + commons_lang3_version = "3.17.0" + {{/useReflectionEqualsHashCode}} +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -114,26 +134,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - swagger_annotations_version = "1.6.3" - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_version = "2.21.5" - {{#openApiNullable}} - jackson_databind_nullable_version = "0.2.11" - {{/openApiNullable}} - jakarta_annotation_version = "1.3.5" - {{#useBeanValidation}} - bean_validation_version = "3.0.2" - {{/useBeanValidation}} - jersey_version = "1.19.4" - jodatime_version = "2.9.9" - junit_version = "5.10.2" - {{#useReflectionEqualsHashCode}} - commons_lang3_version = "3.17.0" - {{/useReflectionEqualsHashCode}} -} - dependencies { implementation "io.swagger:swagger-annotations:$swagger_annotations_version" implementation "com.google.code.findbugs:jsr305:3.0.2" diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/apache-httpclient/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/apache-httpclient/build.gradle.mustache index 16ba819b9739..8bf7fbeb2839 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/apache-httpclient/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/apache-httpclient/build.gradle.mustache @@ -18,6 +18,29 @@ repositories { mavenCentral() } +ext { + swagger_annotations_version = "1.6.6" + {{^useJackson3}} + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_version = "2.21.5" + {{#openApiNullable}} + jackson_databind_nullable_version = "0.2.11" + {{/openApiNullable}} + {{/useJackson3}} + {{#useJackson3}} + jackson3_version = "3.1.5" + jackson_annotations_version = "2.21" + {{#openApiNullable}} + jackson_databind_nullable_version = "0.2.11" + {{/openApiNullable}} + {{/useJackson3}} + jakarta_annotation_version = "1.3.5" + httpclient_version = "5.1.3" + jodatime_version = "2.9.9" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -124,29 +147,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - swagger_annotations_version = "1.6.6" - {{^useJackson3}} - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_version = "2.21.5" - {{#openApiNullable}} - jackson_databind_nullable_version = "0.2.11" - {{/openApiNullable}} - {{/useJackson3}} - {{#useJackson3}} - jackson3_version = "3.1.5" - jackson_annotations_version = "2.21" - {{#openApiNullable}} - jackson_databind_nullable_version = "0.2.11" - {{/openApiNullable}} - {{/useJackson3}} - jakarta_annotation_version = "1.3.5" - httpclient_version = "5.1.3" - jodatime_version = "2.9.9" - junit_version = "5.10.2" -} - dependencies { implementation "io.swagger:swagger-annotations:$swagger_annotations_version" implementation "com.google.code.findbugs:jsr305:3.0.2" diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/feign/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/feign/build.gradle.mustache index 59a3ef4d574f..57f19dcf15ee 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/feign/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/feign/build.gradle.mustache @@ -19,6 +19,26 @@ repositories { } +ext { + swagger_annotations_version = "1.6.11" + {{#jackson}} + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_version = "2.21.5" + {{/jackson}} + {{#openApiNullable}} + jackson_databind_nullable_version = "0.2.11" + {{/openApiNullable}} + jakarta_annotation_version = "1.3.5" + feign_version = "13.5" + feign_form_version = "3.8.0" + junit_version = "5.7.0" + scribejava_version = "8.0.0" + {{#useReflectionEqualsHashCode}} + commons_lang3_version = "3.17.0" + {{/useReflectionEqualsHashCode}} +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -102,26 +122,6 @@ test { useJUnitPlatform() } -ext { - swagger_annotations_version = "1.6.11" - {{#jackson}} - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_version = "2.21.5" - {{/jackson}} - {{#openApiNullable}} - jackson_databind_nullable_version = "0.2.11" - {{/openApiNullable}} - jakarta_annotation_version = "1.3.5" - feign_version = "13.5" - feign_form_version = "3.8.0" - junit_version = "5.7.0" - scribejava_version = "8.0.0" - {{#useReflectionEqualsHashCode}} - commons_lang3_version = "3.17.0" - {{/useReflectionEqualsHashCode}} -} - dependencies { implementation "io.swagger:swagger-annotations:$swagger_annotations_version" implementation "com.google.code.findbugs:jsr305:3.0.2" diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/build.gradle.mustache index e56d1880a19b..46a040d8e447 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/build.gradle.mustache @@ -19,6 +19,21 @@ repositories { } +ext { + swagger_annotations_version = "1.6.3" + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_version = "2.21.5" + {{#openApiNullable}} + jackson_databind_nullable_version = "0.2.11" + {{/openApiNullable}} + jakarta_annotation_version = "1.3.5" + google_api_client_version = "1.32.2" + jersey_common_version = "2.25.1" + jodatime_version = "2.9.9" + junit_version = "4.13.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,21 +113,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - swagger_annotations_version = "1.6.3" - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_version = "2.21.5" - {{#openApiNullable}} - jackson_databind_nullable_version = "0.2.11" - {{/openApiNullable}} - jakarta_annotation_version = "1.3.5" - google_api_client_version = "1.32.2" - jersey_common_version = "2.25.1" - jodatime_version = "2.9.9" - junit_version = "4.13.2" -} - dependencies { implementation "io.swagger:swagger-annotations:$swagger_annotations_version" implementation "com.google.code.findbugs:jsr305:3.0.2" diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/build.gradle.mustache index e5f80094dd6c..43d5f692a616 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/build.gradle.mustache @@ -20,6 +20,36 @@ repositories { mavenCentral() } +ext { + {{#swagger1AnnotationLibrary}} + swagger_annotations_version = "1.6.6" + {{/swagger1AnnotationLibrary}} + {{#swagger2AnnotationLibrary}} + swagger_annotations_version = "2.2.15" + {{/swagger2AnnotationLibrary}} + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_version = "2.21.5" + {{#openApiNullable}} + jackson_databind_nullable_version = "0.2.11" + {{/openApiNullable}} + jakarta_annotation_version = "1.3.5" + {{#useBeanValidation}} + bean_validation_version = "3.0.2" + {{/useBeanValidation}} + jersey_version = "2.35" + junit_version = "5.8.2" + {{#hasOAuthMethods}} + scribejava_apis_version = "8.3.1" + {{/hasOAuthMethods}} + {{#hasHttpSignatureMethods}} + tomitribe_http_signatures_version = "1.7" + {{/hasHttpSignatureMethods}} + {{#useReflectionEqualsHashCode}} + commons_lang3_version = "3.17.0" + {{/useReflectionEqualsHashCode}} +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -99,36 +129,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - {{#swagger1AnnotationLibrary}} - swagger_annotations_version = "1.6.6" - {{/swagger1AnnotationLibrary}} - {{#swagger2AnnotationLibrary}} - swagger_annotations_version = "2.2.15" - {{/swagger2AnnotationLibrary}} - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_version = "2.21.5" - {{#openApiNullable}} - jackson_databind_nullable_version = "0.2.11" - {{/openApiNullable}} - jakarta_annotation_version = "1.3.5" - {{#useBeanValidation}} - bean_validation_version = "3.0.2" - {{/useBeanValidation}} - jersey_version = "2.35" - junit_version = "5.8.2" - {{#hasOAuthMethods}} - scribejava_apis_version = "8.3.1" - {{/hasOAuthMethods}} - {{#hasHttpSignatureMethods}} - tomitribe_http_signatures_version = "1.7" - {{/hasHttpSignatureMethods}} - {{#useReflectionEqualsHashCode}} - commons_lang3_version = "3.17.0" - {{/useReflectionEqualsHashCode}} -} - dependencies { {{#swagger1AnnotationLibrary}} implementation "io.swagger:swagger-annotations:$swagger_annotations_version" diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/build.gradle.mustache index 7a364355f431..935b08e4c754 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/build.gradle.mustache @@ -20,6 +20,37 @@ repositories { mavenCentral() } +ext { + swagger_annotations_version = "1.6.5" + {{^useJackson3}} + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_version = "2.21.5" + {{/useJackson3}} + {{#useJackson3}} + jackson3_version = "3.1.5" + jackson_annotations_version = "2.21" + {{/useJackson3}} + {{#openApiNullable}} + jackson_databind_nullable_version = "0.2.11" + {{/openApiNullable}} + jakarta_annotation_version = "3.0.0" + {{#useBeanValidation}} + bean_validation_version = "3.1.1" + {{/useBeanValidation}} + jersey_version = "3.0.4" + junit_version = "5.8.2" + {{#hasOAuthMethods}} + scribejava_apis_version = "8.3.1" + {{/hasOAuthMethods}} + {{#hasHttpSignatureMethods}} + tomitribe_http_signatures_version = "1.7" + {{/hasHttpSignatureMethods}} + {{#useReflectionEqualsHashCode}} + commons_lang3_version = "3.17.0" + {{/useReflectionEqualsHashCode}} +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -99,37 +130,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - swagger_annotations_version = "1.6.5" - {{^useJackson3}} - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_version = "2.21.5" - {{/useJackson3}} - {{#useJackson3}} - jackson3_version = "3.1.5" - jackson_annotations_version = "2.21" - {{/useJackson3}} - {{#openApiNullable}} - jackson_databind_nullable_version = "0.2.11" - {{/openApiNullable}} - jakarta_annotation_version = "3.0.0" - {{#useBeanValidation}} - bean_validation_version = "3.1.1" - {{/useBeanValidation}} - jersey_version = "3.0.4" - junit_version = "5.8.2" - {{#hasOAuthMethods}} - scribejava_apis_version = "8.3.1" - {{/hasOAuthMethods}} - {{#hasHttpSignatureMethods}} - tomitribe_http_signatures_version = "1.7" - {{/hasHttpSignatureMethods}} - {{#useReflectionEqualsHashCode}} - commons_lang3_version = "3.17.0" - {{/useReflectionEqualsHashCode}} -} - dependencies { implementation "io.swagger:swagger-annotations:$swagger_annotations_version" implementation "com.google.code.findbugs:jsr305:3.0.2" diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/build.gradle.mustache index 1b440bd4d3b0..e45ece4322f3 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/build.gradle.mustache @@ -28,6 +28,19 @@ sourceSets { } {{/sourceFolder}} +ext { + {{#swagger1AnnotationLibrary}} + swagger_annotations_version = "1.6.9" + {{/swagger1AnnotationLibrary}} + {{#swagger2AnnotationLibrary}} + swagger_annotations_version = "2.2.9" + {{/swagger2AnnotationLibrary}} + jakarta_annotation_version = "1.3.5" + {{#useBeanValidation}} + bean_validation_version = "2.0.2" + {{/useBeanValidation}} +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -107,19 +120,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - {{#swagger1AnnotationLibrary}} - swagger_annotations_version = "1.6.9" - {{/swagger1AnnotationLibrary}} - {{#swagger2AnnotationLibrary}} - swagger_annotations_version = "2.2.9" - {{/swagger2AnnotationLibrary}} - jakarta_annotation_version = "1.3.5" - {{#useBeanValidation}} - bean_validation_version = "2.0.2" - {{/useBeanValidation}} -} - dependencies { {{#swagger1AnnotationLibrary}} implementation "io.swagger:swagger-annotations:$swagger_annotations_version" diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/rest-assured/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/rest-assured/build.gradle.mustache index d7d32032b0c0..4d62ff66aef5 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/rest-assured/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/rest-assured/build.gradle.mustache @@ -19,6 +19,33 @@ repositories { } +ext { + {{#swagger1AnnotationLibrary}} + swagger_annotations_version = "1.6.16" + {{/swagger1AnnotationLibrary}} + {{#swagger2AnnotationLibrary}} + swagger_annotations_version = "2.2.36" + {{/swagger2AnnotationLibrary}} + rest_assured_version = "5.5.6" + junit_version = "5.10.3" +{{#jackson}} + jackson_version = "2.21.5" + jackson_databind_version = "2.21.5" + {{#openApiNullable}} + jackson_databind_nullable_version = "0.2.11" + {{/openApiNullable}} +{{/jackson}} +{{#gson}} + gson_version = "2.10.1" + gson_fire_version = "1.9.0" +{{/gson}} +{{#joda}} + jodatime_version = "2.10.5" +{{/joda}} + okio_version = "3.6.0" + jakarta_annotation_version = "1.3.5" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,33 +125,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - {{#swagger1AnnotationLibrary}} - swagger_annotations_version = "1.6.16" - {{/swagger1AnnotationLibrary}} - {{#swagger2AnnotationLibrary}} - swagger_annotations_version = "2.2.36" - {{/swagger2AnnotationLibrary}} - rest_assured_version = "5.5.6" - junit_version = "5.10.3" -{{#jackson}} - jackson_version = "2.21.5" - jackson_databind_version = "2.21.5" - {{#openApiNullable}} - jackson_databind_nullable_version = "0.2.11" - {{/openApiNullable}} -{{/jackson}} -{{#gson}} - gson_version = "2.10.1" - gson_fire_version = "1.9.0" -{{/gson}} -{{#joda}} - jodatime_version = "2.10.5" -{{/joda}} - okio_version = "3.6.0" - jakarta_annotation_version = "1.3.5" -} - dependencies { {{#swagger1AnnotationLibrary}} implementation "io.swagger:swagger-annotations:$swagger_annotations_version" diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/restclient/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/restclient/build.gradle.mustache index 69e7296add2b..92639f2d884d 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/restclient/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/restclient/build.gradle.mustache @@ -19,6 +19,36 @@ repositories { } +ext { + {{#swagger1AnnotationLibrary}} + swagger_annotations_version = "1.6.16" + {{/swagger1AnnotationLibrary}} + {{#swagger2AnnotationLibrary}} + swagger_annotations_version = "2.2.43" + {{/swagger2AnnotationLibrary}} + {{#useJackson3}} + jackson_version = "3.1.5" + {{/useJackson3}} + {{^useJackson3}} + jackson_version = "2.21.5" + {{/useJackson3}} + jackson_annotations_version = "2.21" + {{#openApiNullable}} + jackson_databind_nullable_version = "0.2.11" + {{/openApiNullable}} + {{^useSpringBoot4}} + spring_web_version = "6.2.16" + jakarta_annotation_version = "2.1.1" + {{/useSpringBoot4}} + {{#useSpringBoot4}} + spring_web_version = "7.0.8" + jakarta_annotation_version = "3.0.0" + {{/useSpringBoot4}} + bean_validation_version = "3.1.1" + jodatime_version = "2.14.0" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,36 +128,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - {{#swagger1AnnotationLibrary}} - swagger_annotations_version = "1.6.16" - {{/swagger1AnnotationLibrary}} - {{#swagger2AnnotationLibrary}} - swagger_annotations_version = "2.2.43" - {{/swagger2AnnotationLibrary}} - {{#useJackson3}} - jackson_version = "3.1.5" - {{/useJackson3}} - {{^useJackson3}} - jackson_version = "2.21.5" - {{/useJackson3}} - jackson_annotations_version = "2.21" - {{#openApiNullable}} - jackson_databind_nullable_version = "0.2.11" - {{/openApiNullable}} - {{^useSpringBoot4}} - spring_web_version = "6.2.16" - jakarta_annotation_version = "2.1.1" - {{/useSpringBoot4}} - {{#useSpringBoot4}} - spring_web_version = "7.0.8" - jakarta_annotation_version = "3.0.0" - {{/useSpringBoot4}} - bean_validation_version = "3.1.1" - jodatime_version = "2.14.0" - junit_version = "5.10.2" -} - dependencies { {{#swagger1AnnotationLibrary}} implementation "io.swagger:swagger-annotations:$swagger_annotations_version" diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/build.gradle.mustache index ce34755e8145..139d8c110fbb 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/build.gradle.mustache @@ -19,6 +19,20 @@ repositories { } +ext { + swagger_annotations_version = "1.6.3" + jackson_version = "2.21.5" + jackson_databind_version = "2.21.5" + {{#openApiNullable}} + jackson_databind_nullable_version = "0.2.11" + {{/openApiNullable}} + jakarta_annotation_version = "1.3.5" + threetenbp_version = "2.9.10" + resteasy_version = "4.5.11.Final" + assertj_version = "3.23.1" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,20 +112,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - swagger_annotations_version = "1.6.3" - jackson_version = "2.21.5" - jackson_databind_version = "2.21.5" - {{#openApiNullable}} - jackson_databind_nullable_version = "0.2.11" - {{/openApiNullable}} - jakarta_annotation_version = "1.3.5" - threetenbp_version = "2.9.10" - resteasy_version = "4.5.11.Final" - assertj_version = "3.23.1" - junit_version = "5.10.2" -} - dependencies { implementation "io.swagger:swagger-annotations:$swagger_annotations_version" implementation "com.google.code.findbugs:jsr305:3.0.2" diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/build.gradle.mustache index 0b304e354868..f7a63dd90734 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/build.gradle.mustache @@ -19,6 +19,44 @@ repositories { } +ext { + {{#swagger1AnnotationLibrary}} + swagger_annotations_version = "1.6.9" + {{/swagger1AnnotationLibrary}} + {{#swagger2AnnotationLibrary}} + swagger_annotations_version = "2.2.9" + {{/swagger2AnnotationLibrary}} + {{#useJackson3}} + jackson_version = "3.1.5" + {{/useJackson3}} + {{^useJackson3}} + jackson_version = "2.21.5" + {{/useJackson3}} + jackson_annotations_version = "2.21" + {{#openApiNullable}} + jackson_databind_nullable_version = "0.2.11" + {{/openApiNullable}} + {{#useSpringBoot4}} + spring_web_version = "7.0.8" + jakarta_annotation_version = "3.0.0" + bean_validation_version = "3.1.1" + {{/useSpringBoot4}} + {{^useSpringBoot4}} + {{#useJakartaEe}} + spring_web_version = "6.2.8" + jakarta_annotation_version = "2.1.1" + bean_validation_version = "3.0.2" + {{/useJakartaEe}} + {{^useJakartaEe}} + spring_web_version = "5.3.33" + jakarta_annotation_version = "1.3.5" + bean_validation_version = "2.0.2" + {{/useJakartaEe}} + {{/useSpringBoot4}} + jodatime_version = "2.9.9" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -110,44 +148,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - {{#swagger1AnnotationLibrary}} - swagger_annotations_version = "1.6.9" - {{/swagger1AnnotationLibrary}} - {{#swagger2AnnotationLibrary}} - swagger_annotations_version = "2.2.9" - {{/swagger2AnnotationLibrary}} - {{#useJackson3}} - jackson_version = "3.1.5" - {{/useJackson3}} - {{^useJackson3}} - jackson_version = "2.21.5" - {{/useJackson3}} - jackson_annotations_version = "2.21" - {{#openApiNullable}} - jackson_databind_nullable_version = "0.2.11" - {{/openApiNullable}} - {{#useSpringBoot4}} - spring_web_version = "7.0.8" - jakarta_annotation_version = "3.0.0" - bean_validation_version = "3.1.1" - {{/useSpringBoot4}} - {{^useSpringBoot4}} - {{#useJakartaEe}} - spring_web_version = "6.2.8" - jakarta_annotation_version = "2.1.1" - bean_validation_version = "3.0.2" - {{/useJakartaEe}} - {{^useJakartaEe}} - spring_web_version = "5.3.33" - jakarta_annotation_version = "1.3.5" - bean_validation_version = "2.0.2" - {{/useJakartaEe}} - {{/useSpringBoot4}} - jodatime_version = "2.9.9" - junit_version = "5.10.2" -} - dependencies { {{#swagger1AnnotationLibrary}} implementation "io.swagger:swagger-annotations:$swagger_annotations_version" diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/build.gradle.mustache index a8d08435b53e..3a1e6d84e2ca 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/build.gradle.mustache @@ -19,6 +19,36 @@ repositories { } +ext { + oltu_version = "1.0.1" + retrofit_version = "2.11.0" + {{#jackson}} + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_version = "2.21.5" + javax_ws_rs_api_version = "2.1.1" + {{#openApiNullable}} + jackson_databind_nullable_version = "0.2.11" + {{/openApiNullable}} + {{/jackson}} + {{#usePlayWS}} + play_version = "2.6.7" + {{/usePlayWS}} + jakarta_annotation_version = "1.3.5" + swagger_annotations_version = "1.5.22" + junit_version = "5.10.3" + {{#useRxJava2}} + rx_java_version = "2.1.1" + {{/useRxJava2}} + {{#useRxJava3}} + rx_java_version = "3.0.4" + {{/useRxJava3}} + {{#joda}} + jodatime_version = "2.9.9" + {{/joda}} + json_fire_version = "1.9.0" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,36 +128,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - oltu_version = "1.0.1" - retrofit_version = "2.11.0" - {{#jackson}} - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_version = "2.21.5" - javax_ws_rs_api_version = "2.1.1" - {{#openApiNullable}} - jackson_databind_nullable_version = "0.2.11" - {{/openApiNullable}} - {{/jackson}} - {{#usePlayWS}} - play_version = "2.6.7" - {{/usePlayWS}} - jakarta_annotation_version = "1.3.5" - swagger_annotations_version = "1.5.22" - junit_version = "5.10.3" - {{#useRxJava2}} - rx_java_version = "2.1.1" - {{/useRxJava2}} - {{#useRxJava3}} - rx_java_version = "3.0.4" - {{/useRxJava3}} - {{#joda}} - jodatime_version = "2.9.9" - {{/joda}} - json_fire_version = "1.9.0" -} - dependencies { implementation "com.squareup.retrofit2:retrofit:$retrofit_version" implementation "com.squareup.retrofit2:converter-scalars:$retrofit_version" diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/webclient/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/webclient/build.gradle.mustache index 2812d002ced8..73038e898c1d 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/webclient/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/webclient/build.gradle.mustache @@ -18,6 +18,53 @@ repositories { mavenCentral() } +ext { + {{#swagger1AnnotationLibrary}} + swagger_annotations_version = "1.6.16" + {{/swagger1AnnotationLibrary}} + {{#swagger2AnnotationLibrary}} + swagger_annotations_version = "2.2.43" + {{/swagger2AnnotationLibrary}} + {{#useJakartaEe}} + {{^useSpringBoot4}} + spring_boot_version = "3.5.11" + {{/useSpringBoot4}} + {{#useSpringBoot4}} + spring_boot_version = "4.0.3" + {{/useSpringBoot4}} + jakarta_annotation_version = "3.0.0" + beanvalidation_version = "3.0.2" + reactor_version = "3.5.12" + reactor_netty_version = "1.2.8" + {{/useJakartaEe}} + {{^useJakartaEe}} + spring_boot_version = "2.7.17" + jakarta_annotation_version = "1.3.5" + beanvalidation_version = "2.0.2" + reactor_version = "3.4.34" + reactor_netty_version = "1.2.8" + {{/useJakartaEe}} + {{#useJackson3}} + jackson_version = "3.1.5" + {{/useJackson3}} + {{^useJackson3}} + jackson_version = "2.21.5" + {{/useJackson3}} + {{^useSpringBoot4}} + {{#useJspecify}} + implementation "org.jspecify:jspecify:1.0.0" + {{/useJspecify}} + {{/useSpringBoot4}} + jackson_annotations_version = "2.21" + {{#openApiNullable}} + jackson_databind_nullable_version = "0.2.11" + {{/openApiNullable}} + {{#joda}} + jodatime_version = "2.14.0" + {{/joda}} + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -125,53 +172,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - {{#swagger1AnnotationLibrary}} - swagger_annotations_version = "1.6.16" - {{/swagger1AnnotationLibrary}} - {{#swagger2AnnotationLibrary}} - swagger_annotations_version = "2.2.43" - {{/swagger2AnnotationLibrary}} - {{#useJakartaEe}} - {{^useSpringBoot4}} - spring_boot_version = "3.5.11" - {{/useSpringBoot4}} - {{#useSpringBoot4}} - spring_boot_version = "4.0.3" - {{/useSpringBoot4}} - jakarta_annotation_version = "3.0.0" - beanvalidation_version = "3.0.2" - reactor_version = "3.5.12" - reactor_netty_version = "1.2.8" - {{/useJakartaEe}} - {{^useJakartaEe}} - spring_boot_version = "2.7.17" - jakarta_annotation_version = "1.3.5" - beanvalidation_version = "2.0.2" - reactor_version = "3.4.34" - reactor_netty_version = "1.2.8" - {{/useJakartaEe}} - {{#useJackson3}} - jackson_version = "3.1.5" - {{/useJackson3}} - {{^useJackson3}} - jackson_version = "2.21.5" - {{/useJackson3}} - {{^useSpringBoot4}} - {{#useJspecify}} - implementation "org.jspecify:jspecify:1.0.0" - {{/useJspecify}} - {{/useSpringBoot4}} - jackson_annotations_version = "2.21" - {{#openApiNullable}} - jackson_databind_nullable_version = "0.2.11" - {{/openApiNullable}} - {{#joda}} - jodatime_version = "2.14.0" - {{/joda}} - junit_version = "5.10.2" -} - dependencies { {{#swagger1AnnotationLibrary}} implementation "io.swagger:swagger-annotations:$swagger_annotations_version" diff --git a/modules/openapi-generator/src/main/resources/Java/oneof_interface.mustache b/modules/openapi-generator/src/main/resources/Java/oneof_interface.mustache index 0c05cf418ecc..dae80601f111 100644 --- a/modules/openapi-generator/src/main/resources/Java/oneof_interface.mustache +++ b/modules/openapi-generator/src/main/resources/Java/oneof_interface.mustache @@ -1,4 +1,4 @@ -{{>additionalOneOfTypeAnnotations}}{{>generatedAnnotation}}{{>typeInfoAnnotation}}{{>deductionAnnotation}}{{>xmlAnnotation}} +{{>additionalOneOfTypeAnnotations}}{{>generatedAnnotation}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}}{{>deductionAnnotation}}{{>xmlAnnotation}} {{#vendorExtensions.x-class-extra-annotation}} {{{.}}} {{/vendorExtensions.x-class-extra-annotation}} diff --git a/modules/openapi-generator/src/main/resources/java-camel-server/pojo.mustache b/modules/openapi-generator/src/main/resources/java-camel-server/pojo.mustache index 257e6ee3e817..67a1bf8b3dac 100644 --- a/modules/openapi-generator/src/main/resources/java-camel-server/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/java-camel-server/pojo.mustache @@ -72,6 +72,17 @@ public class {{classname}}{{#parent}} extends {{{parent}}}{{/parent}}{{^parent}} {{#vendorExtensions.x-field-extra-annotation}} {{{.}}} {{/vendorExtensions.x-field-extra-annotation}} + {{#jackson}} + {{#vendorExtensions.x-jackson-json-include-policy}} + @JsonInclude(JsonInclude.Include.{{{vendorExtensions.x-jackson-json-include-policy}}}) + {{/vendorExtensions.x-jackson-json-include-policy}} + {{#vendorExtensions.x-has-json-setter-nulls-skip}} + @JsonSetter(nulls = Nulls.SKIP) + {{/vendorExtensions.x-has-json-setter-nulls-skip}} + {{#vendorExtensions.x-has-json-setter-nulls-fail}} + @JsonSetter(nulls = Nulls.FAIL) + {{/vendorExtensions.x-has-json-setter-nulls-fail}} + {{/jackson}} {{#deprecated}} @Deprecated {{/deprecated}} diff --git a/samples/client/echo_api/java/apache-httpclient/build.gradle b/samples/client/echo_api/java/apache-httpclient/build.gradle index b529040ea55d..ce33608e478a 100644 --- a/samples/client/echo_api/java/apache-httpclient/build.gradle +++ b/samples/client/echo_api/java/apache-httpclient/build.gradle @@ -18,6 +18,18 @@ repositories { mavenCentral() } +ext { + swagger_annotations_version = "1.6.6" + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_version = "2.21.5" + jackson_databind_nullable_version = "0.2.11" + jakarta_annotation_version = "1.3.5" + httpclient_version = "5.1.3" + jodatime_version = "2.9.9" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -118,18 +130,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - swagger_annotations_version = "1.6.6" - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_version = "2.21.5" - jackson_databind_nullable_version = "0.2.11" - jakarta_annotation_version = "1.3.5" - httpclient_version = "5.1.3" - jodatime_version = "2.9.9" - junit_version = "5.10.2" -} - dependencies { implementation "io.swagger:swagger-annotations:$swagger_annotations_version" implementation "com.google.code.findbugs:jsr305:3.0.2" diff --git a/samples/client/echo_api/java/feign-gson/build.gradle b/samples/client/echo_api/java/feign-gson/build.gradle index 7cbe23895efd..d78e5fad1204 100644 --- a/samples/client/echo_api/java/feign-gson/build.gradle +++ b/samples/client/echo_api/java/feign-gson/build.gradle @@ -19,6 +19,16 @@ repositories { } +ext { + swagger_annotations_version = "1.6.11" + jackson_databind_nullable_version = "0.2.11" + jakarta_annotation_version = "1.3.5" + feign_version = "13.5" + feign_form_version = "3.8.0" + junit_version = "5.7.0" + scribejava_version = "8.0.0" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -102,16 +112,6 @@ test { useJUnitPlatform() } -ext { - swagger_annotations_version = "1.6.11" - jackson_databind_nullable_version = "0.2.11" - jakarta_annotation_version = "1.3.5" - feign_version = "13.5" - feign_form_version = "3.8.0" - junit_version = "5.7.0" - scribejava_version = "8.0.0" -} - dependencies { implementation "io.swagger:swagger-annotations:$swagger_annotations_version" implementation "com.google.code.findbugs:jsr305:3.0.2" diff --git a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/build.gradle b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/build.gradle index 930bcc11cef9..b96ec1dcfd90 100644 --- a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/build.gradle +++ b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/build.gradle @@ -24,6 +24,10 @@ sourceSets { main.java.srcDirs = ['src/main/java'] } +ext { + jakarta_annotation_version = "1.3.5" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -103,10 +107,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jakarta_annotation_version = "1.3.5" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation 'com.squareup.okhttp3:okhttp:4.12.0' diff --git a/samples/client/echo_api/java/okhttp-gson/build.gradle b/samples/client/echo_api/java/okhttp-gson/build.gradle index 61569dcc78f9..2c1e79616363 100644 --- a/samples/client/echo_api/java/okhttp-gson/build.gradle +++ b/samples/client/echo_api/java/okhttp-gson/build.gradle @@ -24,6 +24,10 @@ sourceSets { main.java.srcDirs = ['src/main/java'] } +ext { + jakarta_annotation_version = "1.3.5" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -103,10 +107,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jakarta_annotation_version = "1.3.5" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation 'com.squareup.okhttp3:okhttp:4.12.0' diff --git a/samples/client/echo_api/java/restclient/build.gradle b/samples/client/echo_api/java/restclient/build.gradle index d3fe1aff0fae..44ca6b2db919 100644 --- a/samples/client/echo_api/java/restclient/build.gradle +++ b/samples/client/echo_api/java/restclient/build.gradle @@ -19,6 +19,17 @@ repositories { } +ext { + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + spring_web_version = "6.2.16" + jakarta_annotation_version = "2.1.1" + bean_validation_version = "3.1.1" + jodatime_version = "2.14.0" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,17 +109,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - spring_web_version = "6.2.16" - jakarta_annotation_version = "2.1.1" - bean_validation_version = "3.1.1" - jodatime_version = "2.14.0" - junit_version = "5.10.2" -} - dependencies { implementation "org.springframework:spring-web:$spring_web_version" implementation "org.springframework:spring-context:$spring_web_version" diff --git a/samples/client/echo_api/java/resteasy/build.gradle b/samples/client/echo_api/java/resteasy/build.gradle index b3cc7337b382..00d2c0272ab0 100644 --- a/samples/client/echo_api/java/resteasy/build.gradle +++ b/samples/client/echo_api/java/resteasy/build.gradle @@ -19,6 +19,18 @@ repositories { } +ext { + swagger_annotations_version = "1.6.3" + jackson_version = "2.21.5" + jackson_databind_version = "2.21.5" + jackson_databind_nullable_version = "0.2.11" + jakarta_annotation_version = "1.3.5" + threetenbp_version = "2.9.10" + resteasy_version = "4.5.11.Final" + assertj_version = "3.23.1" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,18 +110,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - swagger_annotations_version = "1.6.3" - jackson_version = "2.21.5" - jackson_databind_version = "2.21.5" - jackson_databind_nullable_version = "0.2.11" - jakarta_annotation_version = "1.3.5" - threetenbp_version = "2.9.10" - resteasy_version = "4.5.11.Final" - assertj_version = "3.23.1" - junit_version = "5.10.2" -} - dependencies { implementation "io.swagger:swagger-annotations:$swagger_annotations_version" implementation "com.google.code.findbugs:jsr305:3.0.2" diff --git a/samples/client/echo_api/java/resttemplate/build.gradle b/samples/client/echo_api/java/resttemplate/build.gradle index 152914ce95a8..50f6a96b6b02 100644 --- a/samples/client/echo_api/java/resttemplate/build.gradle +++ b/samples/client/echo_api/java/resttemplate/build.gradle @@ -19,6 +19,17 @@ repositories { } +ext { + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + spring_web_version = "5.3.33" + jakarta_annotation_version = "1.3.5" + bean_validation_version = "2.0.2" + jodatime_version = "2.9.9" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,17 +109,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - spring_web_version = "5.3.33" - jakarta_annotation_version = "1.3.5" - bean_validation_version = "2.0.2" - jodatime_version = "2.9.9" - junit_version = "5.10.2" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "org.springframework:spring-web:$spring_web_version" diff --git a/samples/client/others/java/jersey2-oneOf-Mixed/build.gradle b/samples/client/others/java/jersey2-oneOf-Mixed/build.gradle index e592db8b045e..98024c2df252 100644 --- a/samples/client/others/java/jersey2-oneOf-Mixed/build.gradle +++ b/samples/client/others/java/jersey2-oneOf-Mixed/build.gradle @@ -20,6 +20,16 @@ repositories { mavenCentral() } +ext { + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_version = "2.21.5" + jackson_databind_nullable_version = "0.2.11" + jakarta_annotation_version = "1.3.5" + jersey_version = "2.35" + junit_version = "5.8.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -99,16 +109,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_version = "2.21.5" - jackson_databind_nullable_version = "0.2.11" - jakarta_annotation_version = "1.3.5" - jersey_version = "2.35" - junit_version = "5.8.2" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "org.glassfish.jersey.core:jersey-client:$jersey_version" diff --git a/samples/client/others/java/jersey2-oneOf-duplicates/build.gradle b/samples/client/others/java/jersey2-oneOf-duplicates/build.gradle index e592db8b045e..98024c2df252 100644 --- a/samples/client/others/java/jersey2-oneOf-duplicates/build.gradle +++ b/samples/client/others/java/jersey2-oneOf-duplicates/build.gradle @@ -20,6 +20,16 @@ repositories { mavenCentral() } +ext { + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_version = "2.21.5" + jackson_databind_nullable_version = "0.2.11" + jakarta_annotation_version = "1.3.5" + jersey_version = "2.35" + junit_version = "5.8.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -99,16 +109,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_version = "2.21.5" - jackson_databind_nullable_version = "0.2.11" - jakarta_annotation_version = "1.3.5" - jersey_version = "2.35" - junit_version = "5.8.2" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "org.glassfish.jersey.core:jersey-client:$jersey_version" diff --git a/samples/client/others/java/okhttp-gson-oneOf-array/build.gradle b/samples/client/others/java/okhttp-gson-oneOf-array/build.gradle index 3894157aef97..09fc129d4a67 100644 --- a/samples/client/others/java/okhttp-gson-oneOf-array/build.gradle +++ b/samples/client/others/java/okhttp-gson-oneOf-array/build.gradle @@ -24,6 +24,11 @@ sourceSets { main.java.srcDirs = ['src/main/java'] } +ext { + jakarta_annotation_version = "1.3.5" + bean_validation_version = "2.0.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -103,11 +108,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jakarta_annotation_version = "1.3.5" - bean_validation_version = "2.0.2" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation 'com.squareup.okhttp3:okhttp:4.12.0' diff --git a/samples/client/others/java/okhttp-gson-oneOf/build.gradle b/samples/client/others/java/okhttp-gson-oneOf/build.gradle index 092df227eae7..1d481b4ceb38 100644 --- a/samples/client/others/java/okhttp-gson-oneOf/build.gradle +++ b/samples/client/others/java/okhttp-gson-oneOf/build.gradle @@ -24,6 +24,10 @@ sourceSets { main.java.srcDirs = ['src/main/java'] } +ext { + jakarta_annotation_version = "1.3.5" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -103,10 +107,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jakarta_annotation_version = "1.3.5" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation 'com.squareup.okhttp3:okhttp:4.12.0' diff --git a/samples/client/others/java/okhttp-gson-streaming/build.gradle b/samples/client/others/java/okhttp-gson-streaming/build.gradle index 1252de88dd6e..160f5cfb12e1 100644 --- a/samples/client/others/java/okhttp-gson-streaming/build.gradle +++ b/samples/client/others/java/okhttp-gson-streaming/build.gradle @@ -24,6 +24,10 @@ sourceSets { main.java.srcDirs = ['src/main/java'] } +ext { + jakarta_annotation_version = "1.3.5" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -103,10 +107,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jakarta_annotation_version = "1.3.5" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation 'com.squareup.okhttp3:okhttp:4.12.0' diff --git a/samples/client/others/java/restclient-enum-in-multipart/build.gradle b/samples/client/others/java/restclient-enum-in-multipart/build.gradle index bf9100bfe4c5..564ac37e82c5 100644 --- a/samples/client/others/java/restclient-enum-in-multipart/build.gradle +++ b/samples/client/others/java/restclient-enum-in-multipart/build.gradle @@ -19,6 +19,17 @@ repositories { } +ext { + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + spring_web_version = "6.2.16" + jakarta_annotation_version = "2.1.1" + bean_validation_version = "3.1.1" + jodatime_version = "2.14.0" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,17 +109,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - spring_web_version = "6.2.16" - jakarta_annotation_version = "2.1.1" - bean_validation_version = "3.1.1" - jodatime_version = "2.14.0" - junit_version = "5.10.2" -} - dependencies { implementation "org.springframework:spring-web:$spring_web_version" implementation "org.springframework:spring-context:$spring_web_version" diff --git a/samples/client/others/java/restclient-jackson-default-impl/build.gradle b/samples/client/others/java/restclient-jackson-default-impl/build.gradle index 2f58c32cfc94..1d2a48e66048 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/build.gradle +++ b/samples/client/others/java/restclient-jackson-default-impl/build.gradle @@ -19,6 +19,17 @@ repositories { } +ext { + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + spring_web_version = "6.2.16" + jakarta_annotation_version = "2.1.1" + bean_validation_version = "3.1.1" + jodatime_version = "2.14.0" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,17 +109,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - spring_web_version = "6.2.16" - jakarta_annotation_version = "2.1.1" - bean_validation_version = "3.1.1" - jodatime_version = "2.14.0" - junit_version = "5.10.2" -} - dependencies { implementation "org.springframework:spring-web:$spring_web_version" implementation "org.springframework:spring-context:$spring_web_version" diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Animal.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Animal.java index 8a529674806e..b12e47748eff 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Animal.java +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Animal.java @@ -29,12 +29,11 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonIgnore; -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") -@JsonIgnoreProperties( - value = "", // ignore manually set , it will be automatically generated by Jackson during serialization - allowSetters = true // allows the to be set during deserialization -) -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "", visible = true) +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") @JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION, defaultImpl = Dog.class) + @JsonSubTypes({ + @JsonSubTypes.Type(value = Dog.class), + @JsonSubTypes.Type(value = Cat.class) + }) public interface Animal { } diff --git a/samples/client/others/java/restclient-sealedInterface/build.gradle b/samples/client/others/java/restclient-sealedInterface/build.gradle index 8052bd66f3d6..b27426226f1b 100644 --- a/samples/client/others/java/restclient-sealedInterface/build.gradle +++ b/samples/client/others/java/restclient-sealedInterface/build.gradle @@ -19,6 +19,17 @@ repositories { } +ext { + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + spring_web_version = "6.2.16" + jakarta_annotation_version = "2.1.1" + bean_validation_version = "3.1.1" + jodatime_version = "2.14.0" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,17 +109,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - spring_web_version = "6.2.16" - jakarta_annotation_version = "2.1.1" - bean_validation_version = "3.1.1" - jodatime_version = "2.14.0" - junit_version = "5.10.2" -} - dependencies { implementation "org.springframework:spring-web:$spring_web_version" implementation "org.springframework:spring-context:$spring_web_version" diff --git a/samples/client/others/java/restclient-sealedInterface/src/main/java/org/openapitools/client/model/Animal.java b/samples/client/others/java/restclient-sealedInterface/src/main/java/org/openapitools/client/model/Animal.java index 0adceca5c1ce..4783b990f7f7 100644 --- a/samples/client/others/java/restclient-sealedInterface/src/main/java/org/openapitools/client/model/Animal.java +++ b/samples/client/others/java/restclient-sealedInterface/src/main/java/org/openapitools/client/model/Animal.java @@ -31,12 +31,6 @@ import com.fasterxml.jackson.annotation.JsonIgnore; @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") -@JsonIgnoreProperties( - value = "", // ignore manually set , it will be automatically generated by Jackson during serialization - allowSetters = true // allows the to be set during deserialization -) -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "", visible = true) - public sealed interface Animal extends Serializable permits Dog, Cat { } diff --git a/samples/client/others/java/restclient-useAbstractionForFiles/build.gradle b/samples/client/others/java/restclient-useAbstractionForFiles/build.gradle index 310e4d0d5ac2..af2f333788da 100644 --- a/samples/client/others/java/restclient-useAbstractionForFiles/build.gradle +++ b/samples/client/others/java/restclient-useAbstractionForFiles/build.gradle @@ -19,6 +19,17 @@ repositories { } +ext { + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + spring_web_version = "6.2.16" + jakarta_annotation_version = "2.1.1" + bean_validation_version = "3.1.1" + jodatime_version = "2.14.0" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,17 +109,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - spring_web_version = "6.2.16" - jakarta_annotation_version = "2.1.1" - bean_validation_version = "3.1.1" - jodatime_version = "2.14.0" - junit_version = "5.10.2" -} - dependencies { implementation "org.springframework:spring-web:$spring_web_version" implementation "org.springframework:spring-context:$spring_web_version" diff --git a/samples/client/others/java/resttemplate-list-schema-validation/build.gradle b/samples/client/others/java/resttemplate-list-schema-validation/build.gradle index ff82bfe6a4a8..58ced64f3746 100644 --- a/samples/client/others/java/resttemplate-list-schema-validation/build.gradle +++ b/samples/client/others/java/resttemplate-list-schema-validation/build.gradle @@ -19,6 +19,17 @@ repositories { } +ext { + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + spring_web_version = "5.3.33" + jakarta_annotation_version = "1.3.5" + bean_validation_version = "2.0.2" + jodatime_version = "2.9.9" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,17 +109,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - spring_web_version = "5.3.33" - jakarta_annotation_version = "1.3.5" - bean_validation_version = "2.0.2" - jodatime_version = "2.9.9" - junit_version = "5.10.2" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "org.springframework:spring-web:$spring_web_version" diff --git a/samples/client/others/java/resttemplate-useAbstractionForFiles/build.gradle b/samples/client/others/java/resttemplate-useAbstractionForFiles/build.gradle index 02b5b7be0049..cdb26ae36d83 100644 --- a/samples/client/others/java/resttemplate-useAbstractionForFiles/build.gradle +++ b/samples/client/others/java/resttemplate-useAbstractionForFiles/build.gradle @@ -19,6 +19,17 @@ repositories { } +ext { + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + spring_web_version = "5.3.33" + jakarta_annotation_version = "1.3.5" + bean_validation_version = "2.0.2" + jodatime_version = "2.9.9" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,17 +109,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - spring_web_version = "5.3.33" - jakarta_annotation_version = "1.3.5" - bean_validation_version = "2.0.2" - jodatime_version = "2.9.9" - junit_version = "5.10.2" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "org.springframework:spring-web:$spring_web_version" diff --git a/samples/client/others/java/webclient-sealedInterface/build.gradle b/samples/client/others/java/webclient-sealedInterface/build.gradle index 884481be5dbd..22a323e94b80 100644 --- a/samples/client/others/java/webclient-sealedInterface/build.gradle +++ b/samples/client/others/java/webclient-sealedInterface/build.gradle @@ -18,6 +18,18 @@ repositories { mavenCentral() } +ext { + spring_boot_version = "2.7.17" + jakarta_annotation_version = "1.3.5" + beanvalidation_version = "2.0.2" + reactor_version = "3.4.34" + reactor_netty_version = "1.2.8" + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -113,18 +125,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - spring_boot_version = "2.7.17" - jakarta_annotation_version = "1.3.5" - beanvalidation_version = "2.0.2" - reactor_version = "3.4.34" - reactor_netty_version = "1.2.8" - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - junit_version = "5.10.2" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "io.projectreactor:reactor-core:$reactor_version" diff --git a/samples/client/others/java/webclient-sealedInterface/src/main/java/org/openapitools/client/model/Animal.java b/samples/client/others/java/webclient-sealedInterface/src/main/java/org/openapitools/client/model/Animal.java index 1d23eae1a301..663917ed310c 100644 --- a/samples/client/others/java/webclient-sealedInterface/src/main/java/org/openapitools/client/model/Animal.java +++ b/samples/client/others/java/webclient-sealedInterface/src/main/java/org/openapitools/client/model/Animal.java @@ -29,12 +29,6 @@ import com.fasterxml.jackson.annotation.JsonTypeName; @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") -@JsonIgnoreProperties( - value = "", // ignore manually set , it will be automatically generated by Jackson during serialization - allowSetters = true // allows the to be set during deserialization -) -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "", visible = true) - public sealed interface Animal permits Dog, Cat { } diff --git a/samples/client/others/java/webclient-sealedInterface_3_1/build.gradle b/samples/client/others/java/webclient-sealedInterface_3_1/build.gradle index 884481be5dbd..22a323e94b80 100644 --- a/samples/client/others/java/webclient-sealedInterface_3_1/build.gradle +++ b/samples/client/others/java/webclient-sealedInterface_3_1/build.gradle @@ -18,6 +18,18 @@ repositories { mavenCentral() } +ext { + spring_boot_version = "2.7.17" + jakarta_annotation_version = "1.3.5" + beanvalidation_version = "2.0.2" + reactor_version = "3.4.34" + reactor_netty_version = "1.2.8" + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -113,18 +125,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - spring_boot_version = "2.7.17" - jakarta_annotation_version = "1.3.5" - beanvalidation_version = "2.0.2" - reactor_version = "3.4.34" - reactor_netty_version = "1.2.8" - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - junit_version = "5.10.2" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "io.projectreactor:reactor-core:$reactor_version" diff --git a/samples/client/others/java/webclient-sealedInterface_3_1/src/main/java/org/openapitools/client/model/Animal.java b/samples/client/others/java/webclient-sealedInterface_3_1/src/main/java/org/openapitools/client/model/Animal.java index 1d23eae1a301..663917ed310c 100644 --- a/samples/client/others/java/webclient-sealedInterface_3_1/src/main/java/org/openapitools/client/model/Animal.java +++ b/samples/client/others/java/webclient-sealedInterface_3_1/src/main/java/org/openapitools/client/model/Animal.java @@ -29,12 +29,6 @@ import com.fasterxml.jackson.annotation.JsonTypeName; @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") -@JsonIgnoreProperties( - value = "", // ignore manually set , it will be automatically generated by Jackson during serialization - allowSetters = true // allows the to be set during deserialization -) -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "", visible = true) - public sealed interface Animal permits Dog, Cat { } diff --git a/samples/client/others/java/webclient-useAbstractionForFiles/build.gradle b/samples/client/others/java/webclient-useAbstractionForFiles/build.gradle index 3427a2abea88..bfcdbf3d24f0 100644 --- a/samples/client/others/java/webclient-useAbstractionForFiles/build.gradle +++ b/samples/client/others/java/webclient-useAbstractionForFiles/build.gradle @@ -18,6 +18,18 @@ repositories { mavenCentral() } +ext { + spring_boot_version = "2.7.17" + jakarta_annotation_version = "1.3.5" + beanvalidation_version = "2.0.2" + reactor_version = "3.4.34" + reactor_netty_version = "1.2.8" + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -113,18 +125,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - spring_boot_version = "2.7.17" - jakarta_annotation_version = "1.3.5" - beanvalidation_version = "2.0.2" - reactor_version = "3.4.34" - reactor_netty_version = "1.2.8" - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - junit_version = "5.10.2" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "io.projectreactor:reactor-core:$reactor_version" diff --git a/samples/client/petstore/java/apache-httpclient-jackson3/build.gradle b/samples/client/petstore/java/apache-httpclient-jackson3/build.gradle index 8810c9002fa6..09da3fcb2a95 100644 --- a/samples/client/petstore/java/apache-httpclient-jackson3/build.gradle +++ b/samples/client/petstore/java/apache-httpclient-jackson3/build.gradle @@ -18,6 +18,17 @@ repositories { mavenCentral() } +ext { + swagger_annotations_version = "1.6.6" + jackson3_version = "3.1.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + jakarta_annotation_version = "1.3.5" + httpclient_version = "5.1.3" + jodatime_version = "2.9.9" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -118,17 +129,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - swagger_annotations_version = "1.6.6" - jackson3_version = "3.1.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - jakarta_annotation_version = "1.3.5" - httpclient_version = "5.1.3" - jodatime_version = "2.9.9" - junit_version = "5.10.2" -} - dependencies { implementation "io.swagger:swagger-annotations:$swagger_annotations_version" implementation "com.google.code.findbugs:jsr305:3.0.2" diff --git a/samples/client/petstore/java/apache-httpclient/build.gradle b/samples/client/petstore/java/apache-httpclient/build.gradle index cb47bb9d943a..f4029f0c9d0b 100644 --- a/samples/client/petstore/java/apache-httpclient/build.gradle +++ b/samples/client/petstore/java/apache-httpclient/build.gradle @@ -18,6 +18,18 @@ repositories { mavenCentral() } +ext { + swagger_annotations_version = "1.6.6" + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_version = "2.21.5" + jackson_databind_nullable_version = "0.2.11" + jakarta_annotation_version = "1.3.5" + httpclient_version = "5.1.3" + jodatime_version = "2.9.9" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -118,18 +130,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - swagger_annotations_version = "1.6.6" - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_version = "2.21.5" - jackson_databind_nullable_version = "0.2.11" - jakarta_annotation_version = "1.3.5" - httpclient_version = "5.1.3" - jodatime_version = "2.9.9" - junit_version = "5.10.2" -} - dependencies { implementation "io.swagger:swagger-annotations:$swagger_annotations_version" implementation "com.google.code.findbugs:jsr305:3.0.2" diff --git a/samples/client/petstore/java/feign-hc5/build.gradle b/samples/client/petstore/java/feign-hc5/build.gradle index 776651e0c5f5..281306f52243 100644 --- a/samples/client/petstore/java/feign-hc5/build.gradle +++ b/samples/client/petstore/java/feign-hc5/build.gradle @@ -19,6 +19,19 @@ repositories { } +ext { + swagger_annotations_version = "1.6.11" + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_version = "2.21.5" + jackson_databind_nullable_version = "0.2.11" + jakarta_annotation_version = "1.3.5" + feign_version = "13.5" + feign_form_version = "3.8.0" + junit_version = "5.7.0" + scribejava_version = "8.0.0" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -102,19 +115,6 @@ test { useJUnitPlatform() } -ext { - swagger_annotations_version = "1.6.11" - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_version = "2.21.5" - jackson_databind_nullable_version = "0.2.11" - jakarta_annotation_version = "1.3.5" - feign_version = "13.5" - feign_form_version = "3.8.0" - junit_version = "5.7.0" - scribejava_version = "8.0.0" -} - dependencies { implementation "io.swagger:swagger-annotations:$swagger_annotations_version" implementation "com.google.code.findbugs:jsr305:3.0.2" diff --git a/samples/client/petstore/java/feign-no-nullable/build.gradle b/samples/client/petstore/java/feign-no-nullable/build.gradle index 86f101c1db7d..8d52fd6e3c98 100644 --- a/samples/client/petstore/java/feign-no-nullable/build.gradle +++ b/samples/client/petstore/java/feign-no-nullable/build.gradle @@ -19,6 +19,19 @@ repositories { } +ext { + swagger_annotations_version = "1.6.11" + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_version = "2.21.5" + jakarta_annotation_version = "1.3.5" + feign_version = "13.5" + feign_form_version = "3.8.0" + junit_version = "5.7.0" + scribejava_version = "8.0.0" + commons_lang3_version = "3.17.0" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -102,19 +115,6 @@ test { useJUnitPlatform() } -ext { - swagger_annotations_version = "1.6.11" - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_version = "2.21.5" - jakarta_annotation_version = "1.3.5" - feign_version = "13.5" - feign_form_version = "3.8.0" - junit_version = "5.7.0" - scribejava_version = "8.0.0" - commons_lang3_version = "3.17.0" -} - dependencies { implementation "io.swagger:swagger-annotations:$swagger_annotations_version" implementation "com.google.code.findbugs:jsr305:3.0.2" diff --git a/samples/client/petstore/java/feign/build.gradle b/samples/client/petstore/java/feign/build.gradle index 382a7e1d0bb4..056550c465b6 100644 --- a/samples/client/petstore/java/feign/build.gradle +++ b/samples/client/petstore/java/feign/build.gradle @@ -19,6 +19,19 @@ repositories { } +ext { + swagger_annotations_version = "1.6.11" + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_version = "2.21.5" + jackson_databind_nullable_version = "0.2.11" + jakarta_annotation_version = "1.3.5" + feign_version = "13.5" + feign_form_version = "3.8.0" + junit_version = "5.7.0" + scribejava_version = "8.0.0" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -102,19 +115,6 @@ test { useJUnitPlatform() } -ext { - swagger_annotations_version = "1.6.11" - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_version = "2.21.5" - jackson_databind_nullable_version = "0.2.11" - jakarta_annotation_version = "1.3.5" - feign_version = "13.5" - feign_form_version = "3.8.0" - junit_version = "5.7.0" - scribejava_version = "8.0.0" -} - dependencies { implementation "io.swagger:swagger-annotations:$swagger_annotations_version" implementation "com.google.code.findbugs:jsr305:3.0.2" diff --git a/samples/client/petstore/java/google-api-client/build.gradle b/samples/client/petstore/java/google-api-client/build.gradle index 2e62883ad2e7..32fcd93c05da 100644 --- a/samples/client/petstore/java/google-api-client/build.gradle +++ b/samples/client/petstore/java/google-api-client/build.gradle @@ -19,6 +19,19 @@ repositories { } +ext { + swagger_annotations_version = "1.6.3" + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_version = "2.21.5" + jackson_databind_nullable_version = "0.2.11" + jakarta_annotation_version = "1.3.5" + google_api_client_version = "1.32.2" + jersey_common_version = "2.25.1" + jodatime_version = "2.9.9" + junit_version = "4.13.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,19 +111,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - swagger_annotations_version = "1.6.3" - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_version = "2.21.5" - jackson_databind_nullable_version = "0.2.11" - jakarta_annotation_version = "1.3.5" - google_api_client_version = "1.32.2" - jersey_common_version = "2.25.1" - jodatime_version = "2.9.9" - junit_version = "4.13.2" -} - dependencies { implementation "io.swagger:swagger-annotations:$swagger_annotations_version" implementation "com.google.code.findbugs:jsr305:3.0.2" diff --git a/samples/client/petstore/java/jersey2-java8-localdatetime/build.gradle b/samples/client/petstore/java/jersey2-java8-localdatetime/build.gradle index 114e2db2f08d..84578a550f2d 100644 --- a/samples/client/petstore/java/jersey2-java8-localdatetime/build.gradle +++ b/samples/client/petstore/java/jersey2-java8-localdatetime/build.gradle @@ -20,6 +20,17 @@ repositories { mavenCentral() } +ext { + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_version = "2.21.5" + jackson_databind_nullable_version = "0.2.11" + jakarta_annotation_version = "1.3.5" + jersey_version = "2.35" + junit_version = "5.8.2" + scribejava_apis_version = "8.3.1" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -99,17 +110,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_version = "2.21.5" - jackson_databind_nullable_version = "0.2.11" - jakarta_annotation_version = "1.3.5" - jersey_version = "2.35" - junit_version = "5.8.2" - scribejava_apis_version = "8.3.1" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "org.glassfish.jersey.core:jersey-client:$jersey_version" diff --git a/samples/client/petstore/java/jersey2-java8/build.gradle b/samples/client/petstore/java/jersey2-java8/build.gradle index 48b6d018e475..70f62ea602a4 100644 --- a/samples/client/petstore/java/jersey2-java8/build.gradle +++ b/samples/client/petstore/java/jersey2-java8/build.gradle @@ -20,6 +20,17 @@ repositories { mavenCentral() } +ext { + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_version = "2.21.5" + jackson_databind_nullable_version = "0.2.11" + jakarta_annotation_version = "1.3.5" + jersey_version = "2.35" + junit_version = "5.8.2" + scribejava_apis_version = "8.3.1" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -99,17 +110,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_version = "2.21.5" - jackson_databind_nullable_version = "0.2.11" - jakarta_annotation_version = "1.3.5" - jersey_version = "2.35" - junit_version = "5.8.2" - scribejava_apis_version = "8.3.1" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "org.glassfish.jersey.core:jersey-client:$jersey_version" diff --git a/samples/client/petstore/java/jersey3-jackson3/build.gradle b/samples/client/petstore/java/jersey3-jackson3/build.gradle index cbaad2e513fc..9f61251d48a0 100644 --- a/samples/client/petstore/java/jersey3-jackson3/build.gradle +++ b/samples/client/petstore/java/jersey3-jackson3/build.gradle @@ -20,6 +20,20 @@ repositories { mavenCentral() } +ext { + swagger_annotations_version = "1.6.5" + jackson3_version = "3.1.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + jakarta_annotation_version = "3.0.0" + bean_validation_version = "3.1.1" + jersey_version = "3.0.4" + junit_version = "5.8.2" + scribejava_apis_version = "8.3.1" + tomitribe_http_signatures_version = "1.7" + commons_lang3_version = "3.17.0" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -99,20 +113,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - swagger_annotations_version = "1.6.5" - jackson3_version = "3.1.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - jakarta_annotation_version = "3.0.0" - bean_validation_version = "3.1.1" - jersey_version = "3.0.4" - junit_version = "5.8.2" - scribejava_apis_version = "8.3.1" - tomitribe_http_signatures_version = "1.7" - commons_lang3_version = "3.17.0" -} - dependencies { implementation "io.swagger:swagger-annotations:$swagger_annotations_version" implementation "com.google.code.findbugs:jsr305:3.0.2" diff --git a/samples/client/petstore/java/jersey3-oneOf/build.gradle b/samples/client/petstore/java/jersey3-oneOf/build.gradle index 157fb07be735..bc335aa41ee7 100644 --- a/samples/client/petstore/java/jersey3-oneOf/build.gradle +++ b/samples/client/petstore/java/jersey3-oneOf/build.gradle @@ -20,6 +20,17 @@ repositories { mavenCentral() } +ext { + swagger_annotations_version = "1.6.5" + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_version = "2.21.5" + jackson_databind_nullable_version = "0.2.11" + jakarta_annotation_version = "3.0.0" + jersey_version = "3.0.4" + junit_version = "5.8.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -99,17 +110,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - swagger_annotations_version = "1.6.5" - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_version = "2.21.5" - jackson_databind_nullable_version = "0.2.11" - jakarta_annotation_version = "3.0.0" - jersey_version = "3.0.4" - junit_version = "5.8.2" -} - dependencies { implementation "io.swagger:swagger-annotations:$swagger_annotations_version" implementation "com.google.code.findbugs:jsr305:3.0.2" diff --git a/samples/client/petstore/java/jersey3/build.gradle b/samples/client/petstore/java/jersey3/build.gradle index f7d3560b28d1..e70babca5a5a 100644 --- a/samples/client/petstore/java/jersey3/build.gradle +++ b/samples/client/petstore/java/jersey3/build.gradle @@ -20,6 +20,21 @@ repositories { mavenCentral() } +ext { + swagger_annotations_version = "1.6.5" + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_version = "2.21.5" + jackson_databind_nullable_version = "0.2.11" + jakarta_annotation_version = "3.0.0" + bean_validation_version = "3.1.1" + jersey_version = "3.0.4" + junit_version = "5.8.2" + scribejava_apis_version = "8.3.1" + tomitribe_http_signatures_version = "1.7" + commons_lang3_version = "3.17.0" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -99,21 +114,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - swagger_annotations_version = "1.6.5" - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_version = "2.21.5" - jackson_databind_nullable_version = "0.2.11" - jakarta_annotation_version = "3.0.0" - bean_validation_version = "3.1.1" - jersey_version = "3.0.4" - junit_version = "5.8.2" - scribejava_apis_version = "8.3.1" - tomitribe_http_signatures_version = "1.7" - commons_lang3_version = "3.17.0" -} - dependencies { implementation "io.swagger:swagger-annotations:$swagger_annotations_version" implementation "com.google.code.findbugs:jsr305:3.0.2" diff --git a/samples/client/petstore/java/okhttp-gson-3.1-duplicated-operationid/build.gradle b/samples/client/petstore/java/okhttp-gson-3.1-duplicated-operationid/build.gradle index 8b73b0ca05f1..db5a5ce70667 100644 --- a/samples/client/petstore/java/okhttp-gson-3.1-duplicated-operationid/build.gradle +++ b/samples/client/petstore/java/okhttp-gson-3.1-duplicated-operationid/build.gradle @@ -24,6 +24,10 @@ sourceSets { main.java.srcDirs = ['src/main/java'] } +ext { + jakarta_annotation_version = "1.3.5" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -103,10 +107,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jakarta_annotation_version = "1.3.5" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation 'com.squareup.okhttp3:okhttp:4.12.0' diff --git a/samples/client/petstore/java/okhttp-gson-3.1/build.gradle b/samples/client/petstore/java/okhttp-gson-3.1/build.gradle index aa8462688f20..3f21d8bda53c 100644 --- a/samples/client/petstore/java/okhttp-gson-3.1/build.gradle +++ b/samples/client/petstore/java/okhttp-gson-3.1/build.gradle @@ -24,6 +24,10 @@ sourceSets { main.java.srcDirs = ['src/main/java'] } +ext { + jakarta_annotation_version = "1.3.5" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -103,10 +107,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jakarta_annotation_version = "1.3.5" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation 'com.squareup.okhttp3:okhttp:4.12.0' diff --git a/samples/client/petstore/java/okhttp-gson-awsv4signature/build.gradle b/samples/client/petstore/java/okhttp-gson-awsv4signature/build.gradle index 4667113f4626..0891c71fc489 100644 --- a/samples/client/petstore/java/okhttp-gson-awsv4signature/build.gradle +++ b/samples/client/petstore/java/okhttp-gson-awsv4signature/build.gradle @@ -24,6 +24,10 @@ sourceSets { main.java.srcDirs = ['src/main/java'] } +ext { + jakarta_annotation_version = "1.3.5" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -103,10 +107,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jakarta_annotation_version = "1.3.5" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation 'com.squareup.okhttp3:okhttp:4.12.0' diff --git a/samples/client/petstore/java/okhttp-gson-dynamicOperations/build.gradle b/samples/client/petstore/java/okhttp-gson-dynamicOperations/build.gradle index 5d1dafc364a4..41bcd29ca4b4 100644 --- a/samples/client/petstore/java/okhttp-gson-dynamicOperations/build.gradle +++ b/samples/client/petstore/java/okhttp-gson-dynamicOperations/build.gradle @@ -24,6 +24,10 @@ sourceSets { main.java.srcDirs = ['src/main/java'] } +ext { + jakarta_annotation_version = "1.3.5" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -103,10 +107,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jakarta_annotation_version = "1.3.5" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation 'com.squareup.okhttp3:okhttp:4.12.0' diff --git a/samples/client/petstore/java/okhttp-gson-group-parameter/build.gradle b/samples/client/petstore/java/okhttp-gson-group-parameter/build.gradle index f3e422ba24c8..7404409ee8ca 100644 --- a/samples/client/petstore/java/okhttp-gson-group-parameter/build.gradle +++ b/samples/client/petstore/java/okhttp-gson-group-parameter/build.gradle @@ -24,6 +24,10 @@ sourceSets { main.java.srcDirs = ['src/main/java'] } +ext { + jakarta_annotation_version = "1.3.5" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -103,10 +107,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jakarta_annotation_version = "1.3.5" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation 'com.squareup.okhttp3:okhttp:4.12.0' diff --git a/samples/client/petstore/java/okhttp-gson-nullable-required/build.gradle b/samples/client/petstore/java/okhttp-gson-nullable-required/build.gradle index 21c5c88ef179..7309dc62ce78 100644 --- a/samples/client/petstore/java/okhttp-gson-nullable-required/build.gradle +++ b/samples/client/petstore/java/okhttp-gson-nullable-required/build.gradle @@ -24,6 +24,10 @@ sourceSets { main.java.srcDirs = ['src/main/java'] } +ext { + jakarta_annotation_version = "1.3.5" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -103,10 +107,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jakarta_annotation_version = "1.3.5" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation 'com.squareup.okhttp3:okhttp:4.12.0' diff --git a/samples/client/petstore/java/okhttp-gson-parcelableModel/build.gradle b/samples/client/petstore/java/okhttp-gson-parcelableModel/build.gradle index 4b5115be1eef..b31b1d3ec5bf 100644 --- a/samples/client/petstore/java/okhttp-gson-parcelableModel/build.gradle +++ b/samples/client/petstore/java/okhttp-gson-parcelableModel/build.gradle @@ -24,6 +24,10 @@ sourceSets { main.java.srcDirs = ['src/main/java'] } +ext { + jakarta_annotation_version = "1.3.5" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -103,10 +107,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jakarta_annotation_version = "1.3.5" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation 'com.squareup.okhttp3:okhttp:4.12.0' diff --git a/samples/client/petstore/java/okhttp-gson-swagger1/build.gradle b/samples/client/petstore/java/okhttp-gson-swagger1/build.gradle index 2731aa94f918..8821304c3922 100644 --- a/samples/client/petstore/java/okhttp-gson-swagger1/build.gradle +++ b/samples/client/petstore/java/okhttp-gson-swagger1/build.gradle @@ -24,6 +24,11 @@ sourceSets { main.java.srcDirs = ['src/main/java'] } +ext { + swagger_annotations_version = "1.6.9" + jakarta_annotation_version = "1.3.5" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -103,11 +108,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - swagger_annotations_version = "1.6.9" - jakarta_annotation_version = "1.3.5" -} - dependencies { implementation "io.swagger:swagger-annotations:$swagger_annotations_version" implementation "com.google.code.findbugs:jsr305:3.0.2" diff --git a/samples/client/petstore/java/okhttp-gson-swagger2/build.gradle b/samples/client/petstore/java/okhttp-gson-swagger2/build.gradle index 296370127e67..6a6a606f70c8 100644 --- a/samples/client/petstore/java/okhttp-gson-swagger2/build.gradle +++ b/samples/client/petstore/java/okhttp-gson-swagger2/build.gradle @@ -24,6 +24,11 @@ sourceSets { main.java.srcDirs = ['src/main/java'] } +ext { + swagger_annotations_version = "2.2.9" + jakarta_annotation_version = "1.3.5" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -103,11 +108,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - swagger_annotations_version = "2.2.9" - jakarta_annotation_version = "1.3.5" -} - dependencies { implementation "io.swagger.core.v3:swagger-annotations:$swagger_annotations_version" implementation "com.google.code.findbugs:jsr305:3.0.2" diff --git a/samples/client/petstore/java/okhttp-gson/build.gradle b/samples/client/petstore/java/okhttp-gson/build.gradle index cfeeabda27eb..5f9a0a55a7e7 100644 --- a/samples/client/petstore/java/okhttp-gson/build.gradle +++ b/samples/client/petstore/java/okhttp-gson/build.gradle @@ -24,6 +24,10 @@ sourceSets { main.java.srcDirs = ['src/main/java'] } +ext { + jakarta_annotation_version = "1.3.5" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -103,10 +107,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jakarta_annotation_version = "1.3.5" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation 'com.squareup.okhttp3:okhttp:4.12.0' diff --git a/samples/client/petstore/java/rest-assured-jackson/build.gradle b/samples/client/petstore/java/rest-assured-jackson/build.gradle index 2b288afae5a1..3395c4fdc052 100644 --- a/samples/client/petstore/java/rest-assured-jackson/build.gradle +++ b/samples/client/petstore/java/rest-assured-jackson/build.gradle @@ -19,6 +19,16 @@ repositories { } +ext { + rest_assured_version = "5.5.6" + junit_version = "5.10.3" + jackson_version = "2.21.5" + jackson_databind_version = "2.21.5" + jackson_databind_nullable_version = "0.2.11" + okio_version = "3.6.0" + jakarta_annotation_version = "1.3.5" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,16 +108,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - rest_assured_version = "5.5.6" - junit_version = "5.10.3" - jackson_version = "2.21.5" - jackson_databind_version = "2.21.5" - jackson_databind_nullable_version = "0.2.11" - okio_version = "3.6.0" - jakarta_annotation_version = "1.3.5" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "io.rest-assured:rest-assured:$rest_assured_version" diff --git a/samples/client/petstore/java/rest-assured/build.gradle b/samples/client/petstore/java/rest-assured/build.gradle index 81406852c5cb..55bf8f059d05 100644 --- a/samples/client/petstore/java/rest-assured/build.gradle +++ b/samples/client/petstore/java/rest-assured/build.gradle @@ -19,6 +19,15 @@ repositories { } +ext { + rest_assured_version = "5.5.6" + junit_version = "5.10.3" + gson_version = "2.10.1" + gson_fire_version = "1.9.0" + okio_version = "3.6.0" + jakarta_annotation_version = "1.3.5" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,15 +107,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - rest_assured_version = "5.5.6" - junit_version = "5.10.3" - gson_version = "2.10.1" - gson_fire_version = "1.9.0" - okio_version = "3.6.0" - jakarta_annotation_version = "1.3.5" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "io.rest-assured:rest-assured:$rest_assured_version" diff --git a/samples/client/petstore/java/restclient-nullable-arrays/build.gradle b/samples/client/petstore/java/restclient-nullable-arrays/build.gradle index 3b15d3fa8640..a1694cd0159d 100644 --- a/samples/client/petstore/java/restclient-nullable-arrays/build.gradle +++ b/samples/client/petstore/java/restclient-nullable-arrays/build.gradle @@ -19,6 +19,17 @@ repositories { } +ext { + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + spring_web_version = "6.2.16" + jakarta_annotation_version = "2.1.1" + bean_validation_version = "3.1.1" + jodatime_version = "2.14.0" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,17 +109,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - spring_web_version = "6.2.16" - jakarta_annotation_version = "2.1.1" - bean_validation_version = "3.1.1" - jodatime_version = "2.14.0" - junit_version = "5.10.2" -} - dependencies { implementation "org.springframework:spring-web:$spring_web_version" implementation "org.springframework:spring-context:$spring_web_version" diff --git a/samples/client/petstore/java/restclient-springBoot4-jackson2/build.gradle b/samples/client/petstore/java/restclient-springBoot4-jackson2/build.gradle index c6a35eb685aa..1917c5dcc6c8 100644 --- a/samples/client/petstore/java/restclient-springBoot4-jackson2/build.gradle +++ b/samples/client/petstore/java/restclient-springBoot4-jackson2/build.gradle @@ -19,6 +19,17 @@ repositories { } +ext { + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + spring_web_version = "7.0.8" + jakarta_annotation_version = "3.0.0" + bean_validation_version = "3.1.1" + jodatime_version = "2.14.0" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,17 +109,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - spring_web_version = "7.0.8" - jakarta_annotation_version = "3.0.0" - bean_validation_version = "3.1.1" - jodatime_version = "2.14.0" - junit_version = "5.10.2" -} - dependencies { implementation "org.springframework:spring-web:$spring_web_version" implementation "org.springframework:spring-context:$spring_web_version" diff --git a/samples/client/petstore/java/restclient-springBoot4-jackson3-jspecify-openapiNullable/build.gradle b/samples/client/petstore/java/restclient-springBoot4-jackson3-jspecify-openapiNullable/build.gradle index beb0694274d5..92d8df2735ef 100644 --- a/samples/client/petstore/java/restclient-springBoot4-jackson3-jspecify-openapiNullable/build.gradle +++ b/samples/client/petstore/java/restclient-springBoot4-jackson3-jspecify-openapiNullable/build.gradle @@ -19,6 +19,17 @@ repositories { } +ext { + jackson_version = "3.1.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + spring_web_version = "7.0.8" + jakarta_annotation_version = "3.0.0" + bean_validation_version = "3.1.1" + jodatime_version = "2.14.0" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,17 +109,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "3.1.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - spring_web_version = "7.0.8" - jakarta_annotation_version = "3.0.0" - bean_validation_version = "3.1.1" - jodatime_version = "2.14.0" - junit_version = "5.10.2" -} - dependencies { implementation "org.springframework:spring-web:$spring_web_version" implementation "org.springframework:spring-context:$spring_web_version" diff --git a/samples/client/petstore/java/restclient-springBoot4-jackson3-jspecify/build.gradle b/samples/client/petstore/java/restclient-springBoot4-jackson3-jspecify/build.gradle index e49e0bb15ad6..1a1f5be18593 100644 --- a/samples/client/petstore/java/restclient-springBoot4-jackson3-jspecify/build.gradle +++ b/samples/client/petstore/java/restclient-springBoot4-jackson3-jspecify/build.gradle @@ -19,6 +19,16 @@ repositories { } +ext { + jackson_version = "3.1.5" + jackson_annotations_version = "2.21" + spring_web_version = "7.0.8" + jakarta_annotation_version = "3.0.0" + bean_validation_version = "3.1.1" + jodatime_version = "2.14.0" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,16 +108,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "3.1.5" - jackson_annotations_version = "2.21" - spring_web_version = "7.0.8" - jakarta_annotation_version = "3.0.0" - bean_validation_version = "3.1.1" - jodatime_version = "2.14.0" - junit_version = "5.10.2" -} - dependencies { implementation "org.springframework:spring-web:$spring_web_version" implementation "org.springframework:spring-context:$spring_web_version" diff --git a/samples/client/petstore/java/restclient-springBoot4-jackson3/build.gradle b/samples/client/petstore/java/restclient-springBoot4-jackson3/build.gradle index e49e0bb15ad6..1a1f5be18593 100644 --- a/samples/client/petstore/java/restclient-springBoot4-jackson3/build.gradle +++ b/samples/client/petstore/java/restclient-springBoot4-jackson3/build.gradle @@ -19,6 +19,16 @@ repositories { } +ext { + jackson_version = "3.1.5" + jackson_annotations_version = "2.21" + spring_web_version = "7.0.8" + jakarta_annotation_version = "3.0.0" + bean_validation_version = "3.1.1" + jodatime_version = "2.14.0" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,16 +108,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "3.1.5" - jackson_annotations_version = "2.21" - spring_web_version = "7.0.8" - jakarta_annotation_version = "3.0.0" - bean_validation_version = "3.1.1" - jodatime_version = "2.14.0" - junit_version = "5.10.2" -} - dependencies { implementation "org.springframework:spring-web:$spring_web_version" implementation "org.springframework:spring-context:$spring_web_version" diff --git a/samples/client/petstore/java/restclient-swagger2/build.gradle b/samples/client/petstore/java/restclient-swagger2/build.gradle index 151336395ae0..b3773f66f10e 100644 --- a/samples/client/petstore/java/restclient-swagger2/build.gradle +++ b/samples/client/petstore/java/restclient-swagger2/build.gradle @@ -19,6 +19,18 @@ repositories { } +ext { + swagger_annotations_version = "2.2.43" + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + spring_web_version = "6.2.16" + jakarta_annotation_version = "2.1.1" + bean_validation_version = "3.1.1" + jodatime_version = "2.14.0" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,18 +110,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - swagger_annotations_version = "2.2.43" - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - spring_web_version = "6.2.16" - jakarta_annotation_version = "2.1.1" - bean_validation_version = "3.1.1" - jodatime_version = "2.14.0" - junit_version = "5.10.2" -} - dependencies { implementation "io.swagger.core.v3:swagger-annotations:$swagger_annotations_version" implementation "org.springframework:spring-web:$spring_web_version" diff --git a/samples/client/petstore/java/restclient-useSingleRequestParameter-static/build.gradle b/samples/client/petstore/java/restclient-useSingleRequestParameter-static/build.gradle index 37051a94a1a1..53745c2f4a91 100644 --- a/samples/client/petstore/java/restclient-useSingleRequestParameter-static/build.gradle +++ b/samples/client/petstore/java/restclient-useSingleRequestParameter-static/build.gradle @@ -19,6 +19,17 @@ repositories { } +ext { + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + spring_web_version = "6.2.16" + jakarta_annotation_version = "2.1.1" + bean_validation_version = "3.1.1" + jodatime_version = "2.14.0" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,17 +109,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - spring_web_version = "6.2.16" - jakarta_annotation_version = "2.1.1" - bean_validation_version = "3.1.1" - jodatime_version = "2.14.0" - junit_version = "5.10.2" -} - dependencies { implementation "org.springframework:spring-web:$spring_web_version" implementation "org.springframework:spring-context:$spring_web_version" diff --git a/samples/client/petstore/java/restclient-useSingleRequestParameter/build.gradle b/samples/client/petstore/java/restclient-useSingleRequestParameter/build.gradle index ff181739d598..9246c0038bae 100644 --- a/samples/client/petstore/java/restclient-useSingleRequestParameter/build.gradle +++ b/samples/client/petstore/java/restclient-useSingleRequestParameter/build.gradle @@ -19,6 +19,17 @@ repositories { } +ext { + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + spring_web_version = "6.2.16" + jakarta_annotation_version = "2.1.1" + bean_validation_version = "3.1.1" + jodatime_version = "2.14.0" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,17 +109,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - spring_web_version = "6.2.16" - jakarta_annotation_version = "2.1.1" - bean_validation_version = "3.1.1" - jodatime_version = "2.14.0" - junit_version = "5.10.2" -} - dependencies { implementation "org.springframework:spring-web:$spring_web_version" implementation "org.springframework:spring-context:$spring_web_version" diff --git a/samples/client/petstore/java/restclient/build.gradle b/samples/client/petstore/java/restclient/build.gradle index cbe35507537b..e1e9a89fe6c6 100644 --- a/samples/client/petstore/java/restclient/build.gradle +++ b/samples/client/petstore/java/restclient/build.gradle @@ -19,6 +19,17 @@ repositories { } +ext { + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + spring_web_version = "6.2.16" + jakarta_annotation_version = "2.1.1" + bean_validation_version = "3.1.1" + jodatime_version = "2.14.0" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,17 +109,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - spring_web_version = "6.2.16" - jakarta_annotation_version = "2.1.1" - bean_validation_version = "3.1.1" - jodatime_version = "2.14.0" - junit_version = "5.10.2" -} - dependencies { implementation "org.springframework:spring-web:$spring_web_version" implementation "org.springframework:spring-context:$spring_web_version" diff --git a/samples/client/petstore/java/resteasy/build.gradle b/samples/client/petstore/java/resteasy/build.gradle index 68b1c4432149..12c2b80b9fcc 100644 --- a/samples/client/petstore/java/resteasy/build.gradle +++ b/samples/client/petstore/java/resteasy/build.gradle @@ -19,6 +19,18 @@ repositories { } +ext { + swagger_annotations_version = "1.6.3" + jackson_version = "2.21.5" + jackson_databind_version = "2.21.5" + jackson_databind_nullable_version = "0.2.11" + jakarta_annotation_version = "1.3.5" + threetenbp_version = "2.9.10" + resteasy_version = "4.5.11.Final" + assertj_version = "3.23.1" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,18 +110,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - swagger_annotations_version = "1.6.3" - jackson_version = "2.21.5" - jackson_databind_version = "2.21.5" - jackson_databind_nullable_version = "0.2.11" - jakarta_annotation_version = "1.3.5" - threetenbp_version = "2.9.10" - resteasy_version = "4.5.11.Final" - assertj_version = "3.23.1" - junit_version = "5.10.2" -} - dependencies { implementation "io.swagger:swagger-annotations:$swagger_annotations_version" implementation "com.google.code.findbugs:jsr305:3.0.2" diff --git a/samples/client/petstore/java/resttemplate-jakarta/build.gradle b/samples/client/petstore/java/resttemplate-jakarta/build.gradle index 081af58759f3..3168163d0d2c 100644 --- a/samples/client/petstore/java/resttemplate-jakarta/build.gradle +++ b/samples/client/petstore/java/resttemplate-jakarta/build.gradle @@ -19,6 +19,17 @@ repositories { } +ext { + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + spring_web_version = "6.2.8" + jakarta_annotation_version = "2.1.1" + bean_validation_version = "3.0.2" + jodatime_version = "2.9.9" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,17 +109,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - spring_web_version = "6.2.8" - jakarta_annotation_version = "2.1.1" - bean_validation_version = "3.0.2" - jodatime_version = "2.9.9" - junit_version = "5.10.2" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "org.springframework:spring-web:$spring_web_version" diff --git a/samples/client/petstore/java/resttemplate-springBoot4-jackson2/build.gradle b/samples/client/petstore/java/resttemplate-springBoot4-jackson2/build.gradle index 954545a028bf..dde8b0376dc3 100644 --- a/samples/client/petstore/java/resttemplate-springBoot4-jackson2/build.gradle +++ b/samples/client/petstore/java/resttemplate-springBoot4-jackson2/build.gradle @@ -19,6 +19,17 @@ repositories { } +ext { + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + spring_web_version = "7.0.8" + jakarta_annotation_version = "3.0.0" + bean_validation_version = "3.1.1" + jodatime_version = "2.9.9" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,17 +109,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - spring_web_version = "7.0.8" - jakarta_annotation_version = "3.0.0" - bean_validation_version = "3.1.1" - jodatime_version = "2.9.9" - junit_version = "5.10.2" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "org.springframework:spring-web:$spring_web_version" diff --git a/samples/client/petstore/java/resttemplate-springBoot4-jackson3-jspecify/build.gradle b/samples/client/petstore/java/resttemplate-springBoot4-jackson3-jspecify/build.gradle index 586ccfd61131..0b4d720b5f15 100644 --- a/samples/client/petstore/java/resttemplate-springBoot4-jackson3-jspecify/build.gradle +++ b/samples/client/petstore/java/resttemplate-springBoot4-jackson3-jspecify/build.gradle @@ -19,6 +19,16 @@ repositories { } +ext { + jackson_version = "3.1.5" + jackson_annotations_version = "2.21" + spring_web_version = "7.0.8" + jakarta_annotation_version = "3.0.0" + bean_validation_version = "3.1.1" + jodatime_version = "2.9.9" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,16 +108,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "3.1.5" - jackson_annotations_version = "2.21" - spring_web_version = "7.0.8" - jakarta_annotation_version = "3.0.0" - bean_validation_version = "3.1.1" - jodatime_version = "2.9.9" - junit_version = "5.10.2" -} - dependencies { implementation "org.springframework:spring-web:$spring_web_version" implementation "org.springframework:spring-context:$spring_web_version" diff --git a/samples/client/petstore/java/resttemplate-springBoot4-jackson3/build.gradle b/samples/client/petstore/java/resttemplate-springBoot4-jackson3/build.gradle index 63c2a626785b..657b810a5322 100644 --- a/samples/client/petstore/java/resttemplate-springBoot4-jackson3/build.gradle +++ b/samples/client/petstore/java/resttemplate-springBoot4-jackson3/build.gradle @@ -19,6 +19,16 @@ repositories { } +ext { + jackson_version = "3.1.5" + jackson_annotations_version = "2.21" + spring_web_version = "7.0.8" + jakarta_annotation_version = "3.0.0" + bean_validation_version = "3.1.1" + jodatime_version = "2.9.9" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,16 +108,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "3.1.5" - jackson_annotations_version = "2.21" - spring_web_version = "7.0.8" - jakarta_annotation_version = "3.0.0" - bean_validation_version = "3.1.1" - jodatime_version = "2.9.9" - junit_version = "5.10.2" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "org.springframework:spring-web:$spring_web_version" diff --git a/samples/client/petstore/java/resttemplate-swagger1/build.gradle b/samples/client/petstore/java/resttemplate-swagger1/build.gradle index 7337ea12739a..109da973d13b 100644 --- a/samples/client/petstore/java/resttemplate-swagger1/build.gradle +++ b/samples/client/petstore/java/resttemplate-swagger1/build.gradle @@ -19,6 +19,18 @@ repositories { } +ext { + swagger_annotations_version = "1.6.9" + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + spring_web_version = "5.3.33" + jakarta_annotation_version = "1.3.5" + bean_validation_version = "2.0.2" + jodatime_version = "2.9.9" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,18 +110,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - swagger_annotations_version = "1.6.9" - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - spring_web_version = "5.3.33" - jakarta_annotation_version = "1.3.5" - bean_validation_version = "2.0.2" - jodatime_version = "2.9.9" - junit_version = "5.10.2" -} - dependencies { implementation "io.swagger:swagger-annotations:$swagger_annotations_version" implementation "com.google.code.findbugs:jsr305:3.0.2" diff --git a/samples/client/petstore/java/resttemplate-swagger2/build.gradle b/samples/client/petstore/java/resttemplate-swagger2/build.gradle index c9f291c39022..f4b665b88c5e 100644 --- a/samples/client/petstore/java/resttemplate-swagger2/build.gradle +++ b/samples/client/petstore/java/resttemplate-swagger2/build.gradle @@ -19,6 +19,18 @@ repositories { } +ext { + swagger_annotations_version = "2.2.9" + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + spring_web_version = "5.3.33" + jakarta_annotation_version = "1.3.5" + bean_validation_version = "2.0.2" + jodatime_version = "2.9.9" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,18 +110,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - swagger_annotations_version = "2.2.9" - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - spring_web_version = "5.3.33" - jakarta_annotation_version = "1.3.5" - bean_validation_version = "2.0.2" - jodatime_version = "2.9.9" - junit_version = "5.10.2" -} - dependencies { implementation "io.swagger.core.v3:swagger-annotations:$swagger_annotations_version" implementation "com.google.code.findbugs:jsr305:3.0.2" diff --git a/samples/client/petstore/java/resttemplate-withXml/build.gradle b/samples/client/petstore/java/resttemplate-withXml/build.gradle index 8a018bddcba3..705bc393c4d5 100644 --- a/samples/client/petstore/java/resttemplate-withXml/build.gradle +++ b/samples/client/petstore/java/resttemplate-withXml/build.gradle @@ -19,6 +19,17 @@ repositories { } +ext { + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + spring_web_version = "5.3.33" + jakarta_annotation_version = "1.3.5" + bean_validation_version = "2.0.2" + jodatime_version = "2.9.9" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,17 +109,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - spring_web_version = "5.3.33" - jakarta_annotation_version = "1.3.5" - bean_validation_version = "2.0.2" - jodatime_version = "2.9.9" - junit_version = "5.10.2" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "org.springframework:spring-web:$spring_web_version" diff --git a/samples/client/petstore/java/resttemplate/build.gradle b/samples/client/petstore/java/resttemplate/build.gradle index 47fc1c4a46e9..1a957ff3158e 100644 --- a/samples/client/petstore/java/resttemplate/build.gradle +++ b/samples/client/petstore/java/resttemplate/build.gradle @@ -19,6 +19,17 @@ repositories { } +ext { + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + spring_web_version = "5.3.33" + jakarta_annotation_version = "1.3.5" + bean_validation_version = "2.0.2" + jodatime_version = "2.9.9" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,17 +109,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - spring_web_version = "5.3.33" - jakarta_annotation_version = "1.3.5" - bean_validation_version = "2.0.2" - jodatime_version = "2.9.9" - junit_version = "5.10.2" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "org.springframework:spring-web:$spring_web_version" diff --git a/samples/client/petstore/java/retrofit2-play26/build.gradle b/samples/client/petstore/java/retrofit2-play26/build.gradle index b058b6524335..3ac27c611e8b 100644 --- a/samples/client/petstore/java/retrofit2-play26/build.gradle +++ b/samples/client/petstore/java/retrofit2-play26/build.gradle @@ -19,6 +19,21 @@ repositories { } +ext { + oltu_version = "1.0.1" + retrofit_version = "2.11.0" + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_version = "2.21.5" + javax_ws_rs_api_version = "2.1.1" + jackson_databind_nullable_version = "0.2.11" + play_version = "2.6.7" + jakarta_annotation_version = "1.3.5" + swagger_annotations_version = "1.5.22" + junit_version = "5.10.3" + json_fire_version = "1.9.0" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,21 +113,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - oltu_version = "1.0.1" - retrofit_version = "2.11.0" - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_version = "2.21.5" - javax_ws_rs_api_version = "2.1.1" - jackson_databind_nullable_version = "0.2.11" - play_version = "2.6.7" - jakarta_annotation_version = "1.3.5" - swagger_annotations_version = "1.5.22" - junit_version = "5.10.3" - json_fire_version = "1.9.0" -} - dependencies { implementation "com.squareup.retrofit2:retrofit:$retrofit_version" implementation "com.squareup.retrofit2:converter-scalars:$retrofit_version" diff --git a/samples/client/petstore/java/retrofit2/build.gradle b/samples/client/petstore/java/retrofit2/build.gradle index f55348d5a410..75b530b686fc 100644 --- a/samples/client/petstore/java/retrofit2/build.gradle +++ b/samples/client/petstore/java/retrofit2/build.gradle @@ -19,6 +19,15 @@ repositories { } +ext { + oltu_version = "1.0.1" + retrofit_version = "2.11.0" + jakarta_annotation_version = "1.3.5" + swagger_annotations_version = "1.5.22" + junit_version = "5.10.3" + json_fire_version = "1.9.0" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,15 +107,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - oltu_version = "1.0.1" - retrofit_version = "2.11.0" - jakarta_annotation_version = "1.3.5" - swagger_annotations_version = "1.5.22" - junit_version = "5.10.3" - json_fire_version = "1.9.0" -} - dependencies { implementation "com.squareup.retrofit2:retrofit:$retrofit_version" implementation "com.squareup.retrofit2:converter-scalars:$retrofit_version" diff --git a/samples/client/petstore/java/retrofit2rx2/build.gradle b/samples/client/petstore/java/retrofit2rx2/build.gradle index e179d9796a55..055fae128708 100644 --- a/samples/client/petstore/java/retrofit2rx2/build.gradle +++ b/samples/client/petstore/java/retrofit2rx2/build.gradle @@ -19,6 +19,16 @@ repositories { } +ext { + oltu_version = "1.0.1" + retrofit_version = "2.11.0" + jakarta_annotation_version = "1.3.5" + swagger_annotations_version = "1.5.22" + junit_version = "5.10.3" + rx_java_version = "2.1.1" + json_fire_version = "1.9.0" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,16 +108,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - oltu_version = "1.0.1" - retrofit_version = "2.11.0" - jakarta_annotation_version = "1.3.5" - swagger_annotations_version = "1.5.22" - junit_version = "5.10.3" - rx_java_version = "2.1.1" - json_fire_version = "1.9.0" -} - dependencies { implementation "com.squareup.retrofit2:retrofit:$retrofit_version" implementation "com.squareup.retrofit2:converter-scalars:$retrofit_version" diff --git a/samples/client/petstore/java/retrofit2rx3/build.gradle b/samples/client/petstore/java/retrofit2rx3/build.gradle index c0ea8db2d67f..0ab449805a68 100644 --- a/samples/client/petstore/java/retrofit2rx3/build.gradle +++ b/samples/client/petstore/java/retrofit2rx3/build.gradle @@ -19,6 +19,16 @@ repositories { } +ext { + oltu_version = "1.0.1" + retrofit_version = "2.11.0" + jakarta_annotation_version = "1.3.5" + swagger_annotations_version = "1.5.22" + junit_version = "5.10.3" + rx_java_version = "3.0.4" + json_fire_version = "1.9.0" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -98,16 +108,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - oltu_version = "1.0.1" - retrofit_version = "2.11.0" - jakarta_annotation_version = "1.3.5" - swagger_annotations_version = "1.5.22" - junit_version = "5.10.3" - rx_java_version = "3.0.4" - json_fire_version = "1.9.0" -} - dependencies { implementation "com.squareup.retrofit2:retrofit:$retrofit_version" implementation "com.squareup.retrofit2:converter-scalars:$retrofit_version" diff --git a/samples/client/petstore/java/webclient-jakarta/build.gradle b/samples/client/petstore/java/webclient-jakarta/build.gradle index 68248f38f288..740c04ea1ffe 100644 --- a/samples/client/petstore/java/webclient-jakarta/build.gradle +++ b/samples/client/petstore/java/webclient-jakarta/build.gradle @@ -18,6 +18,18 @@ repositories { mavenCentral() } +ext { + spring_boot_version = "3.5.11" + jakarta_annotation_version = "3.0.0" + beanvalidation_version = "3.0.2" + reactor_version = "3.5.12" + reactor_netty_version = "1.2.8" + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -113,18 +125,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - spring_boot_version = "3.5.11" - jakarta_annotation_version = "3.0.0" - beanvalidation_version = "3.0.2" - reactor_version = "3.5.12" - reactor_netty_version = "1.2.8" - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - junit_version = "5.10.2" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "io.projectreactor:reactor-core:$reactor_version" diff --git a/samples/client/petstore/java/webclient-nullable-arrays/build.gradle b/samples/client/petstore/java/webclient-nullable-arrays/build.gradle index c35d05237cf1..fb4316e79147 100644 --- a/samples/client/petstore/java/webclient-nullable-arrays/build.gradle +++ b/samples/client/petstore/java/webclient-nullable-arrays/build.gradle @@ -18,6 +18,18 @@ repositories { mavenCentral() } +ext { + spring_boot_version = "2.7.17" + jakarta_annotation_version = "1.3.5" + beanvalidation_version = "2.0.2" + reactor_version = "3.4.34" + reactor_netty_version = "1.2.8" + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -113,18 +125,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - spring_boot_version = "2.7.17" - jakarta_annotation_version = "1.3.5" - beanvalidation_version = "2.0.2" - reactor_version = "3.4.34" - reactor_netty_version = "1.2.8" - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - junit_version = "5.10.2" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "io.projectreactor:reactor-core:$reactor_version" diff --git a/samples/client/petstore/java/webclient-springBoot4-jackson3-jspecify/build.gradle b/samples/client/petstore/java/webclient-springBoot4-jackson3-jspecify/build.gradle index d3227bef96ce..627ee85ba2a7 100644 --- a/samples/client/petstore/java/webclient-springBoot4-jackson3-jspecify/build.gradle +++ b/samples/client/petstore/java/webclient-springBoot4-jackson3-jspecify/build.gradle @@ -18,6 +18,17 @@ repositories { mavenCentral() } +ext { + spring_boot_version = "4.0.3" + jakarta_annotation_version = "3.0.0" + beanvalidation_version = "3.0.2" + reactor_version = "3.5.12" + reactor_netty_version = "1.2.8" + jackson_version = "3.1.5" + jackson_annotations_version = "2.21" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -113,17 +124,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - spring_boot_version = "4.0.3" - jakarta_annotation_version = "3.0.0" - beanvalidation_version = "3.0.2" - reactor_version = "3.5.12" - reactor_netty_version = "1.2.8" - jackson_version = "3.1.5" - jackson_annotations_version = "2.21" - junit_version = "5.10.2" -} - dependencies { implementation "io.projectreactor:reactor-core:$reactor_version" implementation "org.springframework.boot:spring-boot-starter-webflux:$spring_boot_version" diff --git a/samples/client/petstore/java/webclient-springBoot4-jackson3/build.gradle b/samples/client/petstore/java/webclient-springBoot4-jackson3/build.gradle index fbbf9bdba1f8..f5da3b872c0f 100644 --- a/samples/client/petstore/java/webclient-springBoot4-jackson3/build.gradle +++ b/samples/client/petstore/java/webclient-springBoot4-jackson3/build.gradle @@ -18,6 +18,17 @@ repositories { mavenCentral() } +ext { + spring_boot_version = "4.0.3" + jakarta_annotation_version = "3.0.0" + beanvalidation_version = "3.0.2" + reactor_version = "3.5.12" + reactor_netty_version = "1.2.8" + jackson_version = "3.1.5" + jackson_annotations_version = "2.21" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -113,17 +124,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - spring_boot_version = "4.0.3" - jakarta_annotation_version = "3.0.0" - beanvalidation_version = "3.0.2" - reactor_version = "3.5.12" - reactor_netty_version = "1.2.8" - jackson_version = "3.1.5" - jackson_annotations_version = "2.21" - junit_version = "5.10.2" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "io.projectreactor:reactor-core:$reactor_version" diff --git a/samples/client/petstore/java/webclient-swagger2/build.gradle b/samples/client/petstore/java/webclient-swagger2/build.gradle index 73a7da04b304..c5743b89ad75 100644 --- a/samples/client/petstore/java/webclient-swagger2/build.gradle +++ b/samples/client/petstore/java/webclient-swagger2/build.gradle @@ -18,6 +18,19 @@ repositories { mavenCentral() } +ext { + swagger_annotations_version = "2.2.43" + spring_boot_version = "2.7.17" + jakarta_annotation_version = "1.3.5" + beanvalidation_version = "2.0.2" + reactor_version = "3.4.34" + reactor_netty_version = "1.2.8" + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -113,19 +126,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - swagger_annotations_version = "2.2.43" - spring_boot_version = "2.7.17" - jakarta_annotation_version = "1.3.5" - beanvalidation_version = "2.0.2" - reactor_version = "3.4.34" - reactor_netty_version = "1.2.8" - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - junit_version = "5.10.2" -} - dependencies { implementation "io.swagger.core.v3:swagger-annotations:$swagger_annotations_version" implementation "com.google.code.findbugs:jsr305:3.0.2" diff --git a/samples/client/petstore/java/webclient-useSingleRequestParameter/build.gradle b/samples/client/petstore/java/webclient-useSingleRequestParameter/build.gradle index 3f52d19c2250..9f1b59425bb8 100644 --- a/samples/client/petstore/java/webclient-useSingleRequestParameter/build.gradle +++ b/samples/client/petstore/java/webclient-useSingleRequestParameter/build.gradle @@ -18,6 +18,18 @@ repositories { mavenCentral() } +ext { + spring_boot_version = "2.7.17" + jakarta_annotation_version = "1.3.5" + beanvalidation_version = "2.0.2" + reactor_version = "3.4.34" + reactor_netty_version = "1.2.8" + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -113,18 +125,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - spring_boot_version = "2.7.17" - jakarta_annotation_version = "1.3.5" - beanvalidation_version = "2.0.2" - reactor_version = "3.4.34" - reactor_netty_version = "1.2.8" - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - junit_version = "5.10.2" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "io.projectreactor:reactor-core:$reactor_version" diff --git a/samples/client/petstore/java/webclient/build.gradle b/samples/client/petstore/java/webclient/build.gradle index fbe1f81d563c..46a436d63285 100644 --- a/samples/client/petstore/java/webclient/build.gradle +++ b/samples/client/petstore/java/webclient/build.gradle @@ -18,6 +18,18 @@ repositories { mavenCentral() } +ext { + spring_boot_version = "2.7.17" + jakarta_annotation_version = "1.3.5" + beanvalidation_version = "2.0.2" + reactor_version = "3.4.34" + reactor_netty_version = "1.2.8" + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_nullable_version = "0.2.11" + junit_version = "5.10.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -113,18 +125,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - spring_boot_version = "2.7.17" - jakarta_annotation_version = "1.3.5" - beanvalidation_version = "2.0.2" - reactor_version = "3.4.34" - reactor_netty_version = "1.2.8" - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_nullable_version = "0.2.11" - junit_version = "5.10.2" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "io.projectreactor:reactor-core:$reactor_version" diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/build.gradle b/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/build.gradle index 582d7c102d72..72c63a3e77a2 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/build.gradle +++ b/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/build.gradle @@ -20,6 +20,16 @@ repositories { mavenCentral() } +ext { + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_version = "2.21.5" + jackson_databind_nullable_version = "0.2.11" + jakarta_annotation_version = "1.3.5" + jersey_version = "2.35" + junit_version = "5.8.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -99,16 +109,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_version = "2.21.5" - jackson_databind_nullable_version = "0.2.11" - jakarta_annotation_version = "1.3.5" - jersey_version = "2.35" - junit_version = "5.8.2" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "org.glassfish.jersey.core:jersey-client:$jersey_version" diff --git a/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/build.gradle b/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/build.gradle index 6f6d46a17694..58b6cc0cd000 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/build.gradle +++ b/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/build.gradle @@ -20,6 +20,16 @@ repositories { mavenCentral() } +ext { + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_version = "2.21.5" + jackson_databind_nullable_version = "0.2.11" + jakarta_annotation_version = "1.3.5" + jersey_version = "2.35" + junit_version = "5.8.2" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -99,16 +109,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_version = "2.21.5" - jackson_databind_nullable_version = "0.2.11" - jakarta_annotation_version = "1.3.5" - jersey_version = "2.35" - junit_version = "5.8.2" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "org.glassfish.jersey.core:jersey-client:$jersey_version" diff --git a/samples/openapi3/client/petstore/java/jersey2-java8-swagger1/build.gradle b/samples/openapi3/client/petstore/java/jersey2-java8-swagger1/build.gradle index acdaf782b4b0..ee36234a7c07 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8-swagger1/build.gradle +++ b/samples/openapi3/client/petstore/java/jersey2-java8-swagger1/build.gradle @@ -20,6 +20,18 @@ repositories { mavenCentral() } +ext { + swagger_annotations_version = "1.6.6" + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_version = "2.21.5" + jackson_databind_nullable_version = "0.2.11" + jakarta_annotation_version = "1.3.5" + jersey_version = "2.35" + junit_version = "5.8.2" + scribejava_apis_version = "8.3.1" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -99,18 +111,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - swagger_annotations_version = "1.6.6" - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_version = "2.21.5" - jackson_databind_nullable_version = "0.2.11" - jakarta_annotation_version = "1.3.5" - jersey_version = "2.35" - junit_version = "5.8.2" - scribejava_apis_version = "8.3.1" -} - dependencies { implementation "io.swagger:swagger-annotations:$swagger_annotations_version" implementation "com.google.code.findbugs:jsr305:3.0.2" diff --git a/samples/openapi3/client/petstore/java/jersey2-java8-swagger2/build.gradle b/samples/openapi3/client/petstore/java/jersey2-java8-swagger2/build.gradle index a05297fe7220..68e3efbf6c64 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8-swagger2/build.gradle +++ b/samples/openapi3/client/petstore/java/jersey2-java8-swagger2/build.gradle @@ -20,6 +20,18 @@ repositories { mavenCentral() } +ext { + swagger_annotations_version = "2.2.15" + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_version = "2.21.5" + jackson_databind_nullable_version = "0.2.11" + jakarta_annotation_version = "1.3.5" + jersey_version = "2.35" + junit_version = "5.8.2" + scribejava_apis_version = "8.3.1" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -99,18 +111,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - swagger_annotations_version = "2.2.15" - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_version = "2.21.5" - jackson_databind_nullable_version = "0.2.11" - jakarta_annotation_version = "1.3.5" - jersey_version = "2.35" - junit_version = "5.8.2" - scribejava_apis_version = "8.3.1" -} - dependencies { implementation "io.swagger.core.v3:swagger-annotations:$swagger_annotations_version" implementation "com.google.code.findbugs:jsr305:3.0.2" diff --git a/samples/openapi3/client/petstore/java/jersey2-java8/build.gradle b/samples/openapi3/client/petstore/java/jersey2-java8/build.gradle index d9bde2ec01da..2141b3914f97 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8/build.gradle +++ b/samples/openapi3/client/petstore/java/jersey2-java8/build.gradle @@ -20,6 +20,19 @@ repositories { mavenCentral() } +ext { + jackson_version = "2.21.5" + jackson_annotations_version = "2.21" + jackson_databind_version = "2.21.5" + jackson_databind_nullable_version = "0.2.11" + jakarta_annotation_version = "1.3.5" + jersey_version = "2.35" + junit_version = "5.8.2" + scribejava_apis_version = "8.3.1" + tomitribe_http_signatures_version = "1.7" + commons_lang3_version = "3.17.0" +} + if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' @@ -99,19 +112,6 @@ if(hasProperty('target') && target == 'android') { } } -ext { - jackson_version = "2.21.5" - jackson_annotations_version = "2.21" - jackson_databind_version = "2.21.5" - jackson_databind_nullable_version = "0.2.11" - jakarta_annotation_version = "1.3.5" - jersey_version = "2.35" - junit_version = "5.8.2" - scribejava_apis_version = "8.3.1" - tomitribe_http_signatures_version = "1.7" - commons_lang3_version = "3.17.0" -} - dependencies { implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "org.glassfish.jersey.core:jersey-client:$jersey_version" diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java index 53e3c92af3ef..553babbdf18f 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java @@ -2,6 +2,7 @@ import java.net.URI; import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import org.openapitools.model.Cat; diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java index d12f4de10fec..b76a00ffb994 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java @@ -2,6 +2,7 @@ import java.net.URI; import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import org.springframework.lang.Nullable; @@ -25,8 +26,10 @@ @Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Apple implements Fruit { + @JsonInclude(JsonInclude.Include.NON_NULL) private String fruitType; + @JsonInclude(JsonInclude.Include.NON_NULL) private @Nullable Integer seeds; public Apple() { diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java index 7210e1bcabd0..5f7250f7e01d 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java @@ -2,6 +2,7 @@ import java.net.URI; import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import org.springframework.lang.Nullable; @@ -25,8 +26,10 @@ @Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Banana implements Fruit { + @JsonInclude(JsonInclude.Include.NON_NULL) private String fruitType; + @JsonInclude(JsonInclude.Include.NON_NULL) private @Nullable Integer length; public Banana() { diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java index 16f89d8cc091..b2b3468a06a0 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java @@ -3,6 +3,7 @@ import java.net.URI; import java.util.Objects; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonSubTypes; diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java index 11730ebb0153..9c8ba78f46c0 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java @@ -2,6 +2,7 @@ import java.net.URI; import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import org.springframework.lang.Nullable; @@ -22,6 +23,7 @@ @Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Cat implements Animal { + @JsonInclude(JsonInclude.Include.NON_NULL) private @Nullable Boolean declawed; public Cat declawed(@Nullable Boolean declawed) { diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java index 9e3c0ce9d02d..6474eab33c57 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java @@ -2,6 +2,7 @@ import java.net.URI; import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import org.springframework.lang.Nullable; @@ -22,6 +23,7 @@ @Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Dog implements Animal { + @JsonInclude(JsonInclude.Include.NON_NULL) private @Nullable Boolean bark; public Dog bark(@Nullable Boolean bark) { diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java index 7970debffcce..0efb0956e4b2 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java @@ -3,6 +3,7 @@ import java.net.URI; import java.util.Objects; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonSubTypes; diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java index e28d92b9cf86..2f0f4b4e8184 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java @@ -2,6 +2,7 @@ import java.net.URI; import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import org.springframework.lang.Nullable; @@ -25,8 +26,10 @@ @Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Soda implements Beverage { + @JsonInclude(JsonInclude.Include.NON_NULL) private String beverageType; + @JsonInclude(JsonInclude.Include.NON_NULL) private @Nullable Integer sugarGrams; public Soda() { diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java index b60fe261411b..e55142234313 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java @@ -2,6 +2,7 @@ import java.net.URI; import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import org.springframework.lang.Nullable; @@ -25,8 +26,10 @@ @Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Water implements Beverage { + @JsonInclude(JsonInclude.Include.NON_NULL) private String beverageType; + @JsonInclude(JsonInclude.Include.NON_NULL) private @Nullable Boolean sparkling; public Water() { diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java index b410f8e9a07a..7c4fe901190c 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Animal.java @@ -2,6 +2,7 @@ import java.net.URI; import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import org.openapitools.model.Cat; diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java index ed44f50c1097..baeb205b296e 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Apple.java @@ -2,6 +2,7 @@ import java.net.URI; import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @@ -25,8 +26,10 @@ @Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Apple implements Fruit { + @JsonInclude(JsonInclude.Include.NON_NULL) private String fruitType; + @JsonInclude(JsonInclude.Include.NON_NULL) private Integer seeds; public Apple() { diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java index ee6780722ffa..1d2c570cf5ae 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Banana.java @@ -2,6 +2,7 @@ import java.net.URI; import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @@ -25,8 +26,10 @@ @Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Banana implements Fruit { + @JsonInclude(JsonInclude.Include.NON_NULL) private String fruitType; + @JsonInclude(JsonInclude.Include.NON_NULL) private Integer length; public Banana() { diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java index c1590d26b563..fa80f78bf70c 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Beverage.java @@ -3,6 +3,7 @@ import java.net.URI; import java.util.Objects; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonSubTypes; diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java index ddc13e360cb9..7cad4242d68b 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Cat.java @@ -2,6 +2,7 @@ import java.net.URI; import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import org.openapitools.jackson.nullable.JsonNullable; @@ -22,6 +23,7 @@ @Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Cat implements Animal { + @JsonInclude(JsonInclude.Include.NON_NULL) private Boolean declawed; public Cat declawed(Boolean declawed) { diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java index 215dc41d74d5..ae66f9e791b0 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Dog.java @@ -2,6 +2,7 @@ import java.net.URI; import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import org.openapitools.jackson.nullable.JsonNullable; @@ -22,6 +23,7 @@ @Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Dog implements Animal { + @JsonInclude(JsonInclude.Include.NON_NULL) private Boolean bark; public Dog bark(Boolean bark) { diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java index 9336af212fd9..05a2c003939d 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Fruit.java @@ -3,6 +3,7 @@ import java.net.URI; import java.util.Objects; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonSubTypes; diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java index de367fddbd03..d7792de5ecff 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Soda.java @@ -2,6 +2,7 @@ import java.net.URI; import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @@ -25,8 +26,10 @@ @Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Soda implements Beverage { + @JsonInclude(JsonInclude.Include.NON_NULL) private String beverageType; + @JsonInclude(JsonInclude.Include.NON_NULL) private Integer sugarGrams; public Soda() { diff --git a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java index 14faf4537d55..76804672d449 100644 --- a/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java +++ b/samples/server/petstore/java-camel-oneof-jackson-default-impl/src/main/java/org/openapitools/model/Water.java @@ -2,6 +2,7 @@ import java.net.URI; import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @@ -25,8 +26,10 @@ @Generated(value = "org.openapitools.codegen.languages.JavaCamelServerCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") public class Water implements Beverage { + @JsonInclude(JsonInclude.Include.NON_NULL) private String beverageType; + @JsonInclude(JsonInclude.Include.NON_NULL) private Boolean sparkling; public Water() { diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Animal.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Animal.kt index 7c3971dd4b73..36bfa5093b32 100644 --- a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Animal.kt +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Animal.kt @@ -1,7 +1,10 @@ package org.openapitools.model import java.util.Objects +import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.annotation.JsonSetter +import com.fasterxml.jackson.annotation.Nulls import org.openapitools.model.Cat import org.openapitools.model.Dog import com.fasterxml.jackson.annotation.JsonSubTypes diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Apple.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Apple.kt index 2234acaf204e..77b0b517da3b 100644 --- a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Apple.kt +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Apple.kt @@ -1,7 +1,10 @@ package org.openapitools.model import java.util.Objects +import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.annotation.JsonSetter +import com.fasterxml.jackson.annotation.Nulls import com.fasterxml.jackson.annotation.JsonIgnoreProperties import com.fasterxml.jackson.annotation.JsonSubTypes import com.fasterxml.jackson.annotation.JsonTypeInfo @@ -22,9 +25,12 @@ import jakarta.validation.Valid */ data class Apple( + @field:JsonInclude(JsonInclude.Include.ALWAYS) @param:JsonProperty("fruitType") @get:JsonProperty("fruitType", required = true) override val fruitType: kotlin.String = "APPLE", + @field:JsonInclude(JsonInclude.Include.NON_NULL) + @field:JsonSetter(nulls = Nulls.SKIP) @param:JsonProperty("seeds") @get:JsonProperty("seeds") val seeds: kotlin.Int? = null ) : Fruit { diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Banana.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Banana.kt index dabfc55953df..75e5b1acbef1 100644 --- a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Banana.kt +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Banana.kt @@ -1,7 +1,10 @@ package org.openapitools.model import java.util.Objects +import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.annotation.JsonSetter +import com.fasterxml.jackson.annotation.Nulls import com.fasterxml.jackson.annotation.JsonIgnoreProperties import com.fasterxml.jackson.annotation.JsonSubTypes import com.fasterxml.jackson.annotation.JsonTypeInfo @@ -22,9 +25,12 @@ import jakarta.validation.Valid */ data class Banana( + @field:JsonInclude(JsonInclude.Include.ALWAYS) @param:JsonProperty("fruitType") @get:JsonProperty("fruitType", required = true) override val fruitType: kotlin.String = "BANANA", + @field:JsonInclude(JsonInclude.Include.NON_NULL) + @field:JsonSetter(nulls = Nulls.SKIP) @param:JsonProperty("length") @get:JsonProperty("length") val length: kotlin.Int? = null ) : Fruit { diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Beverage.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Beverage.kt index ded07da74cf1..51617977efd8 100644 --- a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Beverage.kt +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Beverage.kt @@ -2,9 +2,12 @@ package org.openapitools.model import java.util.Objects import com.fasterxml.jackson.annotation.JsonIgnoreProperties +import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.annotation.JsonSetter import com.fasterxml.jackson.annotation.JsonSubTypes import com.fasterxml.jackson.annotation.JsonTypeInfo +import com.fasterxml.jackson.annotation.Nulls import org.openapitools.model.Soda import org.openapitools.model.Water import jakarta.validation.constraints.DecimalMax diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Cat.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Cat.kt index e67c40d658f2..59ee6e3977b5 100644 --- a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Cat.kt +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Cat.kt @@ -1,7 +1,10 @@ package org.openapitools.model import java.util.Objects +import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.annotation.JsonSetter +import com.fasterxml.jackson.annotation.Nulls import jakarta.validation.constraints.DecimalMax import jakarta.validation.constraints.DecimalMin import jakarta.validation.constraints.Email @@ -18,6 +21,8 @@ import jakarta.validation.Valid */ data class Cat( + @field:JsonInclude(JsonInclude.Include.NON_NULL) + @field:JsonSetter(nulls = Nulls.SKIP) @param:JsonProperty("declawed") @get:JsonProperty("declawed") val declawed: kotlin.Boolean? = null ) : Animal { diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Dog.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Dog.kt index 6c24acfdd063..69603f0779cf 100644 --- a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Dog.kt +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Dog.kt @@ -1,7 +1,10 @@ package org.openapitools.model import java.util.Objects +import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.annotation.JsonSetter +import com.fasterxml.jackson.annotation.Nulls import jakarta.validation.constraints.DecimalMax import jakarta.validation.constraints.DecimalMin import jakarta.validation.constraints.Email @@ -18,6 +21,8 @@ import jakarta.validation.Valid */ data class Dog( + @field:JsonInclude(JsonInclude.Include.NON_NULL) + @field:JsonSetter(nulls = Nulls.SKIP) @param:JsonProperty("bark") @get:JsonProperty("bark") val bark: kotlin.Boolean? = null ) : Animal { diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Fruit.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Fruit.kt index 7e74c911b20d..53968a634b29 100644 --- a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Fruit.kt +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Fruit.kt @@ -2,9 +2,12 @@ package org.openapitools.model import java.util.Objects import com.fasterxml.jackson.annotation.JsonIgnoreProperties +import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.annotation.JsonSetter import com.fasterxml.jackson.annotation.JsonSubTypes import com.fasterxml.jackson.annotation.JsonTypeInfo +import com.fasterxml.jackson.annotation.Nulls import org.openapitools.model.Apple import org.openapitools.model.Banana import jakarta.validation.constraints.DecimalMax diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Soda.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Soda.kt index c0772a9c8e08..74abcdad3036 100644 --- a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Soda.kt +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Soda.kt @@ -1,7 +1,10 @@ package org.openapitools.model import java.util.Objects +import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.annotation.JsonSetter +import com.fasterxml.jackson.annotation.Nulls import com.fasterxml.jackson.annotation.JsonIgnoreProperties import com.fasterxml.jackson.annotation.JsonSubTypes import com.fasterxml.jackson.annotation.JsonTypeInfo @@ -22,9 +25,12 @@ import jakarta.validation.Valid */ data class Soda( + @field:JsonInclude(JsonInclude.Include.ALWAYS) @param:JsonProperty("beverageType") @get:JsonProperty("beverageType", required = true) override val beverageType: kotlin.String = "SODA", + @field:JsonInclude(JsonInclude.Include.NON_NULL) + @field:JsonSetter(nulls = Nulls.SKIP) @param:JsonProperty("sugarGrams") @get:JsonProperty("sugarGrams") val sugarGrams: kotlin.Int? = null ) : Beverage { diff --git a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Water.kt b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Water.kt index c5438b2ad9ab..1f5bf5e5fae6 100644 --- a/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Water.kt +++ b/samples/server/petstore/kotlin-spring-oneof-jackson-default-impl/src/main/kotlin/org/openapitools/model/Water.kt @@ -1,7 +1,10 @@ package org.openapitools.model import java.util.Objects +import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.annotation.JsonSetter +import com.fasterxml.jackson.annotation.Nulls import com.fasterxml.jackson.annotation.JsonIgnoreProperties import com.fasterxml.jackson.annotation.JsonSubTypes import com.fasterxml.jackson.annotation.JsonTypeInfo @@ -22,9 +25,12 @@ import jakarta.validation.Valid */ data class Water( + @field:JsonInclude(JsonInclude.Include.ALWAYS) @param:JsonProperty("beverageType") @get:JsonProperty("beverageType", required = true) override val beverageType: kotlin.String = "WATER", + @field:JsonInclude(JsonInclude.Include.NON_NULL) + @field:JsonSetter(nulls = Nulls.SKIP) @param:JsonProperty("sparkling") @get:JsonProperty("sparkling") val sparkling: kotlin.Boolean? = null ) : Beverage { From f94d90363ce75674fe1b79aa56ead9a9ee28a80c Mon Sep 17 00:00:00 2001 From: Jachym Metlicka Date: Wed, 19 Aug 2026 20:35:22 +0200 Subject: [PATCH 19/23] Fix oneof interface annotation regressions and webclient jspecify ordering - oneof_interface.mustache: render typeInfoAnnotation for non-discriminator oneOf when not using deduction, so sealed oneOf interfaces keep their @JsonTypeInfo/@JsonIgnoreProperties (byte-for-byte stable with master); only suppress it in the deduction path to avoid a duplicate @JsonTypeInfo - deductionAnnotation.mustache: add a leading newline and render at column 0 (mirroring typeInfoAnnotation) so @JsonTypeInfo no longer lands on the same line as @Generated - webclient build.gradle.mustache: move the stray jspecify implementation out of the ext{} block into dependencies{} so it runs after the java plugin creates the implementation configuration (fixes useJspecify=true builds while keeping ext{} before the android branch) - Regenerate affected Java client samples Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../resources/Java/deductionAnnotation.mustache | 13 +++++++------ .../Java/libraries/webclient/build.gradle.mustache | 10 +++++----- .../main/resources/Java/oneof_interface.mustache | 2 +- .../java/org/openapitools/client/model/Animal.java | 11 ++++++----- .../java/org/openapitools/client/model/Animal.java | 6 ++++++ .../java/org/openapitools/client/model/Animal.java | 6 ++++++ .../java/org/openapitools/client/model/Animal.java | 6 ++++++ 7 files changed, 37 insertions(+), 17 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/Java/deductionAnnotation.mustache b/modules/openapi-generator/src/main/resources/Java/deductionAnnotation.mustache index fdf2ab5af9de..0bcd6cdbd769 100644 --- a/modules/openapi-generator/src/main/resources/Java/deductionAnnotation.mustache +++ b/modules/openapi-generator/src/main/resources/Java/deductionAnnotation.mustache @@ -1,12 +1,13 @@ {{^discriminator}} {{#jackson}} {{#useDeductionForOneOfInterfaces}} - @JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION{{#vendorExtensions.x-jackson-resolved-default-impl}}, defaultImpl = {{vendorExtensions.x-jackson-resolved-default-impl}}.class{{/vendorExtensions.x-jackson-resolved-default-impl}}) - @JsonSubTypes({ - {{#interfaceModels}} - @JsonSubTypes.Type(value = {{classname}}.class){{^-last}}, {{/-last}} - {{/interfaceModels}} - }) + +@JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION{{#vendorExtensions.x-jackson-resolved-default-impl}}, defaultImpl = {{vendorExtensions.x-jackson-resolved-default-impl}}.class{{/vendorExtensions.x-jackson-resolved-default-impl}}) +@JsonSubTypes({ +{{#interfaceModels}} + @JsonSubTypes.Type(value = {{classname}}.class){{^-last}}, {{/-last}} +{{/interfaceModels}} +}) {{/useDeductionForOneOfInterfaces}} {{/jackson}} {{/discriminator}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/webclient/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/webclient/build.gradle.mustache index 73038e898c1d..29b8e3bd94ab 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/webclient/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/webclient/build.gradle.mustache @@ -50,11 +50,6 @@ ext { {{^useJackson3}} jackson_version = "2.21.5" {{/useJackson3}} - {{^useSpringBoot4}} - {{#useJspecify}} - implementation "org.jspecify:jspecify:1.0.0" - {{/useJspecify}} - {{/useSpringBoot4}} jackson_annotations_version = "2.21" {{#openApiNullable}} jackson_databind_nullable_version = "0.2.11" @@ -182,6 +177,11 @@ dependencies { {{^useJspecify}} implementation "com.google.code.findbugs:jsr305:3.0.2" {{/useJspecify}} + {{^useSpringBoot4}} + {{#useJspecify}} + implementation "org.jspecify:jspecify:1.0.0" + {{/useJspecify}} + {{/useSpringBoot4}} implementation "io.projectreactor:reactor-core:$reactor_version" implementation "org.springframework.boot:spring-boot-starter-webflux:$spring_boot_version" implementation "io.projectreactor.netty:reactor-netty-http:$reactor_netty_version" diff --git a/modules/openapi-generator/src/main/resources/Java/oneof_interface.mustache b/modules/openapi-generator/src/main/resources/Java/oneof_interface.mustache index dae80601f111..71888430c647 100644 --- a/modules/openapi-generator/src/main/resources/Java/oneof_interface.mustache +++ b/modules/openapi-generator/src/main/resources/Java/oneof_interface.mustache @@ -1,4 +1,4 @@ -{{>additionalOneOfTypeAnnotations}}{{>generatedAnnotation}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}}{{>deductionAnnotation}}{{>xmlAnnotation}} +{{>additionalOneOfTypeAnnotations}}{{>generatedAnnotation}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}}{{^discriminator}}{{^useDeductionForOneOfInterfaces}}{{>typeInfoAnnotation}}{{/useDeductionForOneOfInterfaces}}{{/discriminator}}{{>deductionAnnotation}}{{>xmlAnnotation}} {{#vendorExtensions.x-class-extra-annotation}} {{{.}}} {{/vendorExtensions.x-class-extra-annotation}} diff --git a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Animal.java b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Animal.java index b12e47748eff..46f5e56a37c5 100644 --- a/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Animal.java +++ b/samples/client/others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client/model/Animal.java @@ -29,11 +29,12 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonIgnore; -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") @JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION, defaultImpl = Dog.class) - @JsonSubTypes({ - @JsonSubTypes.Type(value = Dog.class), - @JsonSubTypes.Type(value = Cat.class) - }) +@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") +@JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION, defaultImpl = Dog.class) +@JsonSubTypes({ + @JsonSubTypes.Type(value = Dog.class), + @JsonSubTypes.Type(value = Cat.class) +}) public interface Animal { } diff --git a/samples/client/others/java/restclient-sealedInterface/src/main/java/org/openapitools/client/model/Animal.java b/samples/client/others/java/restclient-sealedInterface/src/main/java/org/openapitools/client/model/Animal.java index 4783b990f7f7..0adceca5c1ce 100644 --- a/samples/client/others/java/restclient-sealedInterface/src/main/java/org/openapitools/client/model/Animal.java +++ b/samples/client/others/java/restclient-sealedInterface/src/main/java/org/openapitools/client/model/Animal.java @@ -31,6 +31,12 @@ import com.fasterxml.jackson.annotation.JsonIgnore; @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") +@JsonIgnoreProperties( + value = "", // ignore manually set , it will be automatically generated by Jackson during serialization + allowSetters = true // allows the to be set during deserialization +) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "", visible = true) + public sealed interface Animal extends Serializable permits Dog, Cat { } diff --git a/samples/client/others/java/webclient-sealedInterface/src/main/java/org/openapitools/client/model/Animal.java b/samples/client/others/java/webclient-sealedInterface/src/main/java/org/openapitools/client/model/Animal.java index 663917ed310c..1d23eae1a301 100644 --- a/samples/client/others/java/webclient-sealedInterface/src/main/java/org/openapitools/client/model/Animal.java +++ b/samples/client/others/java/webclient-sealedInterface/src/main/java/org/openapitools/client/model/Animal.java @@ -29,6 +29,12 @@ import com.fasterxml.jackson.annotation.JsonTypeName; @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") +@JsonIgnoreProperties( + value = "", // ignore manually set , it will be automatically generated by Jackson during serialization + allowSetters = true // allows the to be set during deserialization +) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "", visible = true) + public sealed interface Animal permits Dog, Cat { } diff --git a/samples/client/others/java/webclient-sealedInterface_3_1/src/main/java/org/openapitools/client/model/Animal.java b/samples/client/others/java/webclient-sealedInterface_3_1/src/main/java/org/openapitools/client/model/Animal.java index 663917ed310c..1d23eae1a301 100644 --- a/samples/client/others/java/webclient-sealedInterface_3_1/src/main/java/org/openapitools/client/model/Animal.java +++ b/samples/client/others/java/webclient-sealedInterface_3_1/src/main/java/org/openapitools/client/model/Animal.java @@ -29,6 +29,12 @@ import com.fasterxml.jackson.annotation.JsonTypeName; @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.25.0-SNAPSHOT") +@JsonIgnoreProperties( + value = "", // ignore manually set , it will be automatically generated by Jackson during serialization + allowSetters = true // allows the to be set during deserialization +) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "", visible = true) + public sealed interface Animal permits Dog, Cat { } From 9cfd1347c1f4b1133598e8047518a54f9a8e3202 Mon Sep 17 00:00:00 2001 From: Jachym Metlicka Date: Wed, 19 Aug 2026 21:42:20 +0200 Subject: [PATCH 20/23] Use Locale.ROOT with String.format in JacksonDefaultImplResolver The forbiddenapis check rejects locale-dependent String.format(String, Object...). Pass Locale.ROOT explicitly, matching the convention used across the codegen language classes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../codegen/languages/JacksonDefaultImplResolver.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JacksonDefaultImplResolver.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JacksonDefaultImplResolver.java index 99d2bc44385f..7de1d8e29994 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JacksonDefaultImplResolver.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JacksonDefaultImplResolver.java @@ -19,6 +19,7 @@ import org.openapitools.codegen.CodegenModel; import org.openapitools.codegen.VendorExtension; +import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.function.Consumer; @@ -67,7 +68,7 @@ static String resolve(Map typeInfoDefaultImpls, String rawValue; if (configValue != null && !configValue.isBlank()) { if (schemaAnnotation != null && !schemaAnnotation.isBlank()) { - warn.accept(String.format("typeInfoDefaultImpls overrides x-jackson-default-impl on schema '%s': '%s' \u2192 '%s'", + warn.accept(String.format(Locale.ROOT, "typeInfoDefaultImpls overrides x-jackson-default-impl on schema '%s': '%s' \u2192 '%s'", cm.schemaName, schemaAnnotation, configValue)); } rawValue = configValue; @@ -87,7 +88,7 @@ static String resolve(Map typeInfoDefaultImpls, // Not a generated model: this is a valid external or catch-all class. Preserve the name // verbatim instead of running it through toModelName (which would mangle a qualified name), // and register the import when it is fully qualified so the reference resolves. - warn.accept(String.format("x-jackson-default-impl / typeInfoDefaultImpls on schema '%s' refers to '%s' which is not a known model in this spec. " + warn.accept(String.format(Locale.ROOT, "x-jackson-default-impl / typeInfoDefaultImpls on schema '%s' refers to '%s' which is not a known model in this spec. " + "This is valid for external or catch-all classes, but may indicate a typo.", cm.schemaName, rawValue)); int lastDot = rawValue.lastIndexOf('.'); if (lastDot > 0 && lastDot < rawValue.length() - 1) { From 57f56be76c3cea50303d833b983da5bbb02e11f7 Mon Sep 17 00:00:00 2001 From: Jachym Metlicka Date: Wed, 19 Aug 2026 22:14:07 +0200 Subject: [PATCH 21/23] Revert "Use Locale.ROOT with String.format in JacksonDefaultImplResolver" This reverts commit 9cfd1347c1f4b1133598e8047518a54f9a8e3202. --- .../codegen/languages/JacksonDefaultImplResolver.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JacksonDefaultImplResolver.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JacksonDefaultImplResolver.java index 7de1d8e29994..99d2bc44385f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JacksonDefaultImplResolver.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JacksonDefaultImplResolver.java @@ -19,7 +19,6 @@ import org.openapitools.codegen.CodegenModel; import org.openapitools.codegen.VendorExtension; -import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.function.Consumer; @@ -68,7 +67,7 @@ static String resolve(Map typeInfoDefaultImpls, String rawValue; if (configValue != null && !configValue.isBlank()) { if (schemaAnnotation != null && !schemaAnnotation.isBlank()) { - warn.accept(String.format(Locale.ROOT, "typeInfoDefaultImpls overrides x-jackson-default-impl on schema '%s': '%s' \u2192 '%s'", + warn.accept(String.format("typeInfoDefaultImpls overrides x-jackson-default-impl on schema '%s': '%s' \u2192 '%s'", cm.schemaName, schemaAnnotation, configValue)); } rawValue = configValue; @@ -88,7 +87,7 @@ static String resolve(Map typeInfoDefaultImpls, // Not a generated model: this is a valid external or catch-all class. Preserve the name // verbatim instead of running it through toModelName (which would mangle a qualified name), // and register the import when it is fully qualified so the reference resolves. - warn.accept(String.format(Locale.ROOT, "x-jackson-default-impl / typeInfoDefaultImpls on schema '%s' refers to '%s' which is not a known model in this spec. " + warn.accept(String.format("x-jackson-default-impl / typeInfoDefaultImpls on schema '%s' refers to '%s' which is not a known model in this spec. " + "This is valid for external or catch-all classes, but may indicate a typo.", cm.schemaName, rawValue)); int lastDot = rawValue.lastIndexOf('.'); if (lastDot > 0 && lastDot < rawValue.length() - 1) { From 2fd5dd9027818a22da996329ba403400b49c3840 Mon Sep 17 00:00:00 2001 From: Jachym Metlicka Date: Wed, 19 Aug 2026 22:14:17 +0200 Subject: [PATCH 22/23] Reapply "Use Locale.ROOT with String.format in JacksonDefaultImplResolver" This reverts commit 57f56be76c3cea50303d833b983da5bbb02e11f7. --- .../codegen/languages/JacksonDefaultImplResolver.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JacksonDefaultImplResolver.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JacksonDefaultImplResolver.java index 99d2bc44385f..7de1d8e29994 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JacksonDefaultImplResolver.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JacksonDefaultImplResolver.java @@ -19,6 +19,7 @@ import org.openapitools.codegen.CodegenModel; import org.openapitools.codegen.VendorExtension; +import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.function.Consumer; @@ -67,7 +68,7 @@ static String resolve(Map typeInfoDefaultImpls, String rawValue; if (configValue != null && !configValue.isBlank()) { if (schemaAnnotation != null && !schemaAnnotation.isBlank()) { - warn.accept(String.format("typeInfoDefaultImpls overrides x-jackson-default-impl on schema '%s': '%s' \u2192 '%s'", + warn.accept(String.format(Locale.ROOT, "typeInfoDefaultImpls overrides x-jackson-default-impl on schema '%s': '%s' \u2192 '%s'", cm.schemaName, schemaAnnotation, configValue)); } rawValue = configValue; @@ -87,7 +88,7 @@ static String resolve(Map typeInfoDefaultImpls, // Not a generated model: this is a valid external or catch-all class. Preserve the name // verbatim instead of running it through toModelName (which would mangle a qualified name), // and register the import when it is fully qualified so the reference resolves. - warn.accept(String.format("x-jackson-default-impl / typeInfoDefaultImpls on schema '%s' refers to '%s' which is not a known model in this spec. " + warn.accept(String.format(Locale.ROOT, "x-jackson-default-impl / typeInfoDefaultImpls on schema '%s' refers to '%s' which is not a known model in this spec. " + "This is valid for external or catch-all classes, but may indicate a typo.", cm.schemaName, rawValue)); int lastDot = rawValue.lastIndexOf('.'); if (lastDot > 0 && lastDot < rawValue.length() - 1) { From a007a4ce5e2365d822c9034b70b774ec84c0f073 Mon Sep 17 00:00:00 2001 From: Jachym Metlicka Date: Wed, 19 Aug 2026 22:24:10 +0200 Subject: [PATCH 23/23] updated samples --- .../petstore/spring-boot-oneof-jackson-default-impl/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/README.md b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/README.md index 5cd22b6081a2..221eb1b8e97d 100644 --- a/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/README.md +++ b/samples/openapi3/server/petstore/spring-boot-oneof-jackson-default-impl/README.md @@ -5,7 +5,7 @@ Spring Boot Server ## Overview This server was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [OpenAPI-Spec](https://openapis.org), you can easily generate a server stub. -This is an example of building a OpenAPI-enabled server in Java using the SpringBoot framework. +This is an example of building an OpenAPI-enabled server in Java using the SpringBoot framework. The underlying library integrating OpenAPI to Spring Boot is [springdoc](https://springdoc.org).