@@ -428,15 +428,11 @@ public CustomConversions customConversions() {
428
428
* and {@link #couchbaseMappingContext(CustomConversions)}.
429
429
*
430
430
* @param cryptoManager
431
+ * @param objectMapper
431
432
* @return must not be {@literal null}.
432
433
*/
433
434
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 ();
440
436
CustomConversions customConversions = CouchbaseCustomConversions .create (configurationAdapter -> {
441
437
SimplePropertyValueConversions valueConversions = new SimplePropertyValueConversions ();
442
438
valueConversions .setConverterFactory (
@@ -449,6 +445,34 @@ public CustomConversions customConversions(CryptoManager cryptoManager, ObjectMa
449
445
return customConversions ;
450
446
}
451
447
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
+
452
476
public static Map <Class <? extends Annotation >, Class <?>> annotationToConverterMap () {
453
477
Map <Class <? extends Annotation >, Class <?>> map = new HashMap ();
454
478
map .put (Encrypted .class , CryptoConverter .class );
0 commit comments