1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.yaml.snakeyaml.issues.issue9;
18
19 import org.yaml.snakeyaml.constructor.Constructor;
20 import org.yaml.snakeyaml.nodes.Node;
21 import org.yaml.snakeyaml.nodes.NodeId;
22 import org.yaml.snakeyaml.nodes.ScalarNode;
23 import org.yaml.snakeyaml.nodes.Tag;
24
25 public class BeanConstructor extends Constructor {
26
27 public BeanConstructor() {
28 super(BeanHolder.class);
29 yamlConstructors.put(new Tag(Bean1.class), new Bean1ScalarConstructor());
30 yamlConstructors.put(new Tag(BeanHolder.class), new BeanHolderScalarConstructor());
31 }
32
33 private class Bean1ScalarConstructor extends ConstructScalar {
34 @Override
35 public Object construct(Node node) {
36 ScalarNode snode = (ScalarNode) node;
37 if (snode.getValue().length() == 0) {
38 return new Bean1();
39 } else {
40 return new Bean1(new Integer(snode.getValue()));
41 }
42 }
43 }
44
45 private class BeanHolderScalarConstructor extends ConstructScalar {
46 @Override
47 public Object construct(Node node) {
48 if (node.getNodeId() == NodeId.scalar) {
49 ScalarNode n = (ScalarNode) node;
50 String value = n.getValue();
51 int i = 3;
52 if (value.length() != 0) {
53 i = Integer.parseInt(value);
54 }
55 return new BeanHolder(new Bean1(i));
56 } else {
57 return new BeanHolder();
58 }
59 }
60 }
61 }