Jackrabbit 2.1 possède des nœuds versionnés. Nous voulons soutenir le "défaire" d'une suppression de l'un de ces nœuds. "Le trouver" semble être la partie délicate.Comment restaurer un "noeud versionné" dans un référentiel jackrabbit 2.1?
Répondre
Je ne sais pas comment parcourir l'arborescence de la version correctement - devrait être possible, je pense, en allant plus /jcr:system/jcr:versionStorage
, voir JCR 1.0 section 8.2.2.1 et JCR 2.0 section 15.10 - mais vous pouvez interroger l'arborescence de version avec une requête comme
SELECT * FROM nt:frozenNode WHERE prop = 'value'
(s'il y a un index de recherche configuré pour l'espace de travail de version dans Jackrabbit, qui devrait être par défaut).
Les noeuds retournés seront les noeuds congelés, obtenir le nœud parent pour récupérer la version:
NodeIterator iter = res.getNodes();
while (iter.hasNext()) {
Node frozenNode = iter.nextNode();
Version v = (Version) frozenNode.getParent();
// ...
}
Il est logique de stocker le chemin (parent) du nœud en tant que propriété chaque fois que vous créez une version en la première place, de sorte que vous pouvez demander pour cela et aussi savoir où le restaurer plus tard (voir ci-dessous).
Vous savez qu'il est supprimé lorsque le jcr:frozenUuid
du frozenNode ne peut être trouvée dans la session:
boolean deleted = false;
try {
session.getNodeByUUID(
frozenNode.getProperty(JcrConstants.JCR_FROZENUUID).getString()
);
} catch (ItemNotFoundException e) {
deleted = true;
} catch (RepositoryException e) {
continue;
}
Pour restaurer, prendre la version et le transmettre au gestionnaire de version, ainsi que la chemin absolu pour la restaurer à (ce qui pourrait provenir de la propriété enregistrée sur le noeud congelé de la version):
VersionManager vMgr = session.getWorkspace().getVersionManager();
vMgr.restore(path, v, true);
Si vous connaissez une certaine façon sans avoir besoin de chercher, vous pouvez également obtenir la version par son UUID:
Version v = (Version) session.getNodeByUUID(versionUUID);
- 1. Comment sauvegarder un référentiel Jackrabbit apache sans fermer Jackrabbit?
- 2. Un référentiel versionné de binaires
- 3. Comment valider un fichier non sous-versionné dans un référentiel?
- 4. Meilleure façon d'importer/d'exporter un référentiel Apache Jackrabbit
- 5. Comment restaurer depuis le référentiel SVN
- 6. copier un fichier versionné dans clearcase
- 7. Type de propriété de noeud JCR (Jackrabbit) personnalisé
- 8. Comment copier un référentiel git dans un nouveau référentiel svn?
- 9. comment restaurer un dossier supprimé localement?
- 10. Comment restaurer un fichier archivé dans Clearcase?
- 11. Comment déterminer un référentiel?
- 12. Lucene Jackrabbit
- 13. Cryptage de mot de passe dans Jackrabbit
- 14. Comment valider un noeud dans JCRRepository
- 15. Comment injecter "history" dans un référentiel subversion?
- 16. Comment supprimer un référentiel local dans git?
- 17. XmlMassUpdate - Comment supprimer un noeud
- 18. Comment créer un référentiel Subversion
- 19. Est-il possible de garder un fichier non versionné dans un dépôt git
- 20. Comment créer un référentiel générique
- 21. Comment tester un développeur struts 2.1.x?
- 22. Comment restaurer un fichier en utilisant C#?
- 23. Supprimer un noeud dans dojo.dnd.source?
- 24. Restaurer un commit git précédent?
- 25. SimpleXML comment préfixer un enfant dans un noeud?
- 26. Comment ajouter un noeud dans un emplacement spécifique?
- 27. Comment restaurer un tableau avec NSCoder
- 28. Comment sauvegarder et restaurer un formulaire?
- 29. Mise à niveau de Jackrabbit 1.3 vers Jackrabbit 2.1.1
- 30. Jackrabbit Observation avec le printemps