From 6d429b80180e5152d38ef737d3d01bbf6371e1de Mon Sep 17 00:00:00 2001 From: bipoool Date: Sun, 31 Dec 2023 04:57:20 +0530 Subject: [PATCH 1/3] Added functionality to add customConverters. Added functionality to register custom converters in the list + cleaned up the code a little and. --- .../AbstractCouchbaseConfiguration.java | 36 +++++++++++++++---- 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/springframework/data/couchbase/config/AbstractCouchbaseConfiguration.java b/src/main/java/org/springframework/data/couchbase/config/AbstractCouchbaseConfiguration.java index c97f3d8a3..b7b7acf67 100644 --- a/src/main/java/org/springframework/data/couchbase/config/AbstractCouchbaseConfiguration.java +++ b/src/main/java/org/springframework/data/couchbase/config/AbstractCouchbaseConfiguration.java @@ -428,15 +428,11 @@ public CustomConversions customConversions() { * and {@link #couchbaseMappingContext(CustomConversions)}. * * @param cryptoManager + * @param objectMapper * @return must not be {@literal null}. */ public CustomConversions customConversions(CryptoManager cryptoManager, ObjectMapper objectMapper) { - List newConverters = new ArrayList(); - // The following - newConverters.add(new OtherConverters.EnumToObject(getObjectMapper())); - newConverters.add(new IntegerToEnumConverterFactory(getObjectMapper())); - newConverters.add(new StringToEnumConverterFactory(getObjectMapper())); - newConverters.add(new BooleanToEnumConverterFactory(getObjectMapper())); + List newConverters = additionalConverters(); CustomConversions customConversions = CouchbaseCustomConversions.create(configurationAdapter -> { SimplePropertyValueConversions valueConversions = new SimplePropertyValueConversions(); valueConversions.setConverterFactory( @@ -449,6 +445,34 @@ public CustomConversions customConversions(CryptoManager cryptoManager, ObjectMa return customConversions; } + /** + * This function makes a list of custom converters. + * This list can be updated via {@link #registerAdditionalConverters(List)} + * + * @return additionalConverters - must not be {@literal null}. + */ + public List additionalConverters() { + + List additionalConverters = new ArrayList(); + additionalConverters.add(new OtherConverters.EnumToObject(getObjectMapper())); + additionalConverters.add(new IntegerToEnumConverterFactory(getObjectMapper())); + additionalConverters.add(new StringToEnumConverterFactory(getObjectMapper())); + additionalConverters.add(new BooleanToEnumConverterFactory(getObjectMapper())); + + // Register more converters + registerAdditionalConverters(additionalConverters); + + return additionalConverters; + + } + + /** + * This should be overridden in order to update the {@link #additionalConverters()} List + */ + protected void registerAdditionalConverters(List converters) { + // NO_OP + } + public static Map, Class> annotationToConverterMap() { Map, Class> map = new HashMap(); map.put(Encrypted.class, CryptoConverter.class); From 2c876e5564ce562f40c74d77e9685063962ac6ae Mon Sep 17 00:00:00 2001 From: bipoool Date: Fri, 12 Jan 2024 14:00:06 +0530 Subject: [PATCH 2/3] Review chages. Function name changed and restored to old implementation --- .../AbstractCouchbaseConfiguration.java | 31 +++++-------------- 1 file changed, 8 insertions(+), 23 deletions(-) diff --git a/src/main/java/org/springframework/data/couchbase/config/AbstractCouchbaseConfiguration.java b/src/main/java/org/springframework/data/couchbase/config/AbstractCouchbaseConfiguration.java index b7b7acf67..fa222506a 100644 --- a/src/main/java/org/springframework/data/couchbase/config/AbstractCouchbaseConfiguration.java +++ b/src/main/java/org/springframework/data/couchbase/config/AbstractCouchbaseConfiguration.java @@ -432,7 +432,13 @@ public CustomConversions customConversions() { * @return must not be {@literal null}. */ public CustomConversions customConversions(CryptoManager cryptoManager, ObjectMapper objectMapper) { - List newConverters = additionalConverters(); + List newConverters = new ArrayList(); + // The following + newConverters.add(new OtherConverters.EnumToObject(getObjectMapper())); + newConverters.add(new IntegerToEnumConverterFactory(getObjectMapper())); + newConverters.add(new StringToEnumConverterFactory(getObjectMapper())); + newConverters.add(new BooleanToEnumConverterFactory(getObjectMapper())); + additionalConverters(newConverters); CustomConversions customConversions = CouchbaseCustomConversions.create(configurationAdapter -> { SimplePropertyValueConversions valueConversions = new SimplePropertyValueConversions(); valueConversions.setConverterFactory( @@ -445,31 +451,10 @@ public CustomConversions customConversions(CryptoManager cryptoManager, ObjectMa return customConversions; } - /** - * This function makes a list of custom converters. - * This list can be updated via {@link #registerAdditionalConverters(List)} - * - * @return additionalConverters - must not be {@literal null}. - */ - public List additionalConverters() { - - List additionalConverters = new ArrayList(); - additionalConverters.add(new OtherConverters.EnumToObject(getObjectMapper())); - additionalConverters.add(new IntegerToEnumConverterFactory(getObjectMapper())); - additionalConverters.add(new StringToEnumConverterFactory(getObjectMapper())); - additionalConverters.add(new BooleanToEnumConverterFactory(getObjectMapper())); - - // Register more converters - registerAdditionalConverters(additionalConverters); - - return additionalConverters; - - } - /** * This should be overridden in order to update the {@link #additionalConverters()} List */ - protected void registerAdditionalConverters(List converters) { + protected void additionalConverters(List converters) { // NO_OP } From 63a377d269e9c16a344059ef1dc65e1b59316213 Mon Sep 17 00:00:00 2001 From: bipoool Date: Fri, 12 Jan 2024 14:03:49 +0530 Subject: [PATCH 3/3] Documentation Changes. --- .../data/couchbase/config/AbstractCouchbaseConfiguration.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/springframework/data/couchbase/config/AbstractCouchbaseConfiguration.java b/src/main/java/org/springframework/data/couchbase/config/AbstractCouchbaseConfiguration.java index fa222506a..4db4a2936 100644 --- a/src/main/java/org/springframework/data/couchbase/config/AbstractCouchbaseConfiguration.java +++ b/src/main/java/org/springframework/data/couchbase/config/AbstractCouchbaseConfiguration.java @@ -452,7 +452,7 @@ public CustomConversions customConversions(CryptoManager cryptoManager, ObjectMa } /** - * This should be overridden in order to update the {@link #additionalConverters()} List + * This should be overridden in order to update the {@link #customConversions(CryptoManager cryptoManager, ObjectMapper objectMapper)} List */ protected void additionalConverters(List converters) { // NO_OP