summaryrefslogtreecommitdiffstats
path: root/java/com/google/gerrit/extensions/api/groups/GroupApi.java
blob: fe85eaadca9ca7dcf3e4cd78667ed20280326b01 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
// Copyright (C) 2015 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package com.google.gerrit.extensions.api.groups;

import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.GroupAuditEventInfo;
import com.google.gerrit.extensions.common.GroupInfo;
import com.google.gerrit.extensions.common.GroupOptionsInfo;
import com.google.gerrit.extensions.restapi.NotImplementedException;
import com.google.gerrit.extensions.restapi.RestApiException;
import java.util.List;

public interface GroupApi {
  /** @return group info with no {@code ListGroupsOption}s set. */
  GroupInfo get() throws RestApiException;

  /** @return group info with all {@code ListGroupsOption}s set. */
  GroupInfo detail() throws RestApiException;

  /** @return group name. */
  String name() throws RestApiException;

  /**
   * Set group name.
   *
   * @param name new name.
   * @throws RestApiException
   */
  void name(String name) throws RestApiException;

  /** @return owning group info. */
  GroupInfo owner() throws RestApiException;

  /**
   * Set group owner.
   *
   * @param owner identifier of new group owner.
   * @throws RestApiException
   */
  void owner(String owner) throws RestApiException;

  /** @return group description. */
  String description() throws RestApiException;

  /**
   * Set group decsription.
   *
   * @param description new description.
   * @throws RestApiException
   */
  void description(String description) throws RestApiException;

  /** @return group options. */
  GroupOptionsInfo options() throws RestApiException;

  /**
   * Set group options.
   *
   * @param options new options.
   * @throws RestApiException
   */
  void options(GroupOptionsInfo options) throws RestApiException;

  /**
   * List group members, non-recursively.
   *
   * @return group members.
   * @throws RestApiException
   */
  List<AccountInfo> members() throws RestApiException;

  /**
   * List group members.
   *
   * @param recursive whether to recursively included groups.
   * @return group members.
   * @throws RestApiException
   */
  List<AccountInfo> members(boolean recursive) throws RestApiException;

  /**
   * Add members to a group.
   *
   * @param members list of member identifiers, in any format accepted by {@link
   *     com.google.gerrit.extensions.api.accounts.Accounts#id(String)}
   * @throws RestApiException
   */
  void addMembers(String... members) throws RestApiException;

  /**
   * Remove members from a group.
   *
   * @param members list of member identifiers, in any format accepted by {@link
   *     com.google.gerrit.extensions.api.accounts.Accounts#id(String)}
   * @throws RestApiException
   */
  void removeMembers(String... members) throws RestApiException;

  /**
   * Lists the subgroups of this group.
   *
   * @return the found subgroups
   * @throws RestApiException
   */
  List<GroupInfo> includedGroups() throws RestApiException;

  /**
   * Adds subgroups to this group.
   *
   * @param groups list of group identifiers, in any format accepted by {@link Groups#id(String)}
   * @throws RestApiException
   */
  void addGroups(String... groups) throws RestApiException;

  /**
   * Removes subgroups from this group.
   *
   * @param groups list of group identifiers, in any format accepted by {@link Groups#id(String)}
   * @throws RestApiException
   */
  void removeGroups(String... groups) throws RestApiException;

  /**
   * Returns the audit log of the group.
   *
   * @return list of audit events of the group.
   * @throws RestApiException
   */
  List<? extends GroupAuditEventInfo> auditLog() throws RestApiException;

  /**
   * Reindexes the group.
   *
   * <p>Only supported for internal groups.
   *
   * @throws RestApiException
   */
  void index() throws RestApiException;

  /**
   * A default implementation which allows source compatibility when adding new methods to the
   * interface.
   */
  class NotImplemented implements GroupApi {
    @Override
    public GroupInfo get() throws RestApiException {
      throw new NotImplementedException();
    }

    @Override
    public GroupInfo detail() throws RestApiException {
      throw new NotImplementedException();
    }

    @Override
    public String name() throws RestApiException {
      throw new NotImplementedException();
    }

    @Override
    public void name(String name) throws RestApiException {
      throw new NotImplementedException();
    }

    @Override
    public GroupInfo owner() throws RestApiException {
      throw new NotImplementedException();
    }

    @Override
    public void owner(String owner) throws RestApiException {
      throw new NotImplementedException();
    }

    @Override
    public String description() throws RestApiException {
      throw new NotImplementedException();
    }

    @Override
    public void description(String description) throws RestApiException {
      throw new NotImplementedException();
    }

    @Override
    public GroupOptionsInfo options() throws RestApiException {
      throw new NotImplementedException();
    }

    @Override
    public void options(GroupOptionsInfo options) throws RestApiException {
      throw new NotImplementedException();
    }

    @Override
    public List<AccountInfo> members() throws RestApiException {
      throw new NotImplementedException();
    }

    @Override
    public List<AccountInfo> members(boolean recursive) throws RestApiException {
      throw new NotImplementedException();
    }

    @Override
    public void addMembers(String... members) throws RestApiException {
      throw new NotImplementedException();
    }

    @Override
    public void removeMembers(String... members) throws RestApiException {
      throw new NotImplementedException();
    }

    @Override
    public List<GroupInfo> includedGroups() throws RestApiException {
      throw new NotImplementedException();
    }

    @Override
    public void addGroups(String... groups) throws RestApiException {
      throw new NotImplementedException();
    }

    @Override
    public void removeGroups(String... groups) throws RestApiException {
      throw new NotImplementedException();
    }

    @Override
    public List<? extends GroupAuditEventInfo> auditLog() throws RestApiException {
      throw new NotImplementedException();
    }

    @Override
    public void index() throws RestApiException {
      throw new NotImplementedException();
    }
  }
}