4

新しいリポジトリがインスタンス化されたときに、Apache Jackrabbit のカスタム ノード タイプが登録されるように構成する方法はありますか?

Apache Mavenを使用してビルドを自動化しており、JUnitで実行する単体テストとJettyで実行する統合テストがあり、テスト リポジトリを簡単にセットアップおよび破棄できるようにしたいと考えています。

4

5 に答える 5

7

新しくリリースされた Jackrabbit 2.0.0 にアップグレードできる場合は、プログラムでノードタイプを作成して登録できます。主なフックは JSR-283 NodeTypeManagerで、新しい NodeType のファクトリとしても機能し、それらを登録する場所としても機能します。それらを JUnit テストの setup メソッドに登録するだけで、準備完了です。

于 2010-02-12T01:34:16.973 に答える
5

この例のように、 CND ファイルを使用してノードタイプを定義し、JUnit テスト ケースを構成してそれらを登録することをお勧めします。そのための最も適切な方法は、この構成を実行する抽象的なテスト ケースを定義することです。

また、ノード タイプは、リポジトリ全体ではなく、ワークスペースに関連付けられていることに注意してください。

于 2009-07-31T08:56:07.593 に答える
2

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();        
        }

    }
于 2015-11-04T14:58:03.247 に答える
0

Silverpeasのコードをご覧ください。いくつかの単体テストで Apache Jackrabbit を使用しています。現在、これは私の開発ブランチで進行中の作業です: https://github.com/ehsavoie/Silverpeas-Core/tree/feature_82メモリ内リポジトリを使用し、CND ファイルをロードし、Spring でテストしています。たとえば、DocumentRepositoryTestを見てください。

于 2012-12-04T07:57:03.740 に答える
-1

ノードタイプについてはよくわかりませんが、Apache sling には、パッケージ (osgi バンドル) のインストール時に初期コンテンツを指定する方法があることを読みました。少なくともあなたが考えているものと似ているように聞こえます。

于 2009-05-28T04:58:41.013 に答える