in genie-client/src/main/java/com/netflix/genie/client/JobClient.java [717:754]
public InputStream getJobOutputFile(
final String jobId,
final String outputFilePath,
@Nullable final Long rangeStart,
@Nullable final Long rangeEnd
) throws IOException, GenieClientException {
if (StringUtils.isEmpty(jobId)) {
throw new IllegalArgumentException("Missing required parameter: jobId.");
}
if (rangeStart != null && rangeStart < ZERO) {
throw new IllegalArgumentException("Range start must be greater than or equal to 0");
}
if (rangeEnd != null && rangeEnd < ZERO) {
throw new IllegalArgumentException("Range end must be greater than or equal to 0");
}
String rangeHeader = null;
if (rangeStart != null || rangeEnd != null) {
if (rangeStart != null && rangeEnd != null) {
if (rangeEnd < rangeStart) {
throw new IllegalArgumentException("Range end must be greater than range start");
}
rangeHeader = "bytes=" + rangeStart + "-" + rangeEnd;
} else if (rangeStart != null) {
rangeHeader = "bytes=" + rangeStart + "-";
} else {
rangeHeader = "bytes=-" + rangeEnd;
}
}
final String pathArg = StringUtils.isEmpty(outputFilePath) ? EMPTY_STRING : outputFilePath;
final ResponseBody body = rangeHeader == null
? this.jobService.getJobOutputFile(jobId, pathArg).execute().body()
: this.jobService.getJobOutputFile(jobId, pathArg, rangeHeader).execute().body();
if (body == null) {
throw new GenieClientException(String.format("No data for %s returned", outputFilePath));
}
return body.byteStream();
}