1
16
17 package org.springframework.cloud.aws.core.credentials;
18
19 import java.util.Collections;
20 import java.util.List;
21
22 import com.amazonaws.auth.AWSCredentialsProvider;
23 import com.amazonaws.auth.AWSCredentialsProviderChain;
24 import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
25
26 import org.springframework.beans.factory.config.AbstractFactoryBean;
27 import org.springframework.util.Assert;
28
29
36 public class CredentialsProviderFactoryBean
37 extends AbstractFactoryBean<AWSCredentialsProvider> {
38
39
42 public static final String CREDENTIALS_PROVIDER_BEAN_NAME = "credentialsProvider";
43
44 private final List<AWSCredentialsProvider> delegates;
45
46 public CredentialsProviderFactoryBean() {
47 this(Collections.emptyList());
48 }
49
50 public CredentialsProviderFactoryBean(List<AWSCredentialsProvider> delegates) {
51 Assert.notNull(delegates, "Delegates must not be null");
52 this.delegates = delegates;
53 }
54
55 @Override
56 public Class<?> getObjectType() {
57 return AWSCredentialsProvider.class;
58 }
59
60 @Override
61 protected AWSCredentialsProvider createInstance() throws Exception {
62 AWSCredentialsProviderChain awsCredentialsProviderChain;
63 if (this.delegates.isEmpty()) {
64 awsCredentialsProviderChain = new DefaultAWSCredentialsProviderChain();
65 }
66 else {
67 awsCredentialsProviderChain = new AWSCredentialsProviderChain(this.delegates
68 .toArray(new AWSCredentialsProvider[this.delegates.size()]));
69 }
70
71 awsCredentialsProviderChain.setReuseLastProvider(false);
72 return awsCredentialsProviderChain;
73 }
74
75 }
76