File tree 3 files changed +31
-0
lines changed
main/java/com/aol/micro/server/s3
test/java/com/aol/micro/server/s3 3 files changed +31
-0
lines changed Original file line number Diff line number Diff line change 1
1
description = ' micro-s3'
2
2
3
3
dependencies {
4
+ compile (" com.aol.simplereact:cyclops-react:$cyclopsReactVersion " )
4
5
compile ' com.amazonaws:aws-java-sdk:' + s3Version
5
6
compile project(' :micro-core' )
6
7
Original file line number Diff line number Diff line change 9
9
import org .springframework .stereotype .Component ;
10
10
11
11
import com .amazonaws .services .s3 .AmazonS3Client ;
12
+ import com .amazonaws .services .s3 .model .DeleteObjectsRequest ;
13
+ import com .amazonaws .services .s3 .model .DeleteObjectsRequest .KeyVersion ;
12
14
import com .amazonaws .services .s3 .model .ListObjectsRequest ;
13
15
import com .amazonaws .services .s3 .model .ObjectListing ;
14
16
import com .amazonaws .services .s3 .model .S3ObjectSummary ;
17
+ import com .aol .cyclops .control .ReactiveSeq ;
15
18
16
19
@ Component
17
20
public class S3Utils {
@@ -35,11 +38,20 @@ public List<S3ObjectSummary> getAllSummaries(ListObjectsRequest req) {
35
38
} while (listing .isTruncated ());
36
39
return result ;
37
40
}
41
+
38
42
/*
39
43
* TODO implement smarter mechanism to reduce number of queries
40
44
*/
41
45
public <T > Stream <T > getSummariesStream (ListObjectsRequest req , Function <S3ObjectSummary , T > processor ) {
42
46
return getAllSummaries (req ).stream ().map (processor );
43
47
}
44
48
49
+ public void delete (String bucketName , List <KeyVersion > objects ) {
50
+ ReactiveSeq .fromList (objects ).grouped (1000 ).forEach (l -> {
51
+ DeleteObjectsRequest req = new DeleteObjectsRequest (bucketName );
52
+ req .setKeys (l .toList ());
53
+ client .deleteObjects (req );
54
+ });
55
+ }
56
+
45
57
}
Original file line number Diff line number Diff line change 6
6
import static org .mockito .Mockito .verify ;
7
7
import static org .mockito .Mockito .when ;
8
8
9
+ import java .util .ArrayList ;
10
+ import java .util .List ;
11
+
9
12
import org .junit .Test ;
10
13
11
14
import com .amazonaws .services .s3 .AmazonS3Client ;
15
+ import com .amazonaws .services .s3 .model .DeleteObjectsRequest .KeyVersion ;
12
16
import com .amazonaws .services .s3 .model .ListObjectsRequest ;
13
17
import com .amazonaws .services .s3 .model .ObjectListing ;
14
18
@@ -54,4 +58,18 @@ public void getSummariesStream() {
54
58
utils .getSummariesStream (new ListObjectsRequest (), s -> s .getKey ());
55
59
verify (objectListing , times (2 )).getObjectSummaries ();
56
60
}
61
+
62
+ @ Test
63
+ public void deleteObjects () {
64
+ AmazonS3Client client = mock (AmazonS3Client .class );
65
+ S3Utils utils = new S3Utils (client );
66
+ List <KeyVersion > keys = new ArrayList <>();
67
+ for (int i = 0 ; i < 2000 ; i ++) {
68
+ keys .add (new KeyVersion ("" ));
69
+ }
70
+
71
+ utils .delete ("" , keys );
72
+
73
+ verify (client , times (2 )).deleteObjects (any ());
74
+ }
57
75
}
You can’t perform that action at this time.
0 commit comments