1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.configuration2.tree;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20 import static org.junit.jupiter.api.Assertions.assertFalse;
21 import static org.junit.jupiter.api.Assertions.assertTrue;
22
23 import java.util.List;
24
25 import org.apache.commons.configuration2.BaseHierarchicalConfiguration;
26 import org.apache.commons.configuration2.CombinedConfiguration;
27 import org.apache.commons.configuration2.HierarchicalConfiguration;
28 import org.apache.commons.configuration2.PropertiesConfiguration;
29 import org.apache.commons.configuration2.ex.ConfigurationException;
30 import org.junit.jupiter.api.Test;
31
32
33
34
35 public class TestOverrideCombiner extends AbstractCombinerTest {
36
37
38
39
40
41
42 private ImmutableNode checkTable(final BaseHierarchicalConfiguration config) {
43 assertEquals(0, config.getMaxIndex("database.tables.table"));
44 final HierarchicalConfiguration<ImmutableNode> c = config.configurationAt("database.tables.table");
45 assertEquals("documents", c.getString("name"));
46 assertEquals(2, c.getMaxIndex("fields.field.name"));
47 assertEquals("docname", c.getString("fields.field(1).name"));
48
49 final NodeHandler<ImmutableNode> nodeHandler = config.getNodeModel().getNodeHandler();
50 final List<QueryResult<ImmutableNode>> nds = config.getExpressionEngine().query(nodeHandler.getRootNode(), "database.tables.table", nodeHandler);
51 assertFalse(nds.isEmpty());
52 assertFalse(nds.get(0).isAttributeResult());
53 return nds.get(0).getNode();
54 }
55
56
57
58
59
60
61 @Override
62 protected NodeCombiner createCombiner() {
63 return new OverrideCombiner();
64 }
65
66
67
68
69 @Test
70 public void testAttributes() throws ConfigurationException {
71 final BaseHierarchicalConfiguration config = createCombinedConfiguration();
72 assertEquals(1, config.getInt("gui.level[@min]"));
73 assertEquals(2, config.getInt("gui.level[@default]"));
74 assertEquals(0, config.getMaxIndex("database.tables.table(0)[@id]"));
75 assertEquals(1, config.getInt("database.tables.table(0)[@id]"));
76 }
77
78
79
80
81
82 @Test
83 public void testCombinedTableList() throws ConfigurationException {
84 combiner.addListNode("table");
85 checkTable(createCombinedConfiguration());
86 }
87
88
89
90
91
92
93 @Test
94 public void testCombinedTableNoList() throws ConfigurationException {
95 checkTable(createCombinedConfiguration());
96 }
97
98
99
100
101 @Test
102 public void testCombineProperties() {
103 final PropertiesConfiguration c1 = new PropertiesConfiguration();
104 c1.addProperty("x.y.simpleCase", false);
105 c1.addProperty("x.y.between", false);
106 c1.addProperty("x.y.isDistinctFrom", false);
107 c1.addProperty("x.y", false);
108 final PropertiesConfiguration c2 = new PropertiesConfiguration();
109 c2.addProperty("x.y", true);
110 c2.addProperty("x.y.between", true);
111 c2.addProperty("x.y.comparison", true);
112 c2.addProperty("x.y.in", true);
113 c2.addProperty("x.y.isDistinctFrom", true);
114 c2.addProperty("x.y.simpleCase", true);
115
116 final CombinedConfiguration config = new CombinedConfiguration(new OverrideCombiner());
117 config.addConfiguration(c1);
118 config.addConfiguration(c2);
119 assertFalse(config.getBoolean("x.y"));
120 assertFalse(config.getBoolean("x.y.between"));
121 assertFalse(config.getBoolean("x.y.isDistinctFrom"));
122 assertFalse(config.getBoolean("x.y.simpleCase"));
123 assertTrue(config.getBoolean("x.y.in"));
124 assertTrue(config.getBoolean("x.y.comparison"));
125 assertEquals(6, config.size());
126 }
127
128
129
130
131 @Test
132 public void testListFromFirstStructure() throws ConfigurationException {
133 final BaseHierarchicalConfiguration config = createCombinedConfiguration();
134 assertEquals(0, config.getMaxIndex("net.service.url"));
135 assertEquals("http://service1.org", config.getString("net.service.url"));
136 assertFalse(config.containsKey("net.service.url[@type]"));
137 }
138
139
140
141
142 @Test
143 public void testListFromSecondStructure() throws ConfigurationException {
144 final BaseHierarchicalConfiguration config = createCombinedConfiguration();
145 assertEquals(3, config.getMaxIndex("net.server.url"));
146 assertEquals("http://testsvr.com", config.getString("net.server.url(2)"));
147 }
148
149
150
151
152 @Test
153 public void testOverrideValues() throws ConfigurationException {
154 final BaseHierarchicalConfiguration config = createCombinedConfiguration();
155 assertEquals("Admin", config.getString("base.services.security.login.user"));
156 assertEquals("default", config.getString("base.services.security.login.user[@type]"));
157 assertEquals("BeamMeUp", config.getString("base.services.security.login.passwd"));
158 assertEquals("secret", config.getString("base.services.security.login.passwd[@type]"));
159 }
160
161
162
163
164 @Test
165 public void testSimpleValues() throws ConfigurationException {
166 final BaseHierarchicalConfiguration config = createCombinedConfiguration();
167 assertEquals(0, config.getMaxIndex("gui.bgcolor"));
168 assertEquals("green", config.getString("gui.bgcolor"));
169 assertEquals("yellow", config.getString("gui.selcolor"));
170 assertEquals("blue", config.getString("gui.fgcolor"));
171 assertEquals(1, config.getInt("gui.level"));
172 }
173 }