@@ -43,9 +43,11 @@ public abstract class ConsistencyRequest {
4343 @ Nullable
4444 public abstract String getConsistencyToken ();
4545
46+ protected abstract boolean isFullyQualified ();
47+
4648 public static ConsistencyRequest forReplication (String tableId ) {
4749 return new AutoValue_ConsistencyRequest (
48- tableId , CheckConsistencyRequest .ModeCase .STANDARD_READ_REMOTE_WRITES , null );
50+ tableId , CheckConsistencyRequest .ModeCase .STANDARD_READ_REMOTE_WRITES , null , false );
4951 }
5052
5153 /**
@@ -59,37 +61,110 @@ public static ConsistencyRequest forReplication(String tableId, String consisten
5961 Preconditions .checkNotNull (consistencyToken , "consistencyToken must not be null" );
6062
6163 return new AutoValue_ConsistencyRequest (
62- tableId , CheckConsistencyRequest .ModeCase .STANDARD_READ_REMOTE_WRITES , consistencyToken );
64+ tableId ,
65+ CheckConsistencyRequest .ModeCase .STANDARD_READ_REMOTE_WRITES ,
66+ consistencyToken ,
67+ false );
6368 }
6469
6570 public static ConsistencyRequest forDataBoost (String tableId ) {
6671 return new AutoValue_ConsistencyRequest (
67- tableId , CheckConsistencyRequest .ModeCase .DATA_BOOST_READ_LOCAL_WRITES , null );
72+ tableId , CheckConsistencyRequest .ModeCase .DATA_BOOST_READ_LOCAL_WRITES , null , false );
6873 }
6974
7075 @ InternalApi
71- public CheckConsistencyRequest toCheckConsistencyProto (
72- TableAdminRequestContext requestContext , String token ) {
76+ public static ConsistencyRequest forReplicationFromTableName (String tableName ) {
77+ Preconditions .checkArgument (
78+ TableName .isParsableFrom (tableName ), "tableName must be a fully qualified table name" );
79+ return new AutoValue_ConsistencyRequest (
80+ tableName , CheckConsistencyRequest .ModeCase .STANDARD_READ_REMOTE_WRITES , null , true );
81+ }
82+
83+ @ InternalApi
84+ public static ConsistencyRequest forReplicationFromTableName (
85+ String tableName , String consistencyToken ) {
86+ Preconditions .checkArgument (
87+ TableName .isParsableFrom (tableName ), "tableName must be a fully qualified table name" );
88+ Preconditions .checkNotNull (consistencyToken , "consistencyToken must not be null" );
89+
90+ return new AutoValue_ConsistencyRequest (
91+ tableName ,
92+ CheckConsistencyRequest .ModeCase .STANDARD_READ_REMOTE_WRITES ,
93+ consistencyToken ,
94+ true );
95+ }
96+
97+ private CheckConsistencyRequest .Builder buildBaseRequest (String name , String token ) {
7398 CheckConsistencyRequest .Builder builder = CheckConsistencyRequest .newBuilder ();
74- TableName tableName =
75- TableName .of (requestContext .getProjectId (), requestContext .getInstanceId (), getTableId ());
7699
77100 if (getMode ().equals (CheckConsistencyRequest .ModeCase .STANDARD_READ_REMOTE_WRITES )) {
78101 builder .setStandardReadRemoteWrites (StandardReadRemoteWrites .newBuilder ().build ());
79102 } else {
80103 builder .setDataBoostReadLocalWrites (DataBoostReadLocalWrites .newBuilder ().build ());
81104 }
82105
83- return builder .setName (tableName .toString ()).setConsistencyToken (token ).build ();
106+ return builder .setName (name ).setConsistencyToken (token );
107+ }
108+
109+ /**
110+ * Creates a CheckConsistencyRequest proto. This variant is used when the ConsistencyRequest was
111+ * initialized with a short table ID, relying on the TableAdminRequestContext to construct the
112+ * fully qualified table name.
113+ */
114+ @ InternalApi
115+ public CheckConsistencyRequest toCheckConsistencyProto (
116+ TableAdminRequestContext requestContext , String token ) {
117+ Preconditions .checkState (
118+ !isFullyQualified (),
119+ "Use toCheckConsistencyProto(String token) for fully qualified table names." );
120+ TableName tableName =
121+ TableName .of (requestContext .getProjectId (), requestContext .getInstanceId (), getTableId ());
122+
123+ return buildBaseRequest (tableName .toString (), token ).build ();
84124 }
85125
126+ /**
127+ * Creates a CheckConsistencyRequest proto. This variant is used when the ConsistencyRequest was
128+ * initialized with a fully qualified table name, eliminating the need for a request context.
129+ */
130+ @ InternalApi
131+ public CheckConsistencyRequest toCheckConsistencyProto (String token ) {
132+ Preconditions .checkState (
133+ isFullyQualified (),
134+ "Use toCheckConsistencyProto(TableAdminRequestContext, String) for non-qualified table"
135+ + " names." );
136+
137+ return buildBaseRequest (getTableId (), token ).build ();
138+ }
139+
140+ /**
141+ * Creates a GenerateConsistencyTokenRequest proto. This variant is used when the
142+ * ConsistencyRequest was initialized with a short table ID, relying on the
143+ * TableAdminRequestContext to construct the fully qualified table name.
144+ */
86145 @ InternalApi
87146 public GenerateConsistencyTokenRequest toGenerateTokenProto (
88147 TableAdminRequestContext requestContext ) {
148+ Preconditions .checkState (
149+ !isFullyQualified (), "Use toGenerateTokenProto() for fully qualified table names." );
89150 GenerateConsistencyTokenRequest .Builder builder = GenerateConsistencyTokenRequest .newBuilder ();
90151 TableName tableName =
91152 TableName .of (requestContext .getProjectId (), requestContext .getInstanceId (), getTableId ());
92153
93154 return builder .setName (tableName .toString ()).build ();
94155 }
156+
157+ /**
158+ * Creates a GenerateConsistencyTokenRequest proto. This variant is used when the
159+ * ConsistencyRequest was initialized with a fully qualified table name, eliminating the need for
160+ * a request context.
161+ */
162+ @ InternalApi
163+ public GenerateConsistencyTokenRequest toGenerateTokenProto () {
164+ Preconditions .checkState (
165+ isFullyQualified (),
166+ "Use toGenerateTokenProto(TableAdminRequestContext) for non-qualified table names." );
167+ GenerateConsistencyTokenRequest .Builder builder = GenerateConsistencyTokenRequest .newBuilder ();
168+ return builder .setName (getTableId ()).build ();
169+ }
95170}
0 commit comments