/** * Retrieves details (but no data) about multiple objects from a bucket, and sends * {@link GetObjectHeadsEvent} notification events. * * @param bucket * the bucket containing the objects whose details will be retrieved. * @param objects * the objects with details to retrieve. * * @return * true if all the threaded tasks completed successfully, false otherwise. */ public boolean getObjectsHeads(S3Bucket bucket, S3Object[] objects) { String[] objectKeys = new String[objects.length]; for (int i = 0; i < objects.length; i++) { objectKeys[i] = objects[i].getKey(); } return getObjectsHeads(bucket, objectKeys); }
/** * Retrieves details (but no data) about multiple objects from a bucket, and sends * {@link GetObjectHeadsEvent} notification events. * * @param bucket * the bucket containing the objects whose details will be retrieved. * @param objects * the objects with details to retrieve. * * @return * true if all the threaded tasks completed successfully, false otherwise. */ public boolean getObjectsHeads(S3Bucket bucket, S3Object[] objects) { String[] objectKeys = new String[objects.length]; for (int i = 0; i < objects.length; i++) { objectKeys[i] = objects[i].getKey(); } return getObjectsHeads(bucket, objectKeys); }
/** * Retrieves details about objects including metadata etc by invoking the method * {@link S3ServiceMulti#getObjectsHeads}. * * This is generally done as a prelude to some further action, such as * displaying the objects' details or downloading the objects. * The real action occurs in the method <code>s3ServiceEventPerformed</code> for handling * <code>GetObjectHeadsEvent</code> events. * * @param candidateObjects * * @return * true if objects details were successfully retrieved. */ private boolean retrieveObjectsDetails(final S3Object[] candidateObjects) { // Identify which of the candidate objects have incomplete metadata. ArrayList s3ObjectsIncompleteList = new ArrayList(); for (int i = 0; i < candidateObjects.length; i++) { if (!candidateObjects[i].isMetadataComplete()) { s3ObjectsIncompleteList.add(candidateObjects[i]); } } log.debug("Of " + candidateObjects.length + " object candidates for HEAD requests " + s3ObjectsIncompleteList.size() + " are incomplete, performing requests for these only"); final S3Object[] incompleteObjects = (S3Object[]) s3ObjectsIncompleteList .toArray(new S3Object[s3ObjectsIncompleteList.size()]); return s3ServiceMulti.getObjectsHeads(currentSelectedBucket, incompleteObjects); }
/** * Retrieves details about objects including metadata etc by invoking the method * {@link S3ServiceMulti#getObjectsHeads}. * * This is generally done as a prelude to some further action, such as * displaying the objects' details or downloading the objects. * The real action occurs in the method <code>s3ServiceEventPerformed</code> for handling * <code>GetObjectHeadsEvent</code> events. * * @param candidateObjects * * @return * true if objects details were successfully retrieved. */ private boolean retrieveObjectsDetails(final S3Object[] candidateObjects) { // Identify which of the candidate objects have incomplete metadata. ArrayList s3ObjectsIncompleteList = new ArrayList(); for (int i = 0; i < candidateObjects.length; i++) { if (!candidateObjects[i].isMetadataComplete()) { s3ObjectsIncompleteList.add(candidateObjects[i]); } } log.debug("Of " + candidateObjects.length + " object candidates for HEAD requests " + s3ObjectsIncompleteList.size() + " are incomplete, performing requests for these only"); final S3Object[] incompleteObjects = (S3Object[]) s3ObjectsIncompleteList .toArray(new S3Object[s3ObjectsIncompleteList.size()]); return s3ServiceMulti.getObjectsHeads(currentSelectedBucket, incompleteObjects); }
/** * Retrieves details of multiple objects (details only, no data) * * @param bucket * the bucket containing the objects. * @param objectKeys * the key names of the objects to retrieve. * @return * objects populated with the details retrieved. * @throws S3ServiceException */ public S3Object[] getObjectsHeads(final S3Bucket bucket, final String[] objectKeys) throws S3ServiceException { final List objectList = new ArrayList(); S3ServiceEventAdaptor adaptor = new S3ServiceEventAdaptor() { @Override public void s3ServiceEventPerformed(GetObjectHeadsEvent event) { super.s3ServiceEventPerformed(event); if (ServiceEvent.EVENT_IN_PROGRESS == event.getEventCode()) { objectList.addAll(Arrays.asList(event.getCompletedObjects())); } }; }; (new S3ServiceMulti(s3Service, adaptor)).getObjectsHeads(bucket, objectKeys); throwError(adaptor); return (S3Object[]) objectList.toArray(new S3Object[objectList.size()]); }
/** * Retrieves details of multiple objects (details only, no data) * * @param bucket * the bucket containing the objects. * @param objectKeys * the key names of the objects to retrieve. * @return * objects populated with the details retrieved. * @throws S3ServiceException */ public S3Object[] getObjectsHeads(final S3Bucket bucket, final String[] objectKeys) throws S3ServiceException { final List objectList = new ArrayList(); S3ServiceEventAdaptor adaptor = new S3ServiceEventAdaptor() { @Override public void s3ServiceEventPerformed(GetObjectHeadsEvent event) { super.s3ServiceEventPerformed(event); if (ServiceEvent.EVENT_IN_PROGRESS == event.getEventCode()) { objectList.addAll(Arrays.asList(event.getCompletedObjects())); } }; }; (new S3ServiceMulti(s3Service, adaptor)).getObjectsHeads(bucket, objectKeys); throwError(adaptor); return (S3Object[]) objectList.toArray(new S3Object[objectList.size()]); }
@Override public void run() { try { SignatureRequest[] signatureRequests = requestSignedRequests( SignatureRequest.SIGNATURE_TYPE_HEAD, incompleteObjects); if (signatureRequests != null) { String[] signedRequests = new String[signatureRequests.length]; for (int i = 0; i < signedRequests.length; i++) { signedRequests[i] = signatureRequests[i].getSignedUrl(); } s3ServiceMulti.getObjectsHeads(signedRequests); } else { // Listing failed ErrorDialog.showDialog(ownerFrame, null, cockpitLiteProperties.getProperties(), "Sorry, you do not have the permission to view object details", null); } } catch (Exception e) { stopProgressDialog(); log.error("Gatekeeper permissions check failed", e); ErrorDialog.showDialog(ownerFrame, null, cockpitLiteProperties.getProperties(), "Permissions check failed, please try again", e); } }; }).start();
@Override public void run() { try { SignatureRequest[] signatureRequests = requestSignedRequests( SignatureRequest.SIGNATURE_TYPE_HEAD, incompleteObjects); if (signatureRequests != null) { String[] signedRequests = new String[signatureRequests.length]; for (int i = 0; i < signedRequests.length; i++) { signedRequests[i] = signatureRequests[i].getSignedUrl(); } s3ServiceMulti.getObjectsHeads(signedRequests); } else { // Listing failed ErrorDialog.showDialog(ownerFrame, null, cockpitLiteProperties.getProperties(), "Sorry, you do not have the permission to view object details", null); } } catch (Exception e) { stopProgressDialog(); log.error("Gatekeeper permissions check failed", e); ErrorDialog.showDialog(ownerFrame, null, cockpitLiteProperties.getProperties(), "Permissions check failed, please try again", e); } }; }).start();
s3ServiceMulti.getObjectsHeads( selectedBucket, destinationObjects);
s3ServiceMulti.getObjectsHeads( selectedBucket, destinationObjects);