|
Grimm est en |
Côté code applicatif, la migration est triviale : Grimm consomme strictement les annotations standard org.eclipse.microprofile.openapi.annotations.*. Aucun import propriétaire à remplacer. Les écarts portent sur la configuration et le packaging.
Depuis SmallRye OpenAPI
SmallRye OpenAPI est l’implémentation de référence chez Quarkus et certains serveurs Jakarta EE. Migration directe — Grimm vise la stricte conformance à la même spec.
| SmallRye OpenAPI | Grimm | Note |
|---|---|---|
Annotations |
Mêmes annotations |
Aucun changement de code applicatif. |
Scan classpath au démarrage |
Scan via BCE Vauban au démarrage |
Sémantique identique. Pas de scan par requête dans les deux cas. |
Endpoint |
Endpoint |
Identique. Content negotiation YAML/JSON identique. |
|
|
Surcharges, exclusions, filtres, model reader : identiques. |
Dépendances : Jandex, SnakeYAML, Jackson, etc. |
Aucune (sérialiseurs maison) |
Empreinte de classpath réduite. Compatibilité jlink immédiate. |
|
Endpoint |
Pour publier sur un autre chemin, ajouter un alias JAX-RS côté application. |
Depuis Quarkus OpenAPI
Quarkus OpenAPI repose sur SmallRye OpenAPI mais ajoute des extensions propriétaires.
| Quarkus OpenAPI | Grimm | Note |
|---|---|---|
Build-time scanning via Jandex |
Runtime scanning via BCE Vauban (au démarrage, pas par requête) |
Coût équivalent en latence de démarrage. Pas de Jandex index à maintenir. |
|
|
Privilégier l’annotation portable. |
|
|
Privilégier l’annotation portable. |
Swagger UI intégré |
Hors périmètre Grimm |
Brancher Swagger UI ou Redoc côté application comme une ressource statique. |
|
Pas d’équivalent Dev Mode |
Le cycle est |
Points d’attention
-
Pas de scan classpath à chaud — Grimm n’expose aucun rafraîchissement du document à chaud (la spec MP OpenAPI ne le requiert pas). Toute modification d’annotation suppose un redémarrage.
-
Pas de
setAccessible(true)— si du code applicatif utilisait des classes non-publiques avec un ancien scanner permissif, Grimm n’y accédera pas. Ouvrir les packages dans lemodule-info.javaapplicatif ou rendre les typespublic. -
YAML strict — le sérialiseur YAML maison émet la version 1.2 stricte. Certains clients YAML laxistes (anciens browsers) peuvent réclamer des indentations différentes. Préférer le format JSON dans le doute.
-
mp.openapi.servers— la surcharge remplace entièrement la liste desserversdu document (comportement spec). Pour une fusion, passer par unOASFilter.
Checklist de portage
-
Déclarer
grimm-core+grimm-cdi-vaubanau lieu de SmallRye / Quarkus OpenAPI. -
Vérifier les annotations applicatives : doivent toutes être issues de
org.eclipse.microprofile.openapi.annotations.*. Remplacer toute annotation propriétaire. -
Migrer les propriétés
quarkus.smallrye-openapi.vers@OpenAPIDefinition/@SecurityScheme/@Serverou clésmp.openapi.. -
Lancer
./mvnw testpuis./run-official-tck-mp-openapi-4.1.sh(voir TCK). -
Diff le document produit avant/après — vérifier
info,servers,paths,components/schemas. -
Brancher Swagger UI ou Redoc côté application si nécessaire.