Skip to content

refactor(examples): S13 PR 2 — Quarkus on Panache, SmallRye Health and REST Client - #74

Merged
patterncatalyst merged 25 commits into
mainfrom
refactor/s13-quarkus
Oct 12, 2026
Merged

patterncatalyst merged 25 commits into
mainfrom
refactor/s13-quarkus

Conversation

@patterncatalyst

Copy link
Copy Markdown
Owner

S13 PR 2 of 5 (plan: _plans/s13-idiomatic-plan.md, step 3).

  • The Quarkus examples move from Agroal plus raw JDBC to Panache entities, with db/init still owning the schema (Hibernate validate). The outbox is a plain Panache OutboxEvent entity (D9).
  • Hand-written JAX-RS health endpoints are replaced by SmallRye Health on /healthz and /readyz.
  • java.net.http calls are replaced by typed REST Clients, and the services use Quarkus REST parameter annotations, typed Kafka serdes and Quarkus shutdown handling.
  • 19's CLI adapter is a @QuarkusMain with the HTTP server off.
  • The Quarkus site tabs, READMEs and deck (Quarkus.fix5.json) follow the new code. The 05 minikube and OpenShift deploy.sh health polls accept "UP" as well as "ok".

Fixes found by the matrix:

  • 04, 17 and 25 set quarkus.hibernate-orm.mapping.format.global=ignore. Quarkus 3.40 refuses to start when JSON columns would share the REST ObjectMapper, and none of these apps customizes Jackson.
  • 19's 422 mapper builds the status from the int code. RestResponse.Status has no 422, so the mapper was throwing and returning a 500.
  • Quarkus projects that use Rest* parameters now compile with -parameters. Without it, 24's decorator REST client was never registered.

Verification: scripts/verify-matrix.sh quarkus 24-monolith-to-microservices passed 23/23. validate_site, voice-scan and deck_text --check report clean.

…ique-constraint backstop, typed Kafka payload
…t for write-back, Redis cache for read-through, SmallRye Health
…allRye Health (breaker and bulkhead untouched)
…n format mapper

Quarkus 3.40 refuses to start a persistence unit with JSON columns that
would share the REST ObjectMapper; none of these apps customizes Jackson,
so mapping.format.global=ignore is the documented choice.
RestResponse.Status has no 422, so fromStatusCode returned null and the
mapper itself threw, turning invalid input into a 500.
… -parameters

Without parameter names the decorator's REST client was never registered
("not indexed at build time") because its @RestPath had no name to bind.
Also set on 02, 16, 17 and the 24 stub, matching the other Quarkus poms.
@patterncatalyst
patterncatalyst merged commit 0f22ba0 into main Oct 12, 2026
42 checks passed
@patterncatalyst
patterncatalyst deleted the refactor/s13-quarkus branch October 12, 2026 23:01
patterncatalyst added a commit that referenced this pull request Oct 23, 2026
…d REST Client (#74)

* refactor(demo-01): Quarkus on Panache and SmallRye Health

* refactor(demo-21): Quarkus graceful shutdown on framework drain, Panache and SmallRye Health

* refactor(demo-02): Quarkus order service on Panache, SmallRye Health and typed Kafka payload

* refactor(demo-03): Quarkus gateway on REST Client, order-api on Panache and SmallRye Health

* refactor(demo-04): Quarkus outbox as Panache entities in one transaction, SmallRye Health

* refactor(demo-05): Quarkus on Panache, idempotent consumers with a unique-constraint backstop, typed Kafka payload

* refactor(demo-06): Quarkus on Panache, typed order and revenue serdes, SmallRye Health

* refactor(demo-11): Quarkus on Panache, typed order payload, SmallRye Health

* refactor(demo-12): Quarkus REST query params and SmallRye Health (bulkhead untouched)

* refactor(demo-16): Quarkus REST query params, typed backplane message, SmallRye Health

* refactor(demo-17): Quarkus sagas on Panache with a pessimistic row lock, SmallRye Health

* refactor(demo-18): Quarkus errors through ProblemException and server exception mappers, SmallRye Health

* refactor(demo-19): Quarkus hexagonal on Panache adapter, CLI as QuarkusMain with HTTP off, SmallRye Health

* refactor(demo-22): Quarkus SmallRye Health with the version as liveness data

* refactor(demo-24): Quarkus REST Client for legacy and upstreams, typed Kafka event, SmallRye Health

* refactor(demo-25): Quarkus caching on Panache, StatelessSession upsert for write-back, Redis cache for read-through, SmallRye Health

* refactor(demo-26): Quarkus REST Client for the edge backend calls, SmallRye Health (breaker and bulkhead untouched)

* refactor(demo-27): Quarkus REST headers and SmallRye Health

* docs(examples): Quarkus READMEs follow the Panache and SmallRye examples

* docs(site): Quarkus codetabs follow the Panache/SmallRye examples (S13)

* docs(deck): Quarkus deck follows the idiomatic examples (S13)

* fix(demo-04,demo-17,demo-25): Quarkus JSONB columns on Hibernate's own format mapper

Quarkus 3.40 refuses to start a persistence unit with JSON columns that
would share the REST ObjectMapper; none of these apps customizes Jackson,
so mapping.format.global=ignore is the documented choice.

* fix(demo-19): Quarkus 422 mapper builds the status from the int code

RestResponse.Status has no 422, so fromStatusCode returned null and the
mapper itself threw, turning invalid input into a 500.

* fix(demo-24): compile Quarkus projects that use Rest* parameters with -parameters

Without parameter names the decorator's REST client was never registered
("not indexed at build time") because its @RestPath had no name to bind.
Also set on 02, 16, 17 and the 24 stub, matching the other Quarkus poms.

* docs(plan): S13 PR 2 matrix green
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

Successfully merging this pull request may close these issues.

1 participant