From 9b4f773498873b0eecd16fe664bdf7a574bbed99 Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Tue, 17 Jan 2017 14:13:38 +0000 Subject: [PATCH] Merged mward/5.2.n-repo-1583-groupmem (5.2.1) to 5.2.N (5.2.1) 134078 mward: REPO-1583: sketching out some basic code/infrastructure. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@134398 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/public-rest-context.xml | 4 ++ .../alfresco/rest/api/impl/GroupsImpl.java | 2 + .../rest/api/people/PersonGroupsRelation.java | 69 +++++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 source/java/org/alfresco/rest/api/people/PersonGroupsRelation.java diff --git a/config/alfresco/public-rest-context.xml b/config/alfresco/public-rest-context.xml index 6b9b96a46b..04f8b9516d 100644 --- a/config/alfresco/public-rest-context.xml +++ b/config/alfresco/public-rest-context.xml @@ -791,6 +791,10 @@ + + + + diff --git a/source/java/org/alfresco/rest/api/impl/GroupsImpl.java b/source/java/org/alfresco/rest/api/impl/GroupsImpl.java index 4a682ba7c4..e24d6803c2 100644 --- a/source/java/org/alfresco/rest/api/impl/GroupsImpl.java +++ b/source/java/org/alfresco/rest/api/impl/GroupsImpl.java @@ -165,6 +165,8 @@ public class GroupsImpl implements Groups } final AuthorityType authorityType = AuthorityType.GROUP; + // TODO: I think this is where we need to do this slightly differently, i.e. + // getAllRootAuthoritiesByUserId(). What about root authorities? Are all group authorities root? final Set rootAuthorities = getAllRootAuthorities(authorityType); PagingResults pagingResult = getAuthoritiesInfo(authorityType, isRootParam, rootAuthorities, sortProp, paging); diff --git a/source/java/org/alfresco/rest/api/people/PersonGroupsRelation.java b/source/java/org/alfresco/rest/api/people/PersonGroupsRelation.java new file mode 100644 index 0000000000..9abbcee535 --- /dev/null +++ b/source/java/org/alfresco/rest/api/people/PersonGroupsRelation.java @@ -0,0 +1,69 @@ +/* + * #%L + * Alfresco Remote API + * %% + * Copyright (C) 2005 - 2016 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + * #L% + */ +package org.alfresco.rest.api.people; + +import org.alfresco.rest.api.Groups; +import org.alfresco.rest.api.model.Group; +import org.alfresco.rest.framework.resource.RelationshipResource; +import org.alfresco.rest.framework.resource.actions.interfaces.RelationshipResourceAction; +import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo; +import org.alfresco.rest.framework.resource.parameters.Parameters; +import org.alfresco.util.ParameterCheck; +import org.springframework.beans.factory.InitializingBean; + +/** + * Provide access to the groups of which a person is a member. + *

+ * For example, list groups for person jbloggs. + * + * @author Matt Ward + */ +@RelationshipResource( + name = "groups", + entityResource = PeopleEntityResource.class, + title = "Person Groups") +public class PersonGroupsRelation implements RelationshipResourceAction.Read, InitializingBean +{ + private Groups groups; + + public void setGroups(Groups groups) + { + this.groups = groups; + } + + @Override + public void afterPropertiesSet() + { + ParameterCheck.mandatory("groups", groups); + } + + @Override + public CollectionWithPagingInfo readAll(String personId, Parameters params) + { + // TODO: temp, this just gets all the groups, not by person ID... + return groups.getGroups(params); + } +}