Package org.jets3t.service.model

Examples of org.jets3t.service.model.MultipartPart


          if (byteLength == 0) {
            byteLength = multipartCopyBlockSize;
          }
        }

        MultipartPart copiedPart = s3Service.multipartUploadPartCopy
            (multipartUpload, i + 1, bucket.getName(), srcObject.getKey(),
             null, null, null, null, byteRangeStart,
             byteRangeStart + byteLength - 1, null);
        listedParts.add(copiedPart);
      }
View Full Code Here


        public MultipartPartResultHandler(XMLReader xr) {
            super(xr);
        }

        public MultipartPart getMultipartPart() {
            return new MultipartPart(partNumber, lastModified, etag, size);
        }
View Full Code Here

        StorageBucket bucket = createBucketForTest("testMultipartUploads");
        String bucketName = bucket.getName();

        try {
            // Check stripping of double-quote characters from etag
            MultipartPart testEtagSanitized = new MultipartPart(
                1, new Date(), "\"fakeEtagWithDoubleQuotes\"", 0l);
            assertEquals("fakeEtagWithDoubleQuotes", testEtagSanitized.getEtag());

            // Create 5MB of test data
            int fiveMB = 5 * 1024 * 1024;
            byte[] fiveMBTestData = new byte[fiveMB];
            for (int offset = 0; offset < fiveMBTestData.length; offset++) {
                fiveMBTestData[offset] = (byte) (offset % 256);
            }

            // Define name and String metadata values for multipart upload object
            String objectKey = "multipart-object.txt";
            Map<String, Object> metadata = new HashMap<String, Object>();
            metadata.put("test-md-value", "testing, testing, 123");
            metadata.put("test-timestamp-value", System.currentTimeMillis());

            // Start a multipart upload
            MultipartUpload testMultipartUpload = service.multipartStartUpload(
                bucketName, objectKey, metadata,
                AccessControlList.REST_CANNED_AUTHENTICATED_READ, null);

            assertEquals(bucketName, testMultipartUpload.getBucketName());
            assertEquals(objectKey, testMultipartUpload.getObjectKey());

            // List all ongoing multipart uploads
            List<MultipartUpload> uploads = service.multipartListUploads(bucketName);

            assertTrue("Expected at least one ongoing upload", uploads.size() >= 1);

            // Confirm our newly-created multipart upload is present in listing
            boolean foundNewUpload = false;
            for (MultipartUpload upload: uploads) {
                if (upload.getUploadId().equals(testMultipartUpload.getUploadId())) {
                    foundNewUpload = true;
                }
            }
            assertTrue("Expected to find the new upload in listing", foundNewUpload);

            // Start a second, encrypted multipart upload
            S3Object encryptedMultiPartObject = new S3Object(objectKey + "2");
            encryptedMultiPartObject.setServerSideEncryptionAlgorithm(
                S3Object.SERVER_SIDE_ENCRYPTION__AES256);
            MultipartUpload testMultipartUpload2 =
                service.multipartStartUpload(bucketName, encryptedMultiPartObject);
            assertEquals("AES256",
                testMultipartUpload2.getMetadata().get("x-amz-server-side-encryption"));

            // List multipart uploads with markers -- Find second upload only
            uploads = service.multipartListUploads(bucketName,
                "multipart-object.txt",
                testMultipartUpload.getUploadId(),
                10);
            assertEquals(1, uploads.size());
            assertEquals(objectKey + "2", uploads.get(0).getObjectKey());

            // List multipart uploads with prefix/delimiter constraints
            MultipartUpload testMultipartUpload3 =
                service.multipartStartUpload(bucketName, objectKey + "/delimited", metadata);

            MultipartUploadChunk chunk = service.multipartListUploadsChunked(bucketName,
                "multipart-object", // prefix
                null, // delimiter
                null, null, 1000, true);
            assertEquals("multipart-object", chunk.getPrefix());
            assertEquals(null, chunk.getDelimiter());
            assertEquals(3, chunk.getUploads().length);

            chunk = service.multipartListUploadsChunked(bucketName,
                "multipart-object.txt2", // prefix
                null, // delimiter
                null, null, 1000, true);
            assertEquals("multipart-object.txt2", chunk.getPrefix());
            assertEquals(null, chunk.getDelimiter());
            assertEquals(1, chunk.getUploads().length);

            chunk = service.multipartListUploadsChunked(bucketName,
                "multipart-object", // prefix
                "/", // delimiter
                null, null, 1000, true);
            assertEquals("multipart-object", chunk.getPrefix());
            assertEquals("/", chunk.getDelimiter());
            assertEquals(2, chunk.getUploads().length);
            assertEquals(1, chunk.getCommonPrefixes().length);
            assertEquals("multipart-object.txt/", chunk.getCommonPrefixes()[0]);

            chunk = service.multipartListUploadsChunked(bucketName,
                "multipart-object", // prefix
                null, // delimiter
                null, null,
                1, // Max number of uploads to return per LIST request
                false // Do *not* complete listing, just get first chunk
                );
            assertEquals(1, chunk.getUploads().length);
            assertEquals(0, chunk.getCommonPrefixes().length);

            chunk = service.multipartListUploadsChunked(bucketName,
                "multipart-object", // prefix
                null, // delimiter
                null, null,
                1, // Max number of uploads to return per LIST request
                true // *Do* complete listing, 1 item at a time
                );
            assertEquals(3, chunk.getUploads().length);
            assertEquals(0, chunk.getCommonPrefixes().length);

            // Delete incomplete/unwanted multipart uploads
            service.multipartAbortUpload(testMultipartUpload2);
            service.multipartAbortUpload(testMultipartUpload3);

            // Ensure the incomplete multipart upload has been deleted
            uploads = service.multipartListUploads(bucketName);
            for (MultipartUpload upload: uploads) {
                if (upload.getUploadId().equals(testMultipartUpload2.getUploadId()))
                {
                    fail("Expected multipart upload " + upload.getUploadId()
                        + " to be deleted");
                }
            }

            int partNumber = 0;

            // Upload a first part, must be 5MB+
            S3Object partObject = new S3Object(
                testMultipartUpload.getObjectKey(), fiveMBTestData);
            MultipartPart uploadedPart = service.multipartUploadPart(
                testMultipartUpload, ++partNumber, partObject);
            assertEquals(uploadedPart.getPartNumber().longValue(), partNumber);
            assertEquals(uploadedPart.getEtag(), partObject.getETag());
            assertEquals(uploadedPart.getSize().longValue(), partObject.getContentLength());

            // List multipart parts that have been received by the service
            List<MultipartPart> listedParts = service.multipartListParts(testMultipartUpload);
            assertEquals(listedParts.size(), 1);
            assertEquals(listedParts.get(0).getSize().longValue(), partObject.getContentLength());

            // Upload a second part by copying an object already in S3, must be >= 5 MB
            S3Object objectToCopy = service.putObject(bucketName,
                new S3Object("objectToCopy.txt", fiveMBTestData));
            MultipartPart copiedPart = service.multipartUploadPartCopy(testMultipartUpload,
                ++partNumber, bucketName, objectToCopy.getKey());
            assertEquals(copiedPart.getPartNumber().longValue(), partNumber);
            assertEquals(copiedPart.getEtag(), objectToCopy.getETag());
            // Note: result part from copy operation does *not* include correct part size, due
            // to lack of this info in the CopyPartResult XML response.
            // assertEquals(copiedPart.getSize().longValue(), partObject.getContentLength());

            // List multipart parts that have been received by the service
View Full Code Here

                    object.getKey(), object.getDataInputFile());

                List<MultipartPart> parts = new ArrayList<MultipartPart>();
                int partNumber = 1;
                for (S3Object partObject: partObjects) {
                    MultipartPart part = multipartUploadPart(upload, partNumber, partObject);
                    parts.add(part);
                    partNumber++;
                }

                multipartCompleteUpload(upload, parts);
View Full Code Here

     * @throws S3ServiceException
     */
    public MultipartPart multipartUploadPart(MultipartUpload upload, Integer partNumber,
        S3Object object) throws S3ServiceException
    {
        MultipartPart part = multipartUploadPartImpl(upload.getUploadId(),
            upload.getBucketName(),  partNumber, object);
        upload.addMultipartPartToUploadedList(part);
        return part;
    }
View Full Code Here

        Calendar ifModifiedSince, Calendar ifUnmodifiedSince,
        String[] ifMatchTags, String[] ifNoneMatchTags,
        Long byteRangeStart, Long byteRangeEnd,
        String versionId) throws S3ServiceException
    {
        MultipartPart part = multipartUploadPartCopyImpl(upload.getUploadId(),
            upload.getBucketName(), upload.getObjectKey(), partNumber,
            sourceBucketName, sourceObjectKey,
            ifModifiedSince, ifUnmodifiedSince,
            ifMatchTags, ifNoneMatchTags,
            byteRangeStart, byteRangeEnd, versionId);
View Full Code Here

     * @throws S3ServiceException
     */
    public MultipartPart multipartUploadPartCopy(MultipartUpload upload, Integer partNumber,
        String sourceBucketName, String sourceObjectKey, String versionId) throws S3ServiceException
    {
        MultipartPart part = multipartUploadPartCopyImpl(upload.getUploadId(),
            upload.getBucketName(), upload.getObjectKey(),
            partNumber, sourceBucketName, sourceObjectKey,
            null, null, null, null, null, null, versionId);
        upload.addMultipartPartToUploadedList(part);
        return part;
View Full Code Here

     * @throws S3ServiceException
     */
    public MultipartPart multipartUploadPartCopy(MultipartUpload upload, Integer partNumber,
        String sourceBucketName, String sourceObjectKey) throws S3ServiceException
    {
        MultipartPart part = multipartUploadPartCopyImpl(upload.getUploadId(),
            upload.getBucketName(), upload.getObjectKey(), partNumber,
            sourceBucketName, sourceObjectKey,
            null, null, null, null, null, null, null);
        upload.addMultipartPartToUploadedList(part);
        return part;
View Full Code Here

            // Override any storage class with an empty value, which means don't apply one (Issue #121)
            object.setStorageClass("");
            this.putObjectWithRequestEntityImpl(bucketName, object, requestEntity, requestParameters);

            // Populate part with response data that is accessible via the object's metadata
            return new MultipartPart(partNumber, object.getLastModifiedDate(),
                object.getETag(), object.getContentLength());
        } catch (ServiceException se) {
            throw new S3ServiceException(se);
        }
    }
View Full Code Here

            requestParameters.put("uploadId", String.valueOf(uploadId));

            HttpResponseAndByteCount responseAndByteCount = this.performRestPut(
                targetBucketName, targetObjectKey, metadata, requestParameters, null, false);

            MultipartPart part = getXmlResponseSaxParser()
                .parseMultipartUploadPartCopyResult(
                    new HttpMethodReleaseInputStream(responseAndByteCount.getHttpResponse()));

            // CopyPartResult XML response does not include part number or size info.
            // We can compensate for the lack of part number, but cannot for size...
            return new MultipartPart(partNumber, part.getLastModified(), part.getEtag(), -1l);
        } catch (ServiceException se) {
            throw new S3ServiceException(se);
        }
    }
View Full Code Here

TOP

Related Classes of org.jets3t.service.model.MultipartPart

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.