コード例 #1
0
  @Override
  public PutObjectResult putObject(PutObjectRequest req)
      throws AmazonClientException, AmazonServiceException {
    if (!multipartUpload) return super.putObject(req);

    final long contentLen = TransferManagerUtils.getContentLength(req);

    String tempFilename = req.getKey() + ".tmp";
    String origFilename = req.getKey();

    req.setKey(tempFilename);

    XProgressListener progressListener = new XProgressListener();

    req.setProgressListener(new ProgressListenerChain(progressListener));

    progressListener.setContentLen(contentLen);
    progressListener.setUpload(transferManager.upload(req));

    try {
      progressListener.getUpload().waitForCompletion();
    } catch (InterruptedException e) {
      throw new AmazonClientException(e.getMessage(), e);
    }

    CopyObjectRequest copyReq =
        new CopyObjectRequest(req.getBucketName(), tempFilename, req.getBucketName(), origFilename);

    copyObject(copyReq);

    deleteObject(new DeleteObjectRequest(req.getBucketName(), tempFilename));

    return null;
  }
コード例 #2
0
 /**
  * Updates put request to store the specified instruction object in S3.
  *
  * @param request The put request for the original object to be stored in S3.
  * @param cekMaterial The instruction object to be stored in S3.
  * @return A put request to store the specified instruction object in S3.
  */
 protected final PutObjectRequest upateInstructionPutRequest(
     PutObjectRequest request, ContentCryptoMaterial cekMaterial) {
   byte[] bytes = cekMaterial.toJsonString().getBytes(UTF8);
   InputStream is = new ByteArrayInputStream(bytes);
   ObjectMetadata metadata = request.getMetadata();
   if (metadata == null) {
     metadata = new ObjectMetadata();
     request.setMetadata(metadata);
   }
   // Set the content-length of the upload
   metadata.setContentLength(bytes.length);
   // Set the crypto instruction file header
   metadata.addUserMetadata(Headers.CRYPTO_INSTRUCTION_FILE, "");
   // Update the instruction request
   request.setKey(request.getKey() + INSTRUCTION_SUFFIX);
   request.setMetadata(metadata);
   request.setInputStream(is);
   request.setFile(null);
   return request;
 }
コード例 #3
0
  /**
   * Creates a put request to store the specified instruction object in S3.
   *
   * @param request The put request for the original object to be stored in S3.
   * @param instruction The instruction object to be stored in S3.
   * @return A put request to store the specified instruction object in S3.
   * @deprecated no longer used and will be removed in the future
   */
  @Deprecated
  public static PutObjectRequest createInstructionPutRequest(
      PutObjectRequest request, EncryptionInstruction instruction) {
    JSONObject instructionJSON = convertInstructionToJSONObject(instruction);
    byte[] instructionBytes = instructionJSON.toString().getBytes(StringUtils.UTF8);
    InputStream instructionInputStream = new ByteArrayInputStream(instructionBytes);

    ObjectMetadata metadata = request.getMetadata();

    // Set the content-length of the upload
    metadata.setContentLength(instructionBytes.length);

    // Set the crypto instruction file header
    metadata.addUserMetadata(Headers.CRYPTO_INSTRUCTION_FILE, "");

    // Update the instruction request
    request.setKey(request.getKey() + INSTRUCTION_SUFFIX);
    request.setMetadata(metadata);
    request.setInputStream(instructionInputStream);

    return request;
  }