private CompleteMultipartUpload parseCompleteMultipartUploadBody(RetainingAsyncWritableChannel channel)
        throws RestServiceException {
      CompleteMultipartUpload completeMultipartUpload;
      // TODO [s3] sanity check CompleteMultipartUpload, the part number has to be integer.
      try (InputStream inputStream = channel.consumeContentAsInputStream()) {
        completeMultipartUpload = objectMapper.readValue(inputStream, CompleteMultipartUpload.class);
        LOGGER.debug("Parsed CompleteMultipartUpload request {}", completeMultipartUpload);
      } catch (Exception e) {
        throw new RestServiceException("Could not parse xml request body", e, RestServiceErrorCode.BadRequest);
      }
      return completeMultipartUpload;
    }
After {@link SecurityService#processResponse}, call {@code finalCallback}.
@return a {@link Callback} to be used with {@link SecurityService#processResponse}.
ambry-frontend/src/main/java/com/github/ambry/frontend/s3/S3MultipartCompleteUploadHandler.java