public ListenableFuture getConnectionInfo()

in alloydb-jdbc-connector/src/main/java/com/google/cloud/alloydb/DefaultConnectionInfoRepository.java [60:94]


  public ListenableFuture<ConnectionInfo> getConnectionInfo(
      InstanceName instanceName, KeyPair keyPair) {
    ListenableFuture<com.google.cloud.alloydb.v1alpha.ConnectionInfo> infoFuture =
        executor.submit(() -> getConnectionInfo(instanceName));
    ListenableFuture<GenerateClientCertificateResponse> clientCertificateResponseFuture =
        executor.submit(() -> getGenerateClientCertificateResponse(instanceName, keyPair));

    return Futures.whenAllComplete(infoFuture, clientCertificateResponseFuture)
        .call(
            () -> {
              com.google.cloud.alloydb.v1alpha.ConnectionInfo info = Futures.getDone(infoFuture);
              GenerateClientCertificateResponse certificateResponse =
                  Futures.getDone(clientCertificateResponseFuture);

              List<ByteString> certificateChainBytes =
                  certificateResponse.getPemCertificateChainList().asByteStringList();
              List<X509Certificate> certificateChain = new ArrayList<>();
              for (ByteString certificateChainByte : certificateChainBytes) {
                certificateChain.add(parseCertificate(certificateChainByte));
              }
              X509Certificate clientCertificate = certificateChain.get(0);
              ByteString caCertificateBytes = certificateResponse.getCaCertBytes();
              X509Certificate caCertificate = parseCertificate(caCertificateBytes);

              return new ConnectionInfo(
                  info.getIpAddress(),
                  info.getPublicIpAddress(),
                  info.getPscDnsName(),
                  info.getInstanceUid(),
                  clientCertificate,
                  certificateChain,
                  caCertificate);
            },
            executor);
  }