Closed abccbaandy closed 1 month ago
@abccbaandy,
There is no definition of Child3
in you code.
Not reproducible.
Feel free to provide a Minimal, Reproducible Example - with HelloController that reproduces the problem.
This ticket will be closed, but can be reopened if your provide the reproducible sample.
@bnasslahsen
Here is the smallest working code for the issue.
pojo define
@JsonSubTypes({
@JsonSubTypes.Type(value = Child1.class),
@JsonSubTypes.Type(value = Child2.class),
@JsonSubTypes.Type(value = Child3.class),
})
@Data
public abstract class Parent {
private String parentProperty;
}
@EqualsAndHashCode(callSuper = true)
@Data
public class Child1 extends Parent {
private String childProperty1;
}
@EqualsAndHashCode(callSuper = true)
@Data
public class Child2 extends Parent {
private String childProperty2;
}
@EqualsAndHashCode(callSuper = true)
@Data
public class Child3 extends Parent {
private String childProperty3;
}
usage in controller
@Data
public class MyRequest {
@Schema(oneOf = {Child1.class, Child2.class})
private Parent parent;
}
@PostMapping("swaggerTest")
public String swaggerTest(@RequestBody MyRequest myRequest) {
return null;
}
api-docs
"components": {
"schemas": {
"Child1": {
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/Parent"
},
{
"type": "object",
"properties": {
"childProperty1": {
"type": "string"
}
}
}
]
},
"Child2": {
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/Parent"
},
{
"type": "object",
"properties": {
"childProperty2": {
"type": "string"
}
}
}
]
},
"Child3": {
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/Parent"
},
{
"type": "object",
"properties": {
"childProperty3": {
"type": "string"
}
}
}
]
},
"MyRequest": {
"type": "object",
"properties": {
"parent": {
"oneOf": [
{
"$ref": "#/components/schemas/Child1"
},
{
"$ref": "#/components/schemas/Child2"
},
{
"$ref": "#/components/schemas/Child3"
}
]
}
}
},
"Parent": {
"type": "object",
"properties": {
"parentProperty": {
"type": "string"
}
},
"oneOf": [
{
"$ref": "#/components/schemas/Child1"
},
{
"$ref": "#/components/schemas/Child2"
}
]
}
}
}
What version of spring-boot you are using? 3.3.3
What modules and versions of springdoc-openapi are you using? 2.6.0
What is the actual and the expected result using OpenAPI Description (yml or json)?
should be
Provide with a sample code (HelloController) or Test that reproduces the problem
Also, according to this issue https://github.com/springdoc/springdoc-openapi/issues/2704 I think this issue relate to Springdoc now, instead swagger core, because even I use my own converter to "fix" it, it will overwrite by Springdoc's converter.