com.amazonaws.services.s3.model.PutObjectRequest#getKey ( )源码实例Demo

下面列出了com.amazonaws.services.s3.model.PutObjectRequest#getKey ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: crate   文件: MockAmazonS3.java
@Override
public PutObjectResult putObject(final PutObjectRequest request) throws AmazonClientException {
    assertThat(request.getBucketName(), equalTo(bucket));
    assertThat(request.getMetadata().getSSEAlgorithm(), serverSideEncryption ? equalTo("AES256") : nullValue());
    assertThat(request.getCannedAcl(), notNullValue());
    assertThat(request.getCannedAcl().toString(), cannedACL != null ? equalTo(cannedACL) : equalTo("private"));
    assertThat(request.getStorageClass(), storageClass != null ? equalTo(storageClass) : equalTo("STANDARD"));


    final String blobName = request.getKey();
    final ByteArrayOutputStream out = new ByteArrayOutputStream();
    try {
        Streams.copy(request.getInputStream(), out);
        blobs.put(blobName, out.toByteArray());
    } catch (IOException e) {
        throw new AmazonClientException(e);
    }
    return new PutObjectResult();
}
 
@Test
public void writeObjectToCsvSuccess() throws IOException{
    String testSrcBucket = "testSrcBucket";
    String testDestBucketName = "testDestBucketName";
    String testDestPrefix = "testDestPrefix";
    String testFileSchema = "Bucket, Key, Versionid, IsLatest, IsDeleteMaker, Size, LastModifiedDate," +
            "ETag, StorageClass, IsMultipartUploaded, ReplicationStatus";
    InventoryManifest testInventoryManifest = buildInventoryManifest(testFileSchema);
    List<InventoryReportLine> testInventoryReportLine = buildInventoryReportStorgaeList();
    InventoryReportLineWriter testCsvWriter = new InventoryReportLineWriter(mockS3Client, testDestBucketName, testDestPrefix,
            testSrcBucket, testInventoryManifest);
    when(mockS3Client.putObject(putObjectRequestCaptor.capture())).thenReturn(null);
    InventoryManifest.Locator testLocator = testCsvWriter.writeCsvFile(testInventoryReportLine);
    PutObjectRequest request = putObjectRequestCaptor.getValue();

    // Test if bucketName and outputInventoryReportKey match in args
    assertThat(request.getBucketName(), is("testDestBucketName"));
    String actualKey = request.getKey();
    List<String> keyList = Arrays.asList(actualKey.split("\\s*/\\s*"));
    assertThat(keyList.get(0), is("testDestPrefix"));
    assertThat(keyList.get(1), is("testSrcBucket"));
    assertThat(keyList.get(2), is("data"));

    // Test if the inputStream match when put object to S3
    byte[] actualByteArray = IOUtils.toByteArray(request.getInputStream());
    String actualInventoryReportString = IOUtils.toString(new GZIPInputStream(
            new ByteArrayInputStream(actualByteArray)));
    String expectedInventoryReportString =
            "testBucket1,testKey1,testVersionId1,testIsLatest1,testIsDeleteMaker1,testSize1,testLastModifiedDate1," +
            "testETag1,testStorage1,testMultiPartUploaded1,testReplicationStatus1\n" +
            "testBucket2,testKey2,testVersionId2,testIsLatest2,testIsDeleteMaker2,testSize2,testLastModifiedDate2," +
            "testETag2,testStorage2,testMultiPartUploaded2,testReplicationStatus2\n";
    assertThat(actualInventoryReportString, is(expectedInventoryReportString));

    // Test if the metaData match when put object to S3
    long expectedMetaDataLength = actualByteArray.length;
    assertThat(request.getMetadata().getContentLength(), is(expectedMetaDataLength));

    // Test if the return result of writeCsvFile() match the expected one
    InventoryManifest.Locator expectedLocator = new InventoryManifest.Locator();
    expectedLocator.setKey(actualKey);
    long expectedSize = actualByteArray.length;
    expectedLocator.setSize(expectedSize);
    String expectedChecksum = DigestUtils.md5Hex(actualByteArray);
    expectedLocator.setMD5checksum(expectedChecksum);
    assertThat(testLocator, is(expectedLocator));
}