Will start a release soonish. LieGrue, strub
> Am 12.04.2022 um 10:07 schrieb Mark Struberg <strub...@yahoo.de.INVALID>: > > 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 >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>> >>>>>> >>>> >>>> >