default GoogleCredentials getCredentials()

in core/src/main/java/com/google/cloud/sql/CredentialFactory.java [44:87]


  default GoogleCredentials getCredentials() {
    HttpRequestInitializer requestInitializer = this.create();
    if (requestInitializer instanceof HttpCredentialsAdapter) {
      HttpCredentialsAdapter adapter = (HttpCredentialsAdapter) requestInitializer;
      Credentials c = adapter.getCredentials();
      if (c instanceof GoogleCredentials) {
        return (GoogleCredentials) c;
      }
      throw new RuntimeException(
          String.format(
              "Unable to determine GoogleCredential from HttpRequestInitializer: "
                  + "HttpCredentialsAdapter did not create valid credentials. %s, %s",
              requestInitializer.getClass().getName(), c));
    }

    if (requestInitializer instanceof Credential) {
      Credential credential = (Credential) requestInitializer;
      AccessToken accessToken =
          new AccessToken(
              credential.getAccessToken(),
              credential.getExpirationTimeMilliseconds() != null
                  ? Date.from(Instant.ofEpochMilli(credential.getExpirationTimeMilliseconds()))
                  : null);

      return new GoogleCredentials(GoogleCredentials.newBuilder().setAccessToken(accessToken)) {
        @Override
        public AccessToken refreshAccessToken() throws IOException {
          credential.refreshToken();

          return new AccessToken(
              credential.getAccessToken(),
              credential.getExpirationTimeMilliseconds() != null
                  ? Date.from(Instant.ofEpochMilli(credential.getExpirationTimeMilliseconds()))
                  : null);
        }
      };
    }

    throw new RuntimeException(
        String.format(
            "Unable to determine GoogleCredential from HttpRequestInitializer: "
                + "Unsupported credentials of type %s",
            requestInitializer.getClass().getName()));
  }