package org.apache.ode.bpel.obj.serde.jacksonhack; import com.fasterxml.jackson.databind.BeanDescription; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.ser.BeanPropertyWriter; import com.fasterxml.jackson.databind.ser.BeanSerializer; import com.fasterxml.jackson.databind.ser.BeanSerializerBuilder; public class TypeBeanSerializerBuilder extends BeanSerializerBuilder{ private final static BeanPropertyWriter[] NO_PROPERTIES = new BeanPropertyWriter[0]; protected TypeBeanSerializerBuilder(BeanSerializerBuilder src) { super(src); } public TypeBeanSerializerBuilder(BeanDescription beanDesc) { super(beanDesc); } @Override public TypeBeanSerializer createDummy() { return TypeBeanSerializer.createDummy(_beanDesc.getType()); } /** * Method called to create {@link BeanSerializer} instance with * all accumulated information. Will construct a serializer if we * have enough information, or return null if not. */ @Override public JsonSerializer<?> build() { BeanPropertyWriter[] properties; // No properties, any getter or object id writer? // No real serializer; caller gets to handle if (_properties == null || _properties.isEmpty()) { if (_anyGetter == null && _objectIdWriter == null) { return null; } properties = NO_PROPERTIES; } else { properties = _properties.toArray(new BeanPropertyWriter[_properties.size()]); } return new TypeBeanSerializer(_beanDesc.getType(), this, properties, _filteredProperties); } }