took your PR and enhanced on top of it. Plz review!
txs and LieGrue, strub > Am 10.04.2022 um 20:08 schrieb Romain Manni-Bucau <rmannibu...@gmail.com>: > > Created https://github.com/apache/johnzon/pull/83 to try to share what I > meant and try to solve it to enable the release (note I did it a bit in a > hurry, the coming weeks are quite busy for me - so happy to get a second > pair of eyes + optionally somebody running the jsonb tck) > > 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 dim. 10 avr. 2022 à 18:42, Romain Manni-Bucau <rmannibu...@gmail.com> a > écrit : > >> >> >> Le dim. 10 avr. 2022 à 17:34, Mark Struberg <strub...@yahoo.de.invalid> a >> écrit : >> >>> Oki will re-introduce that ct. >>> Should then be backward compat, isn't? >>> >> >> If the modifier check is there back yep >> >> >>> LieGrue, >>> strub >>> >>> >>>> Am 10.04.2022 um 17:24 schrieb Romain Manni-Bucau < >>> rmannibu...@gmail.com>: >>>> >>>> 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 >>>>>>>> >>>>>>> >>>>>>> >>>>> >>>>> >>> >>>