具有自定义属性的Jackrabbit Oak版本控制自定义节点

时间:2019-01-10 11:55:33

标签: jcr jackrabbit

问题与节点版本有关,

步骤1)如果添加了类型为mix:versionable且具有自定义属性的自定义节点作为根节点的子节点。使用   节点node = rootNode.addNode(name,type);   node.addMixin(“ mix:versionable”);   setFolderNodeAttributes(cutomMetadataObj,节点,类型); api。

步骤2),如果第二个版本已创建并保存在同一节点上,但具有不同的属性,例如下面

final VersionManager versionManager=session.getWorkspace().getVersionManager();
        Node node = RootNode.getNode(name);
        versionManager.checkout(node.getPath());
        setCustomNodeAttributes(newMetadataObj, node, type);
        session.save();
        versionManager.checkin(node.getPath());

现在版本历史记录对象给了我两个版本 1)jcr:rootVersion 2)第一个版本命名为1.0

此版本1.0当前已更新了自定义属性,而根版本没有任何自定义属性。 因此,对于第一次提交或在步骤1中创建的节点的版本0,自定义属性会丢失(在DB中存在),但是通过VersionManager API,我无法读取第0个提交属性。

我正在使用以下代码遍历各个版本

 final VersionHistory versionHistory = versionManager.getVersionHistory(node.getPath());  
    final VersionIterator versionItrator = versionHistory.getAllVersions();
    while(versionItrator.hasNext()){
    final Version version = versionItrator.nextVersion();
    final Node idNode = version.getFrozenNode();
if (idNode.hasProperty("<Custom Property>")){  
// For JCR:rootVersion its not present and for version 1.0 it printing latest checkedin property
}
}

预先感谢

0 个答案:

没有答案