Skip to content

Commit b37a624

Browse files
committed
Add Labels to BucketInfo
1 parent ba017e6 commit b37a624

6 files changed

Lines changed: 62 additions & 1 deletion

File tree

google-cloud-storage/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
<dependency>
3131
<groupId>com.google.apis</groupId>
3232
<artifactId>google-api-services-storage</artifactId>
33-
<version>v1-rev100-1.22.0</version>
33+
<version>v1-rev108-1.22.0</version>
3434
<scope>compile</scope>
3535
<exclusions>
3636
<exclusion>

google-cloud-storage/src/main/java/com/google/cloud/storage/Bucket.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import java.security.Key;
4141
import java.util.Arrays;
4242
import java.util.List;
43+
import java.util.Map;
4344
import java.util.Objects;
4445
import java.util.Set;
4546

@@ -565,6 +566,12 @@ public Builder setDefaultAcl(Iterable<Acl> acl) {
565566
return this;
566567
}
567568

569+
@Override
570+
public Builder setLabels(Map<String, String> labels) {
571+
infoBuilder.setLabels(labels);
572+
return this;
573+
}
574+
568575
@Override
569576
public Bucket build() {
570577
return new Bucket(storage, infoBuilder);

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

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,14 @@
3434
import com.google.common.base.Function;
3535
import com.google.common.base.MoreObjects;
3636
import com.google.common.collect.ImmutableList;
37+
import com.google.common.collect.ImmutableMap;
3738

3839
import java.io.IOException;
3940
import java.io.ObjectInputStream;
4041
import java.io.ObjectOutputStream;
4142
import java.io.Serializable;
4243
import java.util.List;
44+
import java.util.Map;
4345
import java.util.Objects;
4446

4547
/**
@@ -81,6 +83,7 @@ public com.google.api.services.storage.model.Bucket apply(BucketInfo bucketInfo)
8183
private final List<Acl> defaultAcl;
8284
private final String location;
8385
private final StorageClass storageClass;
86+
private final Map<String, String> labels;
8487

8588
/**
8689
* Base class for bucket's delete rules. Allows to configure automatic deletion of blobs and blobs
@@ -406,6 +409,11 @@ public abstract static class Builder {
406409
*/
407410
public abstract Builder setDefaultAcl(Iterable<Acl> acl);
408411

412+
/**
413+
* Sets the label of this bucket.
414+
*/
415+
public abstract Builder setLabels(Map<String, String> labels);
416+
409417
/**
410418
* Creates a {@code BucketInfo} object.
411419
*/
@@ -430,6 +438,7 @@ static final class BuilderImpl extends Builder {
430438
private List<Cors> cors;
431439
private List<Acl> acl;
432440
private List<Acl> defaultAcl;
441+
private Map<String, String> labels;
433442

434443
BuilderImpl(String name) {
435444
this.name = name;
@@ -452,6 +461,7 @@ static final class BuilderImpl extends Builder {
452461
indexPage = bucketInfo.indexPage;
453462
notFoundPage = bucketInfo.notFoundPage;
454463
deleteRules = bucketInfo.deleteRules;
464+
labels = bucketInfo.labels;
455465
}
456466

457467
@Override
@@ -550,6 +560,12 @@ public Builder setDefaultAcl(Iterable<Acl> acl) {
550560
return this;
551561
}
552562

563+
@Override
564+
public Builder setLabels(Map<String, String> labels) {
565+
this.labels = labels != null ? ImmutableMap.copyOf(labels) : null;
566+
return this;
567+
}
568+
553569
@Override
554570
public BucketInfo build() {
555571
checkNotNull(name);
@@ -574,6 +590,7 @@ public BucketInfo build() {
574590
indexPage = builder.indexPage;
575591
notFoundPage = builder.notFoundPage;
576592
deleteRules = builder.deleteRules;
593+
labels = builder.labels;
577594
}
578595

579596
/**
@@ -708,6 +725,13 @@ public List<Acl> getDefaultAcl() {
708725
return defaultAcl;
709726
}
710727

728+
/**
729+
* Returns the labels for this bucket.
730+
*/
731+
public Map<String, String> getLabels() {
732+
return labels;
733+
}
734+
711735
/**
712736
* Returns a builder for the current bucket.
713737
*/
@@ -795,6 +819,10 @@ public Rule apply(DeleteRule deleteRule) {
795819
}));
796820
bucketPb.setLifecycle(lifecycle);
797821
}
822+
if (labels != null) {
823+
bucketPb.setLabels(labels);
824+
}
825+
798826
return bucketPb;
799827
}
800828

@@ -875,6 +903,9 @@ public DeleteRule apply(Rule rule) {
875903
}
876904
}));
877905
}
906+
if (bucketPb.getLabels() != null) {
907+
builder.setLabels(bucketPb.getLabels());
908+
}
878909
return builder.build();
879910
}
880911
}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,12 @@
3333
import com.google.cloud.storage.BucketInfo.RawDeleteRule;
3434
import com.google.common.collect.ImmutableList;
3535

36+
import com.google.common.collect.ImmutableMap;
3637
import org.junit.Test;
3738

3839
import java.util.Collections;
3940
import java.util.List;
41+
import java.util.Map;
4042

4143
public class BucketInfoTest {
4244

@@ -59,6 +61,7 @@ public class BucketInfoTest {
5961
private static final String LOCATION = "ASIA";
6062
private static final StorageClass STORAGE_CLASS = StorageClass.STANDARD;
6163
private static final Boolean VERSIONING_ENABLED = true;
64+
private static final Map<String, String> BUCKET_LABELS = ImmutableMap.of("label1", "value1");
6265
private static final BucketInfo BUCKET_INFO = BucketInfo.newBuilder("b")
6366
.setAcl(ACL)
6467
.setEtag(ETAG)
@@ -75,6 +78,7 @@ public class BucketInfoTest {
7578
.setLocation(LOCATION)
7679
.setStorageClass(STORAGE_CLASS)
7780
.setVersioningEnabled(VERSIONING_ENABLED)
81+
.setLabels(BUCKET_LABELS)
7882
.build();
7983

8084
@Test
@@ -117,6 +121,7 @@ public void testBuilder() {
117121
assertEquals(LOCATION, BUCKET_INFO.getLocation());
118122
assertEquals(STORAGE_CLASS, BUCKET_INFO.getStorageClass());
119123
assertEquals(VERSIONING_ENABLED, BUCKET_INFO.versioningEnabled());
124+
assertEquals(BUCKET_LABELS, BUCKET_INFO.getLabels());
120125
}
121126

122127
@Test
@@ -144,6 +149,7 @@ private void compareBuckets(BucketInfo expected, BucketInfo value) {
144149
assertEquals(expected.getLocation(), value.getLocation());
145150
assertEquals(expected.getStorageClass(), value.getStorageClass());
146151
assertEquals(expected.versioningEnabled(), value.versioningEnabled());
152+
assertEquals(expected.getLabels(), value.getLabels());
147153
}
148154

149155
@Test

google-cloud-storage/src/test/java/com/google/cloud/storage/BucketTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import com.google.cloud.storage.BucketInfo.DeleteRule;
3838
import com.google.common.base.Function;
3939
import com.google.common.collect.ImmutableList;
40+
import com.google.common.collect.ImmutableMap;
4041
import com.google.common.collect.Lists;
4142
import com.google.common.io.BaseEncoding;
4243

@@ -52,6 +53,7 @@
5253
import java.util.Collections;
5354
import java.util.Iterator;
5455
import java.util.List;
56+
import java.util.Map;
5557

5658
import javax.crypto.spec.SecretKeySpec;
5759

@@ -76,6 +78,8 @@ public class BucketTest {
7678
private static final String LOCATION = "ASIA";
7779
private static final StorageClass STORAGE_CLASS = StorageClass.STANDARD;
7880
private static final Boolean VERSIONING_ENABLED = true;
81+
private static final Map<String, String> BUCKET_LABELS = ImmutableMap.of("label1", "value1");
82+
7983
private static final BucketInfo FULL_BUCKET_INFO = BucketInfo.newBuilder("b")
8084
.setAcl(ACLS)
8185
.setEtag(ETAG)
@@ -92,6 +96,7 @@ public class BucketTest {
9296
.setLocation(LOCATION)
9397
.setStorageClass(STORAGE_CLASS)
9498
.setVersioningEnabled(VERSIONING_ENABLED)
99+
.setLabels(BUCKET_LABELS)
95100
.build();
96101
private static final BucketInfo BUCKET_INFO =
97102
BucketInfo.newBuilder("b").setMetageneration(42L).build();
@@ -662,6 +667,7 @@ public void testBuilder() {
662667
.setLocation(LOCATION)
663668
.setStorageClass(STORAGE_CLASS)
664669
.setVersioningEnabled(VERSIONING_ENABLED)
670+
.setLabels(BUCKET_LABELS)
665671
.build();
666672
assertEquals("b", bucket.getName());
667673
assertEquals(ACLS, bucket.getAcl());
@@ -679,6 +685,7 @@ public void testBuilder() {
679685
assertEquals(LOCATION, bucket.getLocation());
680686
assertEquals(STORAGE_CLASS, bucket.getStorageClass());
681687
assertEquals(VERSIONING_ENABLED, bucket.versioningEnabled());
688+
assertEquals(BUCKET_LABELS, bucket.getLabels());
682689
assertEquals(storage.getOptions(), bucket.getStorage().getOptions());
683690
}
684691
}

google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITStorageTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ public class ITStorageTest {
103103
new SecretKeySpec(BaseEncoding.base64().decode(BASE64_KEY), "AES256");
104104
private static final byte[] COMPRESSED_CONTENT = BaseEncoding.base64()
105105
.decode("H4sIAAAAAAAAAPNIzcnJV3DPz0/PSVVwzskvTVEILskvSkxPVQQA/LySchsAAAA=");
106+
private static final Map<String, String> BUCKET_LABELS = ImmutableMap.of("label1", "value1");
106107

107108
@BeforeClass
108109
public static void beforeClass() throws NoSuchAlgorithmException, InvalidKeySpecException {
@@ -1489,4 +1490,13 @@ public void testBucketPolicy() {
14891490
BUCKET,
14901491
ImmutableList.of("storage.buckets.getIamPolicy", "storage.buckets.setIamPolicy")));
14911492
}
1493+
1494+
@Test
1495+
public void testUpdateBucketLabel() {
1496+
Bucket remoteBucket = storage.get(BUCKET, Storage.BucketGetOption.fields(BucketField.ID));
1497+
assertNull(remoteBucket.getLabels());
1498+
remoteBucket = remoteBucket.toBuilder().setLabels(BUCKET_LABELS).build();
1499+
Bucket updatedBucket = storage.update(remoteBucket);
1500+
assertEquals(BUCKET_LABELS, updatedBucket.getLabels());
1501+
}
14921502
}

0 commit comments

Comments
 (0)