From 6010ffa51a078ddedaa70f617f2a3f878647d3ca Mon Sep 17 00:00:00 2001 From: JesseLovelace <43148100+JesseLovelace@users.noreply.github.com> Date: Mon, 4 Nov 2024 13:49:20 -0800 Subject: [PATCH] Revert "feat: adds support for restore token (#2768)" This reverts commit 0394354c81b35b66d46d84b9afb090d891ee6a12. --- .../java/com/google/cloud/storage/Blob.java | 6 --- .../com/google/cloud/storage/BlobInfo.java | 29 +------------- .../google/cloud/storage/GrpcConversions.java | 4 -- .../google/cloud/storage/JsonConversions.java | 2 - .../com/google/cloud/storage/Storage.java | 24 +----------- .../com/google/cloud/storage/UnifiedOpts.java | 23 ----------- .../cloud/storage/spi/v1/StorageRpc.java | 1 - .../cloud/storage/it/ITBlobReadMaskTest.java | 3 +- .../google/cloud/storage/it/ITObjectTest.java | 38 ------------------- .../storage/it/ITOptionRegressionTest.java | 6 +-- 10 files changed, 6 insertions(+), 130 deletions(-) diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/Blob.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/Blob.java index b0208191a3..b84fcef6a5 100644 --- a/google-cloud-storage/src/main/java/com/google/cloud/storage/Blob.java +++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/Blob.java @@ -534,12 +534,6 @@ Builder setHardDeleteTime(OffsetDateTime hardDeleteTime) { return this; } - @Override - Builder setRestoreToken(String restoreToken) { - infoBuilder.setRestoreToken(restoreToken); - return this; - } - @Override public Builder setRetention(Retention retention) { infoBuilder.setRetention(retention); diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/BlobInfo.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/BlobInfo.java index 7494c38b1f..52ce09fd7e 100644 --- a/google-cloud-storage/src/main/java/com/google/cloud/storage/BlobInfo.java +++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/BlobInfo.java @@ -110,7 +110,6 @@ public class BlobInfo implements Serializable { private final Retention retention; private final OffsetDateTime softDeleteTime; private final OffsetDateTime hardDeleteTime; - private final String restoreToken; private final transient ImmutableSet modifiedFields; /** This class is meant for internal use only. Users are discouraged from using this class. */ @@ -532,8 +531,6 @@ Builder setRetentionExpirationTimeOffsetDateTime(OffsetDateTime retentionExpirat abstract Builder setHardDeleteTime(OffsetDateTime hardDeleteTIme); - abstract Builder setRestoreToken(String restoreToken); - public abstract Builder setRetention(Retention retention); /** Creates a {@code BlobInfo} object. */ @@ -637,7 +634,6 @@ static final class BuilderImpl extends Builder { private Retention retention; private OffsetDateTime softDeleteTime; private OffsetDateTime hardDeleteTime; - private String restoreToken; private final ImmutableSet.Builder modifiedFields = ImmutableSet.builder(); BuilderImpl(BlobId blobId) { @@ -678,7 +674,6 @@ static final class BuilderImpl extends Builder { retention = blobInfo.retention; softDeleteTime = blobInfo.softDeleteTime; hardDeleteTime = blobInfo.hardDeleteTime; - restoreToken = blobInfo.restoreToken; } @Override @@ -1070,15 +1065,6 @@ Builder setHardDeleteTime(OffsetDateTime hardDeleteTime) { return this; } - @Override - Builder setRestoreToken(String restoreToken) { - if (!Objects.equals(this.restoreToken, restoreToken)) { - modifiedFields.add(BlobField.RESTORE_TOKEN); - } - this.restoreToken = restoreToken; - return this; - } - @Override public Builder setRetention(Retention retention) { // todo: b/308194853 @@ -1313,7 +1299,6 @@ Builder clearRetentionExpirationTime() { retention = builder.retention; softDeleteTime = builder.softDeleteTime; hardDeleteTime = builder.hardDeleteTime; - restoreToken = builder.restoreToken; modifiedFields = builder.modifiedFields.build(); } @@ -1719,14 +1704,6 @@ public OffsetDateTime getHardDeleteTime() { return hardDeleteTime; } - /** - * If this is a soft-deleted object in an HNS-enabled bucket, returns the restore token which will - * be necessary to restore it if there's a name conflict with another object. - */ - public String getRestoreToken() { - return restoreToken; - } - /** Returns the object's Retention policy. */ public Retention getRetention() { return retention; @@ -1784,8 +1761,7 @@ public int hashCode() { retention, retentionExpirationTime, softDeleteTime, - hardDeleteTime, - restoreToken); + hardDeleteTime); } @Override @@ -1829,8 +1805,7 @@ public boolean equals(Object o) { && Objects.equals(retentionExpirationTime, blobInfo.retentionExpirationTime) && Objects.equals(retention, blobInfo.retention) && Objects.equals(softDeleteTime, blobInfo.softDeleteTime) - && Objects.equals(hardDeleteTime, blobInfo.hardDeleteTime) - && Objects.equals(restoreToken, blobInfo.restoreToken); + && Objects.equals(hardDeleteTime, blobInfo.hardDeleteTime); } ImmutableSet getModifiedFields() { diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcConversions.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcConversions.java index e87aef5a0d..39d5986db6 100644 --- a/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcConversions.java +++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcConversions.java @@ -834,7 +834,6 @@ private Object blobInfoEncode(BlobInfo from) { ifNonNull(from.getCustomTimeOffsetDateTime(), timestampCodec::encode, toBuilder::setCustomTime); ifNonNull(from.getSoftDeleteTime(), timestampCodec::encode, toBuilder::setSoftDeleteTime); ifNonNull(from.getHardDeleteTime(), timestampCodec::encode, toBuilder::setHardDeleteTime); - ifNonNull(from.getRestoreToken(), toBuilder::setRestoreToken); ifNonNull( from.getCustomerEncryption(), customerEncryptionCodec::encode, @@ -906,9 +905,6 @@ private BlobInfo blobInfoDecode(Object from) { if (from.hasHardDeleteTime()) { toBuilder.setHardDeleteTime(timestampCodec.decode(from.getHardDeleteTime())); } - if (from.hasRestoreToken()) { - toBuilder.setRestoreToken(from.getRestoreToken()); - } String storageClass = from.getStorageClass(); if (!storageClass.isEmpty()) { toBuilder.setStorageClass(StorageClass.valueOf(storageClass)); diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/JsonConversions.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/JsonConversions.java index 316cd00335..12562cb020 100644 --- a/google-cloud-storage/src/main/java/com/google/cloud/storage/JsonConversions.java +++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/JsonConversions.java @@ -254,7 +254,6 @@ private StorageObject blobInfoEncode(BlobInfo from) { ifNonNull(from.getSoftDeleteTime(), dateTimeCodec::encode, to::setSoftDeleteTime); ifNonNull(from.getHardDeleteTime(), dateTimeCodec::encode, to::setHardDeleteTime); - ifNonNull(from.getRestoreToken(), to::setRestoreToken); // todo: clean this up once retention is enabled in grpc // This is a workaround so that explicitly null retention objects are only included when the @@ -339,7 +338,6 @@ private BlobInfo blobInfoDecode(StorageObject from) { ifNonNull(from.getRetention(), this::retentionDecode, to::setRetention); ifNonNull(from.getSoftDeleteTime(), dateTimeCodec::decode, to::setSoftDeleteTime); ifNonNull(from.getHardDeleteTime(), dateTimeCodec::decode, to::setHardDeleteTime); - ifNonNull(from.getRestoreToken(), to::setRestoreToken); return to.build(); } diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/Storage.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/Storage.java index 6d3ef93733..8b719396a6 100644 --- a/google-cloud-storage/src/main/java/com/google/cloud/storage/Storage.java +++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/Storage.java @@ -326,10 +326,8 @@ enum BlobField implements FieldSelector, NamedField { @TransportCompatibility({Transport.HTTP, Transport.GRPC}) HARD_DELETE_TIME( - "hardDeleteTime", "hard_delete_time", com.google.api.client.util.DateTime.class), + "hardDeleteTime", "hard_delete_time", com.google.api.client.util.DateTime.class); - @TransportCompatibility({Transport.HTTP, Transport.GRPC}) - RESTORE_TOKEN("restoreToken", "restore_token", String.class); static final List REQUIRED_FIELDS = ImmutableList.of(BUCKET, NAME); private static final Map JSON_FIELD_NAME_INDEX; @@ -1658,16 +1656,6 @@ public static BlobGetOption softDeleted(boolean softDeleted) { return new BlobGetOption(UnifiedOpts.softDeleted(softDeleted)); } - /** - * Returns an option that must be specified when getting a soft-deleted object from an - * HNS-enabled bucket that has a name/generation conflict with another object in the same - * bucket. - */ - @TransportCompatibility({Transport.HTTP, Transport.GRPC}) - public static BlobGetOption restoreToken(String restoreToken) { - return new BlobGetOption(UnifiedOpts.restoreToken(restoreToken)); - } - /** * Deduplicate any options which are the same parameter. The value which comes last in {@code * os} will be the value included in the return. @@ -1753,16 +1741,6 @@ public static BlobRestoreOption metagenerationNotMatch(long generation) { public static BlobRestoreOption copySourceAcl(boolean copySourceAcl) { return new BlobRestoreOption(UnifiedOpts.copySourceAcl(copySourceAcl)); } - - /** - * Returns an option that must be specified when getting a soft-deleted object from an - * HNS-enabled bucket that has a name/generation conflict with another object in the same - * bucket. - */ - @TransportCompatibility({Transport.HTTP, Transport.GRPC}) - public static BlobRestoreOption restoreToken(String restoreToken) { - return new BlobRestoreOption(UnifiedOpts.restoreToken(restoreToken)); - } } /** Class for specifying bucket list options. */ diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/UnifiedOpts.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/UnifiedOpts.java index acfb00f94a..1f51429d02 100644 --- a/google-cloud-storage/src/main/java/com/google/cloud/storage/UnifiedOpts.java +++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/UnifiedOpts.java @@ -477,10 +477,6 @@ static SoftDeleted softDeleted(boolean softDeleted) { return new SoftDeleted(softDeleted); } - static RestoreToken restoreToken(String restoreToken) { - return new RestoreToken(restoreToken); - } - static CopySourceAcl copySourceAcl(boolean copySourceAcl) { return new CopySourceAcl(copySourceAcl); } @@ -698,25 +694,6 @@ public Mapper getObject() { } } - static final class RestoreToken extends RpcOptVal implements ObjectSourceOpt { - - private static final long serialVersionUID = 4215757108268532746L; - - private RestoreToken(String val) { - super(StorageRpc.Option.RESTORE_TOKEN, val); - } - - @Override - public Mapper restoreObject() { - return b -> b.setRestoreToken(val); - } - - @Override - public Mapper getObject() { - return b -> b.setRestoreToken(val); - } - } - static final class CopySourceAcl extends RpcOptVal implements ObjectSourceOpt { private static final long serialVersionUID = 2033755749149128119L; diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/spi/v1/StorageRpc.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/spi/v1/StorageRpc.java index b4a2ddfcc6..78747d42d6 100644 --- a/google-cloud-storage/src/main/java/com/google/cloud/storage/spi/v1/StorageRpc.java +++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/spi/v1/StorageRpc.java @@ -75,7 +75,6 @@ enum Option { RETURN_RAW_INPUT_STREAM("returnRawInputStream"), OVERRIDE_UNLOCKED_RETENTION("overrideUnlockedRetention"), SOFT_DELETED("softDeleted"), - RESTORE_TOKEN("restoreToken"), COPY_SOURCE_ACL("copySourceAcl"), GENERATION("generation"), INCLUDE_FOLDERS_AS_PREFIXES("includeFoldersAsPrefixes"), diff --git a/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITBlobReadMaskTest.java b/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITBlobReadMaskTest.java index f73074cb94..bf8c48258e 100644 --- a/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITBlobReadMaskTest.java +++ b/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITBlobReadMaskTest.java @@ -203,8 +203,7 @@ public ImmutableList parameters() { BlobField.RETENTION, LazyAssertion.skip("TODO: jesse fill in buganizer bug here")), new Args<>(BlobField.SOFT_DELETE_TIME, LazyAssertion.equal()), - new Args<>(BlobField.HARD_DELETE_TIME, LazyAssertion.equal()), - new Args<>(BlobField.RESTORE_TOKEN, LazyAssertion.equal())); + new Args<>(BlobField.HARD_DELETE_TIME, LazyAssertion.equal())); List argsDefined = args.stream().map(Args::getField).map(Enum::name).sorted().collect(Collectors.toList()); diff --git a/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITObjectTest.java b/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITObjectTest.java index 036e2a04e8..7a88da5e48 100644 --- a/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITObjectTest.java +++ b/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITObjectTest.java @@ -1524,42 +1524,4 @@ public void testUpdateBlob_noModification() { Blob gen2 = storage.update(gen1); assertThat(gen2).isEqualTo(gen1); } - - @Test - public void testRestoreToken() { - String bucketName = generator.randomBucketName(); - storage.create( - BucketInfo.newBuilder(bucketName) - .setHierarchicalNamespace( - BucketInfo.HierarchicalNamespace.newBuilder().setEnabled(true).build()) - .setIamConfiguration( - BucketInfo.IamConfiguration.newBuilder() - .setIsUniformBucketLevelAccessEnabled(true) - .build()) - .build()); - BlobInfo info = BlobInfo.newBuilder(bucketName, generator.randomObjectName()).build(); - try { - Blob delobj = storage.create(info); - storage.delete(delobj.getBlobId()); - - Blob got = storage.get(delobj.getBlobId(), BlobGetOption.softDeleted(true)); - assertThat(got.getRestoreToken()).isNotNull(); - - Blob gotWithRestoreToken = - storage.get( - delobj.getBlobId(), - BlobGetOption.softDeleted(true), - BlobGetOption.restoreToken(got.getRestoreToken())); - assertThat(gotWithRestoreToken).isNotNull(); - - storage.restore( - got.getBlobId(), Storage.BlobRestoreOption.restoreToken(got.getRestoreToken())); - assertThat(storage.get(bucketName, delobj.getName())).isNotNull(); - ; - - } finally { - storage.delete(info.getBlobId()); - storage.delete(bucketName); - } - } } diff --git a/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITOptionRegressionTest.java b/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITOptionRegressionTest.java index 7041f2df50..c7032ea618 100644 --- a/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITOptionRegressionTest.java +++ b/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITOptionRegressionTest.java @@ -743,8 +743,7 @@ public void storage_BlobGetOption_fields_BlobField() { "updated", "retention", "softDeleteTime", - "hardDeleteTime", - "restoreToken"); + "hardDeleteTime"); s.get(o.getBlobId(), BlobGetOption.fields(BlobField.values())); requestAuditing.assertQueryParam("fields", expected, splitOnCommaToSet()); } @@ -924,8 +923,7 @@ public void storage_BlobListOption_fields_BlobField() { "items/updated", "items/retention", "items/softDeleteTime", - "items/hardDeleteTime", - "items/restoreToken"); + "items/hardDeleteTime"); s.list(b.getName(), BlobListOption.fields(BlobField.values())); requestAuditing.assertQueryParam("fields", expected, splitOnCommaToSet()); }