aromanenko-dev commented on a change in pull request #15843:
URL: https://github.com/apache/beam/pull/15843#discussion_r745722708
##########
File path:
sdks/java/io/amazon-web-services/src/main/java/org/apache/beam/sdk/io/aws/options/AwsModule.java
##########
@@ -121,42 +123,60 @@ public AWSCredentialsProvider deserializeWithType(
String.format("AWS credentials provider type name key '%s' not
found", typeNameKey));
}
- if (typeName.equals(AWSStaticCredentialsProvider.class.getSimpleName()))
{
+ if (hasName(AWSStaticCredentialsProvider.class, typeName)) {
boolean isSession = asMap.containsKey(SESSION_TOKEN);
if (isSession) {
return new AWSStaticCredentialsProvider(
new BasicSessionCredentials(
- asMap.get(AWS_ACCESS_KEY_ID),
- asMap.get(AWS_SECRET_KEY),
- asMap.get(SESSION_TOKEN)));
+ getNotNull(asMap, AWS_ACCESS_KEY_ID, typeName),
+ getNotNull(asMap, AWS_SECRET_KEY, typeName),
+ getNotNull(asMap, SESSION_TOKEN, typeName)));
} else {
return new AWSStaticCredentialsProvider(
- new BasicAWSCredentials(asMap.get(AWS_ACCESS_KEY_ID),
asMap.get(AWS_SECRET_KEY)));
+ new BasicAWSCredentials(
+ getNotNull(asMap, AWS_ACCESS_KEY_ID, typeName),
+ getNotNull(asMap, AWS_SECRET_KEY, typeName)));
}
- } else if
(typeName.equals(PropertiesFileCredentialsProvider.class.getSimpleName())) {
- return new
PropertiesFileCredentialsProvider(asMap.get(CREDENTIALS_FILE_PATH));
- } else if (typeName.equals(
- ClasspathPropertiesFileCredentialsProvider.class.getSimpleName())) {
- return new
ClasspathPropertiesFileCredentialsProvider(asMap.get(CREDENTIALS_FILE_PATH));
- } else if
(typeName.equals(DefaultAWSCredentialsProviderChain.class.getSimpleName())) {
+ } else if (hasName(PropertiesFileCredentialsProvider.class, typeName)) {
+ return new PropertiesFileCredentialsProvider(
+ getNotNull(asMap, CREDENTIALS_FILE_PATH, typeName));
+ } else if (hasName(ClasspathPropertiesFileCredentialsProvider.class,
typeName)) {
+ return new ClasspathPropertiesFileCredentialsProvider(
+ getNotNull(asMap, CREDENTIALS_FILE_PATH, typeName));
+ } else if (hasName(DefaultAWSCredentialsProviderChain.class, typeName)) {
return new DefaultAWSCredentialsProviderChain();
- } else if
(typeName.equals(EnvironmentVariableCredentialsProvider.class.getSimpleName()))
{
+ } else if (hasName(EnvironmentVariableCredentialsProvider.class,
typeName)) {
return new EnvironmentVariableCredentialsProvider();
- } else if
(typeName.equals(SystemPropertiesCredentialsProvider.class.getSimpleName())) {
+ } else if (hasName(SystemPropertiesCredentialsProvider.class, typeName))
{
return new SystemPropertiesCredentialsProvider();
- } else if
(typeName.equals(ProfileCredentialsProvider.class.getSimpleName())) {
+ } else if (hasName(ProfileCredentialsProvider.class, typeName)) {
return new ProfileCredentialsProvider();
- } else if
(typeName.equals(EC2ContainerCredentialsProviderWrapper.class.getSimpleName()))
{
+ } else if (hasName(EC2ContainerCredentialsProviderWrapper.class,
typeName)) {
return new EC2ContainerCredentialsProviderWrapper();
- } else if
(typeName.equals(STSAssumeRoleSessionCredentialsProvider.class.getSimpleName()))
{
+ } else if (hasName(STSAssumeRoleSessionCredentialsProvider.class,
typeName)) {
return new STSAssumeRoleSessionCredentialsProvider.Builder(
- asMap.get(ROLE_ARN), asMap.get(ROLE_SESSION_NAME))
+ getNotNull(asMap, ROLE_ARN, typeName),
+ getNotNull(asMap, ROLE_SESSION_NAME, typeName))
.build();
} else {
throw new IOException(
String.format("AWS credential provider type '%s' is not
supported", typeName));
}
}
+
+ private String getNotNull(Map<String, String> map, String key, String
typeName)
+ throws IOException {
+ String value = map.get(key);
Review comment:
I'd stick with NPE since it's mostly a problem of user configuration
than IO connector itself.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]