No, because it was not spec compliant. It clearly didn't respect 
JsonbVisibility rules.

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
>>>>>> 
>>>>> 
>>>>> 
>>> 
>> 
>> 

Reply via email to