• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.fasterxml.jackson.databind.ser;
2 
3 import java.util.*;
4 
5 import com.fasterxml.jackson.annotation.JsonPropertyOrder;
6 
7 import com.fasterxml.jackson.databind.*;
8 import com.fasterxml.jackson.databind.exc.InvalidDefinitionException;
9 import com.fasterxml.jackson.databind.module.SimpleModule;
10 import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;
11 import com.fasterxml.jackson.databind.ser.BeanSerializerBuilder;
12 import com.fasterxml.jackson.databind.ser.BeanSerializerModifier;
13 
14 public class BeanSerializerModifier1612Test extends BaseMapTest
15 {
16     @JsonPropertyOrder({ "a", "b", "c" })
17     static class Bean1612 {
18         public Integer a;
19         public Integer b;
20         public Double c;
21 
Bean1612(Integer a, Integer b, Double c)22         public Bean1612(Integer a, Integer b, Double c) {
23             this.a = a;
24             this.b = b;
25             this.c = c;
26         }
27     }
28 
29     static class Modifier1612 extends BeanSerializerModifier {
30         @Override
updateBuilder(SerializationConfig config, BeanDescription beanDesc, BeanSerializerBuilder builder)31         public BeanSerializerBuilder updateBuilder(SerializationConfig config, BeanDescription beanDesc,
32                 BeanSerializerBuilder builder) {
33             List<BeanPropertyWriter> filtered = new ArrayList<BeanPropertyWriter>(2);
34             List<BeanPropertyWriter> properties = builder.getProperties();
35             //Make the filtered properties list bigger
36             builder.setFilteredProperties(new BeanPropertyWriter[] {properties.get(0), properties.get(1), properties.get(2)});
37 
38             //The props will be shorter
39             filtered.add(properties.get(1));
40             filtered.add(properties.get(2));
41             builder.setProperties(filtered);
42             return builder;
43         }
44     }
45 
46     /*
47     /**********************************************************
48     /* Construction and setter methods
49     /**********************************************************
50      */
51 
testIssue1612()52     public void testIssue1612() throws Exception
53     {
54         SimpleModule mod = new SimpleModule();
55         mod.setSerializerModifier(new Modifier1612());
56         ObjectMapper objectMapper = new ObjectMapper()
57                 .registerModule(mod);
58         try {
59             objectMapper.writeValueAsString(new Bean1612(0, 1, 2d));
60             fail("Should not pass");
61         } catch (InvalidDefinitionException e) {
62             verifyException(e, "Failed to construct BeanSerializer");
63             verifyException(e, Bean1612.class.getName());
64         }
65     }
66 }
67