@Override public int hashCode() { int hashCode = 1; hashCode = 31 * hashCode + Objects.hashCode(key()); hashCode = 31 * hashCode + Objects.hashCode(lastModified()); hashCode = 31 * hashCode + Objects.hashCode(eTag()); hashCode = 31 * hashCode + Objects.hashCode(size()); hashCode = 31 * hashCode + Objects.hashCode(storageClassAsString()); hashCode = 31 * hashCode + Objects.hashCode(owner()); return hashCode; }
@Override public S3Object build() { return new S3Object(this); }
private List<ObjectIdentifier> convertS3ObjectsToObjectIdentifiers(final ListObjectsV2Response listObjectsV2Response, final String prefix) { return listObjectsV2Response.contents() .stream() .filter(o -> o.key() != null && o.key().startsWith(prefix)) .map(o -> ObjectIdentifier.builder().key(o.key()).build()).collect(toList()); } }
@Override @SafeVarargs public final Builder contents(Consumer<S3Object.Builder>... contents) { contents(Stream.of(contents).map(c -> S3Object.builder().applyMutation(c).build()).collect(Collectors.toList())); return this; }
@Test public void shouldListObjectsInBucket() { // given PutObjectRequest putObjectRequest = PutObjectRequest.builder() .bucket("someBucket") .key("someObject") .build(); RequestBody requestBody = RequestBody.fromString("content"); testee.putObject(putObjectRequest, requestBody); // when ListObjectsV2Request listObjectsV2Request = ListObjectsV2Request.builder() .bucket("someBucket") .build(); ListObjectsV2Response listObjectsV2Response = testee.listObjectsV2(listObjectsV2Request); //then assertThat(listObjectsV2Response.contents().size(), is(1)); assertThat(listObjectsV2Response.contents().get(0).key(), is("someObject")); }
@Override @SafeVarargs public final Builder contents(Consumer<S3Object.Builder>... contents) { contents(Stream.of(contents).map(c -> S3Object.builder().applyMutation(c).build()).collect(Collectors.toList())); return this; }
@Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof S3Object)) { return false; } S3Object other = (S3Object) obj; return Objects.equals(key(), other.key()) && Objects.equals(lastModified(), other.lastModified()) && Objects.equals(eTag(), other.eTag()) && Objects.equals(size(), other.size()) && Objects.equals(storageClassAsString(), other.storageClassAsString()) && Objects.equals(owner(), other.owner()); }
@Override public ListObjectsV2Response listObjectsV2(final ListObjectsV2Request listObjectsV2Request) throws S3Exception { final Collection<S3Object> s3Objects = bucketsWithContents.get(listObjectsV2Request.bucket()) .values() .stream() .map(bucketItem -> S3Object.builder() .key(bucketItem.getName()) .size((long) bucketItem.getData().length) .lastModified(bucketItem.getLastModified()) .build()) .collect(Collectors.toList()); return ListObjectsV2Response.builder() .contents(s3Objects) .keyCount(s3Objects.size()) .build(); }
/** * Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be * redacted from this string using a placeholder value. */ @Override public String toString() { return ToString.builder("S3Object").add("Key", key()).add("LastModified", lastModified()).add("ETag", eTag()) .add("Size", size()).add("StorageClass", storageClassAsString()).add("Owner", owner()).build(); }
public <T> Optional<T> getValueForField(String fieldName, Class<T> clazz) { switch (fieldName) { case "Key": return Optional.ofNullable(clazz.cast(key())); case "LastModified": return Optional.ofNullable(clazz.cast(lastModified())); case "ETag": return Optional.ofNullable(clazz.cast(eTag())); case "Size": return Optional.ofNullable(clazz.cast(size())); case "StorageClass": return Optional.ofNullable(clazz.cast(storageClassAsString())); case "Owner": return Optional.ofNullable(clazz.cast(owner())); default: return Optional.empty(); } }