Как я могу получить доступ к версии JCR удаленного узла? - PullRequest
0 голосов
/ 23 апреля 2019

Я хотел бы получить доступ к javax.jcr.version.VersionHistory узла, который был удален, чтобы прочитать метаданные и изменить метки, или, возможно, восстановить их. Как я могу это сделать? JCR VersionManager предоставляет методы getBaseVersion(java.lang.String absPath) и getVersionHistory(java.lang.String absPath), которые выдают PathNotFoundException, когда узел в absPath был удален, хотя данные все еще находятся в / jcr: system / jcr: versionStorage.

Я использую jackrabbit-oak 1.6.1, на случай, если это уместно. Большое спасибо!

Ответы [ 2 ]

1 голос
/ 01 мая 2019

После удаления версионного узла данные ревизий все еще находятся в /jcr:system/jcr:versionStorage, если у вас достаточно информации об узле, вы можете искать его версии, nt:frozenNode узлов -

--jcr sql2
SELECT * FROM [nt:frozenNode] as n WHERE ISDESCENDANTNODE ([/jcr:system/jcr:versionStorage]) and n.[jcr:title] LIKE "name%"

версия узла может быть приведена к javax.jcr.version.Version;

Version version = (Version) frozenNode.getParent();

и восстановлена ​​с использованием VersionManager.restore() -

VersionManager versionManager = session.getWorkspace().getVersionManager();
versionManager.restore(path, version, true);
0 голосов
/ 23 апреля 2019

AFAIU, если контролируемый версией узел удален, доступ к его истории версий на основе исходного пути больше невозможен.

Это означает, что вам придется отслеживать эту информацию до того, какузел удален.

...