@@ -110,6 +110,7 @@ public class BlobInfo implements Serializable {
110
110
private final Retention retention ;
111
111
private final OffsetDateTime softDeleteTime ;
112
112
private final OffsetDateTime hardDeleteTime ;
113
+ private final String restoreToken ;
113
114
private final transient ImmutableSet <NamedField > modifiedFields ;
114
115
115
116
/** This class is meant for internal use only. Users are discouraged from using this class. */
@@ -531,6 +532,8 @@ Builder setRetentionExpirationTimeOffsetDateTime(OffsetDateTime retentionExpirat
531
532
532
533
abstract Builder setHardDeleteTime (OffsetDateTime hardDeleteTIme );
533
534
535
+ abstract Builder setRestoreToken (String restoreToken );
536
+
534
537
public abstract Builder setRetention (Retention retention );
535
538
536
539
/** Creates a {@code BlobInfo} object. */
@@ -634,6 +637,7 @@ static final class BuilderImpl extends Builder {
634
637
private Retention retention ;
635
638
private OffsetDateTime softDeleteTime ;
636
639
private OffsetDateTime hardDeleteTime ;
640
+ private String restoreToken ;
637
641
private final ImmutableSet .Builder <NamedField > modifiedFields = ImmutableSet .builder ();
638
642
639
643
BuilderImpl (BlobId blobId ) {
@@ -674,6 +678,7 @@ static final class BuilderImpl extends Builder {
674
678
retention = blobInfo .retention ;
675
679
softDeleteTime = blobInfo .softDeleteTime ;
676
680
hardDeleteTime = blobInfo .hardDeleteTime ;
681
+ restoreToken = blobInfo .restoreToken ;
677
682
}
678
683
679
684
@ Override
@@ -1065,6 +1070,15 @@ Builder setHardDeleteTime(OffsetDateTime hardDeleteTime) {
1065
1070
return this ;
1066
1071
}
1067
1072
1073
+ @ Override
1074
+ Builder setRestoreToken (String restoreToken ) {
1075
+ if (!Objects .equals (this .restoreToken , restoreToken )) {
1076
+ modifiedFields .add (BlobField .RESTORE_TOKEN );
1077
+ }
1078
+ this .restoreToken = restoreToken ;
1079
+ return this ;
1080
+ }
1081
+
1068
1082
@ Override
1069
1083
public Builder setRetention (Retention retention ) {
1070
1084
// todo: b/308194853
@@ -1299,6 +1313,7 @@ Builder clearRetentionExpirationTime() {
1299
1313
retention = builder .retention ;
1300
1314
softDeleteTime = builder .softDeleteTime ;
1301
1315
hardDeleteTime = builder .hardDeleteTime ;
1316
+ restoreToken = builder .restoreToken ;
1302
1317
modifiedFields = builder .modifiedFields .build ();
1303
1318
}
1304
1319
@@ -1704,6 +1719,14 @@ public OffsetDateTime getHardDeleteTime() {
1704
1719
return hardDeleteTime ;
1705
1720
}
1706
1721
1722
+ /**
1723
+ * If this is a soft-deleted object in an HNS-enabled bucket, returns the restore token which will
1724
+ * be necessary to restore it if there's a name conflict with another object.
1725
+ */
1726
+ public String getRestoreToken () {
1727
+ return restoreToken ;
1728
+ }
1729
+
1707
1730
/** Returns the object's Retention policy. */
1708
1731
public Retention getRetention () {
1709
1732
return retention ;
@@ -1761,7 +1784,8 @@ public int hashCode() {
1761
1784
retention ,
1762
1785
retentionExpirationTime ,
1763
1786
softDeleteTime ,
1764
- hardDeleteTime );
1787
+ hardDeleteTime ,
1788
+ restoreToken );
1765
1789
}
1766
1790
1767
1791
@ Override
@@ -1805,7 +1829,8 @@ public boolean equals(Object o) {
1805
1829
&& Objects .equals (retentionExpirationTime , blobInfo .retentionExpirationTime )
1806
1830
&& Objects .equals (retention , blobInfo .retention )
1807
1831
&& Objects .equals (softDeleteTime , blobInfo .softDeleteTime )
1808
- && Objects .equals (hardDeleteTime , blobInfo .hardDeleteTime );
1832
+ && Objects .equals (hardDeleteTime , blobInfo .hardDeleteTime )
1833
+ && Objects .equals (restoreToken , blobInfo .restoreToken );
1809
1834
}
1810
1835
1811
1836
ImmutableSet <NamedField > getModifiedFields () {
0 commit comments