Skip to content

Commit

Permalink
setFamilySubset instead of add and use List rather than ImmutableList
Browse files Browse the repository at this point in the history
Change-Id: Ibdb2c8a62dc55c44059d5ec2296c57c7d430baa4
  • Loading branch information
Lixia Chen committed Mar 27, 2024
1 parent 023c67d commit 595cfa1
Show file tree
Hide file tree
Showing 6 changed files with 25 additions and 38 deletions.
Expand Up @@ -20,6 +20,7 @@
import com.google.common.base.Objects;
import com.google.common.collect.ImmutableList;
import com.google.protobuf.ByteString;
import java.util.List;
import javax.annotation.Nonnull;

/** Represents subsets of a particular column family that are included in this authorized view. */
Expand Down Expand Up @@ -49,12 +50,12 @@ private FamilySubsets() {
}

/** Gets the list of column qualifiers included in this authorized view. */
public ImmutableList<ByteString> getQualifiers() {
public List<ByteString> getQualifiers() {
return ImmutableList.copyOf(this.builder.getQualifiersList());
}

/** Gets the list of column qualifier prefixes included in this authorized view. */
public ImmutableList<ByteString> getQualifierPrefixes() {
public List<ByteString> getQualifierPrefixes() {
return ImmutableList.copyOf(this.builder.getQualifierPrefixesList());
}

Expand Down
Expand Up @@ -22,6 +22,7 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.protobuf.ByteString;
import java.util.List;
import java.util.Map.Entry;
import javax.annotation.Nonnull;

Expand Down Expand Up @@ -58,7 +59,7 @@ private SubsetView() {
}

/** Gets the row prefixes to be included in this subset view. */
public ImmutableList<ByteString> getRowPrefixes() {
public List<ByteString> getRowPrefixes() {
return ImmutableList.copyOf(this.builder.getRowPrefixesList());
}

Expand All @@ -84,22 +85,12 @@ public SubsetView addRowPrefix(String rowPrefix) {
return this;
}

/** Adds a new familyId with its familySubsets to the subset view. */
public SubsetView addFamilySubsets(String familyId, FamilySubsets familySubsets) {
if (this.builder.containsFamilySubsets(familyId)) {
// If the familyId exists, append the familySubsets to the existing value.
com.google.bigtable.admin.v2.AuthorizedView.FamilySubsets existingFamilySubsets =
this.builder.getFamilySubsetsMap().get(familyId);
com.google.bigtable.admin.v2.AuthorizedView.FamilySubsets newFamilySubsets =
existingFamilySubsets
.toBuilder()
.addAllQualifiers(familySubsets.getQualifiers())
.addAllQualifierPrefixes(familySubsets.getQualifierPrefixes())
.build();
this.builder.putFamilySubsets(familyId, newFamilySubsets);
} else {
this.builder.putFamilySubsets(familyId, familySubsets.toProto());
}
/**
* Adds a new familyId with its familySubsets to the subset view. Please note that calling this
* method with the same familyId will overwrite the previous rule set on the family.
*/
public SubsetView setFamilySubsets(String familyId, FamilySubsets familySubsets) {
this.builder.putFamilySubsets(familyId, familySubsets.toProto());
return this;
}

Expand Down
Expand Up @@ -95,8 +95,11 @@ public void createAuthorizedViewAndGetAuthorizedViewTest() {
.setAuthorizedViewType(
SubsetView.create()
.addRowPrefix("row#")
.addFamilySubsets("cf1", FamilySubsets.create().addQualifier("qualifier"))
.addFamilySubsets("cf1", FamilySubsets.create().addQualifierPrefix("prefix#")))
.setFamilySubsets(
"cf1",
FamilySubsets.create()
.addQualifier("qualifier")
.addQualifierPrefix("prefix#")))
.setDeletionProtection(false);
try {
AuthorizedView response = tableAdmin.createAuthorizedView(request);
Expand Down
Expand Up @@ -40,14 +40,11 @@ public void testToProto() {
SubsetView.create()
.addRowPrefix("row#")
.addRowPrefix("another-row#")
.addFamilySubsets(
"family",
FamilySubsets.create().addQualifier("column").addQualifierPrefix("column#"))
.addFamilySubsets(
.setFamilySubsets(
"family",
FamilySubsets.create()
.addQualifier("another-column")
.addQualifierPrefix("another-column#")));
.addQualifier("column")
.addQualifierPrefix("column#")));

com.google.bigtable.admin.v2.CreateAuthorizedViewRequest requestProto =
com.google.bigtable.admin.v2.CreateAuthorizedViewRequest.newBuilder()
Expand All @@ -65,10 +62,7 @@ public void testToProto() {
com.google.bigtable.admin.v2.AuthorizedView.FamilySubsets
.newBuilder()
.addQualifiers(ByteString.copyFromUtf8("column"))
.addQualifiers(ByteString.copyFromUtf8("another-column"))
.addQualifierPrefixes(ByteString.copyFromUtf8("column#"))
.addQualifierPrefixes(
ByteString.copyFromUtf8("another-column#"))
.build())))
.build();
assertThat(request.toProto(PROJECT_ID, INSTANCE_ID)).isEqualTo(requestProto);
Expand Down
Expand Up @@ -77,13 +77,13 @@ public void testToProto() {
SubsetView.create()
.addRowPrefix("row1#")
.addRowPrefix("row2#")
.addFamilySubsets(
.setFamilySubsets(
"family1",
FamilySubsets.create().addQualifier("column1").addQualifierPrefix("prefix1#"))
.addFamilySubsets(
.setFamilySubsets(
"family1",
FamilySubsets.create().addQualifier("column2").addQualifierPrefix("prefix2#"))
.addFamilySubsets(
.setFamilySubsets(
"family2", FamilySubsets.create().addQualifier("column").addQualifierPrefix(""));

com.google.bigtable.admin.v2.AuthorizedView.SubsetView subsetViewProto =
Expand All @@ -93,9 +93,7 @@ public void testToProto() {
.putFamilySubsets(
"family1",
com.google.bigtable.admin.v2.AuthorizedView.FamilySubsets.newBuilder()
.addQualifiers(ByteString.copyFromUtf8("column1"))
.addQualifiers(ByteString.copyFromUtf8("column2"))
.addQualifierPrefixes(ByteString.copyFromUtf8("prefix1#"))
.addQualifierPrefixes(ByteString.copyFromUtf8("prefix2#"))
.build())
.putFamilySubsets(
Expand All @@ -116,9 +114,9 @@ public void testToProto() {
"family2",
FamilySubsets.fromProto(subsetViewProto.getFamilySubsetsOrThrow("family2")));
assertThat(familySubsetsResult.get("family1").getQualifiers())
.containsExactly(ByteString.copyFromUtf8("column1"), ByteString.copyFromUtf8("column2"));
.containsExactly(ByteString.copyFromUtf8("column2"));
assertThat(familySubsetsResult.get("family1").getQualifierPrefixes())
.containsExactly(ByteString.copyFromUtf8("prefix1#"), ByteString.copyFromUtf8("prefix2#"));
.containsExactly(ByteString.copyFromUtf8("prefix2#"));
assertThat(familySubsetsResult.get("family2").getQualifiers())
.containsExactly(ByteString.copyFromUtf8("column"));
assertThat(familySubsetsResult.get("family2").getQualifierPrefixes())
Expand Down
Expand Up @@ -106,7 +106,7 @@ public void testUpdateSubsetView() {
.setAuthorizedViewType(
SubsetView.create()
.addRowPrefix("row#")
.addFamilySubsets(
.setFamilySubsets(
"cf",
FamilySubsets.create()
.addQualifier("qualifier")
Expand Down

0 comments on commit 595cfa1

Please sign in to comment.