I have a requirement to dynamically exclude certain property within a List of a defined POJO. The main POJO to be serialized is:
public class Foo
{
List&
I just saw the culprit. Thanks a lot @Alexey for staying with me on this. After much try, I discover Jackson 2.4.2 might have required that I place my serialzer within the model it would work with. I wonder why though, but probably due to Java object serialization requirements, Jackson was failing to map the Filter at runtime. I hope Tatu would note this in Jackson documentation
public class PostProject
{
/* The field template of this project */
private List< FieldTemplateObject > field_templates;
/**
* @author Damilola Okuboyejo
*/
@JsonFilter( "FieldTemplateIdFilter" )
public static class FieldTemplateObject
{
private int id;
private boolean is_inherited;
private String item_type;
/**
* @return the id
*/
public int getId()
{
return id;
}
/**
* @param id
* the id to set
*/
public void setId( int id )
{
this.id = id;
}
/**
* @return the is_inherited
*/
public boolean isIs_inherited()
{
return is_inherited;
}
/**
* @param is_inherited
* the is_inherited to set
*/
public void setIs_inherited( boolean is_inherited )
{
this.is_inherited = is_inherited;
}
/**
* @return the item_type
*/
public String getItem_type()
{
return item_type;
}
/**
* @param item_type
* the item_type to set
*/
public void setItem_type( String item_type )
{
this.item_type = item_type;
}
}
public static class ModelFieldSerializer extends SimpleBeanPropertyFilter
{
@Override
protected boolean include( BeanPropertyWriter writer )
{
return true;
}
@Override
protected boolean include( PropertyWriter writer )
{
return true;
}
@Override
public void serializeAsField( Object pPojo, JsonGenerator pJgen,
SerializerProvider pProvider, PropertyWriter pWriter )
throws Exception
{
if( pPojo instanceof FieldTemplateObject )
{
boolean vAllowId = ((FieldTemplateObject) pPojo).isIs_inherited();
if( !vAllowId && ("id".equals( pWriter.getName() )) )
{
return; // skip the id property
}
else
{
super.serializeAsField( pPojo, pJgen, pProvider, pWriter );
}
}
}
}
}