1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.yaml.snakeyaml.representer;
18
19 import java.beans.IntrospectionException;
20 import java.util.Set;
21 import java.util.TreeSet;
22
23 import junit.framework.TestCase;
24
25 import org.yaml.snakeyaml.DumperOptions;
26 import org.yaml.snakeyaml.Yaml;
27 import org.yaml.snakeyaml.introspector.Property;
28
29 public class FilterPropertyToDumpTest extends TestCase {
30
31 public void testFilterPropertyInJavaBeanDumper() {
32 BeanToRemoveProperty bean = new BeanToRemoveProperty();
33 bean.setNumber(24);
34 bean.setId("ID124");
35 Yaml d = new Yaml();
36 String dump = d.dumpAsMap(bean);
37
38 assertEquals("id: ID124\nnumber: 24\n", dump);
39 }
40
41 public void testFilterPropertyInYaml() {
42 BeanToRemoveProperty bean = new BeanToRemoveProperty();
43 bean.setNumber(25);
44 bean.setId("ID125");
45 Yaml yaml = new Yaml(new MyRepresenter());
46 String dump = yaml.dumpAsMap(bean);
47
48 assertEquals("number: 25\n", dump);
49 }
50
51 public void testDoNotFilterPropertyIncludeReadOnly() {
52 BeanToRemoveProperty bean = new BeanToRemoveProperty();
53 bean.setNumber(26);
54 bean.setId("ID126");
55 DumperOptions options = new DumperOptions();
56 options.setAllowReadOnlyProperties(true);
57 Yaml yaml = new Yaml(options);
58 String dump = yaml.dump(bean);
59
60 assertEquals(
61 "!!org.yaml.snakeyaml.representer.FilterPropertyToDumpTest$BeanToRemoveProperty {id: ID126,\n number: 26, something: true}\n",
62 dump);
63 }
64
65 public class BeanToRemoveProperty {
66 private int number;
67 private String id;
68
69 public boolean isSomething() {
70 return true;
71 }
72
73 public int getNumber() {
74 return number;
75 }
76
77 public void setNumber(int number) {
78 this.number = number;
79 }
80
81 public void setId(String id) {
82 this.id = id;
83 }
84
85 public String getId() {
86 return id;
87 }
88 }
89
90 private class MyRepresenter extends Representer {
91 @Override
92 protected Set<Property> getProperties(Class<? extends Object> type)
93 throws IntrospectionException {
94 Set<Property> set = super.getProperties(type);
95 Set<Property> filtered = new TreeSet<Property>();
96 if (type.equals(BeanToRemoveProperty.class)) {
97
98 for (Property prop : set) {
99 String name = prop.getName();
100 if (!name.equals("id")) {
101 filtered.add(prop);
102 }
103 }
104 }
105 return filtered;
106 }
107 }
108 }