File output = new File("target/test-classes/testwrite/testMultiDynamic_default.xml");
output.delete();
output.getParentFile().mkdir();
copyFile(input, output);
ReloadingCombinedConfigurationBuilder builder =
new ReloadingCombinedConfigurationBuilder();
builder.configure(parameters
.combined()
.setSynchronizer(new ReadWriteSynchronizer())
.setDefinitionBuilderParameters(
new FileBasedBuilderParametersImpl()
.setFile(MULTI_DYNAMIC_FILE))
.registerChildDefaultsHandler(
FileBasedBuilderProperties.class,
new CopyObjectDefaultHandler(
new FileBasedBuilderParametersImpl()
.setReloadingRefreshDelay(1L))));
CombinedConfiguration config = builder.getConfiguration();
assertEquals("Wrong property value (1)", "ID0001",
config.getString("Product/FIIndex/FI[@id='123456781']"));
ReaderThread testThreads[] = new ReaderThread[threadCount];
for (int i = 0; i < testThreads.length; ++i)
{
testThreads[i] = new ReaderThread(builder);
testThreads[i].start();
}
builder.getReloadingController().checkForReloading(null);
Thread.sleep(2000);
input = new File("target/test-classes/testMultiDynamic_default2.xml");
copyFile(input, output);
Thread.sleep(2000);
assertTrue("Changed file not detected", builder
.getReloadingController().checkForReloading(null));
config = builder.getConfiguration();
String id = config.getString("Product/FIIndex/FI[@id='123456782']");
assertNotNull("File did not reload, id is null", id);
String rows = config.getString("rowsPerPage");
assertEquals("Incorrect value for rowsPerPage", "25", rows);