Skip to content

java.lang.ClassCastException: class io.swagger.v3.oas.models.media.JsonSchema cannot be cast to class io.swagger.v3.oas.models.media.ComposedSchemaΒ #4904

@davsclaus

Description

@davsclaus

We have an issue in Apache Camel when upgrading swagger-core from 2.2.23 to 2.2.32 in relation to parsing as open-api v3.1 models.
The same test work with parsing as open-api v3.0.

The exception we see from tests have a stacktrace leading into a ClassCastException.

java.lang.ClassCastException: class io.swagger.v3.oas.models.media.JsonSchema cannot be cast to class io.swagger.v3.oas.models.media.ComposedSchema (io.swagger.v3.oas.models.media.JsonSchema and io.swagger.v3.oas.models.media.ComposedSchema are in unnamed module of loader 'app')

	at io.swagger.v3.core.jackson.ModelResolver.resolve(ModelResolver.java:1046)
	at org.apache.camel.openapi.RestModelConverters$ClassNameExtensionModelResolver.resolve(RestModelConverters.java:117)
	at io.swagger.v3.core.converter.ModelConverterContextImpl.resolve(ModelConverterContextImpl.java:97)
	at io.swagger.v3.core.jackson.ModelResolver.resolve(ModelResolver.java:824)
	at org.apache.camel.openapi.RestModelConverters$ClassNameExtensionModelResolver.resolve(RestModelConverters.java:117)
	at io.swagger.v3.core.converter.ModelConverterContextImpl.resolve(ModelConverterContextImpl.java:97)
	at io.swagger.v3.core.converter.ModelConverters.readAll(ModelConverters.java:204)
	at io.swagger.v3.core.converter.ModelConverters.readAll(ModelConverters.java:195)
	at org.apache.camel.openapi.RestModelConverters.readClassOpenApi3(RestModelConverters.java:77)
	at org.apache.camel.openapi.RestModelConverters.readClass(RestModelConverters.java:66)
	at org.apache.camel.openapi.RestOpenApiReader.appendModels(RestOpenApiReader.java:1029)
	at org.apache.camel.openapi.RestOpenApiReader.parse(RestOpenApiReader.java:324)
	at org.apache.camel.openapi.RestOpenApiReader.read(RestOpenApiReader.java:209)

The parser creates the schema model in line 597 depending on v3.1 vs v3.0 as the following code shows:

https://github.com/swagger-api/swagger-core/blob/master/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/ModelResolver.java#L597

And then you have the class cast exception because of this:

https://github.com/swagger-api/swagger-core/blob/master/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/ModelResolver.java#L1046

Maybe that type cast need to check if its v3.1 and v3.0 or better handle the ComposedSchema vs JsonSchema without a hardcoded type-cast.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions