Skip to content

Commit

Permalink
Document how to turn off DefaultMismatchedInputException
Browse files Browse the repository at this point in the history
  • Loading branch information
geoand committed Sep 9, 2024
1 parent c0bff48 commit 39ca563
Showing 1 changed file with 21 additions and 2 deletions.
23 changes: 21 additions & 2 deletions docs/src/main/asciidoc/rest.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -1415,9 +1415,28 @@ In both cases, importing those modules will allow HTTP message bodies to be read
and serialised to JSON, for <<resource-types,all the types not already registered with a more specific
serialisation>>.

==== Advanced Jackson-specific features
==== Jackson-specific features

When using the `quarkus-rest-jackson` extension there are some advanced features that Quarkus REST supports.
===== Exception handling

Check warning on line 1420 in docs/src/main/asciidoc/rest.adoc

View workflow job for this annotation

GitHub Actions / Linting with Vale

[vale] reported by reviewdog 🐶 [Quarkus.SentenceLength] Try to keep sentences to an average of 32 words or fewer. Raw Output: {"message": "[Quarkus.SentenceLength] Try to keep sentences to an average of 32 words or fewer.", "location": {"path": "docs/src/main/asciidoc/rest.adoc", "range": {"start": {"line": 1420, "column": 16}}}, "severity": "INFO"}

By default, Quarkus provides a built-in `ExceptionMapper` for `MismatchedInputException` which returns an HTTP 400 status code
along with a good error message in Dev and Test modes, about what went wrong during serialization of an entity.

[NOTE]
====
There are situations where various Jackson related exceptions need to handled in a uniform way.For example, the application may need to handle all `JsonMappingException` the same way.

Check warning on line 1427 in docs/src/main/asciidoc/rest.adoc

View workflow job for this annotation

GitHub Actions / Linting with Vale

[vale] reported by reviewdog 🐶 [Quarkus.Fluff] Depending on the context, consider using 'Rewrite the sentence, or use 'must', instead of' rather than 'need to'. Raw Output: {"message": "[Quarkus.Fluff] Depending on the context, consider using 'Rewrite the sentence, or use 'must', instead of' rather than 'need to'.", "location": {"path": "docs/src/main/asciidoc/rest.adoc", "range": {"start": {"line": 1427, "column": 52}}}, "severity": "INFO"}

Check failure on line 1427 in docs/src/main/asciidoc/rest.adoc

View workflow job for this annotation

GitHub Actions / Linting with Vale

[vale] reported by reviewdog 🐶 [Quarkus.Spacing] Keep one space between words in 'y.F'. Raw Output: {"message": "[Quarkus.Spacing] Keep one space between words in 'y.F'.", "location": {"path": "docs/src/main/asciidoc/rest.adoc", "range": {"start": {"line": 1427, "column": 94}}}, "severity": "ERROR"}

Check warning on line 1427 in docs/src/main/asciidoc/rest.adoc

View workflow job for this annotation

GitHub Actions / Linting with Vale

[vale] reported by reviewdog 🐶 [Quarkus.Fluff] Depending on the context, consider using 'Rewrite the sentence, or use 'must', instead of' rather than 'need to'. Raw Output: {"message": "[Quarkus.Fluff] Depending on the context, consider using 'Rewrite the sentence, or use 'must', instead of' rather than 'need to'.", "location": {"path": "docs/src/main/asciidoc/rest.adoc", "range": {"start": {"line": 1427, "column": 118}}}, "severity": "INFO"}

Check warning on line 1427 in docs/src/main/asciidoc/rest.adoc

View workflow job for this annotation

GitHub Actions / Linting with Vale

[vale] reported by reviewdog 🐶 [Quarkus.TermsWarnings] Consider using 'might (for possibility)' or 'can (for ability)' rather than 'may' unless updating existing content that uses the term. Raw Output: {"message": "[Quarkus.TermsWarnings] Consider using 'might (for possibility)' or 'can (for ability)' rather than 'may' unless updating existing content that uses the term.", "location": {"path": "docs/src/main/asciidoc/rest.adoc", "range": {"start": {"line": 1427, "column": 125}}}, "severity": "WARNING"}
This becomes a problem when taking JAX-RS / Jakarta REST rules into account, because the exception mapper `ExceptionMapper` for `MismatchedInputException` would be used instead of the user provide
`ExceptionMapper` for `JsonMappingException` (as `MismatchedInputException` is a subtype of `sonMappingException`).
One solution for this case is to configure the following:
[source,properties]
----
quarkus.class-loading.removed-resources."io.quarkus\:quarkus-rest-jackson"=io/quarkus/resteasy/reactive/jackson/runtime/mappers/DefaultMismatchedInputException.class
----
which essentially makes Quarkus ignore the `ExceptionMapper` for `MismatchedInputException` completely.
====

[[secure-serialization]]
===== Secure serialization
Expand Down

0 comments on commit 39ca563

Please sign in to comment.