Do not fail on adding a user to a group that is already a member
Trying to add a user to a group that is already a member of the group currently fails with 'Not Found'. If multiple users are added in bulk, the users which are already a member of the group are ignored. Do the same on adding a single user to a group. If the user is already a member of the group do nothing, but also do not fail. Change-Id: I644af9876c8488d9bf80d2c4bec3cbd75b2ffead Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
This commit is contained in:
@@ -14,17 +14,12 @@
|
||||
|
||||
package com.google.gerrit.server.group;
|
||||
|
||||
import com.google.gerrit.extensions.restapi.AuthException;
|
||||
import com.google.gerrit.extensions.restapi.BadRequestException;
|
||||
import com.google.gerrit.extensions.restapi.ResourceConflictException;
|
||||
import com.google.gerrit.extensions.restapi.RestReadView;
|
||||
import com.google.gerrit.server.group.MembersCollection.MemberInfo;
|
||||
|
||||
public class GetMember implements RestReadView<MemberResource> {
|
||||
|
||||
@Override
|
||||
public MemberInfo apply(final MemberResource resource) throws AuthException,
|
||||
BadRequestException, ResourceConflictException, Exception {
|
||||
public MemberInfo apply(MemberResource resource) {
|
||||
return MembersCollection.parse(resource.getUser().getAccount());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ import static com.google.gerrit.server.group.MemberResource.MEMBER_KIND;
|
||||
import com.google.gerrit.extensions.registration.DynamicMap;
|
||||
import com.google.gerrit.extensions.restapi.RestApiModule;
|
||||
import com.google.gerrit.server.group.DeleteMembers.DeleteMember;
|
||||
import com.google.gerrit.server.group.PutMembers.UpdateMember;
|
||||
|
||||
public class Module extends RestApiModule {
|
||||
@Override
|
||||
@@ -37,6 +38,7 @@ public class Module extends RestApiModule {
|
||||
get(MEMBER_KIND).to(GetMember.class);
|
||||
post(GROUP_KIND, "members").to(PostMembers.class);
|
||||
put(GROUP_KIND, "members").to(PutMembers.class);
|
||||
put(MEMBER_KIND).to(UpdateMember.class);
|
||||
delete(MEMBER_KIND).to(DeleteMember.class);
|
||||
|
||||
child(GROUP_KIND, "groups").to(IncludedGroupsCollection.class);
|
||||
|
||||
@@ -224,4 +224,27 @@ class PutMembers implements RestModifyView<GroupResource, Input> {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static class UpdateMember implements RestModifyView<MemberResource, PutMember.Input> {
|
||||
static class Input {
|
||||
}
|
||||
|
||||
private final Provider<GetMember> get;
|
||||
|
||||
@Inject
|
||||
UpdateMember(Provider<GetMember> get) {
|
||||
this.get = get;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<PutMember.Input> inputType() {
|
||||
return PutMember.Input.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object apply(MemberResource resource, PutMember.Input input) {
|
||||
// Do nothing, the user is already a member.
|
||||
return get.get().apply(resource);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user