Skip to content

Commit 8b5baad

Browse files
jmadhur87mjain6
andauthored
chore: Use ProgressWriterFactoryMixin instead of ProgressWriterType directly (#868)
Co-authored-by: mjain6 <[email protected]>
1 parent effd7a8 commit 8b5baad

File tree

20 files changed

+146
-79
lines changed

20 files changed

+146
-79
lines changed

fcli-core/fcli-aviator/src/main/java/com/fortify/cli/aviator/ssc/cli/cmd/AviatorSSCApplyRemediationsCommand.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,14 @@ private void validateSourceCodeDirectory() {
7272
@SneakyThrows
7373
private JsonNode processFprRemediations(UnirestInstance unirest, SSCArtifactDescriptor ad, AviatorLoggerImpl logger) {
7474
Path fprPath = Files.createTempFile("aviator_" + ad.getId() + "_", ".fpr");
75-
try {
75+
try (IProgressWriter progressWriter = progressWriterFactoryMixin.create()){
7676
logger.progress("Status: Downloading Audited FPR from SSC");
7777
SSCFileTransferHelper.download(
7878
unirest,
7979
SSCUrls.DOWNLOAD_ARTIFACT(ad.getId(), true),
8080
fprPath.toFile(),
81-
SSCFileTransferHelper.ISSCAddDownloadTokenFunction.ROUTEPARAM_DOWNLOADTOKEN);
81+
SSCFileTransferHelper.ISSCAddDownloadTokenFunction.ROUTEPARAM_DOWNLOADTOKEN,
82+
progressWriter);
8283

8384
logger.progress("Status: Processing FPR with Aviator for Applying Auto Remediations");
8485

fcli-core/fcli-aviator/src/main/java/com/fortify/cli/aviator/ssc/cli/cmd/AviatorSSCAuditCommand.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -143,12 +143,13 @@ private Path downloadFpr(UnirestInstance unirest, SSCAppVersionDescriptor av, Av
143143
String prefix = String.format("aviator_%s_%s_", av.getApplicationName().replaceAll("[^a-zA-Z0-9.-]", "_"), av.getVersionName().replaceAll("[^a-zA-Z0-9.-]", "_"));
144144
Path tempFpr = Files.createTempFile(prefix, ".fpr");
145145

146-
try {
146+
try (IProgressWriter progressWriter = progressWriterFactoryMixin.create()) {
147147
SSCFileTransferHelper.download(
148148
unirest,
149149
SSCUrls.DOWNLOAD_CURRENT_FPR(av.getVersionId(), true),
150150
tempFpr.toFile(),
151-
SSCFileTransferHelper.ISSCAddDownloadTokenFunction.ROUTEPARAM_DOWNLOADTOKEN);
151+
SSCFileTransferHelper.ISSCAddDownloadTokenFunction.ROUTEPARAM_DOWNLOADTOKEN,
152+
progressWriter);
152153
return tempFpr;
153154
} catch (UnexpectedHttpResponseException e) {
154155
Files.deleteIfExists(tempFpr);
@@ -163,8 +164,10 @@ private Path downloadFpr(UnirestInstance unirest, SSCAppVersionDescriptor av, Av
163164

164165
@SneakyThrows
165166
private String uploadAuditedFprToSSC(UnirestInstance unirest, File auditedFpr, SSCAppVersionDescriptor av) {
166-
JsonNode uploadResponse = SSCFileTransferHelper.restUpload(unirest, SSCUrls.PROJECT_VERSION_ARTIFACTS(av.getVersionId()), auditedFpr, JsonNode.class);
167-
return uploadResponse.path("data").path("id").asText("UPLOAD_FAILED");
167+
try (IProgressWriter progressWriter = progressWriterFactoryMixin.create()) {
168+
JsonNode uploadResponse = SSCFileTransferHelper.restUpload(unirest, SSCUrls.PROJECT_VERSION_ARTIFACTS(av.getVersionId()), auditedFpr, JsonNode.class, progressWriter);
169+
return uploadResponse.path("data").path("id").asText("UPLOAD_FAILED");
170+
}
168171
}
169172

170173
@Override

fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/_common/rest/helper/FoDFileTransferHelper.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import com.fasterxml.jackson.databind.ObjectMapper;
2323
import com.fortify.cli.common.exception.FcliSimpleException;
2424
import com.fortify.cli.common.progress.helper.IProgressWriter;
25-
import com.fortify.cli.common.progress.helper.ProgressWriterType;
2625
import com.fortify.cli.common.rest.unirest.URIHelper;
2726
import com.fortify.cli.fod._common.util.FoDConstants;
2827

@@ -41,12 +40,12 @@ public final class FoDFileTransferHelper {
4140
public static void setChunkSize(int chunkSize) { FoDFileTransferHelper.chunkSize = chunkSize; }
4241

4342
@SneakyThrows
44-
public static final JsonNode upload(UnirestInstance unirest, HttpRequest<?> baseRequest, File f) {
43+
public static final JsonNode upload(UnirestInstance unirest, HttpRequest<?> baseRequest, File f, IProgressWriter progressWriter) {
4544
if (!f.exists() || !f.canRead()) {
4645
throw new FcliSimpleException("Could not read file: " + f.getPath());
4746
}
4847
String body = null;
49-
try ( FoDProgressMonitor uploadMonitor = new FoDProgressMonitor("Upload") ) {
48+
try ( FoDProgressMonitor uploadMonitor = new FoDProgressMonitor(progressWriter, "Upload") ) {
5049
body = unirest.request(baseRequest.getHttpMethod().name(), baseRequest.getUrl())
5150
.noCharset()
5251
.multiPartContent()
@@ -61,13 +60,13 @@ public static final JsonNode upload(UnirestInstance unirest, HttpRequest<?> base
6160
}
6261

6362
@SneakyThrows
64-
public static final JsonNode uploadChunked(UnirestInstance unirest, HttpRequest<?> baseRequest, File f) {
63+
public static final JsonNode uploadChunked(UnirestInstance unirest, HttpRequest<?> baseRequest, File f, IProgressWriter progressWriter) {
6564
if (!f.exists() || !f.canRead()) {
6665
throw new FcliSimpleException("Could not read file: " + f.getPath());
6766
}
6867
long fileLen = f.length();
6968
String lastBody = null;
70-
try (var fs = new FileInputStream(f); var progressMonitor = new FoDProgressMonitor("Upload"); ) {
69+
try (var fs = new FileInputStream(f); var progressMonitor = new FoDProgressMonitor(progressWriter, "Upload"); ) {
7170
byte[] readByteArray = new byte[chunkSize];
7271
byte[] sendByteArray;
7372
int fragmentNumber = 0;
@@ -112,7 +111,7 @@ private static final String getUri(HttpRequest<?> baseRequest, int fragmentNumbe
112111

113112
@RequiredArgsConstructor
114113
private static final class FoDProgressMonitor implements ProgressMonitor, AutoCloseable {
115-
private final IProgressWriter progressWriter = ProgressWriterType.auto.create();
114+
private final IProgressWriter progressWriter;
116115
private final String action;
117116

118117
@Override

fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/_common/scan/cli/cmd/AbstractFoDScanFileUploadCommand.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.fortify.cli.common.cli.mixin.CommonOptionMixins;
1717
import com.fortify.cli.common.cli.util.CommandGroup;
1818
import com.fortify.cli.common.output.transform.IActionCommandResultSupplier;
19+
import com.fortify.cli.common.progress.cli.mixin.ProgressWriterFactoryMixin;
1920
import com.fortify.cli.fod._common.cli.mixin.FoDDelimiterMixin;
2021
import com.fortify.cli.fod._common.output.cli.cmd.AbstractFoDJsonNodeOutputCommand;
2122
import com.fortify.cli.fod._common.rest.helper.FoDFileTransferHelper;
@@ -31,17 +32,20 @@ public abstract class AbstractFoDScanFileUploadCommand extends AbstractFoDJsonNo
3132
@Mixin private FoDReleaseByQualifiedNameOrIdResolverMixin.RequiredOption releaseResolver;
3233

3334
@Mixin private CommonOptionMixins.RequiredFile uploadFileMixin;
35+
@Mixin private ProgressWriterFactoryMixin progressWriterFactory;
3436

3537
@Override
3638
public final JsonNode getJsonNode(UnirestInstance unirest) {
3739
var releaseDescriptor = releaseResolver.getReleaseDescriptor(unirest);
3840
var releaseId = releaseDescriptor.getReleaseId();
3941
HttpRequest<?> baseRequest = getBaseRequest(unirest, releaseId);
40-
JsonNode response = FoDFileTransferHelper.upload(unirest, baseRequest, uploadFileMixin.getFile());
41-
return releaseDescriptor.asObjectNode()
42+
try (var progressWriter = progressWriterFactory.create()) {
43+
JsonNode response = FoDFileTransferHelper.upload(unirest, baseRequest, uploadFileMixin.getFile(), progressWriter);
44+
return releaseDescriptor.asObjectNode()
4245
.put("fileType", getFileType())
4346
.put("filename", uploadFileMixin.getFile().getName())
4447
.put("fileId", response.get("fileId").intValue());
48+
}
4549
}
4650

4751
protected abstract String getFileType();

fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/_common/scan/cli/cmd/AbstractFoDScanImportCommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public final JsonNode getJsonNode(UnirestInstance unirest) {
5757
HttpRequest<?> baseRequest = getBaseRequest(unirest, releaseId)
5858
.queryString("importScanSessionId", importScanSessionId)
5959
.queryString("fileLength", file.length());
60-
FoDFileTransferHelper.uploadChunked(unirest, baseRequest, file);
60+
FoDFileTransferHelper.uploadChunked(unirest, baseRequest, file, progressWriter);
6161
postUpload(unirest, progressWriter, file);
6262
return releaseDescriptor.asObjectNode()
6363
.put("importScanSessionId", importScanSessionId)

fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/_common/scan/helper/mobile/FoDScanMobileHelper.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.fasterxml.jackson.databind.node.ObjectNode;
2020
import com.fortify.cli.common.exception.FcliSimpleException;
2121
import com.fortify.cli.common.json.JsonHelper;
22+
import com.fortify.cli.common.progress.helper.IProgressWriter;
2223
import com.fortify.cli.fod._common.rest.FoDUrls;
2324
import com.fortify.cli.fod._common.rest.helper.FoDFileTransferHelper;
2425
import com.fortify.cli.fod._common.scan.helper.FoDScanDescriptor;
@@ -39,7 +40,7 @@ public class FoDScanMobileHelper extends FoDScanHelper {
3940

4041
// TODO Split into multiple methods
4142
public static final FoDScanDescriptor startScan(UnirestInstance unirest, FoDReleaseDescriptor releaseDescriptor, FoDScanMobileStartRequest req,
42-
File scanFile) {
43+
File scanFile, IProgressWriter progressWriter) {
4344
var relId = releaseDescriptor.getReleaseId();
4445
HttpRequest<?> request = unirest.post(FoDUrls.MOBILE_SCANS_START).routeParam("relId", relId)
4546
.queryString("startDate", (req.getStartDate()))
@@ -52,7 +53,7 @@ public static final FoDScanDescriptor startScan(UnirestInstance unirest, FoDRele
5253
request = request.queryString("entitlementId", req.getEntitlementId());
5354
}
5455

55-
JsonNode response = FoDFileTransferHelper.uploadChunked(unirest, request, scanFile);
56+
JsonNode response = FoDFileTransferHelper.uploadChunked(unirest, request, scanFile, progressWriter);
5657
FoDStartScanResponse startScanResponse = JsonHelper.treeToValue(response, FoDStartScanResponse.class);
5758
if (startScanResponse == null || startScanResponse.getScanId() <= 0) {
5859
throw new FcliSimpleException("Unable to retrieve scan id from response when starting Mobile scan.");

fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/_common/scan/helper/oss/FoDScanOssHelper.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.fasterxml.jackson.databind.node.ObjectNode;
2020
import com.fortify.cli.common.exception.FcliSimpleException;
2121
import com.fortify.cli.common.json.JsonHelper;
22+
import com.fortify.cli.common.progress.helper.IProgressWriter;
2223
import com.fortify.cli.fod._common.rest.FoDUrls;
2324
import com.fortify.cli.fod._common.rest.helper.FoDFileTransferHelper;
2425
import com.fortify.cli.fod._common.scan.helper.FoDScanDescriptor;
@@ -38,14 +39,14 @@ public class FoDScanOssHelper extends FoDScanHelper {
3839
private static final ObjectMapper objectMapper = new ObjectMapper();
3940

4041
public static final FoDScanDescriptor startScanWithDefaults(UnirestInstance unirest, FoDReleaseDescriptor releaseDescriptor,
41-
FoDScanOssStartRequest req, File scanFile) {
42+
FoDScanOssStartRequest req, File scanFile, IProgressWriter progressWriter) {
4243
var relId = releaseDescriptor.getReleaseId();
4344
HttpRequest<?> request = unirest.post(FoDUrls.OSS_SCANS_START).routeParam("relId", relId);
44-
return startScan(unirest, releaseDescriptor, request, scanFile);
45+
return startScan(unirest, releaseDescriptor, request, scanFile, progressWriter);
4546
}
4647

47-
private static FoDScanDescriptor startScan(UnirestInstance unirest, FoDReleaseDescriptor releaseDescriptor, HttpRequest<?> request, File scanFile) {
48-
JsonNode response = FoDFileTransferHelper.uploadChunked(unirest, request, scanFile);
48+
private static FoDScanDescriptor startScan(UnirestInstance unirest, FoDReleaseDescriptor releaseDescriptor, HttpRequest<?> request, File scanFile, IProgressWriter progressWriter) {
49+
JsonNode response = FoDFileTransferHelper.uploadChunked(unirest, request, scanFile, progressWriter);
4950
FoDStartScanResponse startScanResponse = JsonHelper.treeToValue(response, FoDStartScanResponse.class);
5051
if (startScanResponse == null || startScanResponse.getScanId() <= 0) {
5152
throw new FcliSimpleException("Unable to retrieve scan id from response when starting OSS scan.");

fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/_common/scan/helper/sast/FoDScanSastHelper.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.fasterxml.jackson.databind.node.ObjectNode;
2222
import com.fortify.cli.common.exception.FcliSimpleException;
2323
import com.fortify.cli.common.json.JsonHelper;
24+
import com.fortify.cli.common.progress.helper.IProgressWriter;
2425
import com.fortify.cli.fod._common.rest.FoDUrls;
2526
import com.fortify.cli.fod._common.rest.helper.FoDFileTransferHelper;
2627
import com.fortify.cli.fod._common.scan.helper.FoDScanDescriptor;
@@ -42,7 +43,7 @@ public class FoDScanSastHelper extends FoDScanHelper {
4243
private static final ObjectMapper objectMapper = new ObjectMapper();
4344

4445
public static final FoDScanDescriptor startScanWithDefaults(UnirestInstance unirest, FoDReleaseDescriptor releaseDescriptor,
45-
FoDScanSastStartRequest req, File scanFile) {
46+
FoDScanSastStartRequest req, File scanFile, IProgressWriter progressWriter) {
4647
var relId = releaseDescriptor.getReleaseId();
4748
HttpRequest<?> request = unirest.post(FoDUrls.STATIC_SCAN_START_WITH_DEFAULTS).routeParam("relId", relId)
4849
.queryString("isRemediationScan", req.getIsRemediationScan())
@@ -53,11 +54,11 @@ public static final FoDScanDescriptor startScanWithDefaults(UnirestInstance unir
5354
String truncatedNotes = StringUtils.abbreviate(req.getNotes(), FoDConstants.MAX_NOTES_LENGTH);
5455
request = request.queryString("notes", truncatedNotes);
5556
}
56-
return startScan(unirest, releaseDescriptor, request, scanFile);
57+
return startScan(unirest, releaseDescriptor, request, scanFile, progressWriter);
5758
}
5859

5960
public static final FoDScanDescriptor startScanAdvanced(UnirestInstance unirest, FoDReleaseDescriptor releaseDescriptor, FoDScanSastStartRequest req,
60-
File scanFile) {
61+
File scanFile, IProgressWriter progressWriter) {
6162
var relId = releaseDescriptor.getReleaseId();
6263
HttpRequest<?> request = unirest.post(FoDUrls.STATIC_SCAN_START_ADVANCED).routeParam("relId", relId)
6364
.queryString("entitlementPreferenceType", (req.getEntitlementPreferenceType() != null ?
@@ -77,11 +78,11 @@ public static final FoDScanDescriptor startScanAdvanced(UnirestInstance unirest,
7778
String truncatedNotes = StringUtils.abbreviate(req.getNotes(), FoDConstants.MAX_NOTES_LENGTH);
7879
request = request.queryString("notes", truncatedNotes);
7980
}
80-
return startScan(unirest, releaseDescriptor, request, scanFile);
81+
return startScan(unirest, releaseDescriptor, request, scanFile, progressWriter);
8182
}
8283

83-
private static FoDScanDescriptor startScan(UnirestInstance unirest, FoDReleaseDescriptor releaseDescriptor, HttpRequest<?> request, File scanFile) {
84-
JsonNode response = FoDFileTransferHelper.uploadChunked(unirest, request, scanFile);
84+
private static FoDScanDescriptor startScan(UnirestInstance unirest, FoDReleaseDescriptor releaseDescriptor, HttpRequest<?> request, File scanFile, IProgressWriter progressWriter) {
85+
JsonNode response = FoDFileTransferHelper.uploadChunked(unirest, request, scanFile, progressWriter);
8586
FoDStartScanResponse startScanResponse = JsonHelper.treeToValue(response, FoDStartScanResponse.class);
8687
if (startScanResponse == null || startScanResponse.getScanId() <= 0) {
8788
throw new FcliSimpleException("Unable to retrieve scan id from response when starting Static scan.");

fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/dast_scan/cli/cmd/AbstractFoDDastAutomatedScanSetupCommand.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.fasterxml.jackson.databind.node.ObjectNode;
2424
import com.fortify.cli.common.cli.mixin.CommonOptionMixins;
2525
import com.fortify.cli.common.exception.FcliSimpleException;
26+
import com.fortify.cli.common.progress.cli.mixin.ProgressWriterFactoryMixin;
2627
import com.fortify.cli.fod._common.rest.FoDUrls;
2728
import com.fortify.cli.fod._common.rest.helper.FoDFileTransferHelper;
2829
import com.fortify.cli.fod._common.scan.cli.cmd.AbstractFoDScanSetupCommand;
@@ -45,6 +46,8 @@ public abstract class AbstractFoDDastAutomatedScanSetupCommand extends AbstractF
4546
@Mixin
4647
protected CommonOptionMixins.OptionalFile uploadFileMixin;
4748

49+
@Mixin private ProgressWriterFactoryMixin progressWriterFactory;
50+
4851
// the File Id previously uploaded or uploaded using "uploadFileToUse" below
4952
private int fileId = 0;
5053

@@ -70,13 +73,15 @@ protected FileUploadResult uploadFileToUse(UnirestInstance unirest, String relea
7073
break;
7174
default:
7275
}
73-
JsonNode response = FoDFileTransferHelper.upload(unirest, uploadFileRequest, uploadFileMixin.getFile());
74-
int fileIdToUse = response.get("fileId").intValue();
75-
fileId = fileIdToUse;
76-
ArrayList<String> hosts = response.has("hosts") ?
76+
try (var progressWriter = progressWriterFactory.create()) {
77+
JsonNode response = FoDFileTransferHelper.upload(unirest, uploadFileRequest, uploadFileMixin.getFile(), progressWriter);
78+
int fileIdToUse = response.get("fileId").intValue();
79+
fileId = fileIdToUse;
80+
ArrayList<String> hosts = response.has("hosts") ?
7781
objectMapper.convertValue(response.get("hosts"), new com.fasterxml.jackson.core.type.TypeReference<ArrayList<String>>() {}) :
7882
new ArrayList<>();
79-
return new FileUploadResult(fileIdToUse, hosts);
83+
return new FileUploadResult(fileIdToUse, hosts);
84+
}
8085
}
8186

8287
protected HttpRequest<?> getDastAutomatedUploadFileRequest(UnirestInstance unirest, String releaseId, String dastFileType) {

fcli-core/fcli-fod/src/main/java/com/fortify/cli/fod/mast_scan/cli/cmd/FoDMastScanStartCommand.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.fortify.cli.common.exception.FcliSimpleException;
2525
import com.fortify.cli.common.output.cli.mixin.OutputHelperMixins;
2626
import com.fortify.cli.common.progress.cli.mixin.ProgressWriterFactoryMixin;
27+
import com.fortify.cli.common.progress.helper.IProgressWriter;
2728
import com.fortify.cli.common.util.FcliBuildProperties;
2829
import com.fortify.cli.fod._common.scan.cli.cmd.AbstractFoDScanStartCommand;
2930
import com.fortify.cli.fod._common.scan.cli.mixin.FoDEntitlementFrequencyTypeMixins;
@@ -132,7 +133,9 @@ protected FoDScanDescriptor startScan(UnirestInstance unirest, FoDReleaseDescrip
132133
.scanTool(FcliBuildProperties.INSTANCE.getFcliProjectName())
133134
.scanToolVersion(FcliBuildProperties.INSTANCE.getFcliVersion()).build();
134135

135-
return FoDScanMobileHelper.startScan(unirest, releaseDescriptor, startScanRequest, scanFileMixin.getFile());
136+
try (IProgressWriter progressWriter = progressWriterFactory.create()) {
137+
return FoDScanMobileHelper.startScan(unirest, releaseDescriptor, startScanRequest, scanFileMixin.getFile(), progressWriter);
138+
}
136139
}
137140

138141
private void validateEntitlement(FoDScanConfigMobileDescriptor currentSetup, Integer entitlementIdToUse, String relId, FoDReleaseAssessmentTypeDescriptor atd) {

0 commit comments

Comments
 (0)