Skip to content

Commit e40161a

Browse files
Fix for #4904 - Invalid cast of JsonSchema to ComposedSchema
1 parent 52c993a commit e40161a

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/ModelResolver.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1043,7 +1043,7 @@ public Schema resolve(AnnotatedType annotatedType, ModelConverterContext context
10431043

10441044
if (isComposedSchema) {
10451045

1046-
ComposedSchema composedSchema = (ComposedSchema) model;
1046+
Schema<Object> composedSchema = (Schema<Object>) model; // Could be ComposedSchema or JsonSchema (3.1)
10471047

10481048
Class<?>[] allOf = resolvedSchemaAnnotation.allOf();
10491049
Class<?>[] anyOf = resolvedSchemaAnnotation.anyOf();
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package io.swagger.v3.core.resolving;
2+
3+
import io.swagger.v3.core.converter.AnnotatedType;
4+
import io.swagger.v3.core.converter.ModelConverterContextImpl;
5+
import io.swagger.v3.core.jackson.ModelResolver;
6+
import io.swagger.v3.oas.annotations.media.DiscriminatorMapping;
7+
import io.swagger.v3.oas.annotations.media.Schema;
8+
import org.testng.annotations.Test;
9+
10+
import static io.swagger.v3.core.resolving.SwaggerTestBase.mapper;
11+
12+
public class Ticket4904Test {
13+
14+
@Test
15+
public void testComposedSchemaWithDiscriminator() {
16+
final ModelResolver modelResolver = new ModelResolver(mapper());
17+
modelResolver.setOpenapi31(true);
18+
final ModelConverterContextImpl context = new ModelConverterContextImpl(modelResolver);
19+
context.resolve(new AnnotatedType(ParentClass.class));
20+
}
21+
22+
@Schema(
23+
type = "object",
24+
discriminatorMapping = {
25+
@DiscriminatorMapping(value = "A", schema = ChildClassA.class),
26+
@DiscriminatorMapping(value = "B", schema = ChildClassB.class)
27+
},
28+
oneOf = {ChildClassA.class, ChildClassB.class},
29+
discriminatorProperty = "objectType"
30+
)
31+
public abstract static class ParentClass {
32+
}
33+
34+
public static class ChildClassA extends ParentClass {
35+
}
36+
37+
public static class ChildClassB extends ParentClass {
38+
}
39+
40+
}

0 commit comments

Comments
 (0)