Skip to content

Commit 9c2d8a7

Browse files
committed
Issue #235: Upgrading to 5.1.0 results in the error
Upgrading to 5.1.0 results in the error Bean property 'dynamoDBMapperConfig' is not writable or has an invalid setter method.
1 parent eb2d02b commit 9c2d8a7

File tree

2 files changed

+23
-6
lines changed

2 files changed

+23
-6
lines changed

src/changes/changes.xml

+5
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@
2323
<author email="[email protected]">derjust</author>
2424
</properties>
2525
<body>
26+
<release version="5.1.1" description="Maintenance release">
27+
<action dev="derjust" issue="235" type="fix" date="2019-03-10">
28+
Upgrading to 5.1.0 results in the error Bean property 'dynamoDBMapperConfig' is not writable or has an invalid setter method
29+
</action>
30+
</release>
2631
<release version="5.1.0" date="2019-01-28" description="Spring Boot 2.1 and Spring Data Lovelace-SR1 support">
2732
<action dev="boostschicken" type="add" date="2018-10-28">
2833
Updated all code to work with Spring Boot 2.1 and Lovelace-SR1

src/main/java/org/socialsignin/spring/data/dynamodb/repository/config/DynamoDBRepositoryConfigExtension.java

+18-6
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,16 @@ private void postProcess(BeanDefinitionBuilder builder, String repositoryName, S
129129
.computeIfAbsent(getBeanNameWithModulePrefix("DynamoDBTemplate-" + dynamoDBRef), ref -> {
130130
BeanDefinitionBuilder dynamoDBTemplateBuilder = BeanDefinitionBuilder
131131
.genericBeanDefinition(DynamoDBTemplate.class);
132+
// AmazonDynamoDB amazonDynamoDB, DynamoDBMapper dynamoDBMapper,
133+
// DynamoDBMapperConfig dynamoDBMapperConfig
132134
dynamoDBTemplateBuilder.addConstructorArgReference(dynamoDBRef);
135+
dynamoDBTemplateBuilder.addConstructorArgReference(this.dynamoDBMapperName);
136+
137+
if (StringUtils.hasText(dynamoDBMapperConfigRef)) {
138+
dynamoDBTemplateBuilder.addConstructorArgReference(dynamoDBMapperConfigRef);
139+
} else {
140+
dynamoDBTemplateBuilder.addConstructorArgReference(this.dynamoDBMapperConfigName);
141+
}
133142

134143
registry.registerBeanDefinition(ref, dynamoDBTemplateBuilder.getBeanDefinition());
135144
return ref;
@@ -138,9 +147,6 @@ private void postProcess(BeanDefinitionBuilder builder, String repositoryName, S
138147

139148
builder.addPropertyReference("dynamoDBOperations", dynamoDBOperationsRef);
140149

141-
if (StringUtils.hasText(dynamoDBMapperConfigRef)) {
142-
builder.addPropertyReference("dynamoDBMapperConfig", dynamoDBMapperConfigRef);
143-
}
144150
}
145151

146152
if (!StringUtils.hasText(dynamoDBMappingContextRef)) {
@@ -184,6 +190,10 @@ private String registerEntity2DynamoDBTableSynchronizer(BeanDefinitionRegistry r
184190
}
185191

186192
private final Map<String, String> dynamoDBMappingContextProcessorCache = new ConcurrentHashMap<>();
193+
194+
private String dynamoDBMapperName;
195+
196+
private String dynamoDBMapperConfigName;
187197
private String registerDynamoDBMappingContextProcessor(BeanDefinitionRegistry registry,
188198
String dynamoDBMappingContextRef) {
189199
assert registry != null;
@@ -226,15 +236,17 @@ public void registerBeansForRoot(BeanDefinitionRegistry registry,
226236
// Store for later to be used by #postProcess, too
227237
this.registry = registry;
228238

239+
this.dynamoDBMapperConfigName = getBeanNameWithModulePrefix("DynamoDBMapperConfig");
240+
// TODO only if it doesn't exist
229241
BeanDefinitionBuilder dynamoDBMapperConfigBuiilder = BeanDefinitionBuilder
230242
.genericBeanDefinition(DynamoDBMapperConfigFactory.class);
231-
registry.registerBeanDefinition(getBeanNameWithModulePrefix("DynamoDBMapperConfig"),
243+
registry.registerBeanDefinition(this.dynamoDBMapperConfigName,
232244
dynamoDBMapperConfigBuiilder.getBeanDefinition());
233245

246+
this.dynamoDBMapperName = getBeanNameWithModulePrefix("DynamoDBMapper");
234247
BeanDefinitionBuilder dynamoDBMapperBuilder = BeanDefinitionBuilder
235248
.genericBeanDefinition(DynamoDBMapperFactory.class);
236-
registry.registerBeanDefinition(getBeanNameWithModulePrefix("DynamoDBMapper"),
237-
dynamoDBMapperBuilder.getBeanDefinition());
249+
registry.registerBeanDefinition(this.dynamoDBMapperName, dynamoDBMapperBuilder.getBeanDefinition());
238250
}
239251

240252
protected String getBeanNameWithModulePrefix(String baseBeanName) {

0 commit comments

Comments
 (0)