Skip to content

Commit 20b0856

Browse files
committed
---
yaml --- r: 1089 b: refs/heads/master c: 333a3bb h: refs/heads/master i: 1087: 286899b v: v3
1 parent 8915ff8 commit 20b0856

11 files changed

Lines changed: 30 additions & 322 deletions

File tree

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
---
2-
refs/heads/master: eef07a72ed69b1c224eb1d8fbd278125de243af3
2+
refs/heads/master: 333a3bb13bdf1714e43aea78085fcb29d8488dd9
33
refs/heads/travis: 0fa997e2fc9c6b61b2d91e6d163655aae67d44b6
44
refs/heads/gh-pages: 5a10432ecc75f29812e33a8236c900379509fe99

trunk/gcloud-java-datastore/src/main/java/com/google/gcloud/datastore/testing/LocalGcdHelper.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -524,8 +524,7 @@ private static void extractFile(ZipInputStream zipIn, File filePath) throws IOEx
524524
}
525525
}
526526

527-
public static boolean sendQuitRequest(int port) {
528-
StringBuilder result = new StringBuilder();
527+
public static void sendQuitRequest(int port) {
529528
try {
530529
URL url = new URL("http", "localhost", port, "/_ah/admin/quit");
531530
HttpURLConnection con = (HttpURLConnection) url.openConnection();
@@ -536,14 +535,12 @@ public static boolean sendQuitRequest(int port) {
536535
out.write("".getBytes());
537536
out.flush();
538537
InputStream in = con.getInputStream();
539-
int currByte = 0;
540-
while ((currByte = in.read()) != -1) {
541-
result.append(((char) currByte));
538+
while (in.read() != -1) {
539+
// consume input
542540
}
543541
} catch (IOException ignore) {
544542
// ignore
545543
}
546-
return result.toString().startsWith("Shutting down local server");
547544
}
548545

549546
public void stop() throws IOException, InterruptedException {

trunk/gcloud-java-datastore/src/test/java/com/google/gcloud/datastore/DatastoreTest.java

Lines changed: 2 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import com.google.gcloud.datastore.StructuredQuery.PropertyFilter;
3636
import com.google.gcloud.datastore.testing.LocalGcdHelper;
3737
import com.google.gcloud.spi.DatastoreRpc;
38-
import com.google.gcloud.spi.DatastoreRpc.DatastoreRpcException;
3938
import com.google.gcloud.spi.DatastoreRpc.DatastoreRpcException.Reason;
4039
import com.google.gcloud.spi.DatastoreRpcFactory;
4140

@@ -50,12 +49,9 @@
5049
import org.junit.runners.JUnit4;
5150

5251
import java.io.IOException;
53-
import java.util.ArrayList;
5452
import java.util.Collections;
55-
import java.util.HashSet;
5653
import java.util.Iterator;
5754
import java.util.List;
58-
import java.util.Set;
5955

6056
@RunWith(JUnit4.class)
6157
public class DatastoreTest {
@@ -524,7 +520,7 @@ public void testGet() {
524520
}
525521

526522
@Test
527-
public void testGetArrayNoDeferredResults() {
523+
public void testGetArray() {
528524
datastore.put(ENTITY3);
529525
Iterator<Entity> result =
530526
datastore.fetch(KEY1, Key.builder(KEY1).name("bla").build(), KEY2, KEY3).iterator();
@@ -550,85 +546,7 @@ public void testGetArrayNoDeferredResults() {
550546
// expected - no such property
551547
}
552548
assertFalse(result.hasNext());
553-
}
554-
555-
public void testGetArrayDeferredResults() throws DatastoreRpcException {
556-
Set<Key> requestedKeys = new HashSet<>();
557-
requestedKeys.add(KEY1);
558-
requestedKeys.add(KEY2);
559-
requestedKeys.add(KEY3);
560-
requestedKeys.add(KEY4);
561-
requestedKeys.add(KEY5);
562-
Iterator<Entity> iter = createDatastoreForDeferredLookup().get(KEY1, KEY2, KEY3, KEY4, KEY5);
563-
Set<Key> keysOfFoundEntities = new HashSet<>();
564-
while (iter.hasNext()) {
565-
keysOfFoundEntities.add(iter.next().key());
566-
}
567-
assertEquals(requestedKeys, keysOfFoundEntities);
568-
}
569-
570-
public void testFetchArrayDeferredResults() throws DatastoreRpcException {
571-
List<Entity> foundEntities =
572-
createDatastoreForDeferredLookup().fetch(KEY1, KEY2, KEY3, KEY4, KEY5);
573-
assertEquals(foundEntities.get(0).key(), KEY1);
574-
assertEquals(foundEntities.get(1).key(), KEY2);
575-
assertEquals(foundEntities.get(2).key(), KEY3);
576-
assertEquals(foundEntities.get(3).key(), KEY4);
577-
assertEquals(foundEntities.get(4).key(), KEY5);
578-
assertEquals(foundEntities.size(), 5);
579-
}
580-
581-
private Datastore createDatastoreForDeferredLookup() throws DatastoreRpcException {
582-
List<DatastoreV1.Key> keysPb = new ArrayList<>();
583-
keysPb.add(KEY1.toPb());
584-
keysPb.add(KEY2.toPb());
585-
keysPb.add(KEY3.toPb());
586-
keysPb.add(KEY4.toPb());
587-
keysPb.add(KEY5.toPb());
588-
List<DatastoreV1.LookupRequest> lookupRequests = new ArrayList<>();
589-
lookupRequests.add(DatastoreV1.LookupRequest.newBuilder().addAllKey(keysPb).build());
590-
lookupRequests.add(
591-
DatastoreV1.LookupRequest.newBuilder()
592-
.addKey(keysPb.get(2))
593-
.addKey(keysPb.get(3))
594-
.addKey(keysPb.get(5))
595-
.build());
596-
lookupRequests.add(DatastoreV1.LookupRequest.newBuilder().addKey(keysPb.get(5)).build());
597-
Entity entity4 = Entity.builder(KEY4).set("value", StringValue.of("value")).build();
598-
Entity entity5 = Entity.builder(KEY5).set("value", "value").build();
599-
List<DatastoreV1.LookupResponse> lookupResponses = new ArrayList<>();
600-
lookupResponses.add(
601-
DatastoreV1.LookupResponse.newBuilder()
602-
.addFound(EntityResult.newBuilder().setEntity(ENTITY1.toPb()))
603-
.addFound(EntityResult.newBuilder().setEntity(entity4.toPb()))
604-
.addDeferred(keysPb.get(2))
605-
.addDeferred(keysPb.get(3))
606-
.addDeferred(keysPb.get(5))
607-
.build());
608-
lookupResponses.add(
609-
DatastoreV1.LookupResponse.newBuilder()
610-
.addFound(EntityResult.newBuilder().setEntity(ENTITY3.toPb()))
611-
.addFound(EntityResult.newBuilder().setEntity(entity4.toPb()))
612-
.addDeferred(keysPb.get(5))
613-
.build());
614-
lookupResponses.add(
615-
DatastoreV1.LookupResponse.newBuilder()
616-
.addFound(EntityResult.newBuilder().setEntity(entity5.toPb()))
617-
.build());
618-
DatastoreRpcFactory rpcFactoryMock = EasyMock.createStrictMock(DatastoreRpcFactory.class);
619-
DatastoreRpc rpcMock = EasyMock.createStrictMock(DatastoreRpc.class);
620-
EasyMock.expect(rpcFactoryMock.create(EasyMock.anyObject(DatastoreOptions.class)))
621-
.andReturn(rpcMock);
622-
for (int i = 0; i < lookupRequests.size(); i++) {
623-
EasyMock.expect(rpcMock.lookup(lookupRequests.get(i))).andReturn(lookupResponses.get(i));
624-
}
625-
EasyMock.replay(rpcFactoryMock, rpcMock);
626-
DatastoreOptions options =
627-
this.options.toBuilder()
628-
.retryParams(RetryParams.getDefaultInstance())
629-
.serviceRpcFactory(rpcFactoryMock)
630-
.build();
631-
return DatastoreFactory.instance().get(options);
549+
// TODO(ozarov): construct a test to verify more results
632550
}
633551

634552
@Test

trunk/gcloud-java-datastore/src/test/java/com/google/gcloud/datastore/LocalGcdHelperTest.java

Lines changed: 0 additions & 73 deletions
This file was deleted.

trunk/gcloud-java-storage/src/main/java/com/google/gcloud/storage/BatchResponse.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ public boolean equals(Object obj) {
133133
BatchResponse other = (BatchResponse) obj;
134134
return Objects.equals(deleteResult, other.deleteResult)
135135
&& Objects.equals(updateResult, other.updateResult)
136-
&& Objects.equals(getResult, other.getResult);
136+
&& Objects.equals(updateResult, other.updateResult);
137137
}
138138

139139
/**

trunk/gcloud-java-storage/src/main/java/com/google/gcloud/storage/BlobInfo.java

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,16 @@
2828
import com.google.common.base.MoreObjects;
2929
import com.google.common.collect.ImmutableList;
3030
import com.google.common.collect.ImmutableMap;
31+
import com.google.common.collect.ImmutableSet;
3132
import com.google.common.collect.Lists;
3233

3334
import java.io.Serializable;
3435
import java.math.BigInteger;
36+
import java.util.AbstractMap;
3537
import java.util.List;
3638
import java.util.Map;
3739
import java.util.Objects;
40+
import java.util.Set;
3841

3942
/**
4043
* Google Storage object metadata.
@@ -81,6 +84,14 @@ public StorageObject apply(BlobInfo blobInfo) {
8184
private final String contentLanguage;
8285
private final Integer componentCount;
8386

87+
public static final class ImmutableEmptyMap<K, V> extends AbstractMap<K, V> {
88+
89+
@Override
90+
public Set<Entry<K, V>> entrySet() {
91+
return ImmutableSet.of();
92+
}
93+
}
94+
8495
public static final class Builder {
8596

8697
private BlobId blobId;
@@ -99,7 +110,7 @@ public static final class Builder {
99110
private String md5;
100111
private String crc32c;
101112
private String mediaLink;
102-
private ImmutableMap<String, String> metadata;
113+
private Map<String, String> metadata;
103114
private Long generation;
104115
private Long metageneration;
105116
private Long deleteTime;
@@ -188,7 +199,8 @@ Builder mediaLink(String mediaLink) {
188199
}
189200

190201
public Builder metadata(Map<String, String> metadata) {
191-
this.metadata = metadata != null ? ImmutableMap.copyOf(metadata) : null;
202+
this.metadata = metadata != null ?
203+
ImmutableMap.copyOf(metadata) : Data.<Map>nullOf(ImmutableEmptyMap.class);
192204
return this;
193205
}
194206

@@ -315,7 +327,7 @@ public String mediaLink() {
315327
}
316328

317329
public Map<String, String> metadata() {
318-
return metadata;
330+
return Data.isNull(metadata) ? null : metadata;
319331
}
320332

321333
public Long generation() {

trunk/gcloud-java-storage/src/main/java/com/google/gcloud/storage/Bucket.java

Lines changed: 4 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,10 @@
1919
import static com.google.common.base.Preconditions.checkArgument;
2020
import static com.google.common.base.Preconditions.checkNotNull;
2121

22-
import com.google.common.base.MoreObjects;
2322
import com.google.gcloud.storage.Storage.BlobSourceOption;
2423
import com.google.gcloud.storage.Storage.BlobTargetOption;
25-
import com.google.gcloud.storage.Storage.BlobWriteOption;
2624
import com.google.gcloud.storage.Storage.BucketSourceOption;
2725
import com.google.gcloud.storage.Storage.BucketTargetOption;
28-
import java.io.InputStream;
2926

3027
import java.util.ArrayList;
3128
import java.util.Collections;
@@ -175,43 +172,17 @@ public List<Blob> get(String blobName1, String blobName2, String... blobNames) {
175172
}
176173

177174
/**
178-
* Creates a new blob in this bucket. Direct upload is used to upload {@code content}.
179-
* For large content, {@link Blob#writer(com.google.gcloud.storage.Storage.BlobWriteOption...)}
180-
* is recommended as it uses resumable upload. MD5 and CRC32C hashes of {@code content} are
181-
* computed and used for validating transferred data.
175+
* Creates a new blob in this bucket.
182176
*
183177
* @param blob a blob name
184178
* @param content the blob content
185-
* @param contentType the blob content type. If {@code null} then
186-
* {@value com.google.gcloud.storage.Storage#DEFAULT_CONTENT_TYPE} is used.
187179
* @param options options for blob creation
188180
* @return a complete blob information.
189181
* @throws StorageException upon failure
190182
*/
191-
public Blob create(String blob, byte[] content, String contentType, BlobTargetOption... options) {
192-
BlobInfo blobInfo = BlobInfo.builder(BlobId.of(info.name(), blob))
193-
.contentType(MoreObjects.firstNonNull(contentType, Storage.DEFAULT_CONTENT_TYPE)).build();
194-
return new Blob(storage, storage.create(blobInfo, content, options));
195-
}
196-
197-
/**
198-
* Creates a new blob in this bucket. Direct upload is used to upload {@code content}.
199-
* For large content, {@link Blob#writer(com.google.gcloud.storage.Storage.BlobWriteOption...)}
200-
* is recommended as it uses resumable upload.
201-
*
202-
* @param blob a blob name
203-
* @param content the blob content as a stream
204-
* @param contentType the blob content type. If {@code null} then
205-
* {@value com.google.gcloud.storage.Storage#DEFAULT_CONTENT_TYPE} is used.
206-
* @param options options for blob creation
207-
* @return a complete blob information.
208-
* @throws StorageException upon failure
209-
*/
210-
public Blob create(String blob, InputStream content, String contentType,
211-
BlobWriteOption... options) {
212-
BlobInfo blobInfo = BlobInfo.builder(BlobId.of(info.name(), blob))
213-
.contentType(MoreObjects.firstNonNull(contentType, Storage.DEFAULT_CONTENT_TYPE)).build();
214-
return new Blob(storage, storage.create(blobInfo, content, options));
183+
Blob create(String blob, byte[] content, BlobTargetOption... options) {
184+
BlobId blobId = BlobId.of(info.name(), blob);
185+
return new Blob(storage, storage.create(BlobInfo.builder(blobId).build(), content, options));
215186
}
216187

217188
/**

trunk/gcloud-java-storage/src/main/java/com/google/gcloud/storage/Storage.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,6 @@
4646
*/
4747
public interface Storage extends Service<StorageOptions> {
4848

49-
public static final String DEFAULT_CONTENT_TYPE = "application/octet-stream";
50-
5149
enum PredefinedAcl {
5250
AUTHENTICATED_READ("authenticatedRead"),
5351
ALL_AUTHENTICATED_USERS("allAuthenticatedUsers"),

0 commit comments

Comments
 (0)