1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.configuration2.builder.combined;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20 import static org.junit.jupiter.api.Assertions.assertSame;
21 import static org.junit.jupiter.api.Assertions.assertTrue;
22
23 import java.io.File;
24 import java.util.Collection;
25
26 import org.apache.commons.configuration2.CombinedConfiguration;
27 import org.apache.commons.configuration2.ConfigurationAssert;
28 import org.apache.commons.configuration2.XMLConfiguration;
29 import org.apache.commons.configuration2.builder.FileBasedBuilderParametersImpl;
30 import org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder;
31 import org.apache.commons.configuration2.ex.ConfigurationException;
32 import org.apache.commons.configuration2.reloading.CombinedReloadingController;
33 import org.apache.commons.configuration2.reloading.ReloadingController;
34 import org.apache.commons.configuration2.reloading.ReloadingControllerSupport;
35 import org.junit.jupiter.api.BeforeEach;
36 import org.junit.jupiter.api.Test;
37
38
39
40
41 public class TestReloadingCombinedConfigurationBuilder {
42
43
44 private ReloadingCombinedConfigurationBuilder builder;
45
46 @BeforeEach
47 public void setUp() throws Exception {
48 builder = new ReloadingCombinedConfigurationBuilder();
49 }
50
51
52
53
54 @Test
55 void testInitWithFailOnInitFlag() {
56 builder = new ReloadingCombinedConfigurationBuilder(null, true);
57 assertTrue(builder.isAllowFailOnInit());
58 }
59
60
61
62
63 @Test
64 void testInitWithParameters() throws ConfigurationException {
65 final FileBasedBuilderParametersImpl params = new FileBasedBuilderParametersImpl();
66 params.setFile(ConfigurationAssert.getTestFile("testDigesterConfiguration.xml"));
67 builder = new ReloadingCombinedConfigurationBuilder(params.getParameters());
68 final CombinedConfiguration cc = builder.getConfiguration();
69 assertTrue(cc.getBoolean("test.boolean"));
70 }
71
72
73
74
75 @Test
76 void testNestedReloadableSources() throws ConfigurationException {
77 final File testFile = ConfigurationAssert.getTestFile("testCCReloadingNested.xml");
78 builder.configure(new FileBasedBuilderParametersImpl().setFile(testFile));
79 builder.getConfiguration();
80 final CombinedReloadingController rc = (CombinedReloadingController) builder.getReloadingController();
81 final Collection<ReloadingController> subControllers = rc.getSubControllers();
82 assertEquals(2, subControllers.size());
83 final ReloadingControllerSupport ccBuilder = (ReloadingControllerSupport) builder.getNamedBuilder("cc");
84 assertTrue(subControllers.contains(ccBuilder.getReloadingController()));
85 final CombinedReloadingController rc2 = (CombinedReloadingController) ccBuilder.getReloadingController();
86 assertEquals(3, rc2.getSubControllers().size());
87 }
88
89
90
91
92 @Test
93 void testNoReloadableSources() throws ConfigurationException {
94 final File testFile = ConfigurationAssert.getTestFile("testDigesterConfiguration.xml");
95 builder.configure(new CombinedBuilderParametersImpl().setDefinitionBuilder(new FileBasedConfigurationBuilder<>(XMLConfiguration.class))
96 .setDefinitionBuilderParameters(new FileBasedBuilderParametersImpl().setFile(testFile)));
97 builder.getConfiguration();
98 final CombinedReloadingController rc = (CombinedReloadingController) builder.getReloadingController();
99 assertTrue(rc.getSubControllers().isEmpty());
100 }
101
102
103
104
105 @Test
106 void testReloadableDefinitionBuilder() throws ConfigurationException {
107 final File testFile = ConfigurationAssert.getTestFile("testDigesterConfiguration.xml");
108 final ReloadingCombinedConfigurationBuilder confBuilder = builder.configure(new FileBasedBuilderParametersImpl().setFile(testFile));
109 assertSame(builder, confBuilder);
110 builder.getConfiguration();
111 final CombinedReloadingController rc = (CombinedReloadingController) builder.getReloadingController();
112 final Collection<ReloadingController> subControllers = rc.getSubControllers();
113 assertEquals(1, subControllers.size());
114 final ReloadingController subctrl = ((ReloadingControllerSupport) builder.getDefinitionBuilder()).getReloadingController();
115 assertSame(subctrl, subControllers.iterator().next());
116 }
117 }