2015-03-10 1 views
1

J'ai un vidage XML de vue système à partir d'un référentiel ModeShape (4.1), que j'essaie d'importer dans Jackrabbit (2.8).Comment importer la vue système XML directement sous root dans Jackrabbit?

Le nœud racine de mon XML contient un nœud avec le nom "jcr: root" (mais j'ai commenté les "jcr: uuid" et "jcr: primaryType" ("mode: root") comme Jackrabbit didn ' t semblent aimer ceux-ci).

j'importer le fichier XML en utilisant:

session.importXML("/", stream, ImportUUIDBehavior.IMPORT_UUID_COLLISION_THROW); 

XML ressemble (je l'ai handtyped cela, parce que je suis sur un réseau fermé, donc néglige les espaces de noms, ils sont ok :-):

<?xml version="1.0" encoding="UTF-8" ?> 
<sv:node xmlns:jcr=".../jcr/1.0" xmlns:sv=".../sv/1.0" ... sv:name="jcr:root"> 
    <!-- jcr:uuid and jcr:primaryType properties commented out... --> 
    <sv:node sv:name="Messages"> 
     ... 
    </sv:node> 
</sv:node> 

importation cela en Jackrabbit fonctionne sans erreur, cependant, l'importation crée un nouveau nœud nommé « JCR: root » (contenant « Messages ») sous le véritable référentiel nœud racine, plutôt que de placer les « Messages » nœud directement sous la racine du dépôt node (comme le fait ModeShape).

Ie, je reçois:

/jcr:root/Messages 

plutôt que ce que je pensais:

/Messages 

(j'ai aussi essayé de réglage avec "JCR: UUID" correspondant à celle du dépôt Jackrabbit et IMPORT_UUID_COLLISION_REPLACE_EXISTING, mais a obtenu une exception que le noeud racine n'a pas pu être remplacé). Comment puis-je importer correctement ceci dans Jackrabbit, directement sous le nœud racine?

MISE À JOUR:

Lors de la lecture sur le JCR spec, section 11.9, "Importing jcr:root", il ne semble ni Jackrabbit, ni ne ModeShape la bonne chose. Bien que j'aime un peu le comportement de ModeShape. Jackrabbit semble se comporter comme la spécification dit pour IMPORT_UUID_CREATE_NEW (et ne traite pas spécialement jcr:root). Si j'ajoute la propriété jcr:uuid avec la valeur du nœud racine du référentiel actuel, cela fonctionne comme spécifié. ModeShape ne fait que fusionner la racine, et ne semble pas du tout se soucier de la collision (ce qui est en fait raisonnable, mais pas selon l'un des comportements définis dans la spécification).

... ou je me trompe? :-)

Répondre

1

Une solution évidente que je devrais essayer, est de simplement déplacer le nœud "Messages" à la racine du document XML.

<?xml version="1.0" encoding="UTF-8" ?> 
<sv:node sv:name="Messages" xmlns...> 
    ... 
</sv:node> 

(Malheureusement, j'ai plusieurs noeuds sous la racine, donc je vais besoin de créer plusieurs exports XML. Pas élégant, mais probablement faisable).