diff --git a/src/main/java/org/springframework/data/couchbase/core/convert/ConverterRegistration.java b/src/main/java/org/springframework/data/couchbase/core/convert/ConverterRegistration.java index fc48807c..1dd15935 100644 --- a/src/main/java/org/springframework/data/couchbase/core/convert/ConverterRegistration.java +++ b/src/main/java/org/springframework/data/couchbase/core/convert/ConverterRegistration.java @@ -111,6 +111,6 @@ class ConverterRegistration { * @return */ private static boolean isCouchbaseBasicType(Class type) { - return CouchbaseSimpleTypes.HOLDER.isSimpleType(type); + return CouchbaseSimpleTypes.JSON_TYPES.isSimpleType(type); } } 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 30c22b8a..77dde1e0 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 @@ -17,11 +17,7 @@ package org.springframework.data.couchbase.core.mapping; import java.util.HashMap; -import java.util.HashSet; import java.util.Map; -import java.util.Set; - -import org.springframework.data.mapping.model.SimpleTypeHolder; /** * A {@link CouchbaseDocument} is an abstract representation of a document stored inside Couchbase Server. @@ -58,11 +54,6 @@ public class CouchbaseDocument implements CouchbaseStorable { */ private int expiration; - /** - * Holds types considered simple and allowed to be stored. - */ - private SimpleTypeHolder simpleTypeHolder; - /** * Creates a completely empty {@link CouchbaseDocument}. */ @@ -89,11 +80,6 @@ public class CouchbaseDocument implements CouchbaseStorable { this.id = id; this.expiration = expiration; payload = new HashMap(); - - Set> additionalTypes = new HashSet>(); - additionalTypes.add(CouchbaseDocument.class); - additionalTypes.add(CouchbaseList.class); - simpleTypeHolder = new SimpleTypeHolder(additionalTypes, true); } /** @@ -271,7 +257,7 @@ public class CouchbaseDocument implements CouchbaseStorable { return; } final Class clazz = value.getClass(); - if (simpleTypeHolder.isSimpleType(clazz)) { + if (CouchbaseSimpleTypes.DOCUMENT_TYPES.isSimpleType(clazz)) { return; } throw new IllegalArgumentException("Attribute of type " + clazz.getCanonicalName() + " cannot be stored 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 1cad9f8c..a2af98d5 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 @@ -74,14 +74,13 @@ public class CouchbaseList implements CouchbaseStorable { */ public CouchbaseList(final List initialPayload, final SimpleTypeHolder simpleTypeHolder) { this.payload = initialPayload; - Set> additionalTypes = new HashSet>(); - additionalTypes.add(CouchbaseDocument.class); - additionalTypes.add(CouchbaseList.class); if (simpleTypeHolder != null) { + Set> additionalTypes = new HashSet>(); + additionalTypes.add(CouchbaseDocument.class); + additionalTypes.add(CouchbaseList.class); this.simpleTypeHolder = new SimpleTypeHolder(additionalTypes, simpleTypeHolder); - } - else { - this.simpleTypeHolder = new SimpleTypeHolder(additionalTypes, true); + } else { + this.simpleTypeHolder = CouchbaseSimpleTypes.DOCUMENT_TYPES; } } diff --git a/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseSimpleTypes.java b/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseSimpleTypes.java index 82be375a..5d180c21 100644 --- a/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseSimpleTypes.java +++ b/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseSimpleTypes.java @@ -17,9 +17,9 @@ package org.springframework.data.couchbase.core.mapping; -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; +import static java.util.stream.Collectors.toSet; + +import java.util.stream.Stream; import com.couchbase.client.java.document.RawJsonDocument; import com.couchbase.client.java.document.json.JsonArray; @@ -28,18 +28,18 @@ import org.springframework.data.mapping.model.SimpleTypeHolder; public abstract class CouchbaseSimpleTypes { - static { - Set> simpleTypes = new HashSet>(); - simpleTypes.add(RawJsonDocument.class); - simpleTypes.add(JsonArray.class); - simpleTypes.add(Number.class); - COUCHBASE_SIMPLE_TYPES = Collections.unmodifiableSet(simpleTypes); - } + public static final SimpleTypeHolder JSON_TYPES = new SimpleTypeHolder( + Stream.of(RawJsonDocument.class, + JsonArray.class, + Number.class).collect(toSet()), + true); - private static final Set> COUCHBASE_SIMPLE_TYPES; - public static final SimpleTypeHolder HOLDER = new SimpleTypeHolder(COUCHBASE_SIMPLE_TYPES, true); + public static final SimpleTypeHolder DOCUMENT_TYPES = new SimpleTypeHolder( + Stream.of(CouchbaseDocument.class, + CouchbaseList.class).collect(toSet()), + true); private CouchbaseSimpleTypes() { } -} +} \ No newline at end of file