public TransformedObject mapPartNumber()

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;
    }