Cannot resolve PropertyFilter with id while inserting in couchbase

Viewed 19

We are trying to use the filter provided by jackson in our spring application.

We annotated the User.java class with @jsonFilter("user")

In user service class we are filtering it as below logic, for get operation.

fields.add("id");
    SimpleFilterProvider filterProvider = new SimpleFilterProvider();
    filterProvider.addFilter(EntityConstants.PRODUCT_OFFERING,
            SimpleBeanPropertyFilter.filterOutAllExcept(fields)).setFailOnUnknownId(false);

    ObjectMapper om = new ObjectMapper();
    om.setFilterProvider(filterProvider);
    om.setSerializationInclusion(JsonInclude.Include.NON_NULL);

    String json;
    List<ProductOffering> listResult = null ;
    try {
        json = om.writeValueAsString(existingProductOfferings);
        listResult = om.readValue(json, new TypeReference<List<ProductOffering>>() {});
    } catch (JsonProcessingException e) {
        log.error("Attribute filtering failed : "+e.getMessage());
        throw new CustomResponseStatusException(HttpStatus.BAD_REQUEST, ErrorCodeEnum.VA60124);
    }
    return listResult;

Now same User.java class is used in order to store data in Couchbase for post operation.

With the above code, get operation field filtering everything is working.

But when we hit POST API to store, then we see serialization issue as below:

Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot resolve PropertyFilter with id 'user'; no FilterProvider configured

To solve the above issue we added code as below in configuration class, still same issue:

@Configuration
public class WebAppMainConfiguration extends WebMvcConfigurerAdapter {

@Bean(name = "jsonMapper")
public ObjectMapper jsonMapper() {
    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.setFilterProvider(new SimpleFilterProvider().setFailOnUnknownId(false));
    return objectMapper;
}

@Override 
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { 
    converters.add(new MappingJackson2HttpMessageConverter());

    super.configureMessageConverters(converters); 
}

}

Please give inputs. Thanks

0 Answers
Related