You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ga...@apache.org on 2014/05/28 00:53:23 UTC
git commit: Use HashingInputStream to avoid buffering Payload
Repository: jclouds
Updated Branches:
refs/heads/master 2e942072d -> 0d2c7ed6f
Use HashingInputStream to avoid buffering Payload
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/0d2c7ed6
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/0d2c7ed6
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/0d2c7ed6
Branch: refs/heads/master
Commit: 0d2c7ed6ff3221f3740439b6cfccbdaa2958e604
Parents: 2e94207
Author: Andrew Gaul <ga...@apache.org>
Authored: Mon May 26 20:45:01 2014 -0700
Committer: Andrew Gaul <ga...@apache.org>
Committed: Tue May 27 15:53:06 2014 -0700
----------------------------------------------------------------------
.../internal/FilesystemStorageStrategyImpl.java | 19 ++++++++-----------
1 file changed, 8 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/0d2c7ed6/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java
----------------------------------------------------------------------
diff --git a/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java b/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java
index 7f3c376..79bf48f 100644
--- a/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java
+++ b/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java
@@ -39,7 +39,6 @@ import org.jclouds.filesystem.predicates.validators.FilesystemContainerNameValid
import org.jclouds.filesystem.reference.FilesystemConstants;
import org.jclouds.filesystem.util.Utils;
import org.jclouds.io.Payload;
-import org.jclouds.io.Payloads;
import org.jclouds.logging.Logger;
import org.jclouds.rest.annotations.ParamValidators;
@@ -48,7 +47,9 @@ import com.google.common.base.Throwables;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
-import com.google.common.io.ByteStreams;
+import com.google.common.hash.Hashing;
+import com.google.common.hash.HashingInputStream;
+import com.google.common.io.Closeables;
import com.google.common.io.Files;
/**
@@ -196,17 +197,12 @@ public class FilesystemStorageStrategyImpl implements LocalStorageStrategy {
filesystemContainerNameValidator.validate(containerName);
filesystemBlobKeyValidator.validate(blobKey);
File outputFile = getFileForBlobKey(containerName, blobKey);
+ HashingInputStream his = null;
try {
Files.createParentDirs(outputFile);
- if (payload.getRawContent() instanceof File)
- Files.copy((File) payload.getRawContent(), outputFile);
- else {
- if (!payload.isRepeatable()) {
- payload = Payloads.newPayload(ByteStreams.toByteArray(payload));
- }
- Files.copy(payload, outputFile);
- }
- Payloads.calculateMD5(payload);
+ his = new HashingInputStream(Hashing.md5(), payload.openStream());
+ Files.asByteSink(outputFile).writeFrom(his);
+ payload.getContentMetadata().setContentMD5(his.hash().asBytes());
String eTag = base16().lowerCase().encode(payload.getContentMetadata().getContentMD5());
return eTag;
} catch (IOException ex) {
@@ -217,6 +213,7 @@ public class FilesystemStorageStrategyImpl implements LocalStorageStrategy {
}
throw ex;
} finally {
+ Closeables.closeQuietly(his);
payload.release();
}
}