1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.configuration2.event;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20 import static org.junit.jupiter.api.Assertions.assertInstanceOf;
21
22 import java.util.ArrayList;
23 import java.util.Collection;
24
25 import org.apache.commons.configuration2.AbstractConfiguration;
26 import org.apache.commons.configuration2.BaseHierarchicalConfiguration;
27 import org.apache.commons.configuration2.HierarchicalConfiguration;
28 import org.apache.commons.configuration2.tree.ImmutableNode;
29 import org.apache.commons.configuration2.tree.NodeHandler;
30 import org.apache.commons.configuration2.tree.NodeStructureHelper;
31 import org.apache.commons.configuration2.tree.QueryResult;
32 import org.junit.jupiter.api.Test;
33
34
35
36
37 public class TestHierarchicalConfigurationEvents extends AbstractTestConfigurationEvents {
38
39
40
41
42
43
44
45 private void checkSubnodeEvent(final ConfigurationEvent event, final boolean before) {
46 assertEquals(before, event.isBeforeUpdate());
47 final ConfigurationEvent evSub = assertInstanceOf(ConfigurationEvent.class, event.getPropertyValue());
48 assertEquals(ConfigurationEvent.ADD_PROPERTY, evSub.getEventType());
49 assertEquals("newProp", evSub.getPropertyName());
50 assertEquals("newValue", evSub.getPropertyValue());
51 assertEquals(before, evSub.isBeforeUpdate());
52 }
53
54 @Override
55 protected AbstractConfiguration createConfiguration() {
56 return new BaseHierarchicalConfiguration();
57 }
58
59
60
61
62 @Test
63 void testAddNodesEmptyEvent() {
64 ((BaseHierarchicalConfiguration) config).addNodes(TEST_PROPNAME, new ArrayList<>());
65 listener.done();
66 }
67
68
69
70
71 @Test
72 void testAddNodesEvent() {
73 final BaseHierarchicalConfiguration hc = (BaseHierarchicalConfiguration) config;
74 final Collection<ImmutableNode> nodes = new ArrayList<>(1);
75 nodes.add(NodeStructureHelper.createNode("a_key", TEST_PROPVALUE));
76 hc.addNodes(TEST_PROPNAME, nodes);
77 listener.checkEvent(ConfigurationEvent.ADD_NODES, TEST_PROPNAME, nodes, true);
78 listener.checkEvent(ConfigurationEvent.ADD_NODES, TEST_PROPNAME, nodes, false);
79 listener.done();
80 }
81
82
83
84
85 @Test
86 void testClearTreeEvent() {
87 final BaseHierarchicalConfiguration hc = (BaseHierarchicalConfiguration) config;
88 final String key = EXIST_PROPERTY.substring(0, EXIST_PROPERTY.indexOf('.'));
89 final NodeHandler<ImmutableNode> nodeHandler = hc.getNodeModel().getNodeHandler();
90 final Collection<QueryResult<ImmutableNode>> nodes = hc.getExpressionEngine().query(nodeHandler.getRootNode(), key, nodeHandler);
91 hc.clearTree(key);
92 listener.checkEvent(ConfigurationEvent.CLEAR_TREE, key, null, true);
93 listener.checkEvent(ConfigurationEvent.CLEAR_TREE, key, nodes, false);
94 listener.done();
95 }
96
97
98
99
100 @Test
101 void testSubConfigurationChangedEventConnected() {
102 final HierarchicalConfiguration<ImmutableNode> sub = ((BaseHierarchicalConfiguration) config).configurationAt(EXIST_PROPERTY, true);
103 sub.addProperty("newProp", "newValue");
104 checkSubnodeEvent(listener.nextEvent(ConfigurationEvent.SUBNODE_CHANGED), true);
105 checkSubnodeEvent(listener.nextEvent(ConfigurationEvent.SUBNODE_CHANGED), false);
106 listener.done();
107 }
108
109
110
111
112 @Test
113 void testSubConfigurationChangedEventNotConnected() {
114 final HierarchicalConfiguration<ImmutableNode> sub = ((BaseHierarchicalConfiguration) config).configurationAt(EXIST_PROPERTY);
115 sub.addProperty("newProp", "newValue");
116 listener.done();
117 }
118 }