Tatu Saloranta | 8e6c40c | 2019-12-26 13:02:15 -0800 | [diff] [blame] | 1 | package com.fasterxml.jackson.databind.ser.filter; |
Tatu Saloranta | 32a1c96 | 2019-12-25 11:39:25 -0800 | [diff] [blame] | 2 | |
| 3 | import java.util.*; |
| 4 | |
| 5 | import com.fasterxml.jackson.annotation.JsonInclude; |
| 6 | import com.fasterxml.jackson.annotation.JsonPropertyOrder; |
| 7 | import com.fasterxml.jackson.databind.*; |
| 8 | import com.fasterxml.jackson.databind.json.JsonMapper; |
| 9 | |
| 10 | public class MapInclusion2573Test extends BaseMapTest |
| 11 | { |
| 12 | @JsonPropertyOrder({ "model", "properties" }) |
| 13 | static class Car |
| 14 | { |
| 15 | public String model; |
| 16 | public Map<String, Integer> properties; |
| 17 | } |
| 18 | |
| 19 | /* |
| 20 | /********************************************************** |
| 21 | /* Test methods |
| 22 | /********************************************************** |
| 23 | */ |
| 24 | |
| 25 | private final Map<String, Integer> CAR_PROPERTIES = new LinkedHashMap<>(); |
| 26 | { |
| 27 | CAR_PROPERTIES.put("Speed", 100); |
| 28 | CAR_PROPERTIES.put("Weight", null); |
| 29 | } |
| 30 | |
| 31 | private final Car CAR = new Car(); |
| 32 | { |
| 33 | CAR.model = "F60"; |
| 34 | CAR.properties = CAR_PROPERTIES; |
| 35 | } |
| 36 | |
| 37 | private final JsonInclude.Value BOTH_NON_NULL = JsonInclude.Value.construct(JsonInclude.Include.NON_NULL, |
| 38 | JsonInclude.Include.NON_NULL); |
| 39 | |
| 40 | // final private ObjectMapper MAPPER = objectMapper(); |
| 41 | |
| 42 | // [databind#2572] |
| 43 | public void test2572MapDefault() throws Exception |
| 44 | { |
| 45 | |
| 46 | ObjectMapper mapper = JsonMapper.builder() |
| 47 | .defaultPropertyInclusion(BOTH_NON_NULL) |
| 48 | .build(); |
| 49 | assertEquals(aposToQuotes("{'Speed':100}"), |
| 50 | mapper.writeValueAsString(CAR_PROPERTIES)); |
| 51 | assertEquals(aposToQuotes("{'model':'F60','properties':{'Speed':100}}"), |
| 52 | mapper.writeValueAsString(CAR)); |
| 53 | } |
| 54 | |
| 55 | // [databind#2572] |
| 56 | public void test2572MapOverrideUseDefaults() throws Exception |
| 57 | { |
| 58 | ObjectMapper mapper = JsonMapper.builder() |
| 59 | .defaultPropertyInclusion(BOTH_NON_NULL) |
| 60 | .build(); |
| 61 | mapper.configOverride(Map.class) |
| 62 | .setInclude(JsonInclude.Value.construct(JsonInclude.Include.USE_DEFAULTS, |
| 63 | JsonInclude.Include.USE_DEFAULTS)); |
| 64 | assertEquals(aposToQuotes("{'Speed':100}"), |
| 65 | mapper.writeValueAsString(CAR_PROPERTIES)); |
| 66 | assertEquals(aposToQuotes("{'model':'F60','properties':{'Speed':100}}"), |
| 67 | mapper.writeValueAsString(CAR)); |
| 68 | } |
| 69 | |
| 70 | // [databind#2572] |
| 71 | public void test2572MapOverrideInclAlways() throws Exception |
| 72 | { |
| 73 | ObjectMapper mapper = JsonMapper.builder() |
| 74 | .defaultPropertyInclusion(BOTH_NON_NULL) |
| 75 | .build(); |
| 76 | mapper.configOverride(Map.class) |
| 77 | .setInclude(JsonInclude.Value.construct(JsonInclude.Include.ALWAYS, |
| 78 | JsonInclude.Include.ALWAYS)); |
| 79 | assertEquals(aposToQuotes("{'Speed':100,'Weight':null}"), |
| 80 | mapper.writeValueAsString(CAR_PROPERTIES)); |
Tatu Saloranta | 8e6c40c | 2019-12-26 13:02:15 -0800 | [diff] [blame] | 81 | assertEquals(aposToQuotes("{'model':'F60','properties':{'Speed':100,'Weight':null}}"), |
Tatu Saloranta | 32a1c96 | 2019-12-25 11:39:25 -0800 | [diff] [blame] | 82 | mapper.writeValueAsString(CAR)); |
| 83 | } |
| 84 | } |