package com.fasterxml.jackson.databind.ser;
import java.util.*;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.exc.InvalidDefinitionException;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;
import com.fasterxml.jackson.databind.ser.BeanSerializerBuilder;
import com.fasterxml.jackson.databind.ser.BeanSerializerModifier;
public class BeanSerializerModifier1612Test extends BaseMapTest
{
@JsonPropertyOrder({ "a", "b", "c" })
static class Bean1612 {
public Integer a;
public Integer b;
public Double c;
public Bean1612(Integer a, Integer b, Double c) {
this.a = a;
this.b = b;
this.c = c;
}
}
static class Modifier1612 extends BeanSerializerModifier {
@Override
public BeanSerializerBuilder updateBuilder(SerializationConfig config, BeanDescription beanDesc,
BeanSerializerBuilder builder) {
List<BeanPropertyWriter> filtered = new ArrayList<BeanPropertyWriter>(2);
List<BeanPropertyWriter> properties = builder.getProperties();
//Make the filtered properties list bigger
builder.setFilteredProperties(new BeanPropertyWriter[] {properties.get(0), properties.get(1), properties.get(2)});
//The props will be shorter
filtered.add(properties.get(1));
filtered.add(properties.get(2));
builder.setProperties(filtered);
return builder;
}
}
/*
/**********************************************************
/* Construction and setter methods
/**********************************************************
*/
public void testIssue1612() throws Exception
{
SimpleModule mod = new SimpleModule();
mod.setSerializerModifier(new Modifier1612());
ObjectMapper objectMapper = new ObjectMapper()
.registerModule(mod);
try {
objectMapper.writeValueAsString(new Bean1612(0, 1, 2d));
fail("Should not pass");
} catch (InvalidDefinitionException e) {
verifyException(e, "Failed to construct BeanSerializer");
verifyException(e, Bean1612.class.getName());
}
}
}