J'essaie de supprimer un nœud que j'ai enregistré en utilisant jackrabbit mais je reçois cette erreur.Impossible de supprimer un nœud dans jackrabbit
Failed to delete file
! javax.jcr.nodetype.ConstraintViolationException: Unable to perform operation. Node is protected.
Voici le code que j'ai utilisé pour enregistrer:
session = repository.login(new SimpleCredentials("admin", "admin".toCharArray()));
Node parent = (Node) itemAtPath(parentPath, session);
Node newNode = parent.addNode(nodeName);
newNode.addMixin("mix:versionable");
session.save(); // Create Root Node
VersionableChanges changes = new VersionableChanges(newNode.getSession());
changes.checkout(newNode);
Binary binary = session.getValueFactory().createBinary(in);
newNode.setProperty(PROPERTY_DATA, binary);
newNode.setProperty(PROPERTY_NAME, fileName + System.currentTimeMillis());
newNode.setProperty(PROPERTY_CREATEDBY, createdBy);
newNode.setProperty(PROPERTY_CREATEDDATE, createdDate);
newNode.setProperty(PROPERTY_COMMENT, comment);
Value value = session.getValueFactory().createValue(binary);
changes.checkin();
session.save();
Voici le code que je utilise pour le supprimer:
session = repository.login(new SimpleCredentials("admin", "admin".toCharArray()));
Version fileVersion = null;
Node fileNode = null;
if (version != null && !version.isEmpty()) {
fileVersion = session.getWorkspace().getVersionManager().getVersionHistory(path).getVersion(version);
} else {
fileVersion = session.getWorkspace().getVersionManager().getBaseVersion(path);
}
fileNode = fileVersion.getFrozenNode();
fileNode.remove();
//need to save session to persist the remove operation
session.save();
Comment puis-je surmonter cette erreur?
Le code est en train de supprimer la version complète. Le noeud version, le noeud gelé et quoi d'autre fait partie de la version. Je pensais que c'était ce que tu essayais de faire. –
J'ai essayé 'history.removeVersion (fileVersion.getName());' mais maintenant j'obtiens cette erreur 'Impossible de supprimer le fichier ! javax.jcr.ReferentialIntegrityException: Impossible de supprimer la version. Au moins une fois référencé. » – amitection
Ok. Je suppose que c'est parce que la version que vous essayez de supprimer est la version actuelle. Vous devrez peut-être supprimer le nœud d'origine lui-même avant de pouvoir supprimer le nœud de version joint. –