1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 package gov.nist.secauto.metaschema.core.datatype.markup;
28
29 import com.fasterxml.jackson.core.JsonParser;
30
31 import gov.nist.secauto.metaschema.core.datatype.markup.flexmark.XmlMarkupParser;
32 import gov.nist.secauto.metaschema.core.metapath.item.atomic.IMarkupItem;
33 import gov.nist.secauto.metaschema.core.util.ObjectUtils;
34
35 import org.codehaus.stax2.XMLEventReader2;
36
37 import java.io.IOException;
38 import java.util.List;
39
40 import javax.xml.namespace.QName;
41 import javax.xml.stream.XMLStreamException;
42
43 import edu.umd.cs.findbugs.annotations.NonNull;
44
45 public class MarkupMultilineAdapter
46 extends AbstractMarkupAdapter<MarkupMultiline> {
47 @NonNull
48 private static final List<String> NAMES = ObjectUtils.notNull(
49 List.of("markup-multiline"));
50
51 MarkupMultilineAdapter() {
52 super(MarkupMultiline.class);
53 }
54
55 @Override
56 public List<String> getNames() {
57 return NAMES;
58 }
59
60 @Override
61 public boolean isUnrappedValueAllowedInXml() {
62 return true;
63 }
64
65
66
67
68 @Override
69 public MarkupMultiline parse(String value) {
70 return MarkupMultiline.fromMarkdown(value);
71 }
72
73 @SuppressWarnings("null")
74 @Override
75 public MarkupMultiline parse(XMLEventReader2 eventReader) throws IOException {
76 try {
77 return XmlMarkupParser.instance().parseMarkupMultiline(eventReader);
78 } catch (XMLStreamException ex) {
79 throw new IOException(ex);
80 }
81 }
82
83 @Override
84 public MarkupMultiline parse(JsonParser parser) throws IOException {
85 @SuppressWarnings("null") MarkupMultiline retval = parse(parser.getValueAsString());
86
87 parser.nextToken();
88 return retval;
89 }
90
91 @Override
92 public boolean canHandleQName(QName nextQName) {
93 return true;
94 }
95
96 @Override
97 public String getDefaultJsonValueKey() {
98 return "PROSE";
99 }
100
101 @Override
102 public Class<IMarkupItem> getItemClass() {
103 return IMarkupItem.class;
104 }
105
106 @Override
107 public IMarkupItem newItem(Object value) {
108 MarkupMultiline item = toValue(value);
109 return IMarkupItem.valueOf(item);
110 }
111 }