swagger-api / swagger-core

Examples and server integrations for generating the Swagger API Specification, which enables easy access to your REST API
http://swagger.io
Apache License 2.0
7.37k stars 2.17k forks source link

Fix: Avoid caching AnnotationIntrospector to support custom module loading #4728

Open sahil-ramagiri opened 1 month ago

sahil-ramagiri commented 1 month ago

Do not cache the value of '_intr' because users can load custom modules later after swagger is configured, and we want to utilize their annotation inspection, just like jackson would do.

sahil-ramagiri commented 3 weeks ago

Hi @frantuma,

I’d like to draw your attention to an issue regarding the binding of the annotation introspector.

Issue: Currently, binding the annotation introspector to _intr causes a divergence in functionality between Swagger's annotation introspector and Jackson's annotation introspector. This could lead to inconsistencies, especially when users extend Jackson with custom modules that perform custom annotation introspection.

Solution: To address this, I propose that we avoid binding the introspector directly and instead retrieve the current annotation introspector from _mapper. This approach ensures that both Swagger and Jackson utilize the same introspector, maintaining functionality and consistency across the system.

Use Case: This change is particularly beneficial for users implementing custom annotation introspection

I have referenced an implementation that demonstrates adding sealed class support without @JsonSubtype annotations.

Please let me know your thoughts or if you need any additional information.

Best regards.