1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.yaml.snakeyaml.nodes;
17
18 import java.util.List;
19
20 import org.yaml.snakeyaml.error.Mark;
21
22
23
24
25
26
27
28 public class MappingNode extends CollectionNode {
29 private List<NodeTuple> value;
30 private boolean merged = false;
31
32 public MappingNode(Tag tag, boolean resolved, List<NodeTuple> value, Mark startMark,
33 Mark endMark, Boolean flowStyle) {
34 super(tag, startMark, endMark, flowStyle);
35 if (value == null) {
36 throw new NullPointerException("value in a Node is required.");
37 }
38 this.value = value;
39 this.resolved = resolved;
40 }
41
42 public MappingNode(Tag tag, List<NodeTuple> value, Boolean flowStyle) {
43 this(tag, true, value, null, null, flowStyle);
44 }
45
46 @Override
47 public NodeId getNodeId() {
48 return NodeId.mapping;
49 }
50
51
52
53
54
55
56 public List<NodeTuple> getValue() {
57 return value;
58 }
59
60 public void setValue(List<NodeTuple> merge) {
61 value = merge;
62 }
63
64 public void setOnlyKeyType(Class<? extends Object> keyType) {
65 for (NodeTuple nodes : value) {
66 nodes.getKeyNode().setType(keyType);
67 }
68 }
69
70 public void setTypes(Class<? extends Object> keyType, Class<? extends Object> valueType) {
71 for (NodeTuple nodes : value) {
72 nodes.getValueNode().setType(valueType);
73 nodes.getKeyNode().setType(keyType);
74 }
75 }
76
77 @Override
78 public String toString() {
79 String values;
80 StringBuilder buf = new StringBuilder();
81 for (NodeTuple node : getValue()) {
82 buf.append("{ key=");
83 buf.append(node.getKeyNode());
84 buf.append("; value=");
85 if (node.getValueNode() instanceof CollectionNode) {
86
87 buf.append(System.identityHashCode(node.getValueNode()));
88 } else {
89 buf.append(node.toString());
90 }
91 buf.append(" }");
92 }
93 values = buf.toString();
94 return "<" + this.getClass().getName() + " (tag=" + getTag() + ", values=" + values + ")>";
95 }
96
97
98
99
100
101 public void setMerged(boolean merged) {
102 this.merged = merged;
103 }
104
105
106
107
108 public boolean isMerged() {
109 return merged;
110 }
111 }