Add casting check for create() provider

This commit is contained in:
Ethan Katnic 2024-08-22 10:33:07 -07:00
parent 8aa81dc255
commit f8eafb457a

View file

@ -187,9 +187,16 @@ class AwsCredentialsProviderPropertyValueDecoder implements IPropertyValueDecode
return constructor.construct();
} catch (InstantiationException e) {
try {
// Try to create an instance using .create()
Method createMethod = clazz.getDeclaredMethod("create");
if (Modifier.isStatic(createMethod.getModifiers())) {
return (T) createMethod.invoke(null);
Object provider = createMethod.invoke(null);
if (provider instanceof AwsCredentialsProvider) {
return (T) provider;
} else {
log.warn("Returned provider is not an instance of {}", AwsCredentialsProvider.class.getName());
return null;
}
} else {
log.warn("Found non-static create() method in {}", providerName);
}