Example usage for com.fasterxml.jackson.databind.ser PropertyFilter serializeAsField

List of usage examples for com.fasterxml.jackson.databind.ser PropertyFilter serializeAsField

Introduction

In this page you can find the example usage for com.fasterxml.jackson.databind.ser PropertyFilter serializeAsField.

Prototype

public void serializeAsField(Object pojo, JsonGenerator jgen, SerializerProvider prov, PropertyWriter writer)
        throws Exception;

Source Link

Document

Method called by BeanSerializer to let the filter decide what to do with given bean property value: the usual choices are to either filter out (i.e.

Usage

From source file:com.github.shyiko.jackson.module.advice.AdvisedBeanSerializer.java

protected void serializeFieldsFiltered(Object bean, JsonGenerator jgen, SerializerProvider provider)
        throws IOException {
    /* note: almost verbatim copy of "serializeFields"; copied (instead of merged)
     * so that old method need not add check for existence of filter.
     *//*from w ww.  j  av  a  2 s  .c o  m*/

    final BeanPropertyWriter[] props;
    if (_filteredProps != null && provider.getActiveView() != null) {
        props = _filteredProps;
    } else {
        props = _props;
    }
    final PropertyFilter filter = findPropertyFilter(provider, _propertyFilterId, bean);
    // better also allow missing filter actually..
    if (filter == null) {
        serializeFields(bean, jgen, provider);
        return;
    }
    int i = 0;
    try {
        for (final int len = props.length; i < len; ++i) {
            BeanPropertyWriter prop = props[i];
            if (prop != null) { // can have nulls in filtered list
                if (!beanSerializerAdvice.intercept(bean, jgen, prop, provider)) {
                    beanSerializerAdvice.before(bean, jgen, prop, provider);
                    filter.serializeAsField(bean, jgen, provider, prop);
                    beanSerializerAdvice.after(bean, jgen, prop, provider);
                }
            }
        }
        if (_anyGetterWriter != null) {
            _anyGetterWriter.getAndFilter(bean, jgen, provider, filter);
        }
    } catch (Exception e) {
        String name = (i == props.length) ? "[anySetter]" : props[i].getName();
        wrapAndThrow(provider, e, bean, name);
    } catch (StackOverflowError e) {
        JsonMappingException mapE = new JsonMappingException("Infinite recursion (StackOverflowError)", e);
        String name = (i == props.length) ? "[anySetter]" : props[i].getName();
        mapE.prependPath(new JsonMappingException.Reference(bean, name));
        throw mapE;
    }
}