Skip to content

Commit 6d429b8

Browse files
committed
Added functionality to add customConverters.
Added functionality to register custom converters in the list + cleaned up the code a little and.
1 parent 6e17572 commit 6d429b8

File tree

1 file changed

+30
-6
lines changed

1 file changed

+30
-6
lines changed

src/main/java/org/springframework/data/couchbase/config/AbstractCouchbaseConfiguration.java

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -428,15 +428,11 @@ public CustomConversions customConversions() {
428428
* and {@link #couchbaseMappingContext(CustomConversions)}.
429429
*
430430
* @param cryptoManager
431+
* @param objectMapper
431432
* @return must not be {@literal null}.
432433
*/
433434
public CustomConversions customConversions(CryptoManager cryptoManager, ObjectMapper objectMapper) {
434-
List<Object> newConverters = new ArrayList();
435-
// The following
436-
newConverters.add(new OtherConverters.EnumToObject(getObjectMapper()));
437-
newConverters.add(new IntegerToEnumConverterFactory(getObjectMapper()));
438-
newConverters.add(new StringToEnumConverterFactory(getObjectMapper()));
439-
newConverters.add(new BooleanToEnumConverterFactory(getObjectMapper()));
435+
List<Object> newConverters = additionalConverters();
440436
CustomConversions customConversions = CouchbaseCustomConversions.create(configurationAdapter -> {
441437
SimplePropertyValueConversions valueConversions = new SimplePropertyValueConversions();
442438
valueConversions.setConverterFactory(
@@ -449,6 +445,34 @@ public CustomConversions customConversions(CryptoManager cryptoManager, ObjectMa
449445
return customConversions;
450446
}
451447

448+
/**
449+
* This function makes a list of custom converters.
450+
* This list can be updated via {@link #registerAdditionalConverters(List)}
451+
*
452+
* @return additionalConverters - must not be {@literal null}.
453+
*/
454+
public List<Object> additionalConverters() {
455+
456+
List<Object> additionalConverters = new ArrayList();
457+
additionalConverters.add(new OtherConverters.EnumToObject(getObjectMapper()));
458+
additionalConverters.add(new IntegerToEnumConverterFactory(getObjectMapper()));
459+
additionalConverters.add(new StringToEnumConverterFactory(getObjectMapper()));
460+
additionalConverters.add(new BooleanToEnumConverterFactory(getObjectMapper()));
461+
462+
// Register more converters
463+
registerAdditionalConverters(additionalConverters);
464+
465+
return additionalConverters;
466+
467+
}
468+
469+
/**
470+
* This should be overridden in order to update the {@link #additionalConverters()} List
471+
*/
472+
protected void registerAdditionalConverters(List<Object> converters) {
473+
// NO_OP
474+
}
475+
452476
public static Map<Class<? extends Annotation>, Class<?>> annotationToConverterMap() {
453477
Map<Class<? extends Annotation>, Class<?>> map = new HashMap();
454478
map.put(Encrypted.class, CryptoConverter.class);

0 commit comments

Comments
 (0)