Можно ли выборочно определить, когда аннотация @JsonFilter используется во время выполнения?
Я получаю исключение JsonMappingException (см. ниже), когда не предоставляю фильтр.
Предыстория:
Из недавнего сообщения на StackOverflow я узнал, что могу использовать @JsonFilter для динамической фильтрации сериализуемых свойств bean. Это отлично работает. После добавления @JsonFilter("apiFilter")
в мой класс домена и добавления этого кода в мой jax-rs сервис (использующий реализацию CXF), я могу динамически фильтровать свойства, возвращаемые моим RESTful API:
// shortened for brevity
FilterProvider filters = new SimpleFilterProvider().addFilter("apiFilter", SimpleBeanPropertyFilter.filterOutAllExcept(filterProperties));
return mapper.filteredWriter(filters).writeValueAsString(user);
Проблема в том, что есть различные вызовы сервиса, где я не хочу применять фильтр вообще. В этих случаях я хочу вернуть весь класс домена без фильтрации каких-либо свойств. В случае, когда я просто пытаюсь вернуть класс домена, я получаю следующее исключение:
Caused by: org.codehaus.jackson.map.JsonMappingException: Can not resolve BeanPropertyFilter with id 'apiFilter'; no FilterProvider configured
at org.codehaus.jackson.map.ser.BeanSerializer.findFilter(BeanSerializer.java:252)
at org.codehaus.jackson.map.ser.BeanSerializer.serializeFieldsFiltered(BeanSerializer.java:216)
at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:140)