-
Notifications
You must be signed in to change notification settings - Fork 27
Expand file tree
/
Copy pathBlackDuckServicesFactory.java
More file actions
318 lines (261 loc) · 14.6 KB
/
Copy pathBlackDuckServicesFactory.java
File metadata and controls
318 lines (261 loc) · 14.6 KB
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
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
/*
* blackduck-common
*
* Copyright (c) 2023 Synopsys, Inc.
*
* Use subject to the terms and conditions of the Synopsys End User Software License and Maintenance Agreement. All rights reserved worldwide.
*/
package com.synopsys.integration.blackduck.service;
import java.io.File;
import java.time.OffsetDateTime;
import java.util.concurrent.ExecutorService;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.synopsys.integration.blackduck.api.generated.discovery.ApiDiscovery;
import com.synopsys.integration.blackduck.bdio2.Bdio2FileUploadService;
import com.synopsys.integration.blackduck.bdio2.Bdio2RetryAwareStreamUploader;
import com.synopsys.integration.blackduck.bdio2.Bdio2StreamUploader;
import com.synopsys.integration.blackduck.bdio2.util.Bdio2ContentExtractor;
import com.synopsys.integration.blackduck.codelocation.CodeLocationCreationService;
import com.synopsys.integration.blackduck.codelocation.CodeLocationWaiter;
import com.synopsys.integration.blackduck.codelocation.bdio2legacy.Bdio2UploadService;
import com.synopsys.integration.blackduck.codelocation.bdio2legacy.UploadBdio2BatchRunner;
import com.synopsys.integration.blackduck.codelocation.bdiolegacy.BdioUploadService;
import com.synopsys.integration.blackduck.codelocation.bdiolegacy.UploadBatchRunner;
import com.synopsys.integration.blackduck.codelocation.binaryscanner.BinaryScanBatchRunner;
import com.synopsys.integration.blackduck.codelocation.binaryscanner.BinaryScanUploadService;
import com.synopsys.integration.blackduck.codelocation.intelligentpersistence.IntelligentPersistenceBatchRunner;
import com.synopsys.integration.blackduck.codelocation.intelligentpersistence.IntelligentPersistenceService;
import com.synopsys.integration.blackduck.codelocation.signaturescanner.ScanBatchRunner;
import com.synopsys.integration.blackduck.codelocation.signaturescanner.SignatureScannerService;
import com.synopsys.integration.blackduck.http.client.BlackDuckHttpClient;
import com.synopsys.integration.blackduck.http.transform.BlackDuckJsonTransformer;
import com.synopsys.integration.blackduck.http.transform.BlackDuckResponseTransformer;
import com.synopsys.integration.blackduck.http.transform.BlackDuckResponsesTransformer;
import com.synopsys.integration.blackduck.http.transform.adapters.OffsetDateTimeTypeAdapter;
import com.synopsys.integration.blackduck.http.transform.subclass.BlackDuckResponseResolver;
import com.synopsys.integration.blackduck.service.dataservice.BlackDuckRegistrationService;
import com.synopsys.integration.blackduck.service.dataservice.BlackDuckScanReadinessService;
import com.synopsys.integration.blackduck.service.dataservice.CodeLocationService;
import com.synopsys.integration.blackduck.service.dataservice.ComponentService;
import com.synopsys.integration.blackduck.service.dataservice.IacScanUploadService;
import com.synopsys.integration.blackduck.service.dataservice.IssueService;
import com.synopsys.integration.blackduck.service.dataservice.LicenseService;
import com.synopsys.integration.blackduck.service.dataservice.NotificationService;
import com.synopsys.integration.blackduck.service.dataservice.PolicyRuleService;
import com.synopsys.integration.blackduck.service.dataservice.ProjectBomService;
import com.synopsys.integration.blackduck.service.dataservice.ReportBomService;
import com.synopsys.integration.blackduck.service.dataservice.ProjectGetService;
import com.synopsys.integration.blackduck.service.dataservice.ProjectMappingService;
import com.synopsys.integration.blackduck.service.dataservice.ProjectService;
import com.synopsys.integration.blackduck.service.dataservice.ProjectUsersService;
import com.synopsys.integration.blackduck.service.dataservice.RoleService;
import com.synopsys.integration.blackduck.service.dataservice.TagService;
import com.synopsys.integration.blackduck.service.dataservice.UserGroupService;
import com.synopsys.integration.blackduck.service.dataservice.UserRoleService;
import com.synopsys.integration.blackduck.service.dataservice.UserService;
import com.synopsys.integration.log.IntLogger;
import com.synopsys.integration.rest.RestConstants;
import com.synopsys.integration.util.IntEnvironmentVariables;
import com.synopsys.integration.util.IntegrationEscapeUtil;
import com.synopsys.integration.util.NoThreadExecutorService;
public class BlackDuckServicesFactory {
public static final ExecutorService NO_THREAD_EXECUTOR_SERVICE = new NoThreadExecutorService();
private final IntEnvironmentVariables intEnvironmentVariables;
private final ExecutorService executorService;
private final IntLogger logger;
private final BlackDuckHttpClient blackDuckHttpClient;
private final Gson gson;
private final ObjectMapper objectMapper;
private final BlackDuckResponseResolver blackDuckResponseResolver;
private final BlackDuckJsonTransformer blackDuckJsonTransformer;
private final BlackDuckResponseTransformer blackDuckResponseTransformer;
private final BlackDuckResponsesTransformer blackDuckResponsesTransformer;
private final ApiDiscovery apiDiscovery;
private final BlackDuckApiClient blackDuckApiClient;
public static Gson createDefaultGson() {
return createDefaultGsonBuilder().create();
}
public static ObjectMapper createDefaultObjectMapper() {
return new ObjectMapper();
}
public static GsonBuilder createDefaultGsonBuilder() {
return new GsonBuilder()
.setLenient()
.setDateFormat(RestConstants.JSON_DATE_FORMAT)
.registerTypeAdapter(OffsetDateTime.class, new OffsetDateTimeTypeAdapter());
}
public BlackDuckServicesFactory(IntEnvironmentVariables intEnvironmentVariables, ExecutorService executorService, IntLogger logger, BlackDuckHttpClient blackDuckHttpClient) {
this(intEnvironmentVariables, executorService, logger, blackDuckHttpClient, createDefaultGson(), createDefaultObjectMapper());
}
public BlackDuckServicesFactory(
IntEnvironmentVariables intEnvironmentVariables, ExecutorService executorService, IntLogger logger, BlackDuckHttpClient blackDuckHttpClient, Gson gson,
ObjectMapper objectMapper
) {
this.intEnvironmentVariables = intEnvironmentVariables;
this.executorService = executorService;
this.logger = logger;
this.blackDuckHttpClient = blackDuckHttpClient;
this.gson = gson;
this.objectMapper = objectMapper;
blackDuckResponseResolver = new BlackDuckResponseResolver(gson);
blackDuckJsonTransformer = new BlackDuckJsonTransformer(gson, objectMapper, blackDuckResponseResolver, logger);
blackDuckResponseTransformer = new BlackDuckResponseTransformer(blackDuckHttpClient, blackDuckJsonTransformer);
blackDuckResponsesTransformer = new BlackDuckResponsesTransformer(blackDuckHttpClient, blackDuckJsonTransformer);
apiDiscovery = new ApiDiscovery(blackDuckHttpClient.getBlackDuckUrl());
blackDuckApiClient = new BlackDuckApiClient(blackDuckHttpClient, blackDuckJsonTransformer, blackDuckResponseTransformer, blackDuckResponsesTransformer);
}
public BdioUploadService createBdioUploadService() {
return new BdioUploadService(blackDuckApiClient, apiDiscovery, logger, new UploadBatchRunner(logger, blackDuckApiClient, apiDiscovery, executorService),
createCodeLocationCreationService()
);
}
public Bdio2UploadService createBdio2UploadService() {
return new Bdio2UploadService(blackDuckApiClient, apiDiscovery, logger, new UploadBdio2BatchRunner(logger, blackDuckApiClient, apiDiscovery, executorService),
createCodeLocationCreationService()
);
}
public Bdio2FileUploadService createBdio2FileUploadService() {
Bdio2StreamUploader bdio2Uploader = new Bdio2StreamUploader(blackDuckApiClient, apiDiscovery, logger, ApiDiscovery.INTELLIGENT_PERSISTENCE_SCANS_PATH,
IntelligentPersistenceService.CONTENT_TYPE
);
Bdio2RetryAwareStreamUploader bdio2RetryAwareStreamUploader = new Bdio2RetryAwareStreamUploader(bdio2Uploader);
return new Bdio2FileUploadService(blackDuckApiClient, apiDiscovery, logger, new Bdio2ContentExtractor(), bdio2RetryAwareStreamUploader);
}
public SignatureScannerService createSignatureScannerService(File signatureScannerInstallDirectory) {
ScanBatchRunner scanBatchRunner = ScanBatchRunner.createDefault(
logger,
blackDuckHttpClient,
createBlackDuckRegistrationService(),
intEnvironmentVariables,
executorService,
signatureScannerInstallDirectory
);
return createSignatureScannerService(scanBatchRunner);
}
public SignatureScannerService createSignatureScannerService(ScanBatchRunner scanBatchRunner) {
return new SignatureScannerService(blackDuckApiClient, apiDiscovery, logger, scanBatchRunner, createCodeLocationCreationService());
}
public BinaryScanUploadService createBinaryScanUploadService() {
return new BinaryScanUploadService(blackDuckApiClient, apiDiscovery, logger, new BinaryScanBatchRunner(logger, blackDuckApiClient, apiDiscovery, executorService),
createCodeLocationCreationService()
);
}
public CodeLocationCreationService createCodeLocationCreationService() {
ProjectService projectService = createProjectService();
NotificationService notificationService = createNotificationService();
UserService userService = createUserService();
CodeLocationWaiter codeLocationWaiter = new CodeLocationWaiter(logger, blackDuckApiClient, projectService, notificationService);
return new CodeLocationCreationService(blackDuckApiClient, apiDiscovery, logger, codeLocationWaiter, notificationService, userService);
}
public CodeLocationService createCodeLocationService() {
return new CodeLocationService(blackDuckApiClient, apiDiscovery, logger);
}
public ComponentService createComponentService() {
return new ComponentService(blackDuckApiClient, apiDiscovery, logger);
}
public BlackDuckRegistrationService createBlackDuckRegistrationService() {
return new BlackDuckRegistrationService(blackDuckApiClient, apiDiscovery, logger, blackDuckHttpClient.getBlackDuckUrl());
}
public IssueService createIssueService() {
return new IssueService(blackDuckApiClient, apiDiscovery, logger);
}
public LicenseService createLicenseService() {
return new LicenseService(blackDuckApiClient, apiDiscovery, logger, createComponentService());
}
public NotificationService createNotificationService() {
return new NotificationService(blackDuckApiClient, apiDiscovery, logger);
}
public PolicyRuleService createPolicyRuleService() {
return new PolicyRuleService(blackDuckApiClient, apiDiscovery, logger);
}
public ProjectService createProjectService() {
ProjectGetService projectGetService = new ProjectGetService(blackDuckApiClient, apiDiscovery, logger);
return new ProjectService(blackDuckApiClient, apiDiscovery, logger, projectGetService);
}
public ProjectBomService createProjectBomService() {
return new ProjectBomService(blackDuckApiClient, apiDiscovery, logger, createComponentService());
}
public ReportBomService createReportBomService() {
return new ReportBomService(this.getBlackDuckApiClient(), this.getApiDiscovery(), this.getLogger());
}
public ProjectUsersService createProjectUsersService() {
UserGroupService userGroupService = createUserGroupService();
return new ProjectUsersService(blackDuckApiClient, apiDiscovery, logger, userGroupService);
}
public BlackDuckScanReadinessService createScanReadinessService() {
return new BlackDuckScanReadinessService(blackDuckApiClient, apiDiscovery, logger);
}
public UserService createUserService() {
return new UserService(blackDuckApiClient, apiDiscovery, logger);
}
public RoleService createRoleService() {
return new RoleService(blackDuckApiClient, apiDiscovery, logger);
}
public UserRoleService createUserRoleService() {
return new UserRoleService(blackDuckApiClient, apiDiscovery, logger);
}
public UserGroupService createUserGroupService() {
return new UserGroupService(blackDuckApiClient, apiDiscovery, logger);
}
public ProjectMappingService createProjectMappingService() {
return new ProjectMappingService(blackDuckApiClient, apiDiscovery, logger);
}
public TagService createTagService() {
return new TagService(blackDuckApiClient, apiDiscovery, logger);
}
public IntelligentPersistenceService createIntelligentPersistenceService() {
IntelligentPersistenceBatchRunner batchRunner = new IntelligentPersistenceBatchRunner(logger, executorService, createBdio2FileUploadService());
return new IntelligentPersistenceService(blackDuckApiClient, apiDiscovery, logger, batchRunner, createCodeLocationCreationService());
}
public IacScanUploadService createIacScanUploadService() {
return new IacScanUploadService(blackDuckApiClient, apiDiscovery);
}
public IntegrationEscapeUtil createIntegrationEscapeUtil() {
return new IntegrationEscapeUtil();
}
public ExecutorService getExecutorService() {
return executorService;
}
public IntLogger getLogger() {
return logger;
}
public BlackDuckHttpClient getBlackDuckHttpClient() {
return blackDuckHttpClient;
}
public Gson getGson() {
return gson;
}
public ObjectMapper getObjectMapper() {
return objectMapper;
}
public IntEnvironmentVariables getEnvironmentVariables() {
return intEnvironmentVariables;
}
public BlackDuckResponseResolver getBlackDuckResponseResolver() {
return blackDuckResponseResolver;
}
public BlackDuckJsonTransformer getBlackDuckJsonTransformer() {
return blackDuckJsonTransformer;
}
public BlackDuckResponseTransformer getBlackDuckResponseTransformer() {
return blackDuckResponseTransformer;
}
public BlackDuckResponsesTransformer getBlackDuckResponsesTransformer() {
return blackDuckResponsesTransformer;
}
public ApiDiscovery getApiDiscovery() {
return apiDiscovery;
}
public BlackDuckApiClient getBlackDuckApiClient() {
return blackDuckApiClient;
}
@Override
public String toString() {
return ReflectionToStringBuilder.toString(this, ToStringStyle.JSON_STYLE);
}
}