johnzon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Romain Manni-Bucau <rmannibu...@gmail.com>
Subject Re: R: Arrays / Lists elements polymorphic support
Date Tue, 24 Apr 2018 10:41:35 GMT
Give it a try, you dont have that api portably yet I fear bit happy to be
wrong.

Le 24 avr. 2018 12:35, "Alessandro Moscatelli" <
alessandro.moscatelli@live.com> a écrit :

> And btw I can’t see the need for scanning in the first place :
>
> Step 1) While deserializing Collection<T>, when T is known at compile time
> (damn type erasure), we can check if Class<T> has @JsonbTypeDeserializer
> annotation. I believe this is what we are already doing (I hope so!). So
> the specified Deserializer should be called, Polymorphic.DeSerializer.class
> in this case.
>
> Step 2) Polymorphic.DeSerializer should check if Class<T> has
> @Polymorphic.JsonChildren annotation, and also if specified children
> classes have @Polymorphic.JsonId annotation. With all these information
> deserialization can be done without scanning, I believe.
>
>
> ________________________________
> Da: Alessandro Moscatelli <alessandro.moscatelli@live.com>
> Inviato: Tuesday, April 24, 2018 12:17:12 PM
> A: dev@johnzon.apache.org
> Oggetto: R: Arrays / Lists elements polymorphic support
>
> Conflict will still be possible if you choose the same id, or if you don’t
> specify the id and the colliding simplenames of different classes will be
> used.
>
> ‘Scanning’ could be done at Deploy time, on each entity with @Polimorphic
> annotation only.
>
> The real gain would be the possibility to use Polymorphism without
> modifying every entity referencing the polymorphic one, even more when you
> could not even if you want (for example Collection).
>
> Another nice option would be to register children programmatically …
>
>
> Da: Romain Manni-Bucau<mailto:rmannibucau@gmail.com>
> Inviato: martedì 24 aprile 2018 12:06
> A: dev@johnzon.apache.org<mailto:dev@johnzon.apache.org>
> Oggetto: Re: Arrays / Lists elements polymorphic support
>
> 2018-04-24 11:46 GMT+02:00 Alessandro Moscatelli <
> alessandro.moscatelli@live.com>:
>
> > Shouldn’t the @Polymorphic.JsonId (defaulting to simple name if absent)
> be
> > the meta to use to know what you will deserialize ?
> >
>
> Yes, that's what it is actually but how do you find it?
> Scanning? means you are slow for no real gain + you can conflict between
> libraries and models
>
>
> >
> > By the way, how the Polymorphic.JsonId will be serialized ? This is not
> > specified in the index.md.
> >
>
> {_type: <id>,_value: <value>}
>
>
> >
> >
> >
> >
> >
> > ________________________________
> > Da: Romain Manni-Bucau <rmannibucau@gmail.com>
> > Inviato: Tuesday, April 24, 2018 11:42:13 AM
> > A: dev@johnzon.apache.org
> > Oggetto: Re: Arrays / Lists elements polymorphic support
> >
> > Not it wouldn't work since when you deserialize you don't have any meta
> on
> > what you will deserialize.
> >
> > There are alternative to this impl but this is the one requiring the
> least
> > configuration I think.
> >
> >
> > Romain Manni-Bucau
> > @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> > <https://rmannibucau.metawerx.net/> | Old Blog
> > <http://rmannibucau.wordpress.com> | Github <https://github.com/
> > rmannibucau> |
> > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> > <https://www.packtpub.com/application-development/java-
> > ee-8-high-performance>
> >
> > 2018-04-24 11:39 GMT+02:00 Alessandro Moscatelli <
> > alessandro.moscatelli@live.com>:
> >
> > > I think I would be great if this could be part of the Jsonb spec.
> > > I noticed the lack of real support for polymorphism.
> > >
> > > Regarding your impl :
> > >
> > > What if you need a Collection of polymorphic entities ?
> > > Wouldn’t it be better to declare the
> > >
> > >     @JsonbTypeSerializer(Polymorphic.Serializer.class)
> > >     @JsonbTypeDeserializer(Polymorphic.DeSerializer.class)
> > >
> > > Directly on the root entity instead of declare them on the field ?
> > > Would it work ?
> > >
> > > AM
> > >
> > > Da: Romain Manni-Bucau<mailto:rmannibucau@gmail.com>
> > > Inviato: lunedì 23 aprile 2018 19:03
> > > A: dev@johnzon.apache.org<mailto:dev@johnzon.apache.org>
> > > Oggetto: Re: Arrays / Lists elements polymorphic support
> > >
> > > Ok
> > >
> > > Will try to adapt the impl we had and push it later today or tmr and
> ping
> > > here for feedbacks
> > >
> > > Le 23 avr. 2018 18:46, "Jean-Louis MONTEIRO" <jeanouii@gmail.com> a
> > écrit
> > > :
> > >
> > > > That works for me.
> > > > I agree that having that extension into a specific module is the way
> to
> > > go
> > > >
> > > > Le lun. 23 avr. 2018 à 18:44, Romain Manni-Bucau <
> > rmannibucau@gmail.com>
> > > a
> > > > écrit :
> > > >
> > > > > Maybe raise a spec issue since we tend to be jsonb driven now.
> Would
> > be
> > > > > great to not have a custom api for the id mapping.
> > > > >
> > > > > In the mean time we can push a jsonb-extra with that impl
> > > > >
> > > > > Le 23 avr. 2018 18:39, "Jean-Louis MONTEIRO" <jeanouii@gmail.com>
> a
> > > > écrit
> > > > > :
> > > > >
> > > > > > Hey Roberto,
> > > > > >
> > > > > > I think that would be a great feature.
> > > > > > Already had this case in the past and looks like Jackson and
Gson
> > > > already
> > > > > > have it.
> > > > > >
> > > > > > Gson subtypes on adapters.
> > > > > > https://github.com/google/gson/blob/master/extras/src/
> > > > > > main/java/com/google/gson/typeadapters/
> > > RuntimeTypeAdapterFactory.java
> > > > > >
> > > > > >
> > > > > > Jackson annotations with different strategies
> > > > > > https://github.com/FasterXML/jackson-docs/wiki/
> > > > > > JacksonPolymorphicDeserialization
> > > > > >
> > > > > > We should consider adding this feature I believe.
> > > > > >
> > > > > >
> > > > > > Le mer. 18 avr. 2018 à 19:42, Roberto Cortez
> > > > <radcortez@yahoo.com.invalid
> > > > > >
> > > > > > a écrit :
> > > > > >
> > > > > > >  Hi Romain,
> > > > > > > Thanks for the quick response.
> > > > > > > I'll have a look,
> > > > > > > Cheers,Roberto
> > > > > > >     On Wednesday, April 18, 2018, 6:35:32 PM GMT+1, Romain
> > > > Manni-Bucau
> > > > > <
> > > > > > > rmannibucau@gmail.com> wrote:
> > > > > > >
> > > > > > >  Hi Roberto
> > > > > > >
> > > > > > > Yes, an adapter is the way to go using our mapper or jsonb.
> > > > > > >
> > > > > > > There should be an "animal" test showing how to do that.
Just
> > dont
> > > > > forget
> > > > > > > to use class aliases or a whitelist logic to not open a
> backdoor.
> > > > > > >
> > > > > > > Since the model doesnt match the java model im not a fan
of
> that
> > > > > feature
> > > > > > > being built out of the box. In xml it is more natural but
in
> json
> > > you
> > > > > can
> > > > > > > do it without breaking the model. For me it means the model
is
> > > broken
> > > > > and
> > > > > > > must not be used as an input.
> > > > > > >
> > > > > > > Le 18 avr. 2018 19:31, "Roberto Cortez"
> > > <radcortez@yahoo.com.invalid
> > > > >
> > > > > a
> > > > > > > écrit :
> > > > > > >
> > > > > > > > Hi guys,
> > > > > > > > I'm trying to serialize a list of elements of multiple
types
> > and
> > > > then
> > > > > > > > deserialize it again. It does require to somehow include
the
> > type
> > > > in
> > > > > > the
> > > > > > > > serialization result to know to which type we should
map to
> > > > > > deserialize.
> > > > > > > I
> > > > > > > > think this could possible be done with an Adapter
and playing
> > > with
> > > > > the
> > > > > > > > JsonArray.
> > > > > > > > I was just wondering if there any kind of out of the
box
> > support
> > > > for
> > > > > > > this.
> > > > > > > > It doesn't seem so, at least I was not able to find.
> > > > > > > > Jackson for instance, includes a set of annotations
that
> allow
> > > you
> > > > to
> > > > > > do
> > > > > > > > exactly this, without any extra / custom code.
> > > > > > > > Any thoughts?
> > > > > > > > Thank you.
> > > > > > > > Cheers,Roberto
> > > > > >
> > > > >
> > > >
> > >
> > >
> >
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message