Apache Commons: обработка списка в CompositeConfiguration
У меня есть два файла конфигурации:
override.xml looks like this ...
<paths>
<path>1</path>
<path>2</path>
<path>3</path>
</paths>
<numbers>
<number>100</number>
<number>200</number>
</numbers>
default.xml looks like this ...
<paths>
<path>4</path>
<path>5</path>
<path>6</path>
</paths>
<alphabets>
<alphabet>A</alphabet>
<alphabet>B</alphabet>
</alphabets>
Я использую CompositeConfiguration. Сначала добавьте файл override.xml, а затем default.xml.
When I do a getList("paths.path") on the CompositeConfiguration, I get back 1,2,3,4,5,6.
Это говорит мне, что я получаю обратно значения из override.xml и default.xml. Есть ли способ вернуть значения только из override.xml только потому, что он переопределяет значения default.xml?
В то же время, если бы я использовал getList("numbers.number"), я бы ожидал, что будет возвращено 100 200. GetList("alphabets.alphabet") для возврата A,B.
1 ответ
Объединение содержимого списка является поведением по умолчанию getList CompositeConfiguration. Вам необходимо использовать CombinedConfiguration с соответствующим NodeCombiner. Для вашего случая использования OverrideCombiner подходит. Образец кода:
XMLConfiguration x1 = new XMLConfiguration();
....
XMLConfiguration x2 = new XMLConfiguration();
....
CombinedConfiguration config = new CombinedConfiguration(new OverrideCombiner());
config.addConfiguration(x1);
config.addConfiguration(x2);
Здесь список, определенный в конфигурации x1, возвращается при выполнении config.getList("numbers.number")