ノードのタイプを完全に定義せずに、Jackrabbit で同名の兄弟を制限することは可能ですか? リポジトリに適用して、すべてのノードのタイプとして使用できる単純な CND 定義を探しています (推測します)。
私はここのガイドラインに従おうとしています: ( http://wiki.apache.org/jackrabbit/DavidsModel )、具体的には、 #1 事前に強力なスキーマを作成することを避けていますが、これは #4 と互換性がなく、回避していることがわかりました同姓同名の兄弟。
関連する親ノード (コレクション) をロックし、同じ名前のノードを手動でチェックすることで、同じ名前の兄弟を手動で回避できます。おそらく、アプリケーション レベルのエラー メッセージを表示するためにこれを行うことになりますが、不整合に対する追加の保護層。
また、次のドキュメントを見つけました。
http://www.day.com/specs/jcr/1.0/4.3.2_Support_for_Same_Name_Siblings_is_Optional.html
すべての準拠リポジトリがサポートする必要があるノード タイプの必須セットがありますが、これらの必須ノード タイプのいずれも同名の兄弟を許可しておらず、特定のリポジトリで使用可能なその他のノード タイプは実装固有です。したがって、利用可能なノード タイプのセットを制限することで、リポジトリが同名の兄弟を完全に禁止することができます。
これは、私が観察したことと矛盾しているようです。
final Repository repository = new TransientRepository();
final Session session = repository.login(new SimpleCredentials("username", "password".toCharArray()));
final Node collection = session.getRootNode().addNode("collection", "nt:unstructured");
final Node childA = collection.addNode("child", "nt:unstructured");
final Node childB = collection.addNode("child", "nt:unstructured");
session.save();
System.err.println(collection.getNodes("child").getSize());
//prints 2
これは、JCR のバージョン 2.0 で変更されたものですか? (v1.0仕様であることに気づきました)
原則として JCR は非常に適切だと思いますが、現時点ではドキュメントが不足しているためがっかりしています。そのため、適切な最新情報へのリンクは非常に高く評価されます。