2014-02-12 2 views
0

Я хочу получить список всех существующих групп в CQ5 JCR. Я могу принести список всех существующих пользователей в 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: Пользователь, и, следовательно, только пользователи будут доступны в итераторе, тем самым каждый раз, если проверка будет проверена.

Authorizable auth = iter.next(); 
    if (!auth.isGroup()) { 
     users.add(auth.getID()); 
    } 

Поэтому цикл в то время как можно было бы переписать в виде

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

Это вернет все авторские права, которые присутствуют в экземпляре. Не обязательно указывать только профиль /jcr: primaryType и nt: неструктурированный как собственность и стоимость. Вы можете использовать относительный путь к любому свойству, которое будет присутствовать во всех авторских правах, содержащее одно и то же значение, если вы хотите перечислить все авторские права (в моем случае profile/jcr: primaryType поймал мой взгляд первым), иначе результаты будет фильтроваться для тех авторизованных пользователей, для которых значение свойства соответствует.

Для получения дополнительной информации вы можете проверить docs.

Смежные вопросы