Java 如何获取jcr中的所有现有组?

Java 如何获取jcr中的所有现有组?,java,adobe,aem,jcr,Java,Adobe,Aem,Jcr,我想获取CQ5 JCR中所有现有组的列表。我能够使用以下代码获取JCR中所有现有用户的列表 UserManager userManager = jkrSession.getUserManager(); final List<String> users = new ArrayList<String>(); Iterator<Authorizable> iter = userManager.findAuthoriza

我想获取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());
                }
        }
UserManager UserManager=jkrSession.getUserManager();
最终列表用户=新的ArrayList();
迭代器iter=userManager.findAuthorizables(
“jcr:primaryType”、“rep:User”);
while(iter.hasNext()){
可授权的auth=iter.next();
如果(!auth.isGroup()){
add(auth.getID());
}
}
我还没有找到任何方法来获取所有现有用户的列表。尽管如此,我可以看到父节点/home/users和/home/groups,并且可以迭代子节点以获取用户和组


我正在寻找一种更简单的方法。

您的问题标题与问题内容不同步

首先,以下代码实际上是不必要的,因为您正在搜索rep:User,因此迭代器中只有用户可用,因此每次if检查都会失败

    Authorizable auth = iter.next();
    if (!auth.isGroup()) {
        users.add(auth.getID());
    }
因此,while循环可以重写为

    users.add(iter.next().getID());
第二,如果要获取的是所有现有组的列表,那么可以使用

    Iterator<Authorizable> iter = userManager.findAuthorizables(
          "jcr:primaryType", "rep:Group");
迭代器

    Iterator<Authorizable> iter = userManager.findAuthorizables(
          "profile/jcr:primaryType", "nt:unstructured", UserManager.SEARCH_TYPE_AUTHORIZABLE);