in function/java11/src/main/java/com/amazon/s3objectlambda/transform/PartNumberMapper.java [15:42]
public TransformedObject mapPartNumber(String partNumber, byte[] responseObjectByteArray) {
double objectLength;
TransformedObject responseObject = new TransformedObject();
objectLength = responseObjectByteArray.length;
double totalParts = Math.ceil(objectLength / this.partSize);
int requestedPart;
try {
requestedPart = Integer.parseInt(partNumber);
} catch (NumberFormatException nfe) {
return ResponseUtil.getErrorResponse("Invalid part number.", Error.INVALID_PART);
}
if (requestedPart > totalParts || requestedPart <= 0) {
return ResponseUtil.getErrorResponse(String.format("Cannot specify part number: %s. " +
"Use part number from 1 to %s.", requestedPart, totalParts), Error.INVALID_PART);
}
int partStart = (requestedPart - 1) * this.partSize;
int partEnd = (int) Math.min(partStart + this.partSize, objectLength);
byte[] objectPart = Arrays.copyOfRange(responseObjectByteArray, partStart, partEnd);
responseObject.setHasError(false);
responseObject.setObjectResponse(objectPart);
return responseObject;
}