Exemple #1
0
 /**
  * Calculates and sets {@link Payload#setContentMD5} on the payload.
  *
  * <p>note that this will rebuffer in memory if the payload is not repeatable.
  *
  * @param payload payload to calculate
  * @return new Payload with md5 set.
  * @throws IOException
  */
 public static Payload calculateMD5(Payload payload) throws IOException {
   checkNotNull(payload, "payload");
   if (!payload.isRepeatable()) {
     MutableContentMetadata oldContentMetadata = payload.getContentMetadata();
     Payload oldPayload = payload;
     try {
       payload = newByteArrayPayload(toByteArray(payload));
     } finally {
       oldPayload.release();
     }
     oldContentMetadata.setContentLength(payload.getContentMetadata().getContentLength());
     oldContentMetadata.setContentMD5(payload.getContentMetadata().getContentMD5());
     payload.setContentMetadata(oldContentMetadata);
   }
   payload
       .getContentMetadata()
       .setContentMD5(asByteSource(payload.getInput()).hash(md5()).asBytes());
   return payload;
 }