Optimize MultiBlobInputStream.read()
Previously this allocated a byte array for every call.
diff --git a/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java b/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
index e8d90e0..20f5fc2 100644
--- a/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
+++ b/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
@@ -1010,12 +1010,21 @@
@Override
public int read() throws IOException {
- byte[] b = new byte[1];
- int result = read(b, 0, b.length);
- if (result == -1) {
- return -1;
+ while (true) {
+ if (current == null) {
+ if (!blobs.hasNext()) {
+ return -1;
+ }
+ current = blobs.next().getPayload().openStream();
+ }
+ int result = current.read();
+ if (result == -1) {
+ current.close();
+ current = null;
+ continue;
+ }
+ return result & 0x000000FF;
}
- return b[0] & 0x000000FF;
}
@Override