java如何获取jcr中的所有现有组?
我想获取CQ5 JCR中所有现有组的列表。我可以使用以下代码获取JCR中所有现有用户的列表
UserManager userManager = jkrSession.getUserManager();
final List<String> users = new ArrayList<String>();
Iterator<Authorizable> iter = userManager.findAuthorizables(
"jcr:primaryType", "rep:User");
while (iter.hasNext()) {
Authorizable auth = iter.next();
if (!auth.isGroup()) {
users.add(auth.getID());
}
}
我还没有找到任何方法来获取所有现有用户的列表。尽管如此,我可以看到父节点/home/users和/home/groups,并且可以迭代子节点来获取用户和组
我正在寻找一个更容易的出路
# 1 楼答案
问题的标题与问题的内容不同步
首先,以下代码实际上是不必要的,因为您正在搜索rep:User,因此迭代器中只有用户可用,因此每次if检查都会失败
因此,while循环可以重写为
其次,如果它是要获取的所有现有组的列表,那么可以使用
这将只返回实例中存在的组
但是,如果您想要获取的用户和组都是,那么您可以试试这个
这将返回实例中存在的所有可授权项。您不必只指定profile/jcr:primaryType和nt:unstructured作为属性和值。如果要列出所有可授权项(在我的例子中,profile/jcr:primaryType首先引起我的注意),可以使用所有可授权项中包含相同值的任何属性的相对路径,否则结果将被过滤到属性值匹配的可授权项
如需进一步参考,请查看docs