|
| 1 | +package com.fasterxml.jackson.databind.records; |
| 2 | + |
| 3 | +import com.fasterxml.jackson.annotation.JsonProperty; |
| 4 | +import com.fasterxml.jackson.annotation.JsonPropertyOrder; |
| 5 | +import com.fasterxml.jackson.databind.BaseMapTest; |
| 6 | +import com.fasterxml.jackson.databind.ObjectMapper; |
| 7 | + |
| 8 | +public class RecordSerializationOrderTest extends BaseMapTest |
| 9 | +{ |
| 10 | + record NestedRecordOne(String id, String email, NestedRecordTwo nestedRecordTwo) {} |
| 11 | + record NestedRecordOneWithJsonProperty(String id, String email, |
| 12 | + @JsonProperty("nestedProperty") NestedRecordTwo nestedRecordTwo) {} |
| 13 | + record NestedRecordOneWithJsonPropertyIndex(@JsonProperty(index = 2) String id, |
| 14 | + @JsonProperty(index = 0) String email, |
| 15 | + @JsonProperty(value = "nestedProperty", index = 1) NestedRecordTwo nestedRecordTwo) {} |
| 16 | + |
| 17 | + @JsonPropertyOrder({"email", "nestedProperty", "id"}) |
| 18 | + record NestedRecordOneWithJsonPropertyOrder(String id, |
| 19 | + String email, |
| 20 | + @JsonProperty(value = "nestedProperty") NestedRecordTwo nestedRecordTwo) {} |
| 21 | + |
| 22 | + record NestedRecordTwo(String id, String passport) {} |
| 23 | + |
| 24 | + private final ObjectMapper MAPPER = newJsonMapper(); |
| 25 | + |
| 26 | + /* |
| 27 | + /********************************************************************** |
| 28 | + /* Test methods, alternate constructors |
| 29 | + /********************************************************************** |
| 30 | + */ |
| 31 | + |
| 32 | + public void testSerializationOrder() throws Exception { |
| 33 | + NestedRecordTwo nestedRecordTwo = new NestedRecordTwo("2", "111110"); |
| 34 | + NestedRecordOne nestedRecordOne = new NestedRecordOne( "1", "[email protected]", nestedRecordTwo); |
| 35 | + final String output = MAPPER.writeValueAsString(nestedRecordOne); |
| 36 | + final String expected = "{\"id\":\"1\",\"email\":\"[email protected]\",\"nestedRecordTwo\":{\"id\":\"2\",\"passport\":\"111110\"}}"; |
| 37 | + assertEquals(expected, output); |
| 38 | + } |
| 39 | + |
| 40 | + public void testSerializationOrderWithJsonProperty() throws Exception { |
| 41 | + NestedRecordTwo nestedRecordTwo = new NestedRecordTwo("2", "111110"); |
| 42 | + NestedRecordOneWithJsonProperty nestedRecordOne = |
| 43 | + new NestedRecordOneWithJsonProperty( "1", "[email protected]", nestedRecordTwo); |
| 44 | + final String output = MAPPER.writeValueAsString(nestedRecordOne); |
| 45 | + final String expected = "{\"id\":\"1\",\"email\":\"[email protected]\",\"nestedProperty\":{\"id\":\"2\",\"passport\":\"111110\"}}"; |
| 46 | + assertEquals(expected, output); |
| 47 | + } |
| 48 | + |
| 49 | + public void testSerializationOrderWithJsonPropertyIndexes() throws Exception { |
| 50 | + NestedRecordTwo nestedRecordTwo = new NestedRecordTwo("2", "111110"); |
| 51 | + NestedRecordOneWithJsonPropertyIndex nestedRecordOne = |
| 52 | + new NestedRecordOneWithJsonPropertyIndex( "1", "[email protected]", nestedRecordTwo); |
| 53 | + final String output = MAPPER.writeValueAsString(nestedRecordOne); |
| 54 | + final String expected = "{\"email\":\"[email protected]\",\"nestedProperty\":{\"id\":\"2\",\"passport\":\"111110\"},\"id\":\"1\"}"; |
| 55 | + assertEquals(expected, output); |
| 56 | + } |
| 57 | + |
| 58 | + public void testSerializationOrderWithJsonPropertyOrder() throws Exception { |
| 59 | + NestedRecordTwo nestedRecordTwo = new NestedRecordTwo("2", "111110"); |
| 60 | + NestedRecordOneWithJsonPropertyOrder nestedRecordOne = |
| 61 | + new NestedRecordOneWithJsonPropertyOrder( "1", "[email protected]", nestedRecordTwo); |
| 62 | + final String output = MAPPER.writeValueAsString(nestedRecordOne); |
| 63 | + final String expected = "{\"email\":\"[email protected]\",\"nestedProperty\":{\"id\":\"2\",\"passport\":\"111110\"},\"id\":\"1\"}"; |
| 64 | + assertEquals(expected, output); |
| 65 | + } |
| 66 | +} |
0 commit comments