Need help with resourceResolver.commit()
Hi All
I need help with resourceResolver.commit(). When I do that I get org.apache.sling.api.resource.PersistenceException: Unable to commit changes to session.
This is the code that is generating the PersistanceException:
logger.info("\n EventZZZ component path: {}", component);
resourceResolverService.withServiceUserResourceResolver(ServiceUser.CONTENT_READER, resourceResolver -> {
Resource resource = resourceResolver.getResource(component);
resetCampaign(resource);
try {
if (resourceResolver.hasChanges()) {
resourceResolver.commit();
}
} catch (PersistenceException e) {
logger.error(String.valueOf(e));
}
});
The resourceResolver.hasChanges() is true and I am expecting resourceResolver.commit() would persist the node change in repo.
private void resetCampaign(Resource res) {
Node node = res.adaptTo(Node.class);
try {
if (node.hasProperty("campaign")) {
node.setProperty("campaign", StringUtils.EMPTY);
logger.info("\n Removed property CAMPAIGN");
}
if (node.hasProperty("campaignTargetGroup")) {
node.setProperty("campaignTargetGroup", StringUtils.EMPTY);
logger.info("\n Removed property campaignTargetGroup");
}
if (node.hasProperty("campaignTopic")) {
node.setProperty("campaignTopic", StringUtils.EMPTY);
logger.info("\n Removed property campaignTopic");
}
node.setProperty("eventHandlerTask", "By "+ res.getResourceResolver().getUserID());
} catch (RepositoryException e) {
logger.error(String.valueOf(e));
}
}
I followed all several Q/A like this one and this one.
Can you please point me what is wrong with this approach?