code: private Response listParts(final String bucket, final String object, final long uploadId) {
      return S3RestUtils.call(bucket, new S3RestUtils.RestCallable<ListPartsResult>() {
        @Override
        public ListPartsResult call() throws S3Exception {
          String bucketPath = parseBucketPath(AlluxioURI.SEPARATOR + bucket);
          checkBucketIsAlluxioDirectory(bucketPath);
  
          AlluxioURI tmpDir = new AlluxioURI(
              S3RestUtils.getMultipartTemporaryDirForObject(bucketPath, object));
          checkUploadId(tmpDir, uploadId);
  
          try {
            List<URIStatus> statuses = mFileSystem.listStatus(tmpDir);
            Collections.sort(statuses, new URIStatusNameComparator());
  
            List<ListPartsResult.Part> parts = new ArrayList<>();
            for (URIStatus status : statuses) {
              parts.add(ListPartsResult.Part.fromURIStatus(status));
            }
  
            ListPartsResult result = new ListPartsResult();
            result.setBucket(bucketPath);
            result.setKey(object);
            result.setUploadId(Long.toString(uploadId));
            result.setParts(parts);
            return result;
          } catch (Exception e) {
            throw toObjectS3Exception(e, tmpDir.getPath());
          }
        }
      });
    }
docs: TODO(cc): support paging during listing parts, currently, all parts are returned at once.