1 package org.kuali.maven.mojo.s3; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import org.apache.commons.lang.StringUtils; 7 import org.kuali.common.threads.ElementHandler; 8 import org.kuali.common.threads.ListIteratorContext; 9 import org.slf4j.Logger; 10 import org.slf4j.LoggerFactory; 11 12 import com.amazonaws.services.s3.AmazonS3Client; 13 import com.amazonaws.services.s3.model.ListObjectsRequest; 14 import com.amazonaws.services.s3.model.ObjectListing; 15 16 public class ListObjectsContextHandler implements ElementHandler<ListObjectsContext> { 17 private final Logger logger = LoggerFactory.getLogger(ListObjectsContextHandler.class); 18 private final Object mutex = new Object(); 19 20 List<ObjectListing> objectListings; 21 22 @Override 23 public void handleElement(ListIteratorContext<ListObjectsContext> context, int index, ListObjectsContext element) { 24 S3BucketContext bucketContext = element.getBucketContext(); 25 AmazonS3Client client = bucketContext.getClient(); 26 ListObjectsRequest request = element.getRequest(); 27 request.getPrefix(); 28 logger.debug("[Thread:" + lpad(context.getId()) + ", Element:" + lpad(index) + "] " + request.getPrefix()); 29 ObjectListing listing = client.listObjects(request); 30 synchronized (mutex) { 31 if (objectListings == null) { 32 objectListings = new ArrayList<ObjectListing>(); 33 } 34 objectListings.add(listing); 35 } 36 } 37 38 protected String lpad(int i) { 39 return StringUtils.leftPad(i + "", 3, " "); 40 } 41 42 public List<ObjectListing> getObjectListings() { 43 return objectListings; 44 } 45 46 public void setObjectListings(List<ObjectListing> objectListings) { 47 this.objectListings = objectListings; 48 } 49 50 }