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 private void checkSubnodeEvent(final ConfigurationEvent event, final boolean before) {
45 assertEquals(before, event.isBeforeUpdate());
46 final ConfigurationEvent evSub = assertInstanceOf(ConfigurationEvent.class, event.getPropertyValue());
47 assertEquals(ConfigurationEvent.ADD_PROPERTY, evSub.getEventType());
48 assertEquals("newProp", evSub.getPropertyName());
49 assertEquals("newValue", evSub.getPropertyValue());
50 assertEquals(before, evSub.isBeforeUpdate());
51 }
52
53 @Override
54 protected AbstractConfiguration createConfiguration() {
55 return new BaseHierarchicalConfiguration();
56 }
57
58
59
60
61 @Test
62 public void testAddNodesEmptyEvent() {
63 ((BaseHierarchicalConfiguration) config).addNodes(TEST_PROPNAME, new ArrayList<>());
64 listener.done();
65 }
66
67
68
69
70 @Test
71 public void testAddNodesEvent() {
72 final BaseHierarchicalConfiguration hc = (BaseHierarchicalConfiguration) config;
73 final Collection<ImmutableNode> nodes = new ArrayList<>(1);
74 nodes.add(NodeStructureHelper.createNode("a_key", TEST_PROPVALUE));
75 hc.addNodes(TEST_PROPNAME, nodes);
76 listener.checkEvent(ConfigurationEvent.ADD_NODES, TEST_PROPNAME, nodes, true);
77 listener.checkEvent(ConfigurationEvent.ADD_NODES, TEST_PROPNAME, nodes, false);
78 listener.done();
79 }
80
81
82
83
84 @Test
85 public void testClearTreeEvent() {
86 final BaseHierarchicalConfiguration hc = (BaseHierarchicalConfiguration) config;
87 final String key = EXIST_PROPERTY.substring(0, EXIST_PROPERTY.indexOf('.'));
88 final NodeHandler<ImmutableNode> nodeHandler = hc.getNodeModel().getNodeHandler();
89 final Collection<QueryResult<ImmutableNode>> nodes = hc.getExpressionEngine().query(nodeHandler.getRootNode(), key, nodeHandler);
90 hc.clearTree(key);
91 listener.checkEvent(ConfigurationEvent.CLEAR_TREE, key, null, true);
92 listener.checkEvent(ConfigurationEvent.CLEAR_TREE, key, nodes, false);
93 listener.done();
94 }
95
96
97
98
99 @Test
100 public void testSubConfigurationChangedEventConnected() {
101 final HierarchicalConfiguration<ImmutableNode> sub = ((BaseHierarchicalConfiguration) config).configurationAt(EXIST_PROPERTY, true);
102 sub.addProperty("newProp", "newValue");
103 checkSubnodeEvent(listener.nextEvent(ConfigurationEvent.SUBNODE_CHANGED), true);
104 checkSubnodeEvent(listener.nextEvent(ConfigurationEvent.SUBNODE_CHANGED), false);
105 listener.done();
106 }
107
108
109
110
111 @Test
112 public void testSubConfigurationChangedEventNotConnected() {
113 final HierarchicalConfiguration<ImmutableNode> sub = ((BaseHierarchicalConfiguration) config).configurationAt(EXIST_PROPERTY);
114 sub.addProperty("newProp", "newValue");
115 listener.done();
116 }
117 }