From 882bfd95db32afe0799099a0e569bccb5bd126b7 Mon Sep 17 00:00:00 2001 From: Kaustav Ghosh Date: Tue, 1 Apr 2025 15:02:07 +0530 Subject: [PATCH] Enhance CouchbaseDocument and CouchbaseList to handle List implementations in attribute validation. Updated error messages for clarity. --- .../data/couchbase/core/mapping/CouchbaseDocument.java | 9 ++++++++- .../data/couchbase/core/mapping/CouchbaseList.java | 7 ++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseDocument.java b/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseDocument.java index 49428c503..483467163 100644 --- a/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseDocument.java +++ b/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseDocument.java @@ -20,6 +20,7 @@ import java.util.TreeMap; import java.util.Map; +import java.util.List; /** * A {@link CouchbaseDocument} is an abstract representation of a document stored inside Couchbase Server. @@ -275,8 +276,14 @@ private void verifyValueType(final Object value) { if (CouchbaseSimpleTypes.DOCUMENT_TYPES.isSimpleType(clazz)) { return; } + + // Special handling for List implementations like Collections.SingletonList and ArrayList + if (value instanceof List) { + return; + } + throw new IllegalArgumentException( - "Attribute of type " + clazz.getCanonicalName() + " cannot be stored and must be converted."); + "Attribute of type " + clazz.getCanonicalName() + " cannot be stored in document and must be converted."); } /** diff --git a/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseList.java b/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseList.java index 7b054edfc..ef547d594 100644 --- a/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseList.java +++ b/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseList.java @@ -200,9 +200,14 @@ private void verifyValueType(final Object value) { if (simpleTypeHolder.isSimpleType(clazz)) { return; } + + // Special handling for List implementations like Collections.SingletonList and ArrayList + if (value instanceof List) { + return; + } throw new IllegalArgumentException( - "Attribute of type " + clazz.getCanonicalName() + " can not be stored and must be converted."); + "Attribute of type " + clazz.getCanonicalName() + " cannot be stored in list and must be converted."); } /**