前段时间我得到了这个工作,但没有时间发布解决方案。
基于此页面的示例:How to write a simple custom partition for apache ds。
我能够建立初始分区。然而,这对我的情况没有用。如果 ApacheDS 有更好的文档就好了。
所以对于过滤,我从 Apache Developers List 收到一封电子邮件,基本上解释说根本没有类可以帮助你,你必须自己做(如果我错了,请纠正我,因为我有兴趣改进我的代码很快)。
例如,您获得了过滤器 (objectClass=person),那么您应该执行以下操作:
if(ctx.getFilter().toString().contains("objectClass=person")) {
//Somehow return entries that only correspond to persons on the data base (were you store your directory entries).
}
实际上,请注意上面的代码示例不起作用,因为 ApacheDS 将属性名称转换为它们对应的 OID。因此,我们将得到 2.5.6 而不是“objectClass”,它是“objectClass”属性的 OID。
现在关于搜索范围,来自 JPBlanc 的答案已经说了很多,所以我不会重复他所说的话。在您的自定义分区上,您需要编写代码来以不同的方式处理树案例。
例如:
switch (ctx.getScope()) {
case OBJECT:
//Find a particular entry on your entry database.
case ONELEVEL:
//Find all entries that match directly below a given entry.
case SUBTREE:
//Find all entries that match recursively below a given entry.
问候。