Как получить групповой узел в веб-скрипте Alfresco 3.1 на базе Java
Вопрос
С помощью Javascript Webscript я могу получить групповой узел со следующим кодом:
var group = People.getGroup(groupname);
Каким был бы поддерживаемый Java эквивалент этого кода?
Пока я могу получить только набор всех имен групп, но я хотел бы иметь возможность выполнить итерацию по набору и получить фактический узел группы.
//Gets all groups, but only as a set of groupnames
Set<String> groups = new HashSet<String>();
groups.addAll(authorityService.getAllAuthorities(AuthorityType.GROUP));
for (String groupname : groups) {
//jscript equivalent - var group = People.getGroup(groupname);
}
Решение
Вы можете использовать org.alfresco.repo.security.authority.AuthorityDAO
getAuthorityNodeRefOrNull
метод получения узла группы по имени.
К сожалению, AuthorityDAO не предоставляет метода для получения всего узла группы, но если вы посмотрите на код его реализации org.alfresco.repo.security.authority.AuthorityDAOImpl вы сможете легко скопировать код, который это делает, он не очень сложный.
Другие советы
Скоро появится новый метод AuthorityService, который предоставит вам noderef для данной группы:
/**
* Gets the authority node for the specified name
*
* @param name The authority name
*
* @return the reference to the authority node
*/
public NodeRef getAuthorityNodeRef(String name);
Однако этого нет в выпущенной версии Alfresco, так что пока вам нужно вызвать getAuthorityNodeRefOrNull из AuthorityDAO, как предложил Хьюго.