Le dim. 10 avr. 2022 à 17:16, Mark Struberg <strub...@yahoo.de.invalid> a
écrit :

> Actually there is not much diff. There is one ct which was only used in
> JsonbAccessMode as true. Everywhere else it was feed as false.
> Now we could keep this flag and feed it as default if you really like.
> That should be rather easy to do if you think it's necessary. But still I'd
> mark that 4param ct as @Deprecated. Wdyt?
>

Well it is used by users writing custom access mode quite often so we must
keep it and its associated behavior as a minimum for coming release.
No issue to make an abstract class with more children to keep it simpler in
the code but please dont break it.


> LieGrue,
> strub
>
> > Am 10.04.2022 um 16:24 schrieb Romain Manni-Bucau <rmannibu...@gmail.com
> >:
> >
> > Hi Mark,
> >
> > If I read the diff correctly we still have some breaking change in
> > FieldAndMethodAccessMode
> > constructor/behavior? Can we get it fixed?
> > In terms of design, jsonb access mode was originally thought as
> delegating
> > the research of the writers/readers to a 3rd party access mode and just
> > refilter on top of it with jsonb rules.
> > Now it is kind of mixed in the code (inheritance + composition vs just
> > composition), the reason it was not done was to avoid to expose the
> default
> > delegate access mode when a 4rd party access mode was using and mix them
> in
> > the jsonbaccess mode, not 100% sure if we want to keep the original
> design
> > there or not but mentionning it since it now prevent us to change it
> later.
> >
> > Overall except the missing constructor it looks ok to me, happy to get
> > thoughts on the access mode pattern too.
> >
> > 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
> >
> >
> >
> > Le sam. 9 avr. 2022 à 23:49, Mark Struberg <strub...@yahoo.de.invalid> a
> > écrit :
> >
> >> here we go. plz take a look!
> >>
> >> https://github.com/struberg/johnzon/tree/JOHNZON-364 <
> >> https://github.com/struberg/johnzon/tree/JOHNZON-364>
> >>
> >> txs and LieGrue,
> >> strub
> >>
> >>
> >>> Am 09.04.2022 um 23:14 schrieb Mark Struberg <strub...@yahoo.de.INVALID
> >>> :
> >>>
> >>> Looked at your proposed solution, but it might be tricky to get it
> >> working. The problem is that we have two modules: mapper and jsonb. And
> in
> >> JOHNZON-250 we added a logic to the mapper module which is ONLY defined
> and
> >> useful in Jsonb. This is the alwaysPreferMethodVisibility in
> >> org.apache.johnzon.mapper.access.FieldAndMethodAccessMode. This actually
> >> did break the mapper. Sorry that I did not catch this earlier.
> >>>
> >>> Note that the FieldAndMethodAccessMode is only used if no other
> >> AccessMode is configured. There is also a JsonbAccessMode which
> delegates
> >> through to the accessMode of the Mapper. Normally means the
> >> FieldAndMethodAccessMode, but could be different.
> >>> We could implement the logic in JsonbAccessMode, totally ditching the
> >> accessMode coming from the Mapper. Also thought about having the
> >> JsonbAccessMode extending the FieldAndMethodAccessMode and adding the
> >> handling as parameter over there. still not really perfect imo.
> >>>
> >>> Will try to ship a patch proposal tomorrow.
> >>>
> >>> LieGrue,
> >>> strub
> >>>
> >>>
> >>>
> >>>> Am 28.03.2022 um 10:22 schrieb Romain Manni-Bucau <
> >> rmannibu...@gmail.com>:
> >>>>
> >>>> Le lun. 28 mars 2022 à 10:05, Mark Struberg <strub...@yahoo.de.invalid
> >> <mailto:strub...@yahoo.de.invalid>> a
> >>>> écrit :
> >>>>
> >>>>> +1 for getting rid of java.beans.
> >>>>>
> >>>>> I've created a spec ticket for the open questions:
> >>>>> https://github.com/eclipse-ee4j/jsonb-api/issues/325 <
> >>>>> https://github.com/eclipse-ee4j/jsonb-api/issues/325>
> >>>>>
> >>>>> My point is: until my fix we clearly did break 4.6. And class
> >> hierarchies
> >>>>> are totally not portable right now anyway. Introducing  It's just
> badly
> >>>>> underspecified.
> >>>>> So I do not see why the current implementation does make it worse.
> >>>>>
> >>>>
> >>>> Well this one is easy to answer: it changes the behavior and breaks
> >> users
> >>>> so it is not an option for a patch version and to be honest the
> proposed
> >>>> fix solves it for both cases so think we should tackle it this way, at
> >>>> least for now until the spec clarifies it any other way.
> >>>> Once again, the source of the issue is more that we lack an
> integration
> >>>> between mapper and jsonb modules than anything else and this
> integration
> >>>> had kind of been done but broke mapper so think we should fix it back,
> >> just
> >>>> costs us a constructor we could have avoided without this issue AFAIK
> so
> >>>> not a big deal, no?
> >>>>
> >>>>
> >>>>>
> >>>>> LieGrue,
> >>>>> strub
> >>>>>
> >>>>>> Am 21.03.2022 um 09:52 schrieb Romain Manni-Bucau <
> >> rmannibu...@gmail.com
> >>>>>> :
> >>>>>>
> >>>>>> Hi,
> >>>>>>
> >>>>>> From what we discussed on this issue, the thing is that our jsonb
> >> access
> >>>>>> mode does not enable the visibility to see all readers/writers cause
> >>>>> there
> >>>>>> is some hardcoded filtering in the delegates so I think the trick is
> >> to
> >>>>>> simply add a toggle to the delegates access modes we use to not have
> >> this
> >>>>>> filtering and 100% rely on the visibility filtering in jsonbaccess
> >> mode
> >>>>> we
> >>>>>> already have in place.
> >>>>>>
> >>>>>> Before the release we must also ensure getters computation cache is
> >>>>> cleaned
> >>>>>> up after the ClassMapping is created - we don't want to keep that in
> >>>>> memory
> >>>>>> at runtime and not sure we can clean up at another time since we
> don't
> >>>>> want
> >>>>>> a background thread for that.
> >>>>>> I also think it is not worth to depends on java.beans (java.desktop
> >>>>> module)
> >>>>>> so we would reimpl decapitalize as we already did somewhere else (it
> >> is
> >>>>> one
> >>>>>> liner anyway ;)).
> >>>>>> Lastly, FieldAndMethodAccessMode constructor compatibility must be
> >>>>> restored
> >>>>>> (it is part of our API and used), default should stay 1-1 but as
> >>>>> mentionned
> >>>>>> I'd add a new toggle (with a constructor calling "this" to keep the
> >>>>>> backward compat) to ignore the filtering.
> >>>>>>
> >>>>>> Sounds like this way we solve all issues and can release.
> >>>>>>
> >>>>>> 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
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> Le lun. 21 mars 2022 à 09:00, Mark Struberg
> <strub...@yahoo.de.invalid
> >>>
> >>>>> a
> >>>>>> écrit :
> >>>>>>
> >>>>>>> To sum this up:
> >>>>>>>
> >>>>>>> The problem lies partly in the JSON-B spec. It doesn't define what
> >>>>> happens
> >>>>>>> if there are class hierarchies like class A extends B.
> >>>>>>>
> >>>>>>> In 3.7.1 it states that
> >>>>>>> For a serialization operation, if a matching public getter method
> >>>>> exists,
> >>>>>>> the method is called to obtain the value of the property. If a
> >> matching
> >>>>>>> getter method with private, protected, or defaulted to package-only
> >>>>> access
> >>>>>>> exists, then this field is ignored. If no matching getter method
> >> exists
> >>>>> and
> >>>>>>> the field is public, then the value is obtained directly from the
> >> field.
> >>>>>>>
> >>>>>>> This can get changed y using a @JsonbVisibility
> >>>>>>>
> >>>>>>> 4.6 Custom visibility
> >>>>>>> To customize scope and field access strategy as specified in
> section
> >>>>>>> 3.7.1, it is possible to specify
> >>>>> javax.json.bind.annotation.JsonbVisibility
> >>>>>>> annotation or to override default behavior globally calling
> >>>>>>> JsonbConfig::withPropertyVisibilityStrategy method with given
> custom
> >>>>>>> property visibility strategy.
> >>>>>>>
> >>>>>>>
> >>>>>>> The problem is that that the PropertyVisibilityStrategy is simply
> not
> >>>>>>> ready to implement the rules of 3.7.1 in a portable way when it
> >> comes to
> >>>>>>> class hierarchies
> >>>>>>>
> >>>>>>>
> >>>>>
> >>
> https://github.com/apache/geronimo-specs/blob/trunk/geronimo-jsonb_1.0_spec/src/main/java/javax/json/bind/config/PropertyVisibilityStrategy.java
> >>>>>>> <
> >>>>>>>
> >>>>>
> >>
> https://github.com/apache/geronimo-specs/blob/trunk/geronimo-jsonb_1.0_spec/src/main/java/javax/json/bind/config/PropertyVisibilityStrategy.java
> >>>>>>>>
> >>>>>>>
> >>>>>>> So either we say that the spec simply does not define what should
> >> happen
> >>>>>>> in case of hierarchic classes (totally valid imo) or we need to
> ditch
> >>>>> our
> >>>>>>> DefaultPropertyVisibility logic completely. It's simply not
> possible
> >> to
> >>>>>>> implement it that way.
> >>>>>>>
> >>>>>>> The reason why I removed the logic from the Reader is the
> following:
> >>>>> Even
> >>>>>>> if the reader says 'oh there is a getter, so let's hide the
> property'
> >>>>> you
> >>>>>>> STILL are perfectly allowed - as per the spec - to have Visibility
> >>>>>>> strategies which do disable ALL methods and ONLY use field access.
> >>>>>>> That means the current impl is surely more correct than before, but
> >> not
> >>>>>>> yet perfect.
> >>>>>>>
> >>>>>>> LieGrue,
> >>>>>>> strub
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>> Am 28.02.2022 um 11:17 schrieb Romain Manni-Bucau <
> >>>>> rmannibu...@gmail.com
> >>>>>>>> :
> >>>>>>>>
> >>>>>>>> Hi JL,
> >>>>>>>>
> >>>>>>>> Last commit broke some stuff.
> >>>>>>>> Dicussed it quickly offline with Mark but Im AFK for a few days,
> >> can it
> >>>>>>>> wait some days? Otherwise maybe just pick this commit?
> >>>>>>>>
> >>>>>>>> Le lun. 28 févr. 2022 à 10:37, Jean-Louis Monteiro <
> >>>>>>> jlmonte...@tomitribe.com>
> >>>>>>>> a écrit :
> >>>>>>>>
> >>>>>>>>> Hi all,
> >>>>>>>>>
> >>>>>>>>> Is it ok to release a 1.2.17?
> >>>>>>>>> I'm looking for a Jakarta EE fix -
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>
> >>>>>
> >>
> https://github.com/apache/johnzon/commit/a1c53d99c3280cbfc35b369ac4ce138e12f1d5ff
> >>>>>>>>>
> >>>>>>>>> Do you guys have some additional fixes to push?
> >>>>>>>>> --
> >>>>>>>>> Jean-Louis Monteiro
> >>>>>>>>> http://twitter.com/jlouismonteiro
> >>>>>>>>> http://www.tomitribe.com
> >>>
> >>
> >>
>
>

Reply via email to