Comment puis-je configurer des définitions de noeuds personnalisés dans Apache Jackrabbit?

StackOverflow https://stackoverflow.com/questions/767085

  •  12-09-2019
  •  | 
  •  

Question

Est-il possible que je peux configurer sur mesure types de nœuds pour < a href = "http://jackrabbit.apache.org" rel = "nofollow noreferrer"> Apache Jackrabbit être enregistré quand est instancié un nouveau dépôt?

Je suis ma construction en utilisant l'automatisation Apache Maven et ont des tests unitaires pour exécuter avec noreferrer JUnit et les tests d'intégration pour exécuter avec Jetty et veulent pouvoir facilement mettre en place et démontage d'un référentiel de test.

Était-ce utile?

La solution

Si vous êtes en mesure de passer à la Jackrabbit 2.0.0, nouvellement sorti, vous pouvez créer et enregistrer par programmation NodeTypes. Le crochet principal est la JSR-283 NodeTypeManager qui se double d'une usine pour les nouveaux NodeTypes, et une place pour eux à enregistrer. Il suffit de les inscrire dans la méthode de configuration de vos tests JUnit, et vous devriez être bon d'aller.

Autres conseils

Selon NodeTypeManager , ceci est un exemple de code pour créer un type de noeud:

    import javax.jcr.PropertyType;
    import javax.jcr.Session;
    import javax.jcr.nodetype.NodeType;
    import javax.jcr.nodetype.NodeTypeManager;
    import javax.jcr.nodetype.NodeTypeTemplate;
    import javax.jcr.nodetype.PropertyDefinitionTemplate;

    /**
     *
     * @author Aroniaina
     */
    public class FileType {
        public static void RegisterFileType(Session session) throws Exception {        
            NodeTypeManager nodeTypeManager = session.getWorkspace().getNodeTypeManager();

            NodeTypeTemplate nodeType = nodeTypeManager.createNodeTypeTemplate();
            nodeType.setName("FileType");
            String[] str = {"nt:resource"};        
            nodeType.setDeclaredSuperTypeNames(str);
            nodeType.setMixin(false);
            nodeType.setQueryable(true);


            PropertyDefinitionTemplate path = nodeTypeManager.createPropertyDefinitionTemplate();
            path.setName("jcr:path");
            path.setRequiredType(PropertyType.PATH);
            path.setQueryOrderable(false);
            path.setFullTextSearchable(false);
            nodeType.getPropertyDefinitionTemplates().add(path);

            PropertyDefinitionTemplate nom = nodeTypeManager.createPropertyDefinitionTemplate();
            nom.setName("jcr:nom");
            nom.setRequiredType(PropertyType.STRING);
            nom.setQueryOrderable(true);
            nom.setFullTextSearchable(true);
            nodeType.getPropertyDefinitionTemplates().add(nom);

            PropertyDefinitionTemplate description = nodeTypeManager.createPropertyDefinitionTemplate();
            description.setName("jcr:description");
            description.setRequiredType(PropertyType.STRING);
            description.setQueryOrderable(true);
            description.setFullTextSearchable(true);
            nodeType.getPropertyDefinitionTemplates().add(description);

            PropertyDefinitionTemplate motsCles = nodeTypeManager.createPropertyDefinitionTemplate();
            motsCles.setName("jcr:motsCles");
            motsCles.setRequiredType(PropertyType.STRING);
            motsCles.setQueryOrderable(true);
            motsCles.setFullTextSearchable(true);
            nodeType.getPropertyDefinitionTemplates().add(motsCles);

            PropertyDefinitionTemplate size = nodeTypeManager.createPropertyDefinitionTemplate();
            size.setName("jcr:size");
            size.setRequiredType(PropertyType.STRING);
            size.setQueryOrderable(true);
            size.setFullTextSearchable(false);
            nodeType.getPropertyDefinitionTemplates().add(size);

            PropertyDefinitionTemplate users = nodeTypeManager.createPropertyDefinitionTemplate();
            users.setName("jcr:users");
            users.setRequiredType(PropertyType.STRING);
            users.setQueryOrderable(true);
            users.setFullTextSearchable(false);
            nodeType.getPropertyDefinitionTemplates().add(users);

            PropertyDefinitionTemplate groupe = nodeTypeManager.createPropertyDefinitionTemplate();
            groupe.setName("jcr:groupe");
            groupe.setRequiredType(PropertyType.STRING);
            groupe.setQueryOrderable(true);
            groupe.setFullTextSearchable(false);
            nodeType.getPropertyDefinitionTemplates().add(groupe);

            NodeType newnodetype = nodeTypeManager.registerNodeType(nodeType, true);             
            session.save();        
        }

    }

Vous pouvez jeter un oeil à notre code Silverpeas . Nous utilisons Apache Jackrabbit avec des tests unitaires. À l'heure actuelle c'est un travail en cours sur ma branche dev: https://github.com/ehsavoie / Silverpeas-Core / arbre / feature_82 utilisant dans le dépôt de mémoire, le chargement des fichiers et des tests avec identification de l'appelant au printemps. Regardez par exemple DocumentRepositoryTest

Je ne suis pas sûr de NodeTypes, mais je l'ai lu que fronde apache a une façon de spécifier le contenu initial lorsqu'un package (paquet OSGi) est installé. Cela semble au moins semblable à ce que vous avez à l'esprit.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top