blob: 7e80ddb5f3b4c4680a94464ebccdd001da73e4d8 [file] [log] [blame]
package com.fasterxml.jackson.databind;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.json.JsonMapper;
import java.io.IOException;
public class RecordTest extends BaseMapTest {
private JsonMapper jsonMapper;
public void setUp() {
jsonMapper = new JsonMapper();
}
record SimpleRecord(int id, String name) {
}
public void testSerializeSimpleRecord() throws JsonProcessingException {
SimpleRecord record = new SimpleRecord(123, "Bob");
String json = jsonMapper.writeValueAsString(record);
assertEquals("{\"id\":123,\"name\":\"Bob\"}", json);
}
public void testDeserializeSimpleRecord() throws IOException {
SimpleRecord value = jsonMapper.readValue("{\"id\":123,\"name\":\"Bob\"}", SimpleRecord.class);
assertEquals(new SimpleRecord(123, "Bob"), value);
}
public void testSerializeSimpleRecord_DisableAnnotationIntrospector() throws JsonProcessingException {
SimpleRecord record = new SimpleRecord(123, "Bob");
JsonMapper mapper = JsonMapper.builder()
.configure(MapperFeature.USE_ANNOTATIONS, false)
.build();
String json = mapper.writeValueAsString(record);
assertEquals("{\"id\":123,\"name\":\"Bob\"}", json);
}
public void testDeserializeSimpleRecord_DisableAnnotationIntrospector() throws IOException {
JsonMapper mapper = JsonMapper.builder()
.configure(MapperFeature.USE_ANNOTATIONS, false)
.build();
SimpleRecord value = mapper.readValue("{\"id\":123,\"name\":\"Bob\"}", SimpleRecord.class);
assertEquals(new SimpleRecord(123, "Bob"), value);
}
record RecordOfRecord(SimpleRecord record) {
}
public void testSerializeRecordOfRecord() throws JsonProcessingException {
RecordOfRecord record = new RecordOfRecord(new SimpleRecord(123, "Bob"));
String json = jsonMapper.writeValueAsString(record);
assertEquals("{\"record\":{\"id\":123,\"name\":\"Bob\"}}", json);
}
record JsonIgnoreRecord(int id, @JsonIgnore String name) {
}
public void testSerializeJsonIgnoreRecord() throws JsonProcessingException {
JsonIgnoreRecord record = new JsonIgnoreRecord(123, "Bob");
String json = jsonMapper.writeValueAsString(record);
assertEquals("{\"id\":123}", json);
}
record RecordWithConstructor(int id, String name) {
public RecordWithConstructor(int id) {
this(id, "name");
}
}
public void testDeserializeRecordWithConstructor() throws IOException {
RecordWithConstructor value = jsonMapper.readValue("{\"id\":123,\"name\":\"Bob\"}", RecordWithConstructor.class);
assertEquals(new RecordWithConstructor(123, "Bob"), value);
}
record JsonPropertyRenameRecord(int id, @JsonProperty("rename")String name) {
}
public void testSerializeJsonRenameRecord() throws JsonProcessingException {
JsonPropertyRenameRecord record = new JsonPropertyRenameRecord(123, "Bob");
String json = jsonMapper.writeValueAsString(record);
assertEquals("{\"id\":123,\"rename\":\"Bob\"}", json);
}
public void testDeserializeJsonRenameRecord() throws IOException {
JsonPropertyRenameRecord value = jsonMapper.readValue("{\"id\":123,\"rename\":\"Bob\"}", JsonPropertyRenameRecord.class);
assertEquals(new JsonPropertyRenameRecord(123, "Bob"), value);
}
}