public AwsCredentials resolveCredentials()

in src/main/java/com/awslabs/resultsiterator/implementations/BouncyCastleCertificateCredentialsProvider.java [37:79]


    public AwsCredentials resolveCredentials() {
        HashMap<String, String> properties = toHashMap(System.getProperties().entrySet().stream());
        HashMap<String, String> environment = toHashMap(System.getenv().entrySet().stream());

        Option<String> maybeCredentialProviderPropertiesFile = getOptionFromPropertiesOrEnvironment(properties, environment, AWS_CREDENTIAL_PROVIDER_PROPERTIES_FILE);

        if (maybeCredentialProviderPropertiesFile.isDefined()) {
            Properties propertiesFromFile = new Properties();

            File credentialsProviderPropertiesFile = new File(maybeCredentialProviderPropertiesFile.get());

            Option<Properties> propertiesOption = Try.of(() -> loadProperties(credentialsProviderPropertiesFile, propertiesFromFile)).get();

            if (propertiesOption.isDefined()) {
                // Got the values as we expected, use these instead of the original properties
                properties = toHashMap(propertiesFromFile.entrySet().stream());
            }
        }

        String credentialProviderUrlString = getFromPropertiesOrEnvironment(properties, environment, AWS_CREDENTIAL_PROVIDER_URL);
        String thingNameString = getFromPropertiesOrEnvironment(properties, environment, AWS_THING_NAME);
        String roleAliasString = getFromPropertiesOrEnvironment(properties, environment, AWS_ROLE_ALIAS);
        String caCertFilenameString = getFromPropertiesOrEnvironment(properties, environment, AWS_CA_CERT_FILENAME);
        String clientCertFilenameString = getFromPropertiesOrEnvironment(properties, environment, AWS_CLIENT_CERT_FILENAME);
        String clientPrivateKeyFilenameString = getFromPropertiesOrEnvironment(properties, environment, AWS_CLIENT_PRIVATE_KEY_FILENAME);
        Option<String> maybeClientPrivateKeyPassword = getOptionFromPropertiesOrEnvironment(properties, environment, AWS_CLIENT_PRIVATE_KEY_PASSWORD);

        ImmutableCredentialProviderUrl credentialProviderUrl = ImmutableCredentialProviderUrl.builder().credentialProviderUrl(credentialProviderUrlString).build();
        ImmutableThingName thingName = ImmutableThingName.builder().name(thingNameString).build();
        ImmutableRoleAlias roleAlias = ImmutableRoleAlias.builder().name(roleAliasString).build();
        ImmutableCaCertFilename caCertFilename = ImmutableCaCertFilename.builder().caCertFilename(caCertFilenameString).build();
        ImmutableClientCertFilename clientCertFilename = ImmutableClientCertFilename.builder().clientCertFilename(clientCertFilenameString).build();
        ImmutableClientPrivateKeyFilename clientPrivateKeyFilename = ImmutableClientPrivateKeyFilename.builder().clientPrivateKeyFilename(clientPrivateKeyFilenameString).build();
        ImmutablePassword.Builder passwordBuilder = ImmutablePassword.builder();

        maybeClientPrivateKeyPassword
                .map(String::toCharArray)
                .map(passwordBuilder::password);

        ImmutablePassword password = passwordBuilder.build();

        return resolveCredentials(credentialProviderUrl, thingName, roleAlias, caCertFilename, clientCertFilename, clientPrivateKeyFilename, password);
    }