From 1d08a90a299a4c9139f1ea9e2fbb0c06a9aa05c9 Mon Sep 17 00:00:00 2001 From: xeulbn Date: Sat, 10 Jan 2026 16:01:37 +0900 Subject: [PATCH 01/10] Fix OAS 3.1 schema generation for raw Object properties --- .../swagger/v3/core/util/PrimitiveType.java | 2 +- .../ObjectFieldOas31ReproTest.java | 91 +++++++++++++++++++ 2 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 modules/swagger-core/src/test/java/io/swagger/v3/core/serialization/ObjectFieldOas31ReproTest.java diff --git a/modules/swagger-core/src/main/java/io/swagger/v3/core/util/PrimitiveType.java b/modules/swagger-core/src/main/java/io/swagger/v3/core/util/PrimitiveType.java index 4ec3b94ecc..0fba9f7cf4 100644 --- a/modules/swagger-core/src/main/java/io/swagger/v3/core/util/PrimitiveType.java +++ b/modules/swagger-core/src/main/java/io/swagger/v3/core/util/PrimitiveType.java @@ -239,7 +239,7 @@ public Schema createProperty() { } @Override public Schema createProperty31() { - return new JsonSchema(); + return new JsonSchema().typesItem("object"); } }; diff --git a/modules/swagger-core/src/test/java/io/swagger/v3/core/serialization/ObjectFieldOas31ReproTest.java b/modules/swagger-core/src/test/java/io/swagger/v3/core/serialization/ObjectFieldOas31ReproTest.java new file mode 100644 index 0000000000..7e4bf16e9d --- /dev/null +++ b/modules/swagger-core/src/test/java/io/swagger/v3/core/serialization/ObjectFieldOas31ReproTest.java @@ -0,0 +1,91 @@ +package io.swagger.v3.core.serialization; + +import io.swagger.v3.core.converter.ModelConverters; +import io.swagger.v3.oas.models.media.Schema; +import org.testng.Assert; +import org.testng.annotations.Test; + +import java.util.List; +import java.util.Map; + +public class ObjectFieldOas31ReproTest { + @Test(description = "Repro #4682: In OAS 3.1, raw Object property should not be rendered as an empty schema") + public void oas31_rawObjectProperty_shouldBeObjectSchema() { + Map schemas = ModelConverters.getInstance(true).readAll(PojoUsingObjectField.class); + Schema pojo = schemas.get("PojoUsingObjectField"); + Assert.assertNotNull(pojo, "PojoUsingObjectField schema should exist"); + + Schema myField = (Schema) pojo.getProperties().get("myField"); + Assert.assertNotNull(myField, "myField schema should exist"); + Assert.assertTrue(isObjectSchema(myField), "Expected raw Object property to be an object schema in OAS 3.1, but was: type=" + myField.getType() + ", types=" + myField.getTypes() + ", class=" + myField.getClass()); + } + + @Test(description = "OAS 3.1: List items schema should be object") + public void oas31_listOfObject_items_shouldBeObjectSchema() { + Map schemas = ModelConverters.getInstance(true).readAll(PojoUsingListOfObject.class); + Schema pojo = schemas.get("PojoUsingListOfObject"); + Assert.assertNotNull(pojo, "PojoUsingListOfObject schema should exist"); + Schema itemsProp = (Schema) pojo.getProperties().get("items"); + Assert.assertNotNull(itemsProp, "items property schema should exist"); + Schema itemSchema = itemsProp.getItems(); + Assert.assertNotNull(itemSchema, "List items schema should exist"); + Assert.assertTrue(isObjectSchema(itemSchema), "Expected List items to be an object schema in OAS 3.1, but was: type=" + itemSchema.getType() + ", types=" + itemSchema.getTypes() + ", class=" + itemSchema.getClass()); + } + + @Test(description = "OAS 3.1: Map additionalProperties schema should be object") + public void oas31_mapStringToObject_additionalProperties_shouldBeObjectSchema() { + Map schemas = ModelConverters.getInstance(true).readAll(PojoUsingMapStringToObject.class); + Schema pojo = schemas.get("PojoUsingMapStringToObject"); + Assert.assertNotNull(pojo, "PojoUsingMapStringToObject schema should exist"); + Schema additionalProp = (Schema) pojo.getProperties().get("additional"); + Assert.assertNotNull(additionalProp, "additional property schema should exist"); + Schema valueSchema = (Schema) additionalProp.getAdditionalProperties(); + Assert.assertNotNull(valueSchema, "Map additionalProperties (value schema) should exist"); + Assert.assertTrue(isObjectSchema(valueSchema), "Expected Map additionalProperties to be an object schema in OAS 3.1, but was: type=" + valueSchema.getType() + ", types=" + valueSchema.getTypes() + ", class=" + valueSchema.getClass()); + } + + /** + * OAS 3.1 may represent types via Schema#getTypes() (JSON Schema style) rather than Schema#getType(). + */ + private static boolean isObjectSchema(Schema s) { + if (s == null) return false; + if ("object".equals(s.getType())) return true; + return s.getTypes() != null && s.getTypes().contains("object"); + } + + private static class PojoUsingObjectField { + private Object myField; + + public Object getMyField() { + return myField; + } + + public void setMyField(Object myField) { + this.myField = myField; + } + } + + private static class PojoUsingListOfObject { + private List items; + + public List getItems() { + return items; + } + + public void setItems(List items) { + this.items = items; + } + } + + private static class PojoUsingMapStringToObject { + private Map additional; + + public Map getAdditional() { + return additional; + } + + public void setAdditional(Map additional) { + this.additional = additional; + } + } +} \ No newline at end of file From 056a53eeb5e03bc76cf2b2877249cd773e5a82d8 Mon Sep 17 00:00:00 2001 From: xeulbn Date: Wed, 28 Jan 2026 19:33:15 +0900 Subject: [PATCH 02/10] Align OAS 3.1 Object schema handling with OAS 3.0 behavior --- .../src/main/java/io/swagger/v3/core/util/PrimitiveType.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/swagger-core/src/main/java/io/swagger/v3/core/util/PrimitiveType.java b/modules/swagger-core/src/main/java/io/swagger/v3/core/util/PrimitiveType.java index 0fba9f7cf4..52e8aade4b 100644 --- a/modules/swagger-core/src/main/java/io/swagger/v3/core/util/PrimitiveType.java +++ b/modules/swagger-core/src/main/java/io/swagger/v3/core/util/PrimitiveType.java @@ -239,7 +239,7 @@ public Schema createProperty() { } @Override public Schema createProperty31() { - return new JsonSchema().typesItem("object"); + return explicitObjectType == null || explicitObjectType ? new JsonSchema().typesItem("object") : new JsonSchema(); } }; From 2bb2945726db82e269033ba83ea24f0ba57edf58 Mon Sep 17 00:00:00 2001 From: xeulbn Date: Wed, 28 Jan 2026 19:39:06 +0900 Subject: [PATCH 03/10] Rename OAS 3.1 Object schema tests to follow naming conventions --- ...FieldOas31ReproTest.java => Oas31ObjectFieldTest.java} | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename modules/swagger-core/src/test/java/io/swagger/v3/core/serialization/{ObjectFieldOas31ReproTest.java => Oas31ObjectFieldTest.java} (93%) diff --git a/modules/swagger-core/src/test/java/io/swagger/v3/core/serialization/ObjectFieldOas31ReproTest.java b/modules/swagger-core/src/test/java/io/swagger/v3/core/serialization/Oas31ObjectFieldTest.java similarity index 93% rename from modules/swagger-core/src/test/java/io/swagger/v3/core/serialization/ObjectFieldOas31ReproTest.java rename to modules/swagger-core/src/test/java/io/swagger/v3/core/serialization/Oas31ObjectFieldTest.java index 7e4bf16e9d..6495787fba 100644 --- a/modules/swagger-core/src/test/java/io/swagger/v3/core/serialization/ObjectFieldOas31ReproTest.java +++ b/modules/swagger-core/src/test/java/io/swagger/v3/core/serialization/Oas31ObjectFieldTest.java @@ -8,9 +8,9 @@ import java.util.List; import java.util.Map; -public class ObjectFieldOas31ReproTest { +public class Oas31ObjectFieldTest { @Test(description = "Repro #4682: In OAS 3.1, raw Object property should not be rendered as an empty schema") - public void oas31_rawObjectProperty_shouldBeObjectSchema() { + public void rawObjectPropertyShouldBeObjectSchema() { Map schemas = ModelConverters.getInstance(true).readAll(PojoUsingObjectField.class); Schema pojo = schemas.get("PojoUsingObjectField"); Assert.assertNotNull(pojo, "PojoUsingObjectField schema should exist"); @@ -21,7 +21,7 @@ public void oas31_rawObjectProperty_shouldBeObjectSchema() { } @Test(description = "OAS 3.1: List items schema should be object") - public void oas31_listOfObject_items_shouldBeObjectSchema() { + public void listOfObjectItemsShouldBeObjectSchema() { Map schemas = ModelConverters.getInstance(true).readAll(PojoUsingListOfObject.class); Schema pojo = schemas.get("PojoUsingListOfObject"); Assert.assertNotNull(pojo, "PojoUsingListOfObject schema should exist"); @@ -33,7 +33,7 @@ public void oas31_listOfObject_items_shouldBeObjectSchema() { } @Test(description = "OAS 3.1: Map additionalProperties schema should be object") - public void oas31_mapStringToObject_additionalProperties_shouldBeObjectSchema() { + public void mapOfObjectAdditionalPropertiesShouldBeObjectSchema() { Map schemas = ModelConverters.getInstance(true).readAll(PojoUsingMapStringToObject.class); Schema pojo = schemas.get("PojoUsingMapStringToObject"); Assert.assertNotNull(pojo, "PojoUsingMapStringToObject schema should exist"); From 6910d3a2528ff3bc0bed7cf11439752e7b1ad084 Mon Sep 17 00:00:00 2001 From: xeulbn Date: Wed, 28 Jan 2026 20:20:28 +0900 Subject: [PATCH 04/10] Fix OAS 3.1 object schema test expectations --- .../swagger/v3/core/resolving/v31/ModelResolverOAS31Test.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/swagger-core/src/test/java/io/swagger/v3/core/resolving/v31/ModelResolverOAS31Test.java b/modules/swagger-core/src/test/java/io/swagger/v3/core/resolving/v31/ModelResolverOAS31Test.java index 13b3d16213..a151b83f58 100644 --- a/modules/swagger-core/src/test/java/io/swagger/v3/core/resolving/v31/ModelResolverOAS31Test.java +++ b/modules/swagger-core/src/test/java/io/swagger/v3/core/resolving/v31/ModelResolverOAS31Test.java @@ -131,6 +131,7 @@ public void testOAS31Fields() { " type: number\n" + " status:\n" + " type:\n" + + " - object\n" + " - string\n" + " - number\n" + " intValue:\n" + @@ -160,7 +161,8 @@ public void testOAS31Fields() { " creditCard:\n" + " $ref: \"#/components/schemas/CreditCard\"\n" + " properties:\n" + - " extraObject: {}\n" + + " extraObject:\n" + + " type: object\n" + "MultipleBaseBean:\n" + " type: object\n" + " description: MultipleBaseBean\n" + From f5636c52c22e1af6894a92f3d52bb4b326d87df8 Mon Sep 17 00:00:00 2001 From: xeulbn Date: Thu, 29 Jan 2026 19:54:20 +0900 Subject: [PATCH 05/10] Align OAS31 YAML fixtures with type: object for Object --- .../test/java/io/swagger/v3/jaxrs2/ReaderTest.java | 6 ++++++ .../src/test/resources/petstore/WebHookResource.yaml | 6 ++++-- .../callbacks/ComplexCallback31Resource.yaml | 6 ++++-- .../petstore/parameters/Parameters31Resource.yaml | 3 ++- .../petstore/requestbody/RequestBody31Resource.yaml | 12 ++++++++---- 5 files changed, 24 insertions(+), 9 deletions(-) diff --git a/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/ReaderTest.java b/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/ReaderTest.java index c7e9de8e3a..075fbdca7f 100644 --- a/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/ReaderTest.java +++ b/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/ReaderTest.java @@ -3597,6 +3597,7 @@ public void testOas31Petstore() { " name:\n" + " type: string\n" + " annotated:\n" + + " type: object\n" + " $ref: \"#/components/schemas/Category\"\n" + " description: child description\n" + " properties:\n" + @@ -3651,6 +3652,7 @@ public void test31RefSiblings() { " type: object\n" + " properties:\n" + " annotated:\n" + + " type: object\n" + " $ref: \"#/components/schemas/SimpleCategory\"\n" + " description: child description\n" + " properties:\n" + @@ -4034,6 +4036,7 @@ public void testMisc31() { " type: number\n" + " status:\n" + " type:\n" + + " - object\n" + " - string\n" + " - number\n" + " intValue:\n" + @@ -4113,6 +4116,7 @@ public void testMisc31() { " type: object\n" + " properties:\n" + " country:\n" + + " type: object\n" + " const: United States\n" + " CreditCard:\n" + " type: object\n" + @@ -4123,11 +4127,13 @@ public void testMisc31() { " type: object\n" + " properties:\n" + " postalCode:\n" + + " type: object\n" + " pattern: \"[0-9]{5}(-[0-9]{4})?\"\n" + " PostalCodePattern:\n" + " type: object\n" + " properties:\n" + " postalCode:\n" + + " type: object\n" + " pattern: \"[A-Z][0-9][A-Z] [0-9][A-Z][0-9]\"\n" + " PropertyNamesPattern:\n" + " pattern: \"^[A-Za-z_][A-Za-z0-9_]*$\"\n"; diff --git a/modules/swagger-jaxrs2/src/test/resources/petstore/WebHookResource.yaml b/modules/swagger-jaxrs2/src/test/resources/petstore/WebHookResource.yaml index 62e397cade..25d3d5a349 100644 --- a/modules/swagger-jaxrs2/src/test/resources/petstore/WebHookResource.yaml +++ b/modules/swagger-jaxrs2/src/test/resources/petstore/WebHookResource.yaml @@ -24,9 +24,11 @@ webhooks: $comment: random comment $id: http://yourdomain.com/schemas/myschema.json dependentSchemas: - pet: {} + pet: + type: object patternProperties: - user: {} + user: + type: object webhook1: post: description: "subscribes a client to updates relevant to the requestor's account,\ diff --git a/modules/swagger-jaxrs2/src/test/resources/petstore/callbacks/ComplexCallback31Resource.yaml b/modules/swagger-jaxrs2/src/test/resources/petstore/callbacks/ComplexCallback31Resource.yaml index 79189d9464..524ccb0b35 100644 --- a/modules/swagger-jaxrs2/src/test/resources/petstore/callbacks/ComplexCallback31Resource.yaml +++ b/modules/swagger-jaxrs2/src/test/resources/petstore/callbacks/ComplexCallback31Resource.yaml @@ -32,9 +32,11 @@ paths: $comment: random comment $id: http://yourdomain.com/schemas/myschema.json dependentSchemas: - pet: { } + pet: + type: object patternProperties: - user: { } + user: + type: object testCallback2: http://www.url2.com: get: diff --git a/modules/swagger-jaxrs2/src/test/resources/petstore/parameters/Parameters31Resource.yaml b/modules/swagger-jaxrs2/src/test/resources/petstore/parameters/Parameters31Resource.yaml index e42efe9760..fa8377a630 100644 --- a/modules/swagger-jaxrs2/src/test/resources/petstore/parameters/Parameters31Resource.yaml +++ b/modules/swagger-jaxrs2/src/test/resources/petstore/parameters/Parameters31Resource.yaml @@ -96,7 +96,8 @@ paths: user: $ref: "#/components/schemas/User" properties: - extraObject: {} + extraObject: + type: object components: schemas: Category: diff --git a/modules/swagger-jaxrs2/src/test/resources/petstore/requestbody/RequestBody31Resource.yaml b/modules/swagger-jaxrs2/src/test/resources/petstore/requestbody/RequestBody31Resource.yaml index 2c5b00cc76..1ffc71629d 100644 --- a/modules/swagger-jaxrs2/src/test/resources/petstore/requestbody/RequestBody31Resource.yaml +++ b/modules/swagger-jaxrs2/src/test/resources/petstore/requestbody/RequestBody31Resource.yaml @@ -40,16 +40,20 @@ paths: - string - number - object - if: {} - then: {} - else: {} + if: + type: object + then: + type: object + else: + type: object $anchor: parameter $anchor $schema: parameter $schema description: User description example: User Description exclusiveMaximum: 100 exclusiveMinimum: 1 - unevaluatedProperties: {} + unevaluatedProperties: + type: object required: true responses: default: From b245bc69e949d596d955abf8c10fcea498a81035 Mon Sep 17 00:00:00 2001 From: xeulbn Date: Sat, 31 Jan 2026 12:44:37 +0900 Subject: [PATCH 06/10] Update OAS31 object schema expectations --- .../swagger/v3/java17/resolving/v31/ModelResolverOAS31Test.java | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/swagger-java17-support/src/test/java/io/swagger/v3/java17/resolving/v31/ModelResolverOAS31Test.java b/modules/swagger-java17-support/src/test/java/io/swagger/v3/java17/resolving/v31/ModelResolverOAS31Test.java index 902f4336da..31612d147e 100644 --- a/modules/swagger-java17-support/src/test/java/io/swagger/v3/java17/resolving/v31/ModelResolverOAS31Test.java +++ b/modules/swagger-java17-support/src/test/java/io/swagger/v3/java17/resolving/v31/ModelResolverOAS31Test.java @@ -37,6 +37,7 @@ public void testOAS31JavaRecord() { " type: number\n" + " Status:\n" + " type:\n" + + " - object\n" + " - string\n" + " - number\n"; From c7c15e75b8d9e99c5e5265743a2837568a65745e Mon Sep 17 00:00:00 2001 From: xeulbn Date: Sat, 31 Jan 2026 14:11:15 +0900 Subject: [PATCH 07/10] OAS 3.1: prefer explicit schema types over inferred ones --- .../java/io/swagger/v3/core/jackson/ModelResolver.java | 9 +++++++-- .../java/io/swagger/v3/core/util/AnnotationsUtils.java | 6 +++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/ModelResolver.java b/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/ModelResolver.java index c9772224ef..ccfa7060e4 100644 --- a/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/ModelResolver.java +++ b/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/ModelResolver.java @@ -3333,8 +3333,13 @@ protected void resolveSchemaMembers(Schema schema, Annotated a, Annotation[] ann } if (openapi31 && schemaAnnotation != null) { - for (String type : schemaAnnotation.types()) { - schema.addType(type); + if (schemaAnnotation.types().length > 0) { + schema.setTypes(new LinkedHashSet<>(Arrays.asList(schemaAnnotation.types()))); + if (schemaAnnotation.types().length == 1) { + schema.setType(schemaAnnotation.types()[0]); + } else { + schema.setType(null); + } } BigDecimal exclusiveMaximumValue = resolveExclusiveMaximumValue(a, annotations, schemaAnnotation); if (exclusiveMaximumValue != null) { diff --git a/modules/swagger-core/src/main/java/io/swagger/v3/core/util/AnnotationsUtils.java b/modules/swagger-core/src/main/java/io/swagger/v3/core/util/AnnotationsUtils.java index b8f3990d0e..783d9c65e6 100644 --- a/modules/swagger-core/src/main/java/io/swagger/v3/core/util/AnnotationsUtils.java +++ b/modules/swagger-core/src/main/java/io/swagger/v3/core/util/AnnotationsUtils.java @@ -658,11 +658,11 @@ public static Optional getSchemaFromAnnotation( } if (schema.types().length > 0) { + schemaObject.setTypes(new LinkedHashSet<>(Arrays.asList(schema.types()))); if (schema.types().length == 1) { schemaObject.setType(schema.types()[0]); - } - for (String type : schema.types()) { - schemaObject.addType(type); + } else { + schemaObject.setType(null); } } if (StringUtils.isNotBlank(schema.$id())) { From a4a6793e4374a22fff31110208031d7f4e46011c Mon Sep 17 00:00:00 2001 From: xeulbn Date: Sat, 31 Jan 2026 14:11:30 +0900 Subject: [PATCH 08/10] Update OAS 3.1 test expectations for explicit types --- .../v3/core/resolving/v31/ModelResolverOAS31Test.java | 1 - .../v3/java17/resolving/v31/ModelResolverOAS31Test.java | 1 - .../src/test/java/io/swagger/v3/jaxrs2/ReaderTest.java | 6 +----- 3 files changed, 1 insertion(+), 7 deletions(-) diff --git a/modules/swagger-core/src/test/java/io/swagger/v3/core/resolving/v31/ModelResolverOAS31Test.java b/modules/swagger-core/src/test/java/io/swagger/v3/core/resolving/v31/ModelResolverOAS31Test.java index a151b83f58..0429f996cc 100644 --- a/modules/swagger-core/src/test/java/io/swagger/v3/core/resolving/v31/ModelResolverOAS31Test.java +++ b/modules/swagger-core/src/test/java/io/swagger/v3/core/resolving/v31/ModelResolverOAS31Test.java @@ -131,7 +131,6 @@ public void testOAS31Fields() { " type: number\n" + " status:\n" + " type:\n" + - " - object\n" + " - string\n" + " - number\n" + " intValue:\n" + diff --git a/modules/swagger-java17-support/src/test/java/io/swagger/v3/java17/resolving/v31/ModelResolverOAS31Test.java b/modules/swagger-java17-support/src/test/java/io/swagger/v3/java17/resolving/v31/ModelResolverOAS31Test.java index 31612d147e..902f4336da 100644 --- a/modules/swagger-java17-support/src/test/java/io/swagger/v3/java17/resolving/v31/ModelResolverOAS31Test.java +++ b/modules/swagger-java17-support/src/test/java/io/swagger/v3/java17/resolving/v31/ModelResolverOAS31Test.java @@ -37,7 +37,6 @@ public void testOAS31JavaRecord() { " type: number\n" + " Status:\n" + " type:\n" + - " - object\n" + " - string\n" + " - number\n"; diff --git a/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/ReaderTest.java b/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/ReaderTest.java index 075fbdca7f..daa846a377 100644 --- a/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/ReaderTest.java +++ b/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/ReaderTest.java @@ -3505,8 +3505,8 @@ public void testOas31Petstore() { " exclusiveMaximum: 4\n" + " foobar:\n" + " type:\n" + - " - integer\n" + " - string\n" + + " - integer\n" + " format: int32\n" + " Category:\n" + " type: object\n" + @@ -3532,7 +3532,6 @@ public void testOas31Petstore() { " exclusiveMaximum: 2\n" + " foobar:\n" + " type:\n" + - " - integer\n" + " - string\n" + " - object\n" + " format: int32\n" + @@ -3550,7 +3549,6 @@ public void testOas31Petstore() { " exclusiveMaximum: 2\n" + " foobar:\n" + " type:\n" + - " - integer\n" + " - string\n" + " - object\n" + " format: int32\n" + @@ -3644,7 +3642,6 @@ public void test31RefSiblings() { " exclusiveMaximum: 2\n" + " foobar:\n" + " type:\n" + - " - integer\n" + " - string\n" + " - object\n" + " format: int32\n" + @@ -4036,7 +4033,6 @@ public void testMisc31() { " type: number\n" + " status:\n" + " type:\n" + - " - object\n" + " - string\n" + " - number\n" + " intValue:\n" + From bb652d125c9d5635713016f314d2f8bbb63940c5 Mon Sep 17 00:00:00 2001 From: xeulbn Date: Thu, 19 Feb 2026 12:47:58 +0900 Subject: [PATCH 09/10] Remove setType usage in OAS 3.1 schema resolution --- .../main/java/io/swagger/v3/core/jackson/ModelResolver.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/ModelResolver.java b/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/ModelResolver.java index 3322676f45..dfd9e3ddab 100644 --- a/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/ModelResolver.java +++ b/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/ModelResolver.java @@ -3217,11 +3217,6 @@ protected void resolveSchemaMembers(Schema schema, Annotated a, Annotation[] ann if (openapi31 && schemaAnnotation != null) { if (schemaAnnotation.types().length > 0) { schema.setTypes(new LinkedHashSet<>(Arrays.asList(schemaAnnotation.types()))); - if (schemaAnnotation.types().length == 1) { - schema.setType(schemaAnnotation.types()[0]); - } else { - schema.setType(null); - } } BigDecimal exclusiveMaximumValue = resolveExclusiveMaximumValue(a, annotations, schemaAnnotation); if (exclusiveMaximumValue != null) { From 07debc60a25a004d1352440208519da067be8947 Mon Sep 17 00:00:00 2001 From: xeulbn Date: Thu, 19 Feb 2026 12:52:25 +0900 Subject: [PATCH 10/10] Remove setType usage in OAS 3.1 annotations --- .../main/java/io/swagger/v3/core/util/AnnotationsUtils.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/modules/swagger-core/src/main/java/io/swagger/v3/core/util/AnnotationsUtils.java b/modules/swagger-core/src/main/java/io/swagger/v3/core/util/AnnotationsUtils.java index 5d975b5efc..c268488511 100644 --- a/modules/swagger-core/src/main/java/io/swagger/v3/core/util/AnnotationsUtils.java +++ b/modules/swagger-core/src/main/java/io/swagger/v3/core/util/AnnotationsUtils.java @@ -679,11 +679,6 @@ public static Optional getSchemaFromAnnotation( if (schema.types().length > 0) { schemaObject.setTypes(new LinkedHashSet<>(Arrays.asList(schema.types()))); - if (schema.types().length == 1) { - schemaObject.setType(schema.types()[0]); - } else { - schemaObject.setType(null); - } } if (StringUtils.isNotBlank(schema.$id())) { schemaObject.set$id(schema.$id());