JCR Jackrabbit Версионирование - PullRequest
2 голосов
/ 30 марта 2012

Привет, я пытаюсь восстановить версию узла.Но что-то идет не так:

    Session session = repository.login(new SimpleCredentials("test1", "".toCharArray()));

    Workspace ws = session.getWorkspace();

    Node parentNode = session.getRootNode();

    //Create a first version
    Node n = parentNode.addNode("childNode", "nt:unstructured");
    n.addMixin("mix:versionable");
    n.setProperty("anyProperty", "Blah");
    session.save();
    Version firstVersion = ws.getVersionManager().checkin("/childNode");

    // add new version
    ws.getVersionManager().checkout("/childNode");
    n.setProperty("anyProperty", "Blah2");
    session.save();
    ws.getVersionManager().checkin("/childNode");


    // restoring old version
    ws.getVersionManager().restore("/childNode", firstVersion, true);

После этого я получаю

javax.jcr.version.VersionException: VersionManager.restore(String, Version, boolean) not allowed on existing nodes; use VersionManager.restore(Version, boolean) instead: /childNode

1 Ответ

2 голосов
/ 31 марта 2012

Проблема в вызове метода восстановления. Если вы посмотрите на документы API, вы увидите, что путь (первый аргумент) не должен указывать на существующий узел. Если это произойдет, вы получите это исключение. Попробуйте использовать / childNode2, и он должен восстановить его в этом месте.

Из того, как это выглядит:

ws.getVersionManager().restore(firstVersion, true);

должно работать и восстановить предыдущую версию в текущем месте.

...