On Fri, Aug 25, 2017 at 9:45 AM, 'Stephen Murby' via jackson-user <[email protected]> wrote: > I have just implemented some read only fields on an api using MixIn to > enforce the rename and also the ignore on deserialisation. Like this > > @JsonProperty(access = JsonProperty.Access.READ_ONLY, value = > "_privateProperty") > > The reason that I chose a MixIn was that the POJO is imported from a a > different project (a standard model across multiple applications), and this > appeared to be the most simple way of changing the > serialisation/deserialisation. Since I have an abstract class containing a > definition of a number of fields, annotated with this read_only property and > a rename, but no other code I have come to see it somewhat as configuration > code. > > I have a question about testing my configuration though, if I make a typo in > the MixIn definition, and so call my property > _pirvateProperty > > for example, this will obviously not affect the serialisation of my object > with a correctly named field. Is there any way that I can make my > application fail to start because of my defining a JsonProperty override for > a field that does not exist on the POJO?
If I understand the question correctly answer is no -- mix-in binding occurs as a step before trying to access merged annotations and non-matching mix-in annotations are just ignored. It might be reasonable to have a setting that would error out for non-matching mixins (field or method) but this does not yet exist. On mix-in itself: another way to annotate would be to use `@JsonIgnoreProperties` with `allowSetters = true`. But I don't think that would help here; it too could have mis-spelling, and does not allow renaming. Now that I am thinking, there actually might be something to do if you had accessor (setter) instead of field. Mix-in classes/interfaces are allowed to extend/implement other classes, and if it was possible for interface/class to extend something and use `@Overrides` compiler could catch one class of misnaming (of method). It does not seem like this would directly work with fields however. -+ Tatu +- > > > Thanks, > Stephen > > -- > 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 [email protected]. > To post to this group, send email to [email protected]. > 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 [email protected]. To post to this group, send email to [email protected]. For more options, visit https://groups.google.com/d/optout.
