Line data Source code
1 : // Copyright (C) 2013 The Android Open Source Project 2 : // 3 : // Licensed under the Apache License, Version 2.0 (the "License"); 4 : // you may not use this file except in compliance with the License. 5 : // You may obtain a copy of the License at 6 : // 7 : // http://www.apache.org/licenses/LICENSE-2.0 8 : // 9 : // Unless required by applicable law or agreed to in writing, software 10 : // distributed under the License is distributed on an "AS IS" BASIS, 11 : // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 : // See the License for the specific language governing permissions and 13 : // limitations under the License. 14 : 15 : package com.google.gerrit.server.restapi.group; 16 : 17 : import static com.google.gerrit.server.group.GroupResource.GROUP_KIND; 18 : import static com.google.gerrit.server.group.MemberResource.MEMBER_KIND; 19 : import static com.google.gerrit.server.group.SubgroupResource.SUBGROUP_KIND; 20 : 21 : import com.google.gerrit.extensions.registration.DynamicMap; 22 : import com.google.gerrit.extensions.restapi.RestApiModule; 23 : import com.google.gerrit.server.IdentifiedUser; 24 : import com.google.gerrit.server.ServerInitiated; 25 : import com.google.gerrit.server.UserInitiated; 26 : import com.google.gerrit.server.group.db.GroupsUpdate; 27 : import com.google.gerrit.server.restapi.group.AddMembers.CreateMember; 28 : import com.google.gerrit.server.restapi.group.AddMembers.UpdateMember; 29 : import com.google.gerrit.server.restapi.group.AddSubgroups.CreateSubgroup; 30 : import com.google.gerrit.server.restapi.group.AddSubgroups.UpdateSubgroup; 31 : import com.google.gerrit.server.restapi.group.DeleteMembers.DeleteMember; 32 : import com.google.gerrit.server.restapi.group.DeleteSubgroups.DeleteSubgroup; 33 : import com.google.inject.Provides; 34 : 35 152 : public class GroupRestApiModule extends RestApiModule { 36 : 37 : @Override 38 : protected void configure() { 39 152 : bind(GroupsCollection.class); 40 : 41 152 : DynamicMap.mapOf(binder(), GROUP_KIND); 42 152 : DynamicMap.mapOf(binder(), MEMBER_KIND); 43 152 : DynamicMap.mapOf(binder(), SUBGROUP_KIND); 44 : 45 152 : create(GROUP_KIND).to(CreateGroup.class); 46 152 : get(GROUP_KIND).to(GetGroup.class); 47 152 : put(GROUP_KIND).to(PutGroup.class); 48 152 : get(GROUP_KIND, "detail").to(GetDetail.class); 49 152 : post(GROUP_KIND, "index").to(Index.class); 50 152 : post(GROUP_KIND, "members").to(AddMembers.class); 51 152 : post(GROUP_KIND, "members.add").to(AddMembers.class); 52 152 : post(GROUP_KIND, "members.delete").to(DeleteMembers.class); 53 152 : post(GROUP_KIND, "groups").to(AddSubgroups.class); 54 152 : post(GROUP_KIND, "groups.add").to(AddSubgroups.class); 55 152 : post(GROUP_KIND, "groups.delete").to(DeleteSubgroups.class); 56 152 : get(GROUP_KIND, "description").to(GetDescription.class); 57 152 : put(GROUP_KIND, "description").to(PutDescription.class); 58 152 : delete(GROUP_KIND, "description").to(PutDescription.class); 59 152 : get(GROUP_KIND, "name").to(GetName.class); 60 152 : put(GROUP_KIND, "name").to(PutName.class); 61 152 : get(GROUP_KIND, "owner").to(GetOwner.class); 62 152 : put(GROUP_KIND, "owner").to(PutOwner.class); 63 152 : get(GROUP_KIND, "options").to(GetOptions.class); 64 152 : put(GROUP_KIND, "options").to(PutOptions.class); 65 152 : get(GROUP_KIND, "log.audit").to(GetAuditLog.class); 66 : 67 152 : child(GROUP_KIND, "members").to(MembersCollection.class); 68 152 : create(MEMBER_KIND).to(CreateMember.class); 69 152 : get(MEMBER_KIND).to(GetMember.class); 70 152 : put(MEMBER_KIND).to(UpdateMember.class); 71 152 : delete(MEMBER_KIND).to(DeleteMember.class); 72 : 73 152 : child(GROUP_KIND, "groups").to(SubgroupsCollection.class); 74 152 : create(SUBGROUP_KIND).to(CreateSubgroup.class); 75 152 : get(SUBGROUP_KIND).to(GetSubgroup.class); 76 152 : put(SUBGROUP_KIND).to(UpdateSubgroup.class); 77 152 : delete(SUBGROUP_KIND).to(DeleteSubgroup.class); 78 : 79 152 : factory(GroupsUpdate.Factory.class); 80 152 : } 81 : 82 : @Provides 83 : @ServerInitiated 84 : GroupsUpdate provideServerInitiatedGroupsUpdate(GroupsUpdate.Factory groupsUpdateFactory) { 85 140 : return groupsUpdateFactory.createWithServerIdent(); 86 : } 87 : 88 : @Provides 89 : @UserInitiated 90 : GroupsUpdate provideUserInitiatedGroupsUpdate( 91 : GroupsUpdate.Factory groupsUpdateFactory, IdentifiedUser currentUser) { 92 30 : return groupsUpdateFactory.create(currentUser); 93 : } 94 : }