Hi Marcel,
here a piece of code that shows more less what I'm trying to do. I have the
NodeState of the verison I want to modify (versionNodeState) and I create
from it the updated version (updatedNodeState), but then I don't understand
how can I use it to update the actual value in the FrozenNode:
public void changeFirstVersionProperty(NodeStore nodeStore, Node
myFolder) throws IOException, InvalidFileStoreVersionException,
RepositoryException {
NodeState versionNodeState = getNodeState(nodeStore, myFolder);
NodeState updatedNodeState =
versionNodeState.builder().setProperty("custom:trashed",
true).getNodeState();
}
private NodeState getNodeState(NodeStore nodeStore, Node node) throws
RepositoryException {
NodeState rootState = nodeStore.getRoot();
NodeState versionStorageState =
rootState.getChildNode(JcrConstants.JCR_SYSTEM).getChildNode(JcrConstants.JCR_VERSIONSTORAGE);
NodeState versionHistoryState =
getVersionHistoryState(versionStorageState, node.getIdentifier());
return
versionHistoryState.getChildNode("1.0").getChildNode(JcrConstants.JCR_FROZENNODE);
}
private NodeState getVersionHistoryState(NodeState nodeState, String
remainingIdentifier) {
String clusterFolderName = remainingIdentifier.substring(0, 2);
NodeState childNode = nodeState.getChildNode(clusterFolderName);
if (childNode.exists()) {
return getVersionHistoryState(childNode,
remainingIdentifier.substring(2));
} else {
String versionHistoryNodeName = getFirstChild(nodeState);
return nodeState.getChildNode(versionHistoryNodeName);
}
}
private String getFirstChild(NodeState nodeState) {
return nodeState.getChildNodeNames().iterator().next();
}
Marco.
On Tue, Jan 9, 2018 at 8:46 AM Marcel Reutegger <[email protected]>
wrote:
> Hi,
>
> can you please provide a link to the upgrade script you have?
>
> Regards
> Marcel
>
> On 08/01/18 18:24, Marco Piovesana wrote:
> > Hi all,
> > I'm trying to modify a frozen node property in a custom upgrade script. I
> > was following this
> > <
> http://oak.markmail.org/message/htxdaeffnr73m3q6?q=frozen+node#query:frozen%20node+page:1+mid:ib57du3viyaz7x4b+state:results
> >
> > post and I tried to use the NodeStore API to do so. I am able to get the
> > NodeState of the required node (from the version storage), create a new
> > node state from its NodeBuilder, but then I don't understand how to
> replace
> > the previous node state with the new one so that the corresponding frozen
> > node will have the updated properties values. Am I doing it wrong? How
> can
> > I use the NodeStore API to modify a frozen node?
> >
> > Marco.
> >
>