1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.configuration2;
19
20 import static org.junit.jupiter.api.Assertions.assertEquals;
21 import static org.junit.jupiter.api.Assertions.assertThrows;
22
23 import java.io.File;
24 import java.io.StringWriter;
25
26 import org.apache.commons.configuration2.ex.ConfigurationException;
27 import org.apache.commons.configuration2.io.FileHandler;
28 import org.apache.commons.configuration2.tree.ImmutableNode;
29 import org.apache.commons.configuration2.tree.xpath.XPathExpressionEngine;
30 import org.junit.jupiter.api.BeforeEach;
31 import org.junit.jupiter.api.Test;
32
33
34
35
36 public class TestPatternSubtreeConfiguration {
37 private static final File CONFIG_FILE = ConfigurationAssert.getTestFile("testPatternSubtreeConfig.xml");
38 private static final String PATTERN = "BusinessClient[@name='${sys:Id}']";
39 private XMLConfiguration conf;
40
41 @BeforeEach
42 public void setUp() throws Exception {
43 conf = new XMLConfiguration();
44 new FileHandler(conf).load(CONFIG_FILE);
45 }
46
47
48
49
50 @Test
51 public void testMultiConfiguration() {
52 final PatternSubtreeConfigurationWrapper config = new PatternSubtreeConfigurationWrapper(this.conf, PATTERN);
53 config.setExpressionEngine(new XPathExpressionEngine());
54
55 System.setProperty("Id", "1001");
56 assertEquals(15, config.getInt("rowsPerPage"));
57
58 System.setProperty("Id", "1002");
59 assertEquals(25, config.getInt("rowsPerPage"));
60
61 System.setProperty("Id", "1003");
62 assertEquals(35, config.getInt("rowsPerPage"));
63 }
64
65
66
67
68 @Test
69 public void testReadNotFileBased() {
70 final HierarchicalConfiguration<ImmutableNode> hc = new BaseHierarchicalConfiguration();
71 final PatternSubtreeConfigurationWrapper config = new PatternSubtreeConfigurationWrapper(hc, PATTERN);
72 final FileHandler fileHandler = new FileHandler(config);
73 assertThrows(ConfigurationException.class, () -> fileHandler.load(CONFIG_FILE));
74 }
75
76
77
78
79 @Test
80 public void testSaveNotFileBased() {
81 final HierarchicalConfiguration<ImmutableNode> hc = new BaseHierarchicalConfiguration();
82 final PatternSubtreeConfigurationWrapper config = new PatternSubtreeConfigurationWrapper(hc, PATTERN);
83 final FileHandler fileHandler = new FileHandler(config);
84 final StringWriter writer = new StringWriter();
85 assertThrows(ConfigurationException.class, () -> fileHandler.save(writer));
86 }
87 }