FasterXML / FasterXML/jackson-modules-base

How to bypass MrBean for types with existing deserialization logic

Aperta
#99 6 commenti 0 reazioni 0 assegnatari Vedi su GitHub
mrbean
Lingua principale
Java
Stelle
180
Fork
80
Merge medio
3h 26m
PR unite (30g)
1

Descrizione

This is more of a question, possibly with a suggested change for greater compatibility.

I'm trying to better understand MrBean's [incompatibility with polymorphic types](https://github.com/FasterXML/jackson-modules-base/tree/master/mrbean#issue-incompatibility-with-polymorphic-types), since I'd really like to use both MrBean and ``@JsonTypeInfo``.

From my limited testing, it appears that I can override the ``_suitableType`` method (not sure if that's officially supported), so that I can bypass MrBean's materialization for specific abstract types. When I do this with a polymorphic interface annotated by ``@JsonTypeInfo``, everything seems to work -- Jackson's polymorphic type resolution kicks in, and MrBean can still be used to materialize the specific subclasses/interfaces as desired.

Since I've got that working, I'm exploring how to implement the ``_suitableType`` method generically, and I've found that the following override seems to do the job:
```java
@Override
protected boolean _suitableType(JavaType type) {
return !type.hasHandlers() && super._suitableType(type);
}
```

As far as I can tell from my limited testing (and review of Jackson's code in this area), ``JavaType.hasHandlers`` will return true if the type has a dedicated TypeDeserializer or other deserializer instance. This seems to always be the case for classes that are annotated with ``@JsonTypeInfo``, as well as any other cases where a specific deserializer has been registered.

So, my question is:

1. Is there some downside/pitfall to this generic implementation that I'm missing?
2. If not, could this implementation be added as an enhancement to MrBean itself?

I should note that I'm interested exclusively in the deserialization use case, so perhaps I'm overlooking some complexities in the serialization use case.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.