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 private ReloadingCombinedConfigurationBuilder builder;
44
45 @BeforeEach
46 public void setUp() throws Exception {
47 builder = new ReloadingCombinedConfigurationBuilder();
48 }
49
50
51
52
53 @Test
54 public void testInitWithFailOnInitFlag() {
55 builder = new ReloadingCombinedConfigurationBuilder(null, true);
56 assertTrue(builder.isAllowFailOnInit());
57 }
58
59
60
61
62 @Test
63 public void testInitWithParameters() throws ConfigurationException {
64 final FileBasedBuilderParametersImpl params = new FileBasedBuilderParametersImpl();
65 params.setFile(ConfigurationAssert.getTestFile("testDigesterConfiguration.xml"));
66 builder = new ReloadingCombinedConfigurationBuilder(params.getParameters());
67 final CombinedConfiguration cc = builder.getConfiguration();
68 assertTrue(cc.getBoolean("test.boolean"));
69 }
70
71
72
73
74 @Test
75 public void testNestedReloadableSources() throws ConfigurationException {
76 final File testFile = ConfigurationAssert.getTestFile("testCCReloadingNested.xml");
77 builder.configure(new FileBasedBuilderParametersImpl().setFile(testFile));
78 builder.getConfiguration();
79 final CombinedReloadingController rc = (CombinedReloadingController) builder.getReloadingController();
80 final Collection<ReloadingController> subControllers = rc.getSubControllers();
81 assertEquals(2, subControllers.size());
82 final ReloadingControllerSupport ccBuilder = (ReloadingControllerSupport) builder.getNamedBuilder("cc");
83 assertTrue(subControllers.contains(ccBuilder.getReloadingController()));
84 final CombinedReloadingController rc2 = (CombinedReloadingController) ccBuilder.getReloadingController();
85 assertEquals(3, rc2.getSubControllers().size());
86 }
87
88
89
90
91 @Test
92 public void testNoReloadableSources() throws ConfigurationException {
93 final File testFile = ConfigurationAssert.getTestFile("testDigesterConfiguration.xml");
94 builder.configure(new CombinedBuilderParametersImpl().setDefinitionBuilder(new FileBasedConfigurationBuilder<>(XMLConfiguration.class))
95 .setDefinitionBuilderParameters(new FileBasedBuilderParametersImpl().setFile(testFile)));
96 builder.getConfiguration();
97 final CombinedReloadingController rc = (CombinedReloadingController) builder.getReloadingController();
98 assertTrue(rc.getSubControllers().isEmpty());
99 }
100
101
102
103
104 @Test
105 public void testReloadableDefinitionBuilder() throws ConfigurationException {
106 final File testFile = ConfigurationAssert.getTestFile("testDigesterConfiguration.xml");
107 final ReloadingCombinedConfigurationBuilder confBuilder = builder.configure(new FileBasedBuilderParametersImpl().setFile(testFile));
108 assertSame(builder, confBuilder);
109 builder.getConfiguration();
110 final CombinedReloadingController rc = (CombinedReloadingController) builder.getReloadingController();
111 final Collection<ReloadingController> subControllers = rc.getSubControllers();
112 assertEquals(1, subControllers.size());
113 final ReloadingController subctrl = ((ReloadingControllerSupport) builder.getDefinitionBuilder()).getReloadingController();
114 assertSame(subctrl, subControllers.iterator().next());
115 }
116 }