1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.linecorp.centraldogma.internal.api.v1;
18
19 import java.io.IOException;
20
21 import com.fasterxml.jackson.core.JsonParser;
22 import com.fasterxml.jackson.databind.DeserializationContext;
23 import com.fasterxml.jackson.databind.JsonNode;
24 import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
25
26 import com.linecorp.centraldogma.common.Markup;
27
28
29
30
31 public class CommitMessageDtoDeserializer extends StdDeserializer<CommitMessageDto> {
32
33 private static final long serialVersionUID = 6588840723287439409L;
34
35 protected CommitMessageDtoDeserializer() {
36 super(CommitMessageDto.class);
37 }
38
39 @Override
40 public CommitMessageDto deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
41 final JsonNode jsonNode = p.readValueAsTree();
42 final JsonNode summary = jsonNode.get("summary");
43 if (summary == null || summary.textValue() == null) {
44 ctxt.reportInputMismatch(CommitMessageDto.class, "commit message should have a summary.");
45
46 throw new Error();
47 }
48
49 final String detail = jsonNode.get("detail") == null ? "" : jsonNode.get("detail").textValue();
50 final JsonNode markupNode = jsonNode.get("markup");
51 final Markup markup = Markup.parse(markupNode == null ? "unknown" : markupNode.textValue());
52 return new CommitMessageDto(summary.textValue(), detail, markup);
53 }
54 }