Jackrabbit - node.getReferences () ничего не возвращает - PullRequest
1 голос
/ 19 сентября 2011

Я пытаюсь добавить ссылку, но когда я вызываю node.getReferences (), я не вижу ее.

Я попытался создать простой пример -> создать 2 узла под root и ссылаться один на другой. Это отлично работает.

В моем рабочем коде это не так. Я предполагаю, что это как-то связано с версионированием, но я не могу найти ни одного документа, объясняющего, что происходит. Позвольте мне объяснить структуру

Root
  |__project node
       |
       |__ node 1
       |
       |__ node 2

У всех узлов есть mix: versionable и mix: referenceble.

Бит кода ...

         node1.checkout();
         node2.checkout();
         node2.setProperty("ref to node1", node1);
         session.save();

         if (!node1.getReferences().hasNext())
             System.out.println("No references");

Я пытался удалить кассы и сохранить, но все безрезультатно.

Любые комментарии или рекомендуемое чтение приветствуется.

Тед.

1 Ответ

3 голосов
/ 22 сентября 2011

Код, который вы перечислили, должен работать так, как вы ожидаете. Используете ли вы какой-нибудь удаленный слой (RMI, WebDAV и т. Д.), В котором может быть ошибка при обработке ссылок?

Вы можете попробовать, например, следующий код с локальным экземпляром Jackrabbit:

Node root = session.getRootNode().addNode("test");
Node node1 = root.addNode("node1");
node1.addMixin("mix:referenceable");
Node node2 = root.addNode("node2");
node2.setProperty("reference", node1);
session.save();

System.out.println("References to " + node1.getPath() + ":");
for (Property reference : JcrUtils.getReferences(node1)) {
    System.out.println("- " + reference.getPath());
}

Распечатывается следующее:

References to /test/node1:
- /test/node2/reference
...