Le dim. 10 avr. 2022 à 17:33, Mark Struberg <strub...@yahoo.de.invalid> a écrit :
> No, because it was not spec compliant. It clearly didn't respect > JsonbVisibility rules. > We all agreed on that but proposal was ;) > LieGrue, > strub > > > Am 10.04.2022 um 17:23 schrieb Romain Manni-Bucau <rmannibu...@gmail.com > >: > > > > Le dim. 10 avr. 2022 à 17:19, Mark Struberg <strub...@yahoo.de.invalid> > a > > écrit : > > > >> PS: Ad JsonbAccessMode design: the problem is that you need different > >> behaviour depending on whether @JsonbVisibility is there or not. > >> Any custom AccessMode needs to implement the same if they want Jsonb > >> support. Of course the design is imo not really sustainable any more, > but > >> cleaning that up would likely break backward compat. We could do that in > >> the next release. > >> > > > > Previous proposal with the additional flag was making it matching both > > cases cleanly so real reason to break the api and design IMHO > > > > > >> LieGrue, > >> strub > >> > >> > >>> Am 10.04.2022 um 17:15 schrieb Mark Struberg <strub...@yahoo.de>: > >>> > >>> 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? > >>> > >>> 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 > >>>>>> > >>>>> > >>>>> > >>> > >> > >> > >