Skip to content

Commit abb421e

Browse files
committed
Merge pull request #185 from mziccard/fix-to-from-pb
Add null checks to fromPb in BucketInfo and BlobInfo, updated tests
2 parents 23ebbec + 90dd070 commit abb421e

File tree

4 files changed

+73
-30
lines changed

4 files changed

+73
-30
lines changed

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

Lines changed: 43 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -441,23 +441,49 @@ public static Builder builder(String bucket, String name) {
441441
}
442442

443443
static BlobInfo fromPb(StorageObject storageObject) {
444-
Builder builder = new Builder()
445-
.bucket(storageObject.getBucket())
446-
.cacheControl(storageObject.getCacheControl())
447-
.contentEncoding(storageObject.getContentEncoding())
448-
.crc32c(storageObject.getCrc32c())
449-
.contentType(storageObject.getContentType())
450-
.generation(storageObject.getGeneration())
451-
.md5(storageObject.getMd5Hash())
452-
.mediaLink(storageObject.getMediaLink())
453-
.metageneration(storageObject.getMetageneration())
454-
.name(storageObject.getName())
455-
.contentDisposition(storageObject.getContentDisposition())
456-
.componentCount(storageObject.getComponentCount())
457-
.contentLanguage(storageObject.getContentLanguage())
458-
.etag(storageObject.getEtag())
459-
.id(storageObject.getId())
460-
.selfLink(storageObject.getSelfLink());
444+
Builder builder = new Builder().bucket(storageObject.getBucket()).name(storageObject.getName());
445+
if (storageObject.getCacheControl() != null) {
446+
builder.cacheControl(storageObject.getCacheControl());
447+
}
448+
if (storageObject.getContentEncoding() != null) {
449+
builder.contentEncoding(storageObject.getContentEncoding());
450+
}
451+
if (storageObject.getCrc32c() != null) {
452+
builder.crc32c(storageObject.getCrc32c());
453+
}
454+
if (storageObject.getContentType() != null) {
455+
builder.contentType(storageObject.getContentType());
456+
}
457+
if (storageObject.getGeneration() != null) {
458+
builder.generation(storageObject.getGeneration());
459+
}
460+
if (storageObject.getMd5Hash() != null) {
461+
builder.md5(storageObject.getMd5Hash());
462+
}
463+
if (storageObject.getMediaLink() != null) {
464+
builder.mediaLink(storageObject.getMediaLink());
465+
}
466+
if (storageObject.getMetageneration() != null) {
467+
builder.metageneration(storageObject.getMetageneration());
468+
}
469+
if (storageObject.getContentDisposition() != null) {
470+
builder.contentDisposition(storageObject.getContentDisposition());
471+
}
472+
if (storageObject.getComponentCount() != null) {
473+
builder.componentCount(storageObject.getComponentCount());
474+
}
475+
if (storageObject.getContentLanguage() != null) {
476+
builder.contentLanguage(storageObject.getContentLanguage());
477+
}
478+
if (storageObject.getEtag() != null) {
479+
builder.etag(storageObject.getEtag());
480+
}
481+
if (storageObject.getId() != null) {
482+
builder.id(storageObject.getId());
483+
}
484+
if (storageObject.getSelfLink() != null) {
485+
builder.selfLink(storageObject.getSelfLink());
486+
}
461487
if (storageObject.getMetadata() != null) {
462488
builder.metadata(storageObject.getMetadata());
463489
}

gcloud-java-storage/src/main/java/com/google/gcloud/storage/BucketInfo.java

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -692,14 +692,25 @@ public static Builder builder(String name) {
692692
}
693693

694694
static BucketInfo fromPb(com.google.api.services.storage.model.Bucket bucketPb) {
695-
Builder builder = new Builder()
696-
.name(bucketPb.getName())
697-
.id(bucketPb.getId())
698-
.etag(bucketPb.getEtag())
699-
.metageneration(bucketPb.getMetageneration())
700-
.createTime(bucketPb.getTimeCreated().getValue())
701-
.location(Location.of(bucketPb.getLocation()))
702-
.selfLink(bucketPb.getSelfLink());
695+
Builder builder = new Builder().name(bucketPb.getName());
696+
if (bucketPb.getId() != null) {
697+
builder.id(bucketPb.getId());
698+
}
699+
if (bucketPb.getEtag() != null) {
700+
builder.etag(bucketPb.getEtag());
701+
}
702+
if (bucketPb.getMetageneration() != null) {
703+
builder.metageneration(bucketPb.getMetageneration());
704+
}
705+
if (bucketPb.getSelfLink() != null) {
706+
builder.selfLink(bucketPb.getSelfLink());
707+
}
708+
if (bucketPb.getTimeCreated() != null) {
709+
builder.createTime(bucketPb.getTimeCreated().getValue());
710+
}
711+
if (bucketPb.getLocation() != null) {
712+
builder.location(Location.of(bucketPb.getLocation()));
713+
}
703714
if (bucketPb.getStorageClass() != null) {
704715
builder.storageClass(StorageClass.of(bucketPb.getStorageClass()));
705716
}

gcloud-java-storage/src/test/java/com/google/gcloud/storage/BlobInfoTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,5 +151,7 @@ private void compareBlobs(BlobInfo expected, BlobInfo value) {
151151
@Test
152152
public void testToPbAndFromPb() {
153153
compareBlobs(BLOB_INFO, BlobInfo.fromPb(BLOB_INFO.toPb()));
154+
BlobInfo blobInfo = BlobInfo.of("b", "n");
155+
compareBlobs(blobInfo, BlobInfo.fromPb(blobInfo.toPb()));
154156
}
155157
}

gcloud-java-storage/src/test/java/com/google/gcloud/storage/BucketInfoTest.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,8 @@ public void testBuilder() {
125125
@Test
126126
public void testToPbAndFromPb() {
127127
compareBuckets(BUCKET_INFO, BucketInfo.fromPb(BUCKET_INFO.toPb()));
128+
BucketInfo bucketInfo = BucketInfo.of("b");
129+
compareBuckets(bucketInfo, BucketInfo.fromPb(bucketInfo.toPb()));
128130
}
129131

130132
private void compareBuckets(BucketInfo expected, BucketInfo value) {
@@ -147,21 +149,23 @@ private void compareBuckets(BucketInfo expected, BucketInfo value) {
147149
assertEquals(expected.versioningEnabled(), value.versioningEnabled());
148150
}
149151

152+
@Test
150153
public void testLocation() {
151154
assertEquals("ASIA", Location.asia().value());
152-
assertEquals("EN", Location.eu().value());
155+
assertEquals("EU", Location.eu().value());
153156
assertEquals("US", Location.us().value());
154157
assertSame(Location.asia(), Location.of("asia"));
155-
assertSame(Location.asia(), Location.of("EU"));
156-
assertSame(Location.asia(), Location.of("uS"));
158+
assertSame(Location.eu(), Location.of("EU"));
159+
assertSame(Location.us(), Location.of("uS"));
157160
}
158161

162+
@Test
159163
public void testDeleteRules() {
160164
AgeDeleteRule ageRule = new AgeDeleteRule(10);
161165
assertEquals(10, ageRule.daysToLive());
162166
assertEquals(Type.AGE, ageRule.type());
163167
CreatedBeforeDeleteRule createBeforeRule = new CreatedBeforeDeleteRule(1);
164-
assertEquals(10, createBeforeRule.timeMillis());
168+
assertEquals(1, createBeforeRule.timeMillis());
165169
assertEquals(Type.CREATE_BEFORE, createBeforeRule.type());
166170
NumNewerVersionsDeleteRule versionsRule = new NumNewerVersionsDeleteRule(2);
167171
assertEquals(2, versionsRule.numNewerVersions());
@@ -171,7 +175,7 @@ public void testDeleteRules() {
171175
assertEquals(Type.IS_LIVE, isLiveRule.type());
172176
Rule rule = new Rule().set("a", "b");
173177
RawDeleteRule rawRule = new RawDeleteRule(rule);
174-
assertEquals(Type.UNKNOWN, isLiveRule.type());
178+
assertEquals(Type.UNKNOWN, rawRule.type());
175179
ImmutableList<DeleteRule> rules = ImmutableList
176180
.of(ageRule, createBeforeRule, versionsRule, isLiveRule, rawRule);
177181
for (DeleteRule delRule : rules) {

0 commit comments

Comments
 (0)