Я играю с репозиторием JCR - специально для Jackrabbit - для хранения данных для моего текущего проекта.Все идет хорошо, хотя, к сожалению, иногда трудно найти документацию.То, с чем я сейчас борюсь, это настройка данных модульных тестов для некоторых тестов.Я запустил Jackrabbit в памяти и правильно импортирую в него свои файлы Nodetypes.cnd и data.xml, чтобы у меня были начальные данные для проверки.Однако я не могу понять, как импортировать из файла data.xml, где узел имеет несколько свойств с одинаковым именем.
В частности, из-за того, как данные структурированы, у меня есть узел правил, который связывается с другими узлами правил - где одно правило фактически работает в терминах других правил.Я реализовал это, имея свойство на узле Rules, которое является «правилом (PATH) множественным», поэтому просто список путей узлов к узлам правил, которые связаны.Я могу легко добавить одну ссылку в свой XML-файл, написав
<rule1 name="Rule #1" description="This is Rule number 1" rule="/rules/rule2" />
, что правильно создает правило с именем "rule1", которое имеет ссылку на "rule2".То, что я хочу, чтобы иметь возможность создать это правило, используя метод session.importXML (), где у него более одной ссылки ... Я пробовал
<rule1 name="Rule #1" description="This is Rule number 1" rule="/rules/rule2,/rules/rule3" />
<rule1 name="Rule #1" description="This is Rule number 1" rule="/rules/rule2" rule="/rules/rule3" />
<rule1 Rule #1" description="This is Rule number 1">
<@rule>/rules/rule2</@rule>
<@rule>/rules/rule3</@rule>
</rule1>
И ни одно из них не сработало.Фактически - достаточно очевидно - второй и третий даже не анализируются как XML.
Есть ли способ сделать это?Или мне нужно изменить процесс импорта, чтобы он работал по-другому?
Импорт буквально выполняется с помощью
InputStream xml = getClass().getResourceAsStream("/jcr/data.xml");
session.importXML(session.getRootNode().getPath(), xml, ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW);
Так что в этом нет абсолютно ничего особенного.