@@ -431,15 +431,11 @@ public CustomConversions customConversions() {
431
431
* and {@link #couchbaseMappingContext(CustomConversions)}.
432
432
*
433
433
* @param cryptoManager
434
+ * @param objectMapper
434
435
* @return must not be {@literal null}.
435
436
*/
436
437
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 ();
443
439
CustomConversions customConversions = CouchbaseCustomConversions .create (configurationAdapter -> {
444
440
SimplePropertyValueConversions valueConversions = new SimplePropertyValueConversions ();
445
441
valueConversions .setConverterFactory (
@@ -452,6 +448,34 @@ public CustomConversions customConversions(CryptoManager cryptoManager, ObjectMa
452
448
return customConversions ;
453
449
}
454
450
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
+
455
479
public static Map <Class <? extends Annotation >, Class <?>> annotationToConverterMap () {
456
480
Map <Class <? extends Annotation >, Class <?>> map = new HashMap ();
457
481
map .put (Encrypted .class , CryptoConverter .class );
0 commit comments