Skip to content

Commit 30bfcf4

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 96540b7 commit 30bfcf4

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
@@ -431,15 +431,11 @@ public CustomConversions customConversions() {
431431
* and {@link #couchbaseMappingContext(CustomConversions)}.
432432
*
433433
* @param cryptoManager
434+
* @param objectMapper
434435
* @return must not be {@literal null}.
435436
*/
436437
public CustomConversions customConversions(CryptoManager cryptoManager, ObjectMapper objectMapper) {
437-
List<Object> newConverters = new ArrayList();
438-
// The following
439-
newConverters.add(new OtherConverters.EnumToObject(getObjectMapper()));
440-
newConverters.add(new IntegerToEnumConverterFactory(getObjectMapper()));
441-
newConverters.add(new StringToEnumConverterFactory(getObjectMapper()));
442-
newConverters.add(new BooleanToEnumConverterFactory(getObjectMapper()));
438+
List<Object> newConverters = additionalConverters();
443439
CustomConversions customConversions = CouchbaseCustomConversions.create(configurationAdapter -> {
444440
SimplePropertyValueConversions valueConversions = new SimplePropertyValueConversions();
445441
valueConversions.setConverterFactory(
@@ -452,6 +448,34 @@ public CustomConversions customConversions(CryptoManager cryptoManager, ObjectMa
452448
return customConversions;
453449
}
454450

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

0 commit comments

Comments
 (0)