Skip to content

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

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
skyblackhawk opened this issue May 26, 2025 · 1 comment
Open

Comments

@skyblackhawk
Copy link

skyblackhawk commented May 26, 2025

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)

@skyblackhawk
Copy link
Author

This error there is from org.springdoc springdoc-openapi-starter-webflux-ui 2.7.0 version.
Please fix it

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant