So using a mixin did NOT work.  Here's the mixin:

interface DisableAdditionalPropertiesMixIn {

    @JsonIgnore
    Map<String, Object> getAdditionalProperties();

    @JsonIgnore
    void setAdditionalProperty(String name, Object value);
}

m.addMixInAnnotations(Data.class, DisableAdditionalPropertiesMixIn.class);

This basically did nothing.  My guess is that mixins only allow you to add 
OR override any existing annotation, but not remove it/ignore it unless the 
annotation itself supports some flag you can set to disable it.

So instead, I did this:


public class IgnoreAdditionalPropertiesInspector extends 
JacksonAnnotationIntrospector {

    @Override
    public boolean hasAnySetterAnnotation(AnnotatedMethod am) {
        return false;
    }

    @Override
    public boolean hasAnyGetterAnnotation(AnnotatedMethod am) {
        return false;
    }

}

JacksonAnnotationIntrospector introspector = new 
IgnoreAdditionalPropertiesInspector();
m.setAnnotationIntrospector(introspector);


This works! woohoo!

However, I'm curious if there's any better way to achieve this or is this 
the recommended approach?

Thanks!


On Friday, September 9, 2016 at 6:50:48 PM UTC-4, Brent Ryan wrote:
>
> I'm going to attempt to do this by just creating a 
> DisableAdditionalPropertiesMixin class that I can apply.  I'm not sure this 
> will work and it kinda sucks because it means that the only way for it to 
> work for everything is to apply this to every Object in the hierarchy.
>
> Any other ideas here?
>
>
> On Friday, September 9, 2016 at 6:07:47 PM UTC-4, Brent Ryan wrote:
>>
>> We're looking to see if there's a way to use the same model with 
>> @JsonAnySetter jackson pattern for serialization to backend data storage, 
>> while allowing us to use the same models for the inbound API requests that 
>> are more strict.  So we want FAIL_ON_UNKNOWN_PROPERTIES set to true and 
>> @JsonAnySetter to be disabled from the API perspective.
>>
>> Is there a way to do this or do you have to have 2 separate models or use 
>> mix-ins?  Looking for the preferred approach to dealing with this.
>>
>> Example class:
>>
>> public class Data {
>>
>>   @JsonIgnore
>>   private Map<String, Object> additionalProperties = new HashMap<String, 
>> Object>();
>>
>>   @JsonAnyGetter
>>   public Map<String, Object> getAdditionalProperties() {
>>     return this.additionalProperties;
>>   }
>>
>>   @JsonAnySetter
>>   public void setAdditionalProperty(String name, Object value) {
>>     this.additionalProperties.put(name, value);
>>   }
>>
>> }
>>
>> Is there a way to disable a feature in ObjectMapper that turns off the 
>> JsonAnySetter/JsonAnyGetter for 1 use case, but then enables it for others?
>>
>

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

Reply via email to