Skip to content

Commit 28db1f7

Browse files
committed
Replace given null values with Apiary nulls and provide doesNotExists option
1 parent 4a45c87 commit 28db1f7

File tree

3 files changed

+40
-28
lines changed

3 files changed

+40
-28
lines changed

src/main/java/com/google/gcloud/storage/Blob.java

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@
1616

1717
package com.google.gcloud.storage;
1818

19+
import static com.google.common.base.MoreObjects.firstNonNull;
1920
import static com.google.common.base.Preconditions.checkNotNull;
2021

22+
import com.google.api.client.util.Data;
2123
import com.google.api.client.util.DateTime;
2224
import com.google.api.services.storage.model.ObjectAccessControl;
2325
import com.google.api.services.storage.model.StorageObject;
@@ -124,22 +126,22 @@ public Builder name(String name) {
124126
}
125127

126128
public Builder contentType(String contentType) {
127-
this.contentType = contentType;
129+
this.contentType = firstNonNull(contentType, Data.<String>nullOf(String.class));
128130
return this;
129131
}
130132

131133
public Builder contentDisposition(String contentDisposition) {
132-
this.contentDisposition = contentDisposition;
134+
this.contentDisposition = firstNonNull(contentDisposition, Data.<String>nullOf(String.class));
133135
return this;
134136
}
135137

136138
public Builder contentLanguage(String contentLanguage) {
137-
this.contentLanguage = contentLanguage;
139+
this.contentLanguage = firstNonNull(contentLanguage, Data.<String>nullOf(String.class));
138140
return this;
139141
}
140142

141143
public Builder contentEncoding(String contentEncoding) {
142-
this.contentEncoding = contentEncoding;
144+
this.contentEncoding = firstNonNull(contentEncoding, Data.<String>nullOf(String.class));
143145
return this;
144146
}
145147

@@ -149,7 +151,7 @@ Builder componentCount(Integer componentCount) {
149151
}
150152

151153
public Builder cacheControl(String cacheControl) {
152-
this.cacheControl = cacheControl;
154+
this.cacheControl = firstNonNull(cacheControl, Data.<String>nullOf(String.class));
153155
return this;
154156
}
155157

@@ -179,12 +181,12 @@ Builder selfLink(String selfLink) {
179181
}
180182

181183
public Builder md5(String md5) {
182-
this.md5 = md5;
184+
this.md5 = firstNonNull(md5, Data.<String>nullOf(String.class));
183185
return this;
184186
}
185187

186188
public Builder crc32c(String crc32c) {
187-
this.crc32c = crc32c;
189+
this.crc32c = firstNonNull(crc32c, Data.<String>nullOf(String.class));
188190
return this;
189191
}
190192

@@ -263,7 +265,7 @@ public String name() {
263265
}
264266

265267
public String cacheControl() {
266-
return cacheControl;
268+
return Data.isNull(cacheControl) ? null : cacheControl;
267269
}
268270

269271
public List<Acl> acl() {
@@ -279,19 +281,19 @@ public Long size() {
279281
}
280282

281283
public String contentType() {
282-
return contentType;
284+
return Data.isNull(contentType) ? null : contentType;
283285
}
284286

285287
public String contentEncoding() {
286-
return contentEncoding;
288+
return Data.isNull(contentEncoding) ? null : contentEncoding;
287289
}
288290

289291
public String contentDisposition() {
290-
return contentDisposition;
292+
return Data.isNull(contentDisposition) ? null : contentDisposition;
291293
}
292294

293295
public String contentLanguage() {
294-
return contentEncoding;
296+
return Data.isNull(contentLanguage) ? null : contentLanguage;
295297
}
296298

297299
public Integer componentCount() {
@@ -307,11 +309,11 @@ public String selfLink() {
307309
}
308310

309311
public String md5() {
310-
return md5;
312+
return Data.isNull(md5) ? null : md5;
311313
}
312314

313315
public String crc32c() {
314-
return crc32c;
316+
return Data.isNull(crc32c) ? null : crc32c;
315317
}
316318

317319
public String mediaLink() {
@@ -367,11 +369,11 @@ public Builder toBuilder() {
367369
@Override
368370
public String toString() {
369371
return MoreObjects.toStringHelper(this)
370-
.add("bucket", bucket)
371-
.add("name", name)
372-
.add("size", size)
373-
.add("content-type", contentType)
374-
.add("metadata", metadata)
372+
.add("bucket", bucket())
373+
.add("name", name())
374+
.add("size", size())
375+
.add("content-type", contentType())
376+
.add("metadata", metadata())
375377
.toString();
376378
}
377379

@@ -397,7 +399,7 @@ public boolean equals(Object obj) {
397399
if (!(obj instanceof Blob)) {
398400
return false;
399401
}
400-
return Objects.equals(toPb(), ((Blob)obj).toPb());
402+
return Objects.equals(toPb(), ((Blob) obj).toPb());
401403
}
402404

403405
StorageObject toPb() {

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

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@
1717
package com.google.gcloud.storage;
1818

1919
import static com.google.api.client.repackaged.com.google.common.base.Preconditions.checkNotNull;
20+
import static com.google.common.base.MoreObjects.firstNonNull;
2021
import static com.google.common.collect.Lists.transform;
2122

2223
import com.google.api.client.json.jackson2.JacksonFactory;
24+
import com.google.api.client.util.Data;
2325
import com.google.api.client.util.DateTime;
2426
import com.google.api.services.storage.model.Bucket.Lifecycle;
2527
import com.google.api.services.storage.model.Bucket.Lifecycle.Rule;
@@ -67,7 +69,6 @@ public final class Bucket implements Serializable {
6769
private final Location location;
6870
private final StorageClass storageClass;
6971

70-
7172
static final Function<com.google.api.services.storage.model.Bucket, Bucket> FROM_PB_FUNCTION =
7273
new Function<com.google.api.services.storage.model.Bucket, Bucket>() {
7374
@Override
@@ -248,6 +249,9 @@ public static final class StorageClass implements Serializable {
248249

249250
private static final long serialVersionUID = 374002156285326563L;
250251
private static final ImmutableMap<String, Option> STRING_TO_OPTION;
252+
private static final StorageClass NULL_VALUE =
253+
new StorageClass(Data.<String>nullOf(String.class));
254+
251255
private final String value;
252256

253257
public enum Option {
@@ -299,6 +303,8 @@ public static final class Location implements Serializable {
299303

300304
private static final long serialVersionUID = 9073107666838637662L;
301305
private static final ImmutableMap<String, Option> STRING_TO_OPTION;
306+
private static final Location NULL_VALUE = new Location(Data.<String>nullOf(String.class));
307+
302308
private final String value;
303309

304310
public enum Option {
@@ -392,7 +398,7 @@ Builder selfLink(String selfLink) {
392398
}
393399

394400
public Builder versioningEnabled(Boolean enable) {
395-
this.versioningEnabled = enable;
401+
this.versioningEnabled = firstNonNull(enable, Data.<Boolean>nullOf(Boolean.class));
396402
return this;
397403
}
398404

@@ -412,12 +418,12 @@ public Builder deleteRules(Iterable<DeleteRule> rules) {
412418
}
413419

414420
public Builder storageClass(StorageClass storageClass) {
415-
this.storageClass = storageClass;
421+
this.storageClass = firstNonNull(storageClass, StorageClass.NULL_VALUE);
416422
return this;
417423
}
418424

419425
public Builder location(Location location) {
420-
this.location = location;
426+
this.location = firstNonNull(location, Location.NULL_VALUE);
421427
return this;
422428
}
423429

@@ -493,7 +499,7 @@ public String selfLink() {
493499
}
494500

495501
public Boolean versioningEnabled() {
496-
return versioningEnabled;
502+
return Data.isNull(versioningEnabled) ? null : versioningEnabled;
497503
}
498504

499505
public String indexPage() {
@@ -521,11 +527,11 @@ public Long metageneration() {
521527
}
522528

523529
public Location location() {
524-
return location;
530+
return location == null || Data.isNull(location.value) ? null : location;
525531
}
526532

527533
public StorageClass storageClass() {
528-
return storageClass;
534+
return storageClass == null || Data.isNull(storageClass.value) ? null : storageClass;
529535
}
530536

531537
public List<Cors> cors() {
@@ -576,7 +582,7 @@ public boolean equals(Object obj) {
576582
@Override
577583
public String toString() {
578584
return MoreObjects.toStringHelper(this)
579-
.add("name", name)
585+
.add("name", name())
580586
.toString();
581587
}
582588

src/main/java/com/google/gcloud/storage/StorageService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,10 @@ public static BlobTargetOption predefinedAcl(PredefinedAcl acl) {
121121
return new BlobTargetOption(StorageRpc.Option.PREDEFINED_ACL, acl.entry());
122122
}
123123

124+
public static BlobTargetOption doesNotExists() {
125+
return new BlobTargetOption(StorageRpc.Option.IF_GENERATION_MATCH, 0);
126+
}
127+
124128
public static BlobTargetOption generationMatch() {
125129
return new BlobTargetOption(StorageRpc.Option.IF_GENERATION_MATCH);
126130
}

0 commit comments

Comments
 (0)