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