Skip to content

Bug on io.swagger.v3.oas.annotations.media.Schema$SchemaResolution #3008

Closed
@skyblackhawk

Description

@skyblackhawk

Hi to all,
we are migrating from springboot 3.4.3 to 3.5.0 and springdoc to the latest version 2.8.8.
So with new dependency not work swagger.

org.springdoc springdoc-openapi-starter-webflux-ui 2.8.8

With Springboot Webflux 3.5.0 Java 21 Reactive WebFlux not work generation of swagger.

When for example I open swagger-ui after changed the dependency I got this error for the same class in springdoc.
My classes are normally with these annotations, in this case an Enum to verify respect of service contract in an API.
With new version of springdoc not generate swagger but errors:

`package com.eni.products.models.responses.checkBroadbandAsset;
import java.util.HashMap;
import java.util.Map;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonValue;

import io.swagger.v3.oas.annotations.media.Schema;

@Schema(implementation = Result.class)
@jsonformat(shape = JsonFormat.Shape.OBJECT)
public enum Result {
OK,
KO,
XX;

private static Map<String, Result> exitCodesMap = new HashMap<String, Result>(3);

static {
	exitCodesMap.put("001", OK);
	exitCodesMap.put("002", KO);
	exitCodesMap.put("003", XX);
}

@JsonCreator
public static Result forValue(String value) {
	return exitCodesMap.get(value);
}

@JsonValue
public String toValue() {
	return this.name();
}

}`

return below errors for any @Schema description:

WARN reactor.core.Exceptions.warn(304) - throwIfFatal detected a jvm fatal exception, which is thrown and logged below: java.lang.NoSuchMethodError: 'io.swagger.v3.oas.annotations.media.Schema$SchemaResolution io.swagger.v3.oas.annotations.media.Schema.schemaResolution()' at io.swagger.v3.core.util.AnnotationsUtils.resolveSchemaResolution(AnnotationsUtils.java:2886) at io.swagger.v3.core.jackson.ModelResolver.resolve(ModelResolver.java:718) at org.springdoc.core.converters.WebFluxSupportConverter.resolve(WebFluxSupportConverter.java:89) at org.springdoc.core.converters.AdditionalModelsConverter.resolve(AdditionalModelsConverter.java:163) at org.springdoc.core.converters.FileSupportConverter.resolve(FileSupportConverter.java:72) at org.springdoc.core.converters.ResponseSupportConverter.resolve(ResponseSupportConverter.java:87) at org.springdoc.core.converters.SchemaPropertyDeprecatingConverter.resolve(SchemaPropertyDeprecatingConverter.java:95) at org.springdoc.core.converters.PolymorphicModelConverter.resolve(PolymorphicModelConverter.java:148) at org.springdoc.core.converters.PageableOpenAPIConverter.resolve(PageableOpenAPIConverter.java:97) at org.springdoc.core.converters.PageOpenAPIConverter.resolve(PageOpenAPIConverter.java:101) at org.springdoc.core.converters.SortOpenAPIConverter.resolve(SortOpenAPIConverter.java:92) at io.swagger.v3.core.converter.ModelConverterContextImpl.resolve(ModelConverterContextImpl.java:97) at io.swagger.v3.core.converter.ModelConverters.resolveAsResolvedSchema(ModelConverters.java:225) at io.swagger.v3.core.converter.ModelConverters.readAllAsResolvedSchema(ModelConverters.java:215) at io.swagger.v3.core.util.AnnotationsUtils.resolveSchemaFromType(AnnotationsUtils.java:897) at io.swagger.v3.core.util.AnnotationsUtils.getSchema(AnnotationsUtils.java:1743) at io.swagger.v3.core.util.AnnotationsUtils.getSchema(AnnotationsUtils.java:1722) at org.springdoc.core.utils.SpringDocAnnotationsUtils.getMediaType(SpringDocAnnotationsUtils.java:396) at org.springdoc.core.utils.SpringDocAnnotationsUtils.getContent(SpringDocAnnotationsUtils.java:212) at org.springdoc.core.service.OperationService.buildResponseContent(OperationService.java:370) at org.springdoc.core.service.OperationService.getApiResponses(OperationService.java:338) at org.springdoc.core.service.OperationService.buildResponse(OperationService.java:491) at org.springdoc.core.service.OperationService.parse(OperationService.java:163) at org.springdoc.api.AbstractOpenApiResource.calculatePath(AbstractOpenApiResource.java:608) at org.springdoc.api.AbstractOpenApiResource.calculatePath(AbstractOpenApiResource.java:815) at org.springdoc.webflux.api.OpenApiResource.lambda$calculatePath$5(OpenApiResource.java:196) at java.base/java.util.Optional.ifPresent(Optional.java:178) at org.springdoc.webflux.api.OpenApiResource.calculatePath(OpenApiResource.java:178) at org.springdoc.webflux.api.OpenApiResource.lambda$getPaths$0(OpenApiResource.java:161) at java.base/java.util.Optional.ifPresent(Optional.java:178) at org.springdoc.webflux.api.OpenApiResource.getPaths(OpenApiResource.java:153) at org.springdoc.api.AbstractOpenApiResource.getOpenApi(AbstractOpenApiResource.java:371) at org.springdoc.webflux.api.OpenApiResource.openapiJson(OpenApiResource.java:123) at org.springdoc.webflux.api.OpenApiWebfluxResource.openapiJson(OpenApiWebfluxResource.java:119) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.web.reactive.result.method.InvocableHandlerMethod.lambda$invoke$0(InvocableHandlerMethod.java:208) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:132) at reactor.core.publisher.MonoZip$ZipCoordinator.signal(MonoZip.java:297) at reactor.core.publisher.MonoZip$ZipInner.onNext(MonoZip.java:478) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2570) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.request(MonoPeekTerminal.java:139) at reactor.core.publisher.MonoZip$ZipInner.onSubscribe(MonoZip.java:470) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onSubscribe(MonoPeekTerminal.java:152) at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:55) at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) at reactor.core.publisher.MonoZip$ZipCoordinator.request(MonoZip.java:220) at reactor.core.publisher.MonoFlatMap$FlatMapMain.request(MonoFlatMap.java:194) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onSubscribe(MonoIgnoreThen.java:135) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onSubscribe(MonoFlatMap.java:117) at reactor.core.publisher.MonoZip.subscribe(MonoZip.java:129) at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:241) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:204) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onComplete(MonoFlatMap.java:189) at reactor.core.publisher.Operators.complete(Operators.java:137) at reactor.core.publisher.MonoZip.subscribe(MonoZip.java:121) at reactor.core.publisher.Mono.subscribe(Mono.java:4576) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:265) at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74) at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82) at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.innerNext(FluxConcatMapNoPrefetch.java:259) at reactor.core.publisher.FluxConcatMap$ConcatMapInner.onNext(FluxConcatMap.java:865) at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:129) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2570) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.request(MonoPeekTerminal.java:139) at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:171) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2330) at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.request(FluxConcatMapNoPrefetch.java:339) at reactor.core.publisher.MonoNext$NextSubscriber.request(MonoNext.java:108) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2366) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2240) at reactor.core.publisher.MonoNext$NextSubscriber.onSubscribe(MonoNext.java:70) at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.onSubscribe(FluxConcatMapNoPrefetch.java:164) at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:201) at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:83) at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) at reactor.core.publisher.Mono.subscribe(Mono.java:4576) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:265) at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) at reactor.core.publisher.Mono.subscribe(Mono.java:4576) at org.springframework.http.server.reactive.ServletHttpHandlerAdapter.service(ServletHttpHandlerAdapter.java:199) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:116) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:398) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1740) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1189) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:658) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) at java.base/java.lang.Thread.run(Thread.java:1583)

Metadata

Metadata

Assignees

No one assigned

    Labels

    invalidThis doesn't seem right

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions