/** * A convenience method to download multiple objects to pre-existing * output streams, which is particularly useful for downloading objects to files. * <p> * The maximum number of threads is controlled by the JetS3t configuration property * <tt>threaded-service.max-thread-count</tt>. * <p> * If the JetS3t configuration property <tt>downloads.restoreLastModifiedDate</tt> is set * to true, any files created by this method will have their last modified date set according * to the value of the object's {@link Constants#METADATA_JETS3T_LOCAL_FILE_DATE} metadata * item. * * @param bucketName * name of the bucket containing the objects * @param downloadPackages * an array of download packages containing the object to be downloaded, and able to build * an output stream where the object's contents will be written to. * * @return * true if all the threaded tasks completed successfully, false otherwise. * @throws ServiceException */ public boolean downloadObjects(final String bucketName, final DownloadPackage[] downloadPackages) throws ServiceException { return downloadObjects(bucketName, downloadPackages, null); }
@Override public void fireCancelEvent() { success[0] = false; fireServiceEvent(ListObjectsEvent.newCancelledEvent(uniqueOperationId)); } @Override
/** * Retrieves multiple objects (details and data) from a bucket, and sends * {@link GetObjectsEvent} notification events. * <p> * The maximum number of threads is controlled by the JetS3t configuration property * <tt>threaded-service.max-thread-count</tt>. * * @param bucketName * the bucket containing the objects. * @param objectKeys * the key names of the objects to retrieve. * * @return * true if all the threaded tasks completed successfully, false otherwise. */ public boolean getObjects(final String bucketName, final String[] objectKeys) { return getObjects(bucketName, objectKeys, null); }
new ArrayList<StorageObject>(objectsWithoutMetadata.length); final ServiceException serviceExceptions[] = new ServiceException[1]; ThreadedStorageService threadedService = new ThreadedStorageService(service, new StorageServiceEventAdaptor() { @Override threadedService.addServiceEventListener(eventListener); threadedService.getObjectsHeads(bucketName, objectsForMetadataRetrieval.toArray(new StorageObject[] {})); if (serviceExceptions[0] != null) {
DownloadPackage[] downloadPackages = downloadPackagesList.toArray( new DownloadPackage[downloadPackagesList.size()]); (new ThreadedStorageService(storageService, serviceEventAdaptor)).downloadObjects( bucket.getName(), downloadPackages); serviceEventAdaptor.throwErrorIfPresent(); StorageObject[] objects = objectsMoved.values().toArray( new StorageObject[objectsMoved.size()]); (new ThreadedStorageService(storageService, serviceEventAdaptor)).deleteObjects( bucket.getName(), objects); serviceEventAdaptor.throwErrorIfPresent();
(new ThreadedStorageService(storageService, serviceEventAdaptor)).putObjects( bucket.getName(), objectsForStandardPut.toArray(new StorageObject[] {})); serviceEventAdaptor.throwErrorIfPresent(); (new ThreadedStorageService(storageService, serviceEventAdaptor)).deleteObjects(bucket.getName(), objects); serviceEventAdaptor.throwErrorIfPresent();
/** * A convenience method to download multiple objects from S3 to pre-existing output streams, which * is particularly useful for downloading objects to files. * * @param bucketName * name of the bucket containing the objects * @param downloadPackages * an array of download package objects that manage the output of data for an object. * @param errorPermitter * callback handler to decide which errors will cause a {@link ThrowableBearingStorageObject} * to pass through the system instead of raising an exception and aborting the operation. * * @throws ServiceException */ public void downloadObjects(String bucketName, final DownloadPackage[] downloadPackages, ErrorPermitter errorPermitter) throws ServiceException { StorageServiceEventAdaptor adaptor = new StorageServiceEventAdaptor(); (new ThreadedStorageService(service, adaptor)).downloadObjects( bucketName, downloadPackages, errorPermitter); throwError(adaptor); }
/** * Creates multiple buckets. * * @param bucketNames * name of the buckets to create. * @return * the created buckets. * @throws ServiceException */ public StorageBucket[] createBuckets(final String[] bucketNames) throws ServiceException { final List<StorageBucket> bucketList = new ArrayList<StorageBucket>(); StorageServiceEventAdaptor adaptor = new StorageServiceEventAdaptor() { @Override public void event(CreateBucketsEvent event) { super.event(event); if (ServiceEvent.EVENT_IN_PROGRESS == event.getEventCode()) { bucketList.addAll(Arrays.asList(event.getCreatedBuckets())); } }; }; (new ThreadedStorageService(service, adaptor)).createBuckets(bucketNames); throwError(adaptor); return bucketList.toArray(new StorageBucket[bucketList.size()]); }
/** * Deletes multiple objects * * @param bucketName * name of the bucket containing the objects to delete. * @param objects * the objects to delete. * @throws ServiceException */ public void deleteObjects(String bucketName, final StorageObject[] objects) throws ServiceException { final List objectList = new ArrayList(); StorageServiceEventAdaptor adaptor = new StorageServiceEventAdaptor() { @Override public void event(DeleteObjectsEvent event) { super.event(event); if (ServiceEvent.EVENT_IN_PROGRESS == event.getEventCode()) { objectList.addAll(Arrays.asList(event.getDeletedObjects())); } }; }; (new ThreadedStorageService(service, adaptor)).deleteObjects(bucketName, objects); throwError(adaptor); }
/** * Retrieves Access Control List (ACL) settings for multiple objects. * * @param bucketName * name of the bucket containing the objects. * @param objects * the objects whose ACLs will be retrieved. * @return * objects including the ACL information retrieved. * @throws ServiceException */ public StorageObject[] getObjectACLs(String bucketName, final StorageObject[] objects) throws ServiceException { final List<StorageObject> objectList = new ArrayList<StorageObject>(); StorageServiceEventAdaptor adaptor = new StorageServiceEventAdaptor() { @Override public void event(LookupACLEvent event) { super.event(event); if (ServiceEvent.EVENT_IN_PROGRESS == event.getEventCode()) { objectList.addAll(Arrays.asList(event.getObjectsWithACL())); } }; }; (new ThreadedStorageService(service, adaptor)).getObjectACLs(bucketName, objects); throwError(adaptor); return objectList.toArray(new StorageObject[objectList.size()]); }
/** * Updates/sets Access Control List (ACL) settings for multiple objects. * * @param bucketName * name of the bucket containing the objects. * @param objects * objects containing ACL settings that will be updated/set. * @return * objects whose ACL settings were updated/set. * @throws ServiceException */ public StorageObject[] putACLs(String bucketName, final StorageObject[] objects) throws ServiceException { final List<StorageObject> objectList = new ArrayList<StorageObject>(); StorageServiceEventAdaptor adaptor = new StorageServiceEventAdaptor() { @Override public void event(UpdateACLEvent event) { super.event(event); if (ServiceEvent.EVENT_IN_PROGRESS == event.getEventCode()) { objectList.addAll(Arrays.asList(event.getObjectsWithUpdatedACL())); } }; }; (new ThreadedStorageService(service, adaptor)).putACLs(bucketName, objects); throwError(adaptor); return objectList.toArray(new StorageObject[objectList.size()]); }
/** * Creates/uploads multiple objects. * * @param bucketName * the bucket where objects will be stored. * @param objects * the objects to create/upload. * @return * the created/uploaded objects. * @throws ServiceException */ public StorageObject[] putObjects(String bucketName, final StorageObject[] objects) throws ServiceException { final List<StorageObject> objectList = new ArrayList<StorageObject>(); StorageServiceEventAdaptor adaptor = new StorageServiceEventAdaptor() { @Override public void event(CreateObjectsEvent event) { super.event(event); if (ServiceEvent.EVENT_IN_PROGRESS == event.getEventCode()) { objectList.addAll(Arrays.asList(event.getCreatedObjects())); } }; }; (new ThreadedStorageService(service, adaptor)).putObjects(bucketName, objects); throwError(adaptor); return objectList.toArray(new StorageObject[objectList.size()]); }
(new ThreadedStorageService(service, adaptor)).getObjectsHeads( bucketName, objectKeys, errorPermitter); throwError(adaptor);
(new ThreadedStorageService(service, adaptor)).copyObjects(sourceBucketName, destinationBucketName, sourceObjectKeys, destinationObjects, replaceMetadata); throwError(adaptor);
/** * Retrieves details (but no data) about multiple objects from a bucket, and sends * {@link GetObjectHeadsEvent} notification events. * <p> * The maximum number of threads is controlled by the JetS3t configuration property * <tt>threaded-service.admin-max-thread-count</tt>. * * @param bucketName * name of the bucket containing the objects. * @param objectKeys * the key names of the objects with details to retrieve. * * @return * true if all the threaded tasks completed successfully, false otherwise. */ public boolean getObjectsHeads(final String bucketName, final String[] objectKeys) { return getObjectsHeads(bucketName, objectKeys, null); }
/** * Deletes multiple objects from a bucket, and sends {@link DeleteObjectsEvent} notification events. * <p> * The maximum number of threads is controlled by the JetS3t configuration property * <tt>threaded-service.admin-max-thread-count</tt>. * * @param bucketName * name of the bucket containing objects to delete * @param objectKeys * key names of objects to delete * * @return * true if all the threaded tasks completed successfully, false otherwise. */ public boolean deleteObjects(final String bucketName, String[] objectKeys) { StorageObject objects[] = new StorageObject[objectKeys.length]; for (int i = 0; i < objects.length; i++) { objects[i] = new StorageObject(objectKeys[i]); } return this.deleteObjects(bucketName, objects); }
addServiceEventListener(listener); this.sleepTime = threadSleepTimeMS;
final ThreadedStorageService threadedService = new ThreadedStorageService(service, new StorageServiceEventAdaptor() { @Override
new ArrayList<StorageObject>(objectsWithoutMetadata.length); final ServiceException serviceExceptions[] = new ServiceException[1]; ThreadedStorageService threadedService = new ThreadedStorageService(service, new StorageServiceEventAdaptor() { @Override threadedService.addServiceEventListener(eventListener); threadedService.getObjectsHeads(bucketName, objectsForMetadataRetrieval.toArray(new StorageObject[] {})); if (serviceExceptions[0] != null) {
DownloadPackage[] downloadPackages = downloadPackagesList.toArray( new DownloadPackage[downloadPackagesList.size()]); (new ThreadedStorageService(storageService, serviceEventAdaptor)).downloadObjects( bucket.getName(), downloadPackages); serviceEventAdaptor.throwErrorIfPresent(); StorageObject[] objects = objectsMoved.values().toArray( new StorageObject[objectsMoved.size()]); (new ThreadedStorageService(storageService, serviceEventAdaptor)).deleteObjects( bucket.getName(), objects); serviceEventAdaptor.throwErrorIfPresent();