mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
Merged 5.2.N (5.2.2) to HEAD (5.2)
133709 cturlica: REPO-1301: Retrieve a group - first commit git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@137320 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -27,6 +27,7 @@ package org.alfresco.rest.api;
|
|||||||
|
|
||||||
import org.alfresco.rest.api.model.Group;
|
import org.alfresco.rest.api.model.Group;
|
||||||
import org.alfresco.rest.api.model.GroupMember;
|
import org.alfresco.rest.api.model.GroupMember;
|
||||||
|
import org.alfresco.rest.framework.core.exceptions.EntityNotFoundException;
|
||||||
import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo;
|
import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo;
|
||||||
import org.alfresco.rest.framework.resource.parameters.Parameters;
|
import org.alfresco.rest.framework.resource.parameters.Parameters;
|
||||||
|
|
||||||
@@ -46,13 +47,25 @@ public interface Groups
|
|||||||
String PARAM_MEMBER_TYPE_GROUP = "GROUP";
|
String PARAM_MEMBER_TYPE_GROUP = "GROUP";
|
||||||
String PARAM_MEMBER_TYPE_PERSON = "PERSON";
|
String PARAM_MEMBER_TYPE_PERSON = "PERSON";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a group by it's id.
|
||||||
|
*
|
||||||
|
* @param groupId the identifier of a group.
|
||||||
|
* @param parameters the {@link Parameters} object to get the parameters passed into the request
|
||||||
|
* including:
|
||||||
|
* - include param (parentIds, zones)
|
||||||
|
* @return a {@code org.alfresco.rest.api.model.Group} object
|
||||||
|
* @throws EntityNotFoundException
|
||||||
|
*/
|
||||||
|
Group getGroup(String groupId, Parameters parameters) throws EntityNotFoundException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets a list of groups.
|
* Gets a list of groups.
|
||||||
*
|
*
|
||||||
* @param parameters the {@link Parameters} object to get the parameters passed into the request
|
* @param parameters the {@link Parameters} object to get the parameters passed into the request
|
||||||
* including:
|
* including:
|
||||||
* - filter, sort & paging params (where, orderBy, skipCount, maxItems)
|
* - filter, sort & paging params (where, orderBy, skipCount, maxItems)
|
||||||
* - incFiles, incFolders (both true by default)
|
* - include param (parentIds, zones)
|
||||||
* @return a paged list of {@code org.alfresco.rest.api.model.Group} objects
|
* @return a paged list of {@code org.alfresco.rest.api.model.Group} objects
|
||||||
*/
|
*/
|
||||||
CollectionWithPagingInfo<Group> getGroups(Parameters parameters);
|
CollectionWithPagingInfo<Group> getGroups(Parameters parameters);
|
||||||
@@ -64,7 +77,7 @@ public interface Groups
|
|||||||
* @param parameters the {@link Parameters} object to get the parameters passed into the request
|
* @param parameters the {@link Parameters} object to get the parameters passed into the request
|
||||||
* including:
|
* including:
|
||||||
* - filter, sort & paging params (where, orderBy, skipCount, maxItems)
|
* - filter, sort & paging params (where, orderBy, skipCount, maxItems)
|
||||||
* - incFiles, incFolders (both true by default)
|
* - include param (parentIds, zones)
|
||||||
* @return a paged list of {@code org.alfresco.rest.api.model.GroupMember} objects
|
* @return a paged list of {@code org.alfresco.rest.api.model.GroupMember} objects
|
||||||
*/
|
*/
|
||||||
CollectionWithPagingInfo<GroupMember> getGroupMembers(String groupId, Parameters parameters);
|
CollectionWithPagingInfo<GroupMember> getGroupMembers(String groupId, Parameters parameters);
|
||||||
|
@@ -28,6 +28,7 @@ package org.alfresco.rest.api.groups;
|
|||||||
import org.alfresco.rest.api.Groups;
|
import org.alfresco.rest.api.Groups;
|
||||||
import org.alfresco.rest.api.model.Group;
|
import org.alfresco.rest.api.model.Group;
|
||||||
import org.alfresco.rest.framework.WebApiDescription;
|
import org.alfresco.rest.framework.WebApiDescription;
|
||||||
|
import org.alfresco.rest.framework.core.exceptions.EntityNotFoundException;
|
||||||
import org.alfresco.rest.framework.resource.EntityResource;
|
import org.alfresco.rest.framework.resource.EntityResource;
|
||||||
import org.alfresco.rest.framework.resource.actions.interfaces.EntityResourceAction;
|
import org.alfresco.rest.framework.resource.actions.interfaces.EntityResourceAction;
|
||||||
import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo;
|
import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo;
|
||||||
@@ -41,7 +42,7 @@ import org.springframework.beans.factory.InitializingBean;
|
|||||||
* @author cturlica
|
* @author cturlica
|
||||||
*/
|
*/
|
||||||
@EntityResource(name = "groups", title = "Groups")
|
@EntityResource(name = "groups", title = "Groups")
|
||||||
public class GroupsEntityResource implements EntityResourceAction.Read<Group>, InitializingBean
|
public class GroupsEntityResource implements EntityResourceAction.Read<Group>, EntityResourceAction.ReadById<Group>, InitializingBean
|
||||||
{
|
{
|
||||||
private Groups groups;
|
private Groups groups;
|
||||||
|
|
||||||
@@ -62,4 +63,11 @@ public class GroupsEntityResource implements EntityResourceAction.Read<Group>, I
|
|||||||
{
|
{
|
||||||
return groups.getGroups(params);
|
return groups.getGroups(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@WebApiDescription(title="Returns group information for group id")
|
||||||
|
public Group readById(String groupId, Parameters parameters) throws EntityNotFoundException
|
||||||
|
{
|
||||||
|
return groups.getGroup(groupId, parameters);
|
||||||
|
}
|
||||||
}
|
}
|
@@ -100,6 +100,16 @@ public class GroupsImpl implements Groups
|
|||||||
this.authorityService = authorityService;
|
this.authorityService = authorityService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Group getGroup(String groupId, Parameters parameters) throws EntityNotFoundException
|
||||||
|
{
|
||||||
|
AuthorityInfo authorityInfo = getAuthorityInfo(groupId);
|
||||||
|
|
||||||
|
final Set<String> rootAuthorities = getAllRootAuthorities(AuthorityType.GROUP);
|
||||||
|
final List<String> includeParam = parameters.getInclude();
|
||||||
|
|
||||||
|
return getGroup(authorityInfo, includeParam, rootAuthorities);
|
||||||
|
}
|
||||||
|
|
||||||
public CollectionWithPagingInfo<Group> getGroups(final Parameters parameters)
|
public CollectionWithPagingInfo<Group> getGroups(final Parameters parameters)
|
||||||
{
|
{
|
||||||
final List<String> includeParam = parameters.getInclude();
|
final List<String> includeParam = parameters.getInclude();
|
||||||
|
@@ -373,17 +373,25 @@ public class GroupsTest extends AbstractSingleNetworkSiteTest
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void validateGroupDefaultFields(Group group)
|
private void validateGroupDefaultFields(Group group, boolean ignoreOptionallyIncluded)
|
||||||
{
|
{
|
||||||
assertNotNull(group);
|
assertNotNull(group);
|
||||||
assertNotNull(group.getId());
|
assertNotNull(group.getId());
|
||||||
assertNotNull(group.getDisplayName());
|
assertNotNull(group.getDisplayName());
|
||||||
assertNotNull(group.getIsRoot());
|
assertNotNull(group.getIsRoot());
|
||||||
|
|
||||||
|
if (!ignoreOptionallyIncluded)
|
||||||
|
{
|
||||||
// Optionally included.
|
// Optionally included.
|
||||||
assertNull(group.getParentIds());
|
assertNull(group.getParentIds());
|
||||||
assertNull(group.getZones());
|
assertNull(group.getZones());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void validateGroupDefaultFields(Group group)
|
||||||
|
{
|
||||||
|
validateGroupDefaultFields(group, false);
|
||||||
|
}
|
||||||
|
|
||||||
private ListResponse<GroupMember> getGroupMembers(String groupId, final PublicApiClient.Paging paging, Map<String, String> otherParams, String errorMessage, int expectedStatus) throws Exception
|
private ListResponse<GroupMember> getGroupMembers(String groupId, final PublicApiClient.Paging paging, Map<String, String> otherParams, String errorMessage, int expectedStatus) throws Exception
|
||||||
{
|
{
|
||||||
@@ -561,4 +569,49 @@ public class GroupsTest extends AbstractSingleNetworkSiteTest
|
|||||||
assertNotNull(groupMember.getMemberType());
|
assertNotNull(groupMember.getMemberType());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetGroup() throws Exception
|
||||||
|
{
|
||||||
|
final Groups groupsProxy = publicApiClient.groups();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
createAuthorityContext(user1);
|
||||||
|
|
||||||
|
setRequestContext(user1);
|
||||||
|
|
||||||
|
// Check invalid group id.
|
||||||
|
{
|
||||||
|
groupsProxy.getGroup("invalidGroupId", HttpServletResponse.SC_NOT_FOUND);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
Group group = groupsProxy.getGroup(groupA.getId());
|
||||||
|
validateGroupDefaultFields(group);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
Map<String, String> otherParams = new HashMap<>();
|
||||||
|
otherParams.put("include", org.alfresco.rest.api.Groups.PARAM_INCLUDE_PARENT_IDS);
|
||||||
|
|
||||||
|
Group group = groupsProxy.getGroup(groupA.getId(), otherParams, HttpServletResponse.SC_OK);
|
||||||
|
validateGroupDefaultFields(group, true);
|
||||||
|
assertNotNull(group.getParentIds());
|
||||||
|
assertNull(group.getZones());
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
Map<String, String> otherParams = new HashMap<>();
|
||||||
|
otherParams.put("include", org.alfresco.rest.api.Groups.PARAM_INCLUDE_ZONES);
|
||||||
|
|
||||||
|
Group group = groupsProxy.getGroup(groupA.getId(), otherParams, HttpServletResponse.SC_OK);
|
||||||
|
validateGroupDefaultFields(group, true);
|
||||||
|
assertNull(group.getParentIds());
|
||||||
|
assertNotNull(group.getZones());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
clearAuthorityContext();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -70,6 +70,8 @@ import org.alfresco.rest.api.tests.client.data.SiteImpl;
|
|||||||
import org.alfresco.rest.api.tests.client.data.SiteMember;
|
import org.alfresco.rest.api.tests.client.data.SiteMember;
|
||||||
import org.alfresco.rest.api.tests.client.data.SiteMembershipRequest;
|
import org.alfresco.rest.api.tests.client.data.SiteMembershipRequest;
|
||||||
import org.alfresco.rest.api.tests.client.data.Tag;
|
import org.alfresco.rest.api.tests.client.data.Tag;
|
||||||
|
import org.alfresco.rest.framework.core.exceptions.EntityNotFoundException;
|
||||||
|
import org.alfresco.rest.framework.resource.parameters.Parameters;
|
||||||
import org.apache.chemistry.opencmis.client.api.CmisObject;
|
import org.apache.chemistry.opencmis.client.api.CmisObject;
|
||||||
import org.apache.chemistry.opencmis.client.api.Document;
|
import org.apache.chemistry.opencmis.client.api.Document;
|
||||||
import org.apache.chemistry.opencmis.client.api.FileableCmisObject;
|
import org.apache.chemistry.opencmis.client.api.FileableCmisObject;
|
||||||
@@ -707,6 +709,21 @@ public class PublicApiClient
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public HttpResponse getSingle(String entityCollectionName, String entityId, String relationCollectionName, String relationId, Map<String, String> params,
|
||||||
|
String errorMessage, int expectedStatus) throws PublicApiException
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
HttpResponse response = get("public", entityCollectionName, entityId, relationCollectionName, relationId, params);
|
||||||
|
checkStatus(errorMessage, expectedStatus, response);
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
catch (IOException e)
|
||||||
|
{
|
||||||
|
throw new PublicApiException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public HttpResponse update(String entityCollectionName, String entityId, String relationCollectionName, String relationId, String body, String errorMessage) throws PublicApiException
|
public HttpResponse update(String entityCollectionName, String entityId, String relationCollectionName, String relationId, String body, String errorMessage) throws PublicApiException
|
||||||
{
|
{
|
||||||
return update(entityCollectionName, entityId, relationCollectionName, relationId, body, null, errorMessage, 200);
|
return update(entityCollectionName, entityId, relationCollectionName, relationId, body, null, errorMessage, 200);
|
||||||
@@ -2248,6 +2265,31 @@ public class PublicApiClient
|
|||||||
public class Groups extends AbstractProxy
|
public class Groups extends AbstractProxy
|
||||||
{
|
{
|
||||||
|
|
||||||
|
public Group getGroup(String groupId) throws PublicApiException
|
||||||
|
{
|
||||||
|
return getGroup(groupId, HttpServletResponse.SC_OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Group getGroup(String groupId, int expectedStatus) throws PublicApiException
|
||||||
|
{
|
||||||
|
return getGroup(groupId, null, expectedStatus);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Group getGroup(String groupId, Map<String, String> params, int expectedStatus) throws PublicApiException
|
||||||
|
{
|
||||||
|
HttpResponse response = getSingle("groups", groupId, null, null, params, "Failed to get group " + groupId, expectedStatus);
|
||||||
|
if ((response != null) && (response.getJsonResponse() != null))
|
||||||
|
{
|
||||||
|
JSONObject jsonEntity = (JSONObject) response.getJsonResponse().get("entry");
|
||||||
|
if (jsonEntity != null)
|
||||||
|
{
|
||||||
|
return Group.parseGroup(jsonEntity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public ListResponse<Group> getGroups(Map<String, String> params, String errorMessage, int expectedStatus) throws PublicApiException, ParseException
|
public ListResponse<Group> getGroups(Map<String, String> params, String errorMessage, int expectedStatus) throws PublicApiException, ParseException
|
||||||
{
|
{
|
||||||
HttpResponse response = getAll("groups", null, null, null, params, errorMessage, expectedStatus);
|
HttpResponse response = getAll("groups", null, null, null, params, errorMessage, expectedStatus);
|
||||||
|
Reference in New Issue
Block a user