|
17 | 17 |
|
18 | 18 | import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
|
19 | 19 | import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
|
| 20 | +import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper; |
20 | 21 | import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapperConfig;
|
21 | 22 | import org.slf4j.Logger;
|
22 | 23 | import org.slf4j.LoggerFactory;
|
@@ -54,6 +55,7 @@ public class DynamoDBRepositoryExtension extends CdiRepositoryExtensionSupport {
|
54 | 55 |
|
55 | 56 | private final Map<Set<Annotation>, Bean<DynamoDBMapperConfig>> dbMapperConfigs = new HashMap<Set<Annotation>, Bean<DynamoDBMapperConfig>>();
|
56 | 57 |
|
| 58 | + private final Map<Set<Annotation>, Bean<DynamoDBMapper>> dbMapper = new HashMap<>(); |
57 | 59 | public DynamoDBRepositoryExtension() {
|
58 | 60 | LOGGER.info("Activating CDI extension for Spring Data DynamoDB repositories.");
|
59 | 61 | }
|
@@ -89,6 +91,14 @@ <X> void processBean(@Observes ProcessBean<X> processBean) {
|
89 | 91 | dbMapperConfigs.put(qualifiers, (Bean<DynamoDBMapperConfig>) bean);
|
90 | 92 | }
|
91 | 93 | }
|
| 94 | + if (type instanceof Class<?> && DynamoDBMapper.class.isAssignableFrom((Class<?>) type)) { |
| 95 | + Set<Annotation> qualifiers = new HashSet<Annotation>(bean.getQualifiers()); |
| 96 | + if (bean.isAlternative() || !dbMapper.containsKey(qualifiers)) { |
| 97 | + LOGGER.debug("Discovered '{}' with qualifiers {}.", DynamoDBMapper.class.getName(), |
| 98 | + qualifiers); |
| 99 | + dbMapper.put(qualifiers, (Bean<DynamoDBMapper>) bean); |
| 100 | + } |
| 101 | + } |
92 | 102 | }
|
93 | 103 | }
|
94 | 104 |
|
@@ -138,16 +148,17 @@ private <T> Bean<T> createRepositoryBean(Class<T> repositoryType, Set<Annotation
|
138 | 148 | // qualifiers of the repository.
|
139 | 149 | Bean<DynamoDBMapperConfig> dynamoDBMapperConfigBean = dbMapperConfigs.get(qualifiers);
|
140 | 150 |
|
| 151 | + Bean<DynamoDBOperations> dynamoDBOperationsBean = dynamoDBOperationss.get(qualifiers); |
141 | 152 | if (amazonDynamoDBBean == null) {
|
142 | 153 | throw new UnsatisfiedResolutionException(
|
143 | 154 | String.format("Unable to resolve a bean for '%s' with qualifiers %s.",
|
144 | 155 | AmazonDynamoDBClient.class.getName(), qualifiers));
|
145 | 156 | }
|
146 | 157 |
|
147 |
| - Bean<DynamoDBOperations> dynamoDBOperationsBean = dynamoDBOperationss.get(qualifiers); |
| 158 | + Bean<DynamoDBMapper> dynamoDBMapperBean = dbMapper.get(qualifiers); |
148 | 159 |
|
149 | 160 | // Construct and return the repository bean.
|
150 | 161 | return new DynamoDBRepositoryBean<T>(beanManager, amazonDynamoDBBean, dynamoDBMapperConfigBean,
|
151 |
| - dynamoDBOperationsBean, qualifiers, repositoryType); |
| 162 | + dynamoDBOperationsBean, dynamoDBMapperBean, qualifiers, repositoryType); |
152 | 163 | }
|
153 | 164 | }
|
0 commit comments