Как только узел был удален, как его найти, чтобы восстановить его с помощью jabrabbit или jcr API?Как восстановить «версированный узел» в репозитории jackrabbit 2.1?
ответ
Я не эксперт в области управления версиями Jackrabbit, но насколько я знаю, нет простого способа найти такой узел, если вы не знаете некоторые его данные. Если вы это знаете, вы можете использовать запрос и перейти к следующему родительскому экземпляру, являющемуся экземпляром javax.jcr.version.Version, и восстановить его. Если вы этого не знаете, вам нужно перебирать хранилище версий и распечатывать все данные. Вы можете отфильтровать узлы, которые не удалены, но в противном случае это ручное задание, потому что путь узла не сохраняется в хранилище версии (если вы не добавите свойство, содержащее путь). Ниже приведен пример того, как перечислять все узлы в хранилище версий. Он восстановит последнее javax.jcr.version.Version, которое он находит:
import javax.jcr.Node;
import javax.jcr.NodeIterator;
import javax.jcr.Property;
import javax.jcr.PropertyIterator;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
import javax.jcr.version.Version;
import javax.jcr.version.VersionManager;
import org.apache.jackrabbit.core.TransientRepository;
public class TestRestoreDeleted {
public static void main(String... args) throws Exception {
TransientRepository rep = new TransientRepository();
Session s = rep.login(
new SimpleCredentials("", new char[0]));
try {
// clear the repository first
if (s.getRootNode().hasNode("test")) {
s.getRootNode().getNode("test").remove();
s.save();
}
// add test/t1 and check in the change
Node test = s.getRootNode().addNode("test");
Node t1 = test.addNode("t1");
t1.addMixin("mix:versionable");
s.save();
VersionManager vm = s.getWorkspace().
getVersionManager();
for(int i=0; i<3; i++) {
vm.checkout("/test/t1");
t1.setProperty("data", "Hello" + i);
s.save();
vm.checkin("/test/t1");
}
// remove the node
t1.remove();
s.save();
// list all versions of all nodes in the repository
Node vs = s.getRootNode().
getNode("jcr:system").
getNode("jcr:versionStorage");
Version v = traverseVersionStorage(vs, 0);
// restore a version
vm.restore("/test/t1", v, false);
// get the node and print the data
t1 = s.getRootNode().
getNode("test").getNode("t1");
System.out.println("Restored: " +
t1.getProperty("data").getString());
} finally {
s.logout();
}
}
private static Version traverseVersionStorage(
Node n, int level) throws Exception {
Version v = null;
for (NodeIterator it = n.getNodes(); it.hasNext();) {
Node n2 = it.nextNode();
if (n2 instanceof Version
&& !n2.getName().startsWith("jcr:")) {
v = (Version) n2;
System.out.println("version " + n2.getName() +
" of node " + n2.getParent().getName() + ":");
Node n3 = n2.getNode("jcr:frozenNode");
for (PropertyIterator pt =
n3.getProperties(); pt.hasNext();) {
Property p = pt.nextProperty();
if (!p.getName().startsWith("jcr:")) {
System.out.println(" " + p.getName() + "="
+ (p.isMultiple() ? p.getValues().toString()
: p.getValue().getString()));
}
}
System.out.println();
}
Version v2 = traverseVersionStorage(n2, level + 1);
v = v == null ? v2 : v;
}
return v;
}
}
- 1. Как восстановить «версированный узел» в репозитории jackrabbit 2.1?
- 2. Каков наилучший способ архивирования документов в репозитории Jackrabbit?
- 3. Невозможно удалить узел в jackrabbit
- 4. посмотреть, существует ли узел в Jackrabbit AbstractWebDavServlet в JackRabbit
- 5. jstree: как восстановить/восстановить узел
- 6. Как восстановить политики acl с помощью importXML в apache jackrabbit?
- 7. Удалить узел JackRabbit 1.4 не через API
- 8. Что такое узел и свойство в репозитории контента?
- 9. Как я могу восстановить репозитории git-daemon
- 10. Как восстановить узел журнала HDFS?
- 11. Jackrabbit AccessControll
- 12. Как восстановить случайно удаленные папки в репозитории SVN
- 13. Узел Восстановить отправить целое число?
- 14. Невозможно олицетворять - Jackrabbit
- 15. Местоположение репозитория Jackrabbit
- 16. JCR (JackRabbit) Инструменты репозитория
- 17. Apache Sling upgrade Jackrabbit
- 18. Как обновить или удалить пользователей в Jackrabbit?
- 19. не в состоянии запустить узел-лавочка восстановить
- 20. Ошибка Symfony 2.1: import @ORM \ Таблица в репозитории
- 21. узел-лавочка восстановить ошибку в nodejs
- 22. Невозможно переместить (переименовать) узел с помощью Jackrabbit и WebDAV
- 23. Обновление Jackrabbit 1.3 до Jackrabbit 2.1.1
- 24. Как правильно добавить доступные версии в jackrabbit
- 25. Именование узлов в репозитории контента
- 26. JCR Jackrabbit Versionising
- 27. Lucene Jackrabbit
- 28. Как сделать резервную копию репозитория Apache Jackrabbit, не закрывая Jackrabbit?
- 29. Шифрование паролей в Jackrabbit
- 30. Handle InvalidItemStateException в jackrabbit