2
2
3
3
import com .google .gson .reflect .TypeToken ;
4
4
import org .eclipse .egit .github .core .IRepositoryIdProvider ;
5
+ import org .eclipse .egit .github .core .Team ;
5
6
import org .eclipse .egit .github .core .User ;
6
7
import org .eclipse .egit .github .core .client .GitHubRequest ;
7
8
import org .eclipse .egit .github .core .client .PageIterator ;
@@ -177,6 +178,20 @@ public PageIterator<User> pageRequestedReviewers(final IRepositoryIdProvider rep
177
178
return this .createPageIterator (request );
178
179
}
179
180
181
+ public PageIterator <Team > pageRequestedTeamReviewers (final IRepositoryIdProvider repository , final int id ) {
182
+ String repoId = this .getId (repository );
183
+ StringBuilder uri = new StringBuilder ("/repos" );
184
+ uri .append ('/' ).append (repoId );
185
+ uri .append ("/pulls" );
186
+ uri .append ('/' ).append (id );
187
+ uri .append ("/requested_reviewers" );
188
+
189
+ PagedRequest <Team > request = this .createPagedRequest (1 , 100 );
190
+ request .setUri (uri );
191
+ request .setType ((new TypeToken <List <Team >>(){}).getType ());
192
+ return this .createPageIterator (request );
193
+ }
194
+
180
195
public PageIterator <Review > pageReviews (final IRepositoryIdProvider repository , final int id ) {
181
196
String repoId = this .getId (repository );
182
197
StringBuilder uri = new StringBuilder ("/repos" );
@@ -192,10 +207,12 @@ public PageIterator<Review> pageReviews(final IRepositoryIdProvider repository,
192
207
}
193
208
194
209
public void createReviewRequests (final IRepositoryIdProvider repository ,
195
- final int id ,
196
- final List <String > reviewers ) throws IOException {
197
- Objects .requireNonNull (reviewers , "reviewers cannot be null" );
198
-
210
+ final int id ,
211
+ final List <String > reviewers ,
212
+ final List <String > teamReviewers ) throws IOException {
213
+ if (Objects .isNull (reviewers ) && Objects .isNull (teamReviewers )) {
214
+ throw new IllegalArgumentException ("Either reviewers or teamReviewers must be non-null" );
215
+ }
199
216
String repoId = this .getId (repository );
200
217
StringBuilder uri = new StringBuilder ("/repos" );
201
218
uri .append ('/' ).append (repoId );
@@ -204,15 +221,22 @@ public void createReviewRequests(final IRepositoryIdProvider repository,
204
221
uri .append ("/requested_reviewers" );
205
222
206
223
Map <String , Object > params = new HashMap <>();
207
- params .put ("reviewers" , reviewers );
224
+ if (!Objects .isNull (reviewers )) {
225
+ params .put ("reviewers" , reviewers );
226
+ }
227
+ if (!Objects .isNull (teamReviewers )) {
228
+ params .put ("team_reviewers" , teamReviewers );
229
+ }
208
230
getClient ().post (uri .toString (), params , ExtendedPullRequest .class );
209
231
}
210
232
211
233
public void deleteReviewRequests (final IRepositoryIdProvider repository ,
212
234
final int id ,
213
- final List <String > reviewers ) throws IOException {
214
- Objects .requireNonNull (reviewers , "reviewers cannot be null" );
215
-
235
+ final List <String > reviewers ,
236
+ final List <String > teamReviewers ) throws IOException {
237
+ if (Objects .isNull (reviewers ) && Objects .isNull (teamReviewers )) {
238
+ throw new IllegalArgumentException ("Either reviewers or teamReviewers must be non-null" );
239
+ }
216
240
String repoId = this .getId (repository );
217
241
StringBuilder uri = new StringBuilder ("/repos" );
218
242
uri .append ('/' ).append (repoId );
@@ -221,7 +245,12 @@ public void deleteReviewRequests(final IRepositoryIdProvider repository,
221
245
uri .append ("/requested_reviewers" );
222
246
223
247
Map <String , Object > params = new HashMap <>();
224
- params .put ("reviewers" , reviewers );
248
+ if (!Objects .isNull (reviewers )) {
249
+ params .put ("reviewers" , reviewers );
250
+ }
251
+ if (!Objects .isNull (teamReviewers )) {
252
+ params .put ("team_reviewers" , teamReviewers );
253
+ }
225
254
getClient ().delete (uri .toString (), params );
226
255
}
227
256
0 commit comments