@@ -174,8 +174,7 @@ public Paginated<InstanceConfig> listInstanceConfigs(int pageSize, @Nullable Str
174174 }
175175 ListInstanceConfigsRequest request = requestBuilder .build ();
176176
177- GrpcCallContext context = GrpcCallContext .createDefault ()
178- .withExtraHeaders (metadataProvider .newExtraHeaders (projectName , projectName ));
177+ GrpcCallContext context = newCallContext (null , projectName );
179178 ListInstanceConfigsResponse response =
180179 get (instanceStub .listInstanceConfigsCallable ().futureCall (request , context ));
181180 return new Paginated <>(response .getInstanceConfigsList (), response .getNextPageToken ());
@@ -186,8 +185,7 @@ public InstanceConfig getInstanceConfig(String instanceConfigName) throws Spanne
186185 GetInstanceConfigRequest request =
187186 GetInstanceConfigRequest .newBuilder ().setName (instanceConfigName ).build ();
188187
189- GrpcCallContext context = GrpcCallContext .createDefault ()
190- .withExtraHeaders (metadataProvider .newExtraHeaders (projectName , projectName ));
188+ GrpcCallContext context = newCallContext (null , projectName );
191189 return get (instanceStub .getInstanceConfigCallable ().futureCall (request , context ));
192190 }
193191
@@ -204,8 +202,7 @@ public Paginated<Instance> listInstances(
204202 }
205203 ListInstancesRequest request = requestBuilder .build ();
206204
207- GrpcCallContext context = GrpcCallContext .createDefault ()
208- .withExtraHeaders (metadataProvider .newExtraHeaders (projectName , projectName ));
205+ GrpcCallContext context = newCallContext (null , projectName );
209206 ListInstancesResponse response =
210207 get (instanceStub .listInstancesCallable ().futureCall (request , context ));
211208 return new Paginated <>(response .getInstancesList (), response .getNextPageToken ());
@@ -221,8 +218,7 @@ public Operation createInstance(String parent, String instanceId, Instance insta
221218 .setInstance (instance )
222219 .build ();
223220
224- GrpcCallContext context = GrpcCallContext .createDefault ()
225- .withExtraHeaders (metadataProvider .newExtraHeaders (parent , projectName ));
221+ GrpcCallContext context = newCallContext (null , parent );
226222 return get (instanceStub .createInstanceCallable ().futureCall (request , context ));
227223 }
228224
@@ -231,8 +227,7 @@ public Operation updateInstance(Instance instance, FieldMask fieldMask) throws S
231227 UpdateInstanceRequest request =
232228 UpdateInstanceRequest .newBuilder ().setInstance (instance ).setFieldMask (fieldMask ).build ();
233229
234- GrpcCallContext context = GrpcCallContext .createDefault ()
235- .withExtraHeaders (metadataProvider .newExtraHeaders (instance .getName (), projectName ));
230+ GrpcCallContext context = newCallContext (null , instance .getName ());
236231 return get (instanceStub .updateInstanceCallable ().futureCall (request , context ));
237232 }
238233
@@ -241,8 +236,7 @@ public Instance getInstance(String instanceName) throws SpannerException {
241236 GetInstanceRequest request =
242237 GetInstanceRequest .newBuilder ().setName (instanceName ).build ();
243238
244- GrpcCallContext context = GrpcCallContext .createDefault ()
245- .withExtraHeaders (metadataProvider .newExtraHeaders (instanceName , projectName ));
239+ GrpcCallContext context = newCallContext (null , instanceName );
246240 return get (instanceStub .getInstanceCallable ().futureCall (request , context ));
247241 }
248242
@@ -251,8 +245,7 @@ public void deleteInstance(String instanceName) throws SpannerException {
251245 DeleteInstanceRequest request =
252246 DeleteInstanceRequest .newBuilder ().setName (instanceName ).build ();
253247
254- GrpcCallContext context = GrpcCallContext .createDefault ()
255- .withExtraHeaders (metadataProvider .newExtraHeaders (instanceName , projectName ));
248+ GrpcCallContext context = newCallContext (null , instanceName );
256249 get (instanceStub .deleteInstanceCallable ().futureCall (request , context ));
257250 }
258251
@@ -266,8 +259,7 @@ public Paginated<Database> listDatabases(
266259 }
267260 ListDatabasesRequest request = requestBuilder .build ();
268261
269- GrpcCallContext context = GrpcCallContext .createDefault ()
270- .withExtraHeaders (metadataProvider .newExtraHeaders (instanceName , projectName ));
262+ GrpcCallContext context = newCallContext (null , instanceName );
271263 ListDatabasesResponse response = get (databaseStub .listDatabasesCallable ()
272264 .futureCall (request , context ));
273265 return new Paginated <>(response .getDatabasesList (), response .getNextPageToken ());
@@ -282,8 +274,7 @@ public Operation createDatabase(String instanceName, String createDatabaseStatem
282274 .setCreateStatement (createDatabaseStatement )
283275 .addAllExtraStatements (additionalStatements )
284276 .build ();
285- GrpcCallContext context = GrpcCallContext .createDefault ()
286- .withExtraHeaders (metadataProvider .newExtraHeaders (instanceName , projectName ));
277+ GrpcCallContext context = newCallContext (null , instanceName );
287278 return get (databaseStub .createDatabaseCallable ().futureCall (request , context ));
288279 }
289280
@@ -296,8 +287,7 @@ public Operation updateDatabaseDdl(String databaseName, Iterable<String> updateD
296287 .addAllStatements (updateDatabaseStatements )
297288 .setOperationId (MoreObjects .firstNonNull (updateId , "" ))
298289 .build ();
299- GrpcCallContext context = GrpcCallContext .createDefault ()
300- .withExtraHeaders (metadataProvider .newExtraHeaders (databaseName , projectName ));
290+ GrpcCallContext context = newCallContext (null , databaseName );
301291 return get (databaseStub .updateDatabaseDdlCallable ().futureCall (request , context ));
302292 }
303293
@@ -306,8 +296,7 @@ public void dropDatabase(String databaseName) throws SpannerException {
306296 DropDatabaseRequest request =
307297 DropDatabaseRequest .newBuilder ().setDatabase (databaseName ).build ();
308298
309- GrpcCallContext context = GrpcCallContext .createDefault ()
310- .withExtraHeaders (metadataProvider .newExtraHeaders (databaseName , projectName ));
299+ GrpcCallContext context = newCallContext (null , databaseName );
311300 get (databaseStub .dropDatabaseCallable ().futureCall (request , context ));
312301 }
313302
@@ -318,8 +307,7 @@ public Database getDatabase(String databaseName) throws SpannerException {
318307 .setName (databaseName )
319308 .build ();
320309
321- GrpcCallContext context = GrpcCallContext .createDefault ()
322- .withExtraHeaders (metadataProvider .newExtraHeaders (databaseName , projectName ));
310+ GrpcCallContext context = newCallContext (null , databaseName );
323311 return get (databaseStub .getDatabaseCallable ().futureCall (request , context ));
324312 }
325313
@@ -328,17 +316,15 @@ public List<String> getDatabaseDdl(String databaseName) throws SpannerException
328316 GetDatabaseDdlRequest request =
329317 GetDatabaseDdlRequest .newBuilder ().setDatabase (databaseName ).build ();
330318
331- GrpcCallContext context = GrpcCallContext .createDefault ()
332- .withExtraHeaders (metadataProvider .newExtraHeaders (databaseName , projectName ));
319+ GrpcCallContext context = newCallContext (null , databaseName );
333320 return get (databaseStub .getDatabaseDdlCallable ().futureCall (request , context ))
334321 .getStatementsList ();
335322 }
336323
337324 @ Override
338325 public Operation getOperation (String name ) throws SpannerException {
339326 GetOperationRequest request = GetOperationRequest .newBuilder ().setName (name ).build ();
340- GrpcCallContext context = GrpcCallContext .createDefault ()
341- .withExtraHeaders (metadataProvider .newExtraHeaders (name , projectName ));
327+ GrpcCallContext context = newCallContext (null , name );
342328 return get (databaseStub .getOperationsStub ().getOperationCallable ()
343329 .futureCall (request , context ));
344330 }
@@ -353,9 +339,7 @@ public Session createSession(String databaseName, @Nullable Map<String, String>
353339 requestBuilder .setSession (session );
354340 }
355341 CreateSessionRequest request = requestBuilder .build ();
356- GrpcCallContext context = GrpcCallContext .createDefault ()
357- .withChannelAffinity (Option .CHANNEL_HINT .getLong (options ).intValue ())
358- .withExtraHeaders (metadataProvider .newExtraHeaders (databaseName , projectName ));
342+ GrpcCallContext context = newCallContext (options , databaseName );
359343 return get (stub .createSessionCallable ().futureCall (request , context ));
360344 }
361345
@@ -364,18 +348,14 @@ public void deleteSession(String sessionName, @Nullable Map<Option, ?> options)
364348 throws SpannerException {
365349 DeleteSessionRequest request =
366350 DeleteSessionRequest .newBuilder ().setName (sessionName ).build ();
367- GrpcCallContext context = GrpcCallContext .createDefault ()
368- .withChannelAffinity (Option .CHANNEL_HINT .getLong (options ).intValue ())
369- .withExtraHeaders (metadataProvider .newExtraHeaders (sessionName , projectName ));
351+ GrpcCallContext context = newCallContext (options , sessionName );
370352 get (stub .deleteSessionCallable ().futureCall (request , context ));
371353 }
372354
373355 @ Override
374356 public StreamingCall read (
375357 ReadRequest request , ResultStreamConsumer consumer , @ Nullable Map <Option , ?> options ) {
376- GrpcCallContext context = GrpcCallContext .createDefault ()
377- .withChannelAffinity (Option .CHANNEL_HINT .getLong (options ).intValue ())
378- .withExtraHeaders (metadataProvider .newExtraHeaders (request .getSession (), projectName ));
358+ GrpcCallContext context = newCallContext (options , request .getSession ());
379359 throw new UnsupportedOperationException ("not implemented yet" );
380360 }
381361
@@ -388,46 +368,35 @@ public StreamingCall executeQuery(
388368 @ Override
389369 public Transaction beginTransaction (
390370 BeginTransactionRequest request , @ Nullable Map <Option , ?> options ) throws SpannerException {
391- GrpcCallContext context = GrpcCallContext .createDefault ()
392- .withChannelAffinity (Option .CHANNEL_HINT .getLong (options ).intValue ())
393- .withExtraHeaders (metadataProvider .newExtraHeaders (request .getSession (), projectName ));
371+ GrpcCallContext context = newCallContext (options , request .getSession ());
394372 return get (stub .beginTransactionCallable ().futureCall (request , context ));
395373 }
396374
397375 @ Override
398376 public CommitResponse commit (CommitRequest commitRequest , @ Nullable Map <Option , ?> options )
399377 throws SpannerException {
400- GrpcCallContext context = GrpcCallContext .createDefault ()
401- .withChannelAffinity (Option .CHANNEL_HINT .getLong (options ).intValue ())
402- .withExtraHeaders (
403- metadataProvider .newExtraHeaders (commitRequest .getSession (), projectName ));
378+ GrpcCallContext context = newCallContext (options , commitRequest .getSession ());
404379 return get (stub .commitCallable ().futureCall (commitRequest , context ));
405380 }
406381
407382 @ Override
408383 public void rollback (RollbackRequest request , @ Nullable Map <Option , ?> options )
409384 throws SpannerException {
410- GrpcCallContext context = GrpcCallContext .createDefault ()
411- .withChannelAffinity (Option .CHANNEL_HINT .getLong (options ).intValue ())
412- .withExtraHeaders (metadataProvider .newExtraHeaders (request .getSession (), projectName ));
385+ GrpcCallContext context = newCallContext (options , request .getSession ());
413386 get (stub .rollbackCallable ().futureCall (request , context ));
414387 }
415388
416389 @ Override
417390 public PartitionResponse partitionQuery (
418391 PartitionQueryRequest request , @ Nullable Map <Option , ?> options ) throws SpannerException {
419- GrpcCallContext context = GrpcCallContext .createDefault ()
420- .withChannelAffinity (Option .CHANNEL_HINT .getLong (options ).intValue ())
421- .withExtraHeaders (metadataProvider .newExtraHeaders (request .getSession (), projectName ));
392+ GrpcCallContext context = newCallContext (options , request .getSession ());
422393 return get (stub .partitionQueryCallable ().futureCall (request , context ));
423394 }
424395
425396 @ Override
426397 public PartitionResponse partitionRead (
427398 PartitionReadRequest request , @ Nullable Map <Option , ?> options ) throws SpannerException {
428- GrpcCallContext context = GrpcCallContext .createDefault ()
429- .withChannelAffinity (Option .CHANNEL_HINT .getLong (options ).intValue ())
430- .withExtraHeaders (metadataProvider .newExtraHeaders (request .getSession (), projectName ));
399+ GrpcCallContext context = newCallContext (options , request .getSession ());
431400 return get (stub .partitionReadCallable ().futureCall (request , context ));
432401 }
433402
@@ -444,4 +413,14 @@ private static <T> T get(final Future<T> future) throws SpannerException {
444413 throw newSpannerException (context , e );
445414 }
446415 }
416+
417+ private GrpcCallContext newCallContext (@ Nullable Map <Option , ?> options , String resource ) {
418+ GrpcCallContext context = GrpcCallContext .createDefault ();
419+ if (options != null ) {
420+ context = context .withChannelAffinity (Option .CHANNEL_HINT .getLong (options ).intValue ());
421+ }
422+ context = context .withExtraHeaders (
423+ metadataProvider .newExtraHeaders (resource , projectName ));
424+ return context ;
425+ }
447426}
0 commit comments