33
33
34
34
import java .util .ArrayList ;
35
35
import java .util .Collection ;
36
- import java .util .Collections ;
37
36
import java .util .HashMap ;
38
37
import java .util .List ;
39
38
import java .util .Map ;
@@ -84,7 +83,8 @@ public List<Role> loadRoles(String userName) {
84
83
log .error (String .format ("Could not find the server %s" , master .getBaseUrl ()), e );
85
84
return new ArrayList <>();
86
85
} else if (e .getResponse ().getStatus () == 404 ) {
87
- log .error (String .format ("Could not find the GitHub organization %s" ,
86
+ log .error (String .format ("%s is not a member of GitHub organization %s" ,
87
+ userName ,
88
88
gitHubProperties .getOrganization ()),
89
89
e );
90
90
return new ArrayList <>();
@@ -105,26 +105,40 @@ public List<Role> loadRoles(String userName) {
105
105
106
106
// Get teams of the current user
107
107
List <GitHubMaster .Team > teams = new ArrayList <>();
108
- try {
109
- teams = master .getGitHubClient ().getOrgTeams (gitHubProperties .getOrganization (),
110
- gitHubProperties .paginationValue );
111
- } catch (RetrofitError e ) {
112
- log .error (String .format ("RetrofitError %s %s " ,
113
- e .getResponse ().getStatus (),
114
- e .getResponse ().getReason ()),
115
- e );
116
- if (e .getKind () == RetrofitError .Kind .NETWORK ) {
117
- log .error (String .format ("Could not find the server %s" , master .getBaseUrl ()), e );
118
- } else if (e .getResponse ().getStatus () == 404 ) {
119
- log .error ("404 when getting teams" );
120
- return result ;
121
- } else if (e .getResponse ().getStatus () == 401 ) {
122
- log .error (String .format ("Cannot get GitHub organization %s teams: Not authorized." ,
123
- gitHubProperties .getOrganization ()),
108
+ int page = 1 ;
109
+ boolean hasMorePages = true ;
110
+
111
+ do {
112
+ try {
113
+ log .debug ("Requesting page " + page + " of teams." );
114
+ List <GitHubMaster .Team > teamsPage = master .getGitHubClient ()
115
+ .getOrgTeams (gitHubProperties .getOrganization (),
116
+ page ++,
117
+ gitHubProperties .paginationValue );
118
+ teams .addAll (teamsPage );
119
+ if (teamsPage .size () != gitHubProperties .paginationValue ) {
120
+ hasMorePages = false ;
121
+ }
122
+ log .debug ("Got " + teamsPage .size () + " teams back. hasMorePages: " + hasMorePages );
123
+ } catch (RetrofitError e ) {
124
+ hasMorePages = false ;
125
+ log .error (String .format ("RetrofitError %s %s " ,
126
+ e .getResponse ().getStatus (),
127
+ e .getResponse ().getReason ()),
124
128
e );
125
- return result ;
129
+ if (e .getKind () == RetrofitError .Kind .NETWORK ) {
130
+ log .error (String .format ("Could not find the server %s" , master .getBaseUrl ()), e );
131
+ } else if (e .getResponse ().getStatus () == 404 ) {
132
+ log .error ("404 when getting teams" );
133
+ return result ;
134
+ } else if (e .getResponse ().getStatus () == 401 ) {
135
+ log .error (String .format ("Cannot get GitHub organization %s teams: Not authorized." ,
136
+ gitHubProperties .getOrganization ()),
137
+ e );
138
+ return result ;
139
+ }
126
140
}
127
- }
141
+ } while ( hasMorePages );
128
142
129
143
log .debug ("Found " + teams .size () + " teams in org." );
130
144
teams .forEach (t -> {
@@ -180,4 +194,6 @@ public Map<String, Collection<Role>> multiLoadRoles(Collection<String> userEmail
180
194
181
195
return emailGroupsMap ;
182
196
}
197
+
198
+
183
199
}
0 commit comments