diff --git a/spring-data-couchbase/src/main/java/org/springframework/data/couchbase/core/convert/DecryptingReadingConverter.java b/spring-data-couchbase/src/main/java/org/springframework/data/couchbase/core/convert/DecryptingReadingConverter.java index 38edf49a2..e7745cd17 100644 --- a/spring-data-couchbase/src/main/java/org/springframework/data/couchbase/core/convert/DecryptingReadingConverter.java +++ b/spring-data-couchbase/src/main/java/org/springframework/data/couchbase/core/convert/DecryptingReadingConverter.java @@ -17,6 +17,7 @@ import java.math.BigDecimal; import java.math.BigInteger; +import java.nio.charset.StandardCharsets; import java.util.HashSet; import java.util.Set; @@ -44,15 +45,11 @@ public DecryptingReadingConverter(CryptoManager cryptoManager) { this.cryptoManager = cryptoManager; } - public void setConversionService(ConversionService conversionService) { - this.conversionService = conversionService; - } - @Override public Set getConvertibleTypes() { Set convertiblePairs = new HashSet<>(); Class[] clazzes = new Class[] { String.class, Integer.class, Long.class, Float.class, Double.class, - BigInteger.class, BigDecimal.class, Boolean.class }; + BigInteger.class, BigDecimal.class, Boolean.class, Enum.class }; for (Class clazz : clazzes) { convertiblePairs.add(new ConvertiblePair(CouchbaseDocument.class, clazz)); } @@ -61,7 +58,8 @@ public Set getConvertibleTypes() { @Override public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType) { - return source == null? null : new String(cryptoManager.decrypt(((CouchbaseDocument) source).getContent())); + return source == null ? null + : new String(cryptoManager.decrypt(((CouchbaseDocument) source).getContent()), StandardCharsets.UTF_8); } @Override diff --git a/spring-data-couchbase/src/main/java/org/springframework/data/couchbase/core/convert/EncryptingWritingConverter.java b/spring-data-couchbase/src/main/java/org/springframework/data/couchbase/core/convert/EncryptingWritingConverter.java index b7ed1d3e2..eeb7240e7 100644 --- a/spring-data-couchbase/src/main/java/org/springframework/data/couchbase/core/convert/EncryptingWritingConverter.java +++ b/spring-data-couchbase/src/main/java/org/springframework/data/couchbase/core/convert/EncryptingWritingConverter.java @@ -17,6 +17,7 @@ import java.math.BigDecimal; import java.math.BigInteger; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.HashSet; import java.util.Map; @@ -48,7 +49,7 @@ public Set getConvertibleTypes() { Set convertiblePairs = new HashSet<>(); Class[] clazzes = new Class[] { String.class, Integer.class, Long.class, Float.class, Double.class, - BigInteger.class, BigDecimal.class, Boolean.class }; + BigInteger.class, BigDecimal.class, Boolean.class, Enum.class }; for (Class clazz : clazzes) { convertiblePairs.add(new ConvertiblePair(clazz, String.class)); } @@ -63,7 +64,7 @@ public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor t com.couchbase.client.java.encryption.annotation.Encrypted ann = sourceType .getAnnotation(com.couchbase.client.java.encryption.annotation.Encrypted.class); Map result = new HashMap<>(); - result.putAll(cryptoManager.encrypt(source.toString().getBytes(), ann.encrypter())); + result.putAll(cryptoManager.encrypt(source.toString().getBytes(StandardCharsets.UTF_8), ann.encrypter())); return new Encrypted(result); } diff --git a/spring-data-couchbase/src/main/java/org/springframework/data/couchbase/core/convert/MappingCouchbaseConverter.java b/spring-data-couchbase/src/main/java/org/springframework/data/couchbase/core/convert/MappingCouchbaseConverter.java index bfb0afc47..6e9e41a74 100644 --- a/spring-data-couchbase/src/main/java/org/springframework/data/couchbase/core/convert/MappingCouchbaseConverter.java +++ b/spring-data-couchbase/src/main/java/org/springframework/data/couchbase/core/convert/MappingCouchbaseConverter.java @@ -945,7 +945,7 @@ private R readValue(Object value, TypeInformation type, Object parent) { } else if (value instanceof CouchbaseList) { return (R) readCollection(type, (CouchbaseList) value, parent); } else { - return (R) getPotentiallyConvertedSimpleRead(value, type.getClass()); // type does not have annotations + return (R) getPotentiallyConvertedSimpleRead(value, type.getType()); // type does not have annotations } }