On Tue, Mar 6, 2018 at 7:08 PM,  <m...@vslice.co.uk> wrote:
> Thanks, Tatu. Is there any existing discussion around introducing this as a
> feature? Missing and null properties are very different from a protocol
> point of view, not honouring the distinction seems like a big oversight.

No. I disagree on importance of distinction here: I think trying to
treat cases differently is just asking
for trouble. There are no plans to add such state tracking, although
there is general wish to support
tracking of required fields that are set via setter or field, not just
constructor parameters.

One simple mechanism would be to create a POJO with setter and then
either initialize values in a way
that lets you determine if setter was called or not, or make setter
update secondary status flag.
Alternatively you can bind content as `JsonNode` and look for
existence that way.

To me keeping additional status on setters on databinding level just
does not make much sense,

-+ Tatu +-

>
> On Tuesday, 6 March 2018 03:16:42 UTC, Tatu Saloranta wrote:
>>
>> On Mon, Mar 5, 2018 at 6:14 PM,  <m...@vslice.co.uk> wrote:
>> > For bean setters we have
>> > https://github.com/FasterXML/jackson-databind/issues/1402, which AFAICT
>> > allows to specify different behaviour for nulls vs missing keys.
>> >
>> > I want to achieve the same but also preserve immutability (and sanity).
>> > What's the simplest way of doing that? Sniffing around the code base I
>> > see
>> > `PropertyValueBuffer._findMissing` just uses the deserializer's null
>> > value,
>> > and I don't understand Jackson's extension points well.
>> >
>> > In my case I'm using Java 8/9 Optionals and the observed behaviour is as
>> > follows:
>> >
>> > - Field has a value: I get Optional.of(value)
>> > - Field is null: I get Optional.empty()
>> > - Field key is missing: I get Optional.empty()
>> >
>> > How do I distinguish between case 2 and 3?
>>
>> You can not distinguish them. You can get an exception, if you want,
>> by marking specific property/-ies
>> passed as required (@JsonProperty(required=true)), but that's it.
>>
>> -+ Tatu +-
>
> --
> You received this message because you are subscribed to the Google Groups
> "jackson-user" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to jackson-user+unsubscr...@googlegroups.com.
> To post to this group, send email to jackson-user@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"jackson-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jackson-user+unsubscr...@googlegroups.com.
To post to this group, send email to jackson-user@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to