9
9
import java .util .LinkedList ;
10
10
import java .util .List ;
11
11
import java .util .Map ;
12
- import java .util .stream .Collectors ;
13
12
import javax .ws .rs .WebApplicationException ;
14
13
import javax .ws .rs .client .WebTarget ;
15
14
import javax .ws .rs .core .GenericType ;
@@ -70,9 +69,9 @@ public String getServerUrl() {
70
69
public Version getVersion (UserCredentials userCredentials ) {
71
70
return new Version (getServerStatus (userCredentials ).getVersion ());
72
71
}
73
-
72
+
74
73
public ServerStatus getServerStatus (UserCredentials userCredentials ) {
75
- WebTarget systemStatusTarget = getSystemStatusTarget (userCredentials );
74
+ WebTarget systemStatusTarget = getSystemStatusTarget (userCredentials );
76
75
return systemStatusTarget .request (MediaType .APPLICATION_JSON ).get (ServerStatus .class );
77
76
}
78
77
@@ -81,7 +80,7 @@ public List<RadarIssue> getIssues(UserCredentials auth, ResourceKey projectKey,
81
80
if (!existsProject (auth , projectKey )) {
82
81
throw new NoSuchProjectException (projectKey );
83
82
}
84
- Map <String , List <String >> params = new HashMap <>();
83
+ Map <String , List <String >> params = new HashMap <>();
85
84
params .put ("componentKeys" , Arrays .asList (projectKey .toString ()));
86
85
params .put ("ps" , Arrays .asList (String .valueOf (MAX_SUPPORTED_PAGE_SIZE )));
87
86
params .put ("statuses" , Arrays .asList ("OPEN" ));
@@ -93,19 +92,19 @@ public List<RadarIssue> getIssues(UserCredentials auth, ResourceKey projectKey,
93
92
94
93
private List <RadarIssue > getIssues (UserCredentials userCredentials , Map <String , List <String >> params ) {
95
94
try {
96
- WebTarget issuesTarget = getIssuesTarget (userCredentials );
95
+ WebTarget issuesTarget = getIssuesTarget (userCredentials );
97
96
for (Map .Entry <String , List <String >> entry : params .entrySet ()) {
98
- issuesTarget = issuesTarget .queryParam (entry .getKey (), (Object [])entry .getValue ().toArray (new String [0 ]));
97
+ issuesTarget = issuesTarget .queryParam (entry .getKey (), (Object []) entry .getValue ().toArray (new String [0 ]));
99
98
}
100
- IssuesSearchResult issuesSearchResult ;
99
+ IssuesSearchResult issuesSearchResult ;
101
100
List <RadarIssue > issues = new LinkedList <>();
102
101
Map <String , Rule > rulesCache = new HashMap <>();
103
102
int pageIndex = 1 ;
104
103
do {
105
104
issuesSearchResult = issuesTarget .queryParam ("p" , pageIndex ).request (MediaType .APPLICATION_JSON ).get (IssuesSearchResult .class );
106
105
for (RadarIssue issue : issuesSearchResult .getIssues ()) {
107
106
Rule rule = searchInCacheOrLoadFromServer (rulesCache , issue .ruleKey (), userCredentials );
108
- RadarIssue radarIssue = new RadarIssue ();
107
+ RadarIssue radarIssue = new RadarIssue ();
109
108
radarIssue .setComponentKey (issue .componentKey ());
110
109
radarIssue .setCreationDate (issue .creationDate ());
111
110
radarIssue .setKey (issue .key ());
@@ -160,16 +159,21 @@ public Rule getRule(UserCredentials userCredentials, String ruleKey) {
160
159
public List <ResourceKey > getProjectsKeys (UserCredentials userCredentials ) {
161
160
try {
162
161
List <ResourceKey > keys = new ArrayList <>();
163
- if (getVersion (userCredentials ).compareTo (6 , 3 ) >= 0 ) {
164
- WebTarget componentsTarget = getProjectComponentsTarget (userCredentials );
165
- ComponentSearchResult searchResult = componentsTarget .request (MediaType .APPLICATION_JSON ).get (ComponentSearchResult .class );
166
- List <Component > components =searchResult .getComponents ();
167
- components .forEach ((c ) -> {
168
- keys .add (ResourceKey .valueOf (c .getKey ()));
162
+ if (getVersion (userCredentials ).compareTo (6 , 3 ) >= 0 ) {
163
+ WebTarget componentsTarget = getProjectComponentsTarget (userCredentials );
164
+ ComponentSearchResult searchResult ;
165
+ int pageIndex = 1 ;
166
+ do {
167
+ searchResult = componentsTarget .queryParam ("p" , pageIndex ).request (MediaType .APPLICATION_JSON ).get (ComponentSearchResult .class );
168
+ searchResult .getComponents ().forEach ((c ) -> {
169
+ keys .add (ResourceKey .valueOf (c .getKey ()));
170
+ });
171
+ pageIndex ++;
172
+ } while (searchResult .getPaging ().getTotalNumberOfResults () != null && pageIndex <= searchResult .getPaging ().getTotalPageCount ());
173
+ } else {
174
+ WebTarget resourcesTarget = getProjectsTarget (userCredentials );
175
+ List <Resource > resources = resourcesTarget .request (MediaType .APPLICATION_JSON ).get (new GenericType <List <Resource >>() {
169
176
});
170
- }else {
171
- WebTarget resourcesTarget = getProjectsTarget (userCredentials );
172
- List <Resource > resources =resourcesTarget .request (MediaType .APPLICATION_JSON ).get (new GenericType <List <Resource >>() {});
173
177
resources .forEach ((r ) -> {
174
178
keys .add (ResourceKey .valueOf (r .getKey ()));
175
179
});
@@ -191,16 +195,21 @@ private static boolean isError401(WebApplicationException ex) {
191
195
public List <SonarQubeProjectConfiguration > getProjects (UserCredentials userCredentials ) {
192
196
try {
193
197
List <SonarQubeProjectConfiguration > projects = new ArrayList <>();
194
- if (getVersion (userCredentials ).compareTo (6 , 3 ) >= 0 ) {
195
- WebTarget componentsTarget = getProjectComponentsTarget (userCredentials );
196
- ComponentSearchResult searchResult = componentsTarget .request (MediaType .APPLICATION_JSON ).get (ComponentSearchResult .class );
197
- List <Component > components =searchResult .getComponents ();
198
- components .forEach ((c ) -> {
199
- projects .add (new GenericSonarQubeProjectConfiguration (c .getName (), ResourceKey .valueOf (c .getKey ()), c .getVersion ()));
198
+ if (getVersion (userCredentials ).compareTo (6 , 3 ) >= 0 ) {
199
+ WebTarget componentsTarget = getProjectComponentsTarget (userCredentials );
200
+ ComponentSearchResult searchResult ;
201
+ int pageIndex = 1 ;
202
+ do {
203
+ searchResult = componentsTarget .queryParam ("p" , pageIndex ).request (MediaType .APPLICATION_JSON ).get (ComponentSearchResult .class );
204
+ searchResult .getComponents ().forEach ((c ) -> {
205
+ projects .add (new GenericSonarQubeProjectConfiguration (c .getName (), ResourceKey .valueOf (c .getKey ()), c .getVersion ()));
206
+ });
207
+ pageIndex ++;
208
+ } while (searchResult .getPaging ().getTotalNumberOfResults () != null && pageIndex <= searchResult .getPaging ().getTotalPageCount ());
209
+ } else {
210
+ WebTarget resourcesTarget = getProjectsTarget (userCredentials );
211
+ List <Resource > resources = resourcesTarget .request (MediaType .APPLICATION_JSON ).get (new GenericType <List <Resource >>() {
200
212
});
201
- }else {
202
- WebTarget resourcesTarget = getProjectsTarget (userCredentials );
203
- List <Resource > resources = resourcesTarget .request (MediaType .APPLICATION_JSON ).get (new GenericType <List <Resource >>() {});
204
213
resources .forEach ((r ) -> {
205
214
projects .add (new GenericSonarQubeProjectConfiguration (r .getName (), ResourceKey .valueOf (r .getKey ()), r .getVersion ()));
206
215
});
@@ -230,7 +239,7 @@ public <T extends Classifier> ClassifierSummary<T> getSummary(ClassifierType<T>
230
239
throw new NoSuchProjectException (resourceKey );
231
240
}
232
241
SimpleClassifierSummary <T > simpleSummary = new SimpleClassifierSummary <>();
233
- List <T > values = classifierType .getValues ();
242
+ List <T > values = classifierType .getValues ();
234
243
for (T classifier : values ) {
235
244
List <IssueFilter > tempFilters = new LinkedList <>();
236
245
tempFilters .add (classifier .createFilter ());
@@ -245,38 +254,38 @@ public <T extends Classifier> ClassifierSummary<T> getSummary(ClassifierType<T>
245
254
246
255
private WebTarget getProjectsTarget (UserCredentials userCredentials ) {
247
256
ResteasyClient client = getClient (userCredentials );
248
- return client .target (serverUrl + "/api/resources" );
257
+ return client .target (serverUrl + "/api/resources" );
249
258
}
250
-
259
+
251
260
private WebTarget getProjectComponentsTarget (UserCredentials userCredentials ) {
252
261
ResteasyClient client = getClient (userCredentials );
253
- return client .target (serverUrl + "/api/components/search" ).queryParam ("qualifiers" , "TRK" );
262
+ return client .target (serverUrl + "/api/components/search" ).queryParam ("qualifiers" , "TRK" );
254
263
}
255
264
256
265
private WebTarget getRulesTarget (UserCredentials userCredentials ) {
257
266
ResteasyClient client = getClient (userCredentials );
258
- return client .target (serverUrl + "/api/rules/show" );
267
+ return client .target (serverUrl + "/api/rules/show" );
259
268
}
260
-
269
+
261
270
private WebTarget getIssuesTarget (UserCredentials userCredentials ) {
262
271
ResteasyClient client = getClient (userCredentials );
263
- return client .target (serverUrl + "/api/issues/search" );
272
+ return client .target (serverUrl + "/api/issues/search" );
264
273
}
265
274
266
275
private WebTarget getSystemStatusTarget (UserCredentials userCredentials ) {
267
276
ResteasyClient client = getClient (userCredentials );
268
- return client .target (serverUrl + "/api/system/status" );
277
+ return client .target (serverUrl + "/api/system/status" );
269
278
}
270
-
279
+
271
280
private ResteasyClient getClient (UserCredentials userCredentials ) {
272
- ClientHttpEngine httpEngine = new ApacheHttpClient4Engine (createHttpClient ());
281
+ ClientHttpEngine httpEngine = new ApacheHttpClient4Engine (createHttpClient ());
273
282
ResteasyClient client = new ResteasyClientBuilder ().httpEngine (httpEngine ).build ();
274
- if (userCredentials != null ) {
283
+ if (userCredentials != null ) {
275
284
client .register (new BasicAuthentication (userCredentials .getUsername (), PassEncoder .decodeAsString (userCredentials .getPassword ())));
276
285
}
277
286
return client ;
278
287
}
279
-
288
+
280
289
private HttpClient createHttpClient () {
281
290
final ProxySettings proxySettings = getProxySettings ();
282
291
DefaultHttpClient httpClient = new DefaultHttpClient ();
0 commit comments