• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2022 Google LLC
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      https://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.google.cloud.kms.v1;
18 
19 import com.google.api.core.BetaApi;
20 import com.google.cloud.kms.v1.KeyManagementServiceGrpc.KeyManagementServiceImplBase;
21 import com.google.protobuf.AbstractMessage;
22 import io.grpc.stub.StreamObserver;
23 import java.util.ArrayList;
24 import java.util.LinkedList;
25 import java.util.List;
26 import java.util.Queue;
27 import javax.annotation.Generated;
28 
29 @BetaApi
30 @Generated("by gapic-generator-java")
31 public class MockKeyManagementServiceImpl extends KeyManagementServiceImplBase {
32   private List<AbstractMessage> requests;
33   private Queue<Object> responses;
34 
MockKeyManagementServiceImpl()35   public MockKeyManagementServiceImpl() {
36     requests = new ArrayList<>();
37     responses = new LinkedList<>();
38   }
39 
getRequests()40   public List<AbstractMessage> getRequests() {
41     return requests;
42   }
43 
addResponse(AbstractMessage response)44   public void addResponse(AbstractMessage response) {
45     responses.add(response);
46   }
47 
setResponses(List<AbstractMessage> responses)48   public void setResponses(List<AbstractMessage> responses) {
49     this.responses = new LinkedList<Object>(responses);
50   }
51 
addException(Exception exception)52   public void addException(Exception exception) {
53     responses.add(exception);
54   }
55 
reset()56   public void reset() {
57     requests = new ArrayList<>();
58     responses = new LinkedList<>();
59   }
60 
61   @Override
listKeyRings( ListKeyRingsRequest request, StreamObserver<ListKeyRingsResponse> responseObserver)62   public void listKeyRings(
63       ListKeyRingsRequest request, StreamObserver<ListKeyRingsResponse> responseObserver) {
64     Object response = responses.poll();
65     if (response instanceof ListKeyRingsResponse) {
66       requests.add(request);
67       responseObserver.onNext(((ListKeyRingsResponse) response));
68       responseObserver.onCompleted();
69     } else if (response instanceof Exception) {
70       responseObserver.onError(((Exception) response));
71     } else {
72       responseObserver.onError(
73           new IllegalArgumentException(
74               String.format(
75                   "Unrecognized response type %s for method ListKeyRings, expected %s or %s",
76                   response == null ? "null" : response.getClass().getName(),
77                   ListKeyRingsResponse.class.getName(),
78                   Exception.class.getName())));
79     }
80   }
81 
82   @Override
listCryptoKeys( ListCryptoKeysRequest request, StreamObserver<ListCryptoKeysResponse> responseObserver)83   public void listCryptoKeys(
84       ListCryptoKeysRequest request, StreamObserver<ListCryptoKeysResponse> responseObserver) {
85     Object response = responses.poll();
86     if (response instanceof ListCryptoKeysResponse) {
87       requests.add(request);
88       responseObserver.onNext(((ListCryptoKeysResponse) response));
89       responseObserver.onCompleted();
90     } else if (response instanceof Exception) {
91       responseObserver.onError(((Exception) response));
92     } else {
93       responseObserver.onError(
94           new IllegalArgumentException(
95               String.format(
96                   "Unrecognized response type %s for method ListCryptoKeys, expected %s or %s",
97                   response == null ? "null" : response.getClass().getName(),
98                   ListCryptoKeysResponse.class.getName(),
99                   Exception.class.getName())));
100     }
101   }
102 
103   @Override
listCryptoKeyVersions( ListCryptoKeyVersionsRequest request, StreamObserver<ListCryptoKeyVersionsResponse> responseObserver)104   public void listCryptoKeyVersions(
105       ListCryptoKeyVersionsRequest request,
106       StreamObserver<ListCryptoKeyVersionsResponse> responseObserver) {
107     Object response = responses.poll();
108     if (response instanceof ListCryptoKeyVersionsResponse) {
109       requests.add(request);
110       responseObserver.onNext(((ListCryptoKeyVersionsResponse) response));
111       responseObserver.onCompleted();
112     } else if (response instanceof Exception) {
113       responseObserver.onError(((Exception) response));
114     } else {
115       responseObserver.onError(
116           new IllegalArgumentException(
117               String.format(
118                   "Unrecognized response type %s for method ListCryptoKeyVersions, expected %s or %s",
119                   response == null ? "null" : response.getClass().getName(),
120                   ListCryptoKeyVersionsResponse.class.getName(),
121                   Exception.class.getName())));
122     }
123   }
124 
125   @Override
listImportJobs( ListImportJobsRequest request, StreamObserver<ListImportJobsResponse> responseObserver)126   public void listImportJobs(
127       ListImportJobsRequest request, StreamObserver<ListImportJobsResponse> responseObserver) {
128     Object response = responses.poll();
129     if (response instanceof ListImportJobsResponse) {
130       requests.add(request);
131       responseObserver.onNext(((ListImportJobsResponse) response));
132       responseObserver.onCompleted();
133     } else if (response instanceof Exception) {
134       responseObserver.onError(((Exception) response));
135     } else {
136       responseObserver.onError(
137           new IllegalArgumentException(
138               String.format(
139                   "Unrecognized response type %s for method ListImportJobs, expected %s or %s",
140                   response == null ? "null" : response.getClass().getName(),
141                   ListImportJobsResponse.class.getName(),
142                   Exception.class.getName())));
143     }
144   }
145 
146   @Override
getKeyRing(GetKeyRingRequest request, StreamObserver<KeyRing> responseObserver)147   public void getKeyRing(GetKeyRingRequest request, StreamObserver<KeyRing> responseObserver) {
148     Object response = responses.poll();
149     if (response instanceof KeyRing) {
150       requests.add(request);
151       responseObserver.onNext(((KeyRing) response));
152       responseObserver.onCompleted();
153     } else if (response instanceof Exception) {
154       responseObserver.onError(((Exception) response));
155     } else {
156       responseObserver.onError(
157           new IllegalArgumentException(
158               String.format(
159                   "Unrecognized response type %s for method GetKeyRing, expected %s or %s",
160                   response == null ? "null" : response.getClass().getName(),
161                   KeyRing.class.getName(),
162                   Exception.class.getName())));
163     }
164   }
165 
166   @Override
getCryptoKey( GetCryptoKeyRequest request, StreamObserver<CryptoKey> responseObserver)167   public void getCryptoKey(
168       GetCryptoKeyRequest request, StreamObserver<CryptoKey> responseObserver) {
169     Object response = responses.poll();
170     if (response instanceof CryptoKey) {
171       requests.add(request);
172       responseObserver.onNext(((CryptoKey) response));
173       responseObserver.onCompleted();
174     } else if (response instanceof Exception) {
175       responseObserver.onError(((Exception) response));
176     } else {
177       responseObserver.onError(
178           new IllegalArgumentException(
179               String.format(
180                   "Unrecognized response type %s for method GetCryptoKey, expected %s or %s",
181                   response == null ? "null" : response.getClass().getName(),
182                   CryptoKey.class.getName(),
183                   Exception.class.getName())));
184     }
185   }
186 
187   @Override
getCryptoKeyVersion( GetCryptoKeyVersionRequest request, StreamObserver<CryptoKeyVersion> responseObserver)188   public void getCryptoKeyVersion(
189       GetCryptoKeyVersionRequest request, StreamObserver<CryptoKeyVersion> responseObserver) {
190     Object response = responses.poll();
191     if (response instanceof CryptoKeyVersion) {
192       requests.add(request);
193       responseObserver.onNext(((CryptoKeyVersion) response));
194       responseObserver.onCompleted();
195     } else if (response instanceof Exception) {
196       responseObserver.onError(((Exception) response));
197     } else {
198       responseObserver.onError(
199           new IllegalArgumentException(
200               String.format(
201                   "Unrecognized response type %s for method GetCryptoKeyVersion, expected %s or %s",
202                   response == null ? "null" : response.getClass().getName(),
203                   CryptoKeyVersion.class.getName(),
204                   Exception.class.getName())));
205     }
206   }
207 
208   @Override
getPublicKey( GetPublicKeyRequest request, StreamObserver<PublicKey> responseObserver)209   public void getPublicKey(
210       GetPublicKeyRequest request, StreamObserver<PublicKey> responseObserver) {
211     Object response = responses.poll();
212     if (response instanceof PublicKey) {
213       requests.add(request);
214       responseObserver.onNext(((PublicKey) response));
215       responseObserver.onCompleted();
216     } else if (response instanceof Exception) {
217       responseObserver.onError(((Exception) response));
218     } else {
219       responseObserver.onError(
220           new IllegalArgumentException(
221               String.format(
222                   "Unrecognized response type %s for method GetPublicKey, expected %s or %s",
223                   response == null ? "null" : response.getClass().getName(),
224                   PublicKey.class.getName(),
225                   Exception.class.getName())));
226     }
227   }
228 
229   @Override
getImportJob( GetImportJobRequest request, StreamObserver<ImportJob> responseObserver)230   public void getImportJob(
231       GetImportJobRequest request, StreamObserver<ImportJob> responseObserver) {
232     Object response = responses.poll();
233     if (response instanceof ImportJob) {
234       requests.add(request);
235       responseObserver.onNext(((ImportJob) response));
236       responseObserver.onCompleted();
237     } else if (response instanceof Exception) {
238       responseObserver.onError(((Exception) response));
239     } else {
240       responseObserver.onError(
241           new IllegalArgumentException(
242               String.format(
243                   "Unrecognized response type %s for method GetImportJob, expected %s or %s",
244                   response == null ? "null" : response.getClass().getName(),
245                   ImportJob.class.getName(),
246                   Exception.class.getName())));
247     }
248   }
249 
250   @Override
createKeyRing( CreateKeyRingRequest request, StreamObserver<KeyRing> responseObserver)251   public void createKeyRing(
252       CreateKeyRingRequest request, StreamObserver<KeyRing> responseObserver) {
253     Object response = responses.poll();
254     if (response instanceof KeyRing) {
255       requests.add(request);
256       responseObserver.onNext(((KeyRing) response));
257       responseObserver.onCompleted();
258     } else if (response instanceof Exception) {
259       responseObserver.onError(((Exception) response));
260     } else {
261       responseObserver.onError(
262           new IllegalArgumentException(
263               String.format(
264                   "Unrecognized response type %s for method CreateKeyRing, expected %s or %s",
265                   response == null ? "null" : response.getClass().getName(),
266                   KeyRing.class.getName(),
267                   Exception.class.getName())));
268     }
269   }
270 
271   @Override
createCryptoKey( CreateCryptoKeyRequest request, StreamObserver<CryptoKey> responseObserver)272   public void createCryptoKey(
273       CreateCryptoKeyRequest request, StreamObserver<CryptoKey> responseObserver) {
274     Object response = responses.poll();
275     if (response instanceof CryptoKey) {
276       requests.add(request);
277       responseObserver.onNext(((CryptoKey) response));
278       responseObserver.onCompleted();
279     } else if (response instanceof Exception) {
280       responseObserver.onError(((Exception) response));
281     } else {
282       responseObserver.onError(
283           new IllegalArgumentException(
284               String.format(
285                   "Unrecognized response type %s for method CreateCryptoKey, expected %s or %s",
286                   response == null ? "null" : response.getClass().getName(),
287                   CryptoKey.class.getName(),
288                   Exception.class.getName())));
289     }
290   }
291 
292   @Override
createCryptoKeyVersion( CreateCryptoKeyVersionRequest request, StreamObserver<CryptoKeyVersion> responseObserver)293   public void createCryptoKeyVersion(
294       CreateCryptoKeyVersionRequest request, StreamObserver<CryptoKeyVersion> responseObserver) {
295     Object response = responses.poll();
296     if (response instanceof CryptoKeyVersion) {
297       requests.add(request);
298       responseObserver.onNext(((CryptoKeyVersion) response));
299       responseObserver.onCompleted();
300     } else if (response instanceof Exception) {
301       responseObserver.onError(((Exception) response));
302     } else {
303       responseObserver.onError(
304           new IllegalArgumentException(
305               String.format(
306                   "Unrecognized response type %s for method CreateCryptoKeyVersion, expected %s or %s",
307                   response == null ? "null" : response.getClass().getName(),
308                   CryptoKeyVersion.class.getName(),
309                   Exception.class.getName())));
310     }
311   }
312 
313   @Override
importCryptoKeyVersion( ImportCryptoKeyVersionRequest request, StreamObserver<CryptoKeyVersion> responseObserver)314   public void importCryptoKeyVersion(
315       ImportCryptoKeyVersionRequest request, StreamObserver<CryptoKeyVersion> responseObserver) {
316     Object response = responses.poll();
317     if (response instanceof CryptoKeyVersion) {
318       requests.add(request);
319       responseObserver.onNext(((CryptoKeyVersion) response));
320       responseObserver.onCompleted();
321     } else if (response instanceof Exception) {
322       responseObserver.onError(((Exception) response));
323     } else {
324       responseObserver.onError(
325           new IllegalArgumentException(
326               String.format(
327                   "Unrecognized response type %s for method ImportCryptoKeyVersion, expected %s or %s",
328                   response == null ? "null" : response.getClass().getName(),
329                   CryptoKeyVersion.class.getName(),
330                   Exception.class.getName())));
331     }
332   }
333 
334   @Override
createImportJob( CreateImportJobRequest request, StreamObserver<ImportJob> responseObserver)335   public void createImportJob(
336       CreateImportJobRequest request, StreamObserver<ImportJob> responseObserver) {
337     Object response = responses.poll();
338     if (response instanceof ImportJob) {
339       requests.add(request);
340       responseObserver.onNext(((ImportJob) response));
341       responseObserver.onCompleted();
342     } else if (response instanceof Exception) {
343       responseObserver.onError(((Exception) response));
344     } else {
345       responseObserver.onError(
346           new IllegalArgumentException(
347               String.format(
348                   "Unrecognized response type %s for method CreateImportJob, expected %s or %s",
349                   response == null ? "null" : response.getClass().getName(),
350                   ImportJob.class.getName(),
351                   Exception.class.getName())));
352     }
353   }
354 
355   @Override
updateCryptoKey( UpdateCryptoKeyRequest request, StreamObserver<CryptoKey> responseObserver)356   public void updateCryptoKey(
357       UpdateCryptoKeyRequest request, StreamObserver<CryptoKey> responseObserver) {
358     Object response = responses.poll();
359     if (response instanceof CryptoKey) {
360       requests.add(request);
361       responseObserver.onNext(((CryptoKey) response));
362       responseObserver.onCompleted();
363     } else if (response instanceof Exception) {
364       responseObserver.onError(((Exception) response));
365     } else {
366       responseObserver.onError(
367           new IllegalArgumentException(
368               String.format(
369                   "Unrecognized response type %s for method UpdateCryptoKey, expected %s or %s",
370                   response == null ? "null" : response.getClass().getName(),
371                   CryptoKey.class.getName(),
372                   Exception.class.getName())));
373     }
374   }
375 
376   @Override
updateCryptoKeyVersion( UpdateCryptoKeyVersionRequest request, StreamObserver<CryptoKeyVersion> responseObserver)377   public void updateCryptoKeyVersion(
378       UpdateCryptoKeyVersionRequest request, StreamObserver<CryptoKeyVersion> responseObserver) {
379     Object response = responses.poll();
380     if (response instanceof CryptoKeyVersion) {
381       requests.add(request);
382       responseObserver.onNext(((CryptoKeyVersion) response));
383       responseObserver.onCompleted();
384     } else if (response instanceof Exception) {
385       responseObserver.onError(((Exception) response));
386     } else {
387       responseObserver.onError(
388           new IllegalArgumentException(
389               String.format(
390                   "Unrecognized response type %s for method UpdateCryptoKeyVersion, expected %s or %s",
391                   response == null ? "null" : response.getClass().getName(),
392                   CryptoKeyVersion.class.getName(),
393                   Exception.class.getName())));
394     }
395   }
396 
397   @Override
updateCryptoKeyPrimaryVersion( UpdateCryptoKeyPrimaryVersionRequest request, StreamObserver<CryptoKey> responseObserver)398   public void updateCryptoKeyPrimaryVersion(
399       UpdateCryptoKeyPrimaryVersionRequest request, StreamObserver<CryptoKey> responseObserver) {
400     Object response = responses.poll();
401     if (response instanceof CryptoKey) {
402       requests.add(request);
403       responseObserver.onNext(((CryptoKey) response));
404       responseObserver.onCompleted();
405     } else if (response instanceof Exception) {
406       responseObserver.onError(((Exception) response));
407     } else {
408       responseObserver.onError(
409           new IllegalArgumentException(
410               String.format(
411                   "Unrecognized response type %s for method UpdateCryptoKeyPrimaryVersion, expected %s or %s",
412                   response == null ? "null" : response.getClass().getName(),
413                   CryptoKey.class.getName(),
414                   Exception.class.getName())));
415     }
416   }
417 
418   @Override
destroyCryptoKeyVersion( DestroyCryptoKeyVersionRequest request, StreamObserver<CryptoKeyVersion> responseObserver)419   public void destroyCryptoKeyVersion(
420       DestroyCryptoKeyVersionRequest request, StreamObserver<CryptoKeyVersion> responseObserver) {
421     Object response = responses.poll();
422     if (response instanceof CryptoKeyVersion) {
423       requests.add(request);
424       responseObserver.onNext(((CryptoKeyVersion) response));
425       responseObserver.onCompleted();
426     } else if (response instanceof Exception) {
427       responseObserver.onError(((Exception) response));
428     } else {
429       responseObserver.onError(
430           new IllegalArgumentException(
431               String.format(
432                   "Unrecognized response type %s for method DestroyCryptoKeyVersion, expected %s or %s",
433                   response == null ? "null" : response.getClass().getName(),
434                   CryptoKeyVersion.class.getName(),
435                   Exception.class.getName())));
436     }
437   }
438 
439   @Override
restoreCryptoKeyVersion( RestoreCryptoKeyVersionRequest request, StreamObserver<CryptoKeyVersion> responseObserver)440   public void restoreCryptoKeyVersion(
441       RestoreCryptoKeyVersionRequest request, StreamObserver<CryptoKeyVersion> responseObserver) {
442     Object response = responses.poll();
443     if (response instanceof CryptoKeyVersion) {
444       requests.add(request);
445       responseObserver.onNext(((CryptoKeyVersion) response));
446       responseObserver.onCompleted();
447     } else if (response instanceof Exception) {
448       responseObserver.onError(((Exception) response));
449     } else {
450       responseObserver.onError(
451           new IllegalArgumentException(
452               String.format(
453                   "Unrecognized response type %s for method RestoreCryptoKeyVersion, expected %s or %s",
454                   response == null ? "null" : response.getClass().getName(),
455                   CryptoKeyVersion.class.getName(),
456                   Exception.class.getName())));
457     }
458   }
459 
460   @Override
encrypt(EncryptRequest request, StreamObserver<EncryptResponse> responseObserver)461   public void encrypt(EncryptRequest request, StreamObserver<EncryptResponse> responseObserver) {
462     Object response = responses.poll();
463     if (response instanceof EncryptResponse) {
464       requests.add(request);
465       responseObserver.onNext(((EncryptResponse) response));
466       responseObserver.onCompleted();
467     } else if (response instanceof Exception) {
468       responseObserver.onError(((Exception) response));
469     } else {
470       responseObserver.onError(
471           new IllegalArgumentException(
472               String.format(
473                   "Unrecognized response type %s for method Encrypt, expected %s or %s",
474                   response == null ? "null" : response.getClass().getName(),
475                   EncryptResponse.class.getName(),
476                   Exception.class.getName())));
477     }
478   }
479 
480   @Override
decrypt(DecryptRequest request, StreamObserver<DecryptResponse> responseObserver)481   public void decrypt(DecryptRequest request, StreamObserver<DecryptResponse> responseObserver) {
482     Object response = responses.poll();
483     if (response instanceof DecryptResponse) {
484       requests.add(request);
485       responseObserver.onNext(((DecryptResponse) response));
486       responseObserver.onCompleted();
487     } else if (response instanceof Exception) {
488       responseObserver.onError(((Exception) response));
489     } else {
490       responseObserver.onError(
491           new IllegalArgumentException(
492               String.format(
493                   "Unrecognized response type %s for method Decrypt, expected %s or %s",
494                   response == null ? "null" : response.getClass().getName(),
495                   DecryptResponse.class.getName(),
496                   Exception.class.getName())));
497     }
498   }
499 
500   @Override
asymmetricSign( AsymmetricSignRequest request, StreamObserver<AsymmetricSignResponse> responseObserver)501   public void asymmetricSign(
502       AsymmetricSignRequest request, StreamObserver<AsymmetricSignResponse> responseObserver) {
503     Object response = responses.poll();
504     if (response instanceof AsymmetricSignResponse) {
505       requests.add(request);
506       responseObserver.onNext(((AsymmetricSignResponse) response));
507       responseObserver.onCompleted();
508     } else if (response instanceof Exception) {
509       responseObserver.onError(((Exception) response));
510     } else {
511       responseObserver.onError(
512           new IllegalArgumentException(
513               String.format(
514                   "Unrecognized response type %s for method AsymmetricSign, expected %s or %s",
515                   response == null ? "null" : response.getClass().getName(),
516                   AsymmetricSignResponse.class.getName(),
517                   Exception.class.getName())));
518     }
519   }
520 
521   @Override
asymmetricDecrypt( AsymmetricDecryptRequest request, StreamObserver<AsymmetricDecryptResponse> responseObserver)522   public void asymmetricDecrypt(
523       AsymmetricDecryptRequest request,
524       StreamObserver<AsymmetricDecryptResponse> responseObserver) {
525     Object response = responses.poll();
526     if (response instanceof AsymmetricDecryptResponse) {
527       requests.add(request);
528       responseObserver.onNext(((AsymmetricDecryptResponse) response));
529       responseObserver.onCompleted();
530     } else if (response instanceof Exception) {
531       responseObserver.onError(((Exception) response));
532     } else {
533       responseObserver.onError(
534           new IllegalArgumentException(
535               String.format(
536                   "Unrecognized response type %s for method AsymmetricDecrypt, expected %s or %s",
537                   response == null ? "null" : response.getClass().getName(),
538                   AsymmetricDecryptResponse.class.getName(),
539                   Exception.class.getName())));
540     }
541   }
542 
543   @Override
macSign(MacSignRequest request, StreamObserver<MacSignResponse> responseObserver)544   public void macSign(MacSignRequest request, StreamObserver<MacSignResponse> responseObserver) {
545     Object response = responses.poll();
546     if (response instanceof MacSignResponse) {
547       requests.add(request);
548       responseObserver.onNext(((MacSignResponse) response));
549       responseObserver.onCompleted();
550     } else if (response instanceof Exception) {
551       responseObserver.onError(((Exception) response));
552     } else {
553       responseObserver.onError(
554           new IllegalArgumentException(
555               String.format(
556                   "Unrecognized response type %s for method MacSign, expected %s or %s",
557                   response == null ? "null" : response.getClass().getName(),
558                   MacSignResponse.class.getName(),
559                   Exception.class.getName())));
560     }
561   }
562 
563   @Override
macVerify( MacVerifyRequest request, StreamObserver<MacVerifyResponse> responseObserver)564   public void macVerify(
565       MacVerifyRequest request, StreamObserver<MacVerifyResponse> responseObserver) {
566     Object response = responses.poll();
567     if (response instanceof MacVerifyResponse) {
568       requests.add(request);
569       responseObserver.onNext(((MacVerifyResponse) response));
570       responseObserver.onCompleted();
571     } else if (response instanceof Exception) {
572       responseObserver.onError(((Exception) response));
573     } else {
574       responseObserver.onError(
575           new IllegalArgumentException(
576               String.format(
577                   "Unrecognized response type %s for method MacVerify, expected %s or %s",
578                   response == null ? "null" : response.getClass().getName(),
579                   MacVerifyResponse.class.getName(),
580                   Exception.class.getName())));
581     }
582   }
583 
584   @Override
generateRandomBytes( GenerateRandomBytesRequest request, StreamObserver<GenerateRandomBytesResponse> responseObserver)585   public void generateRandomBytes(
586       GenerateRandomBytesRequest request,
587       StreamObserver<GenerateRandomBytesResponse> responseObserver) {
588     Object response = responses.poll();
589     if (response instanceof GenerateRandomBytesResponse) {
590       requests.add(request);
591       responseObserver.onNext(((GenerateRandomBytesResponse) response));
592       responseObserver.onCompleted();
593     } else if (response instanceof Exception) {
594       responseObserver.onError(((Exception) response));
595     } else {
596       responseObserver.onError(
597           new IllegalArgumentException(
598               String.format(
599                   "Unrecognized response type %s for method GenerateRandomBytes, expected %s or %s",
600                   response == null ? "null" : response.getClass().getName(),
601                   GenerateRandomBytesResponse.class.getName(),
602                   Exception.class.getName())));
603     }
604   }
605 }
606