package org.ovirt.engine.api.restapi.json; import java.util.List; import org.codehaus.jackson.map.SerializationConfig; import org.codehaus.jackson.map.ser.BeanPropertyWriter; import org.codehaus.jackson.map.ser.BeanSerializerBuilder; import org.codehaus.jackson.map.ser.CustomSerializerFactory; /* * xjc generated classes contain isSetFoo() methods which get interpreted * by Jackson as "setFoo" properties which we don't want serialized. */ public class CustomBeanFactory extends CustomSerializerFactory { @Override protected void processViews(SerializationConfig config, BeanSerializerBuilder builder) { super.processViews(config, builder); List<BeanPropertyWriter> writersList = builder.getProperties(); BeanPropertyWriter[] writersArray = writersList.toArray(new BeanPropertyWriter[writersList.size()]); for (int i = 0; i < writersArray.length; i++) { if (writersArray[i].getName().startsWith("set") && writersArray[i].getPropertyType() == boolean.class) { writersArray[i] = null; } } builder.setFilteredProperties(writersArray); } }