代码之家  ›  专栏  ›  技术社区  ›  Brian Matthews

如何在ApacheJackrabbit中配置自定义节点定义?

  •  4
  • Brian Matthews  · 技术社区  · 17 年前

    有没有一种方法可以配置自定义 node types 对于 Apache Jackrabbit 要在实例化新存储库时注册吗?

    我正在使用自动生成 Apache Maven 并运行一些单元测试 JUnit 和运行的集成测试 Jetty 并希望能够轻松地设置和拆卸测试存储库。

    5 回复  |  直到 10 年前
        1
  •  7
  •   acfoltzer    16 年前

    如果您能够升级到新发布的jackrabbit 2.0.0,则可以通过编程方式创建和注册nodetypes。主钩是JSR-283 NodeTypeManager 它可以作为新节点类型的工厂,以及注册它们的位置。只需将它们注册到JUnit测试的设置方法中,就可以了。

        2
  •  5
  •   Douglas    17 年前

    我建议您使用 CND file 并配置JUnit测试用例为您注册它们,如下所示 example . 我想说,最合适的方法是定义一个执行这个配置的抽象测试用例。

    还请注意,节点类型与工作区相关联,而不是与整个存储库相关联。

        3
  •  2
  •   Aroniaina    10 年前

    根据 NodeTypeManager ,这是创建节点类型的代码示例:

        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();        
            }
    
        }
    
        4
  •  0
  •   ehsavoie    13 年前

    您可以查看中的代码 Silverpeas . 我们正在使用ApacheJackrabbit进行一些单元测试。 目前,这是我的开发人员分支上正在进行的工作: https://github.com/ehsavoie/Silverpeas-Core/tree/feature_82 使用内存存储库,加载CND文件并使用Spring进行测试。 例如: DocumentRepositoryTest

        5
  •  -1
  •   James Stansell    17 年前

    我不确定nodetypes,但我已经了解到ApacheSling在安装包(osgi bundle)时可以指定初始内容。听起来至少和你的想法相似。