Skip to content

Commit 5fcb8ed

Browse files
authored
Fix up FLE support. (#1550)
Closes #763.
1 parent 921b8c2 commit 5fcb8ed

File tree

3 files changed

+8
-9
lines changed

3 files changed

+8
-9
lines changed

spring-data-couchbase/src/main/java/org/springframework/data/couchbase/core/convert/DecryptingReadingConverter.java

+4-6
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import java.math.BigDecimal;
1919
import java.math.BigInteger;
20+
import java.nio.charset.StandardCharsets;
2021
import java.util.HashSet;
2122
import java.util.Set;
2223

@@ -44,15 +45,11 @@ public DecryptingReadingConverter(CryptoManager cryptoManager) {
4445
this.cryptoManager = cryptoManager;
4546
}
4647

47-
public void setConversionService(ConversionService conversionService) {
48-
this.conversionService = conversionService;
49-
}
50-
5148
@Override
5249
public Set<ConvertiblePair> getConvertibleTypes() {
5350
Set<ConvertiblePair> convertiblePairs = new HashSet<>();
5451
Class<?>[] clazzes = new Class[] { String.class, Integer.class, Long.class, Float.class, Double.class,
55-
BigInteger.class, BigDecimal.class, Boolean.class };
52+
BigInteger.class, BigDecimal.class, Boolean.class, Enum.class };
5653
for (Class clazz : clazzes) {
5754
convertiblePairs.add(new ConvertiblePair(CouchbaseDocument.class, clazz));
5855
}
@@ -61,7 +58,8 @@ public Set<ConvertiblePair> getConvertibleTypes() {
6158

6259
@Override
6360
public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {
64-
return source == null? null : new String(cryptoManager.decrypt(((CouchbaseDocument) source).getContent()));
61+
return source == null ? null
62+
: new String(cryptoManager.decrypt(((CouchbaseDocument) source).getContent()), StandardCharsets.UTF_8);
6563
}
6664

6765
@Override

spring-data-couchbase/src/main/java/org/springframework/data/couchbase/core/convert/EncryptingWritingConverter.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import java.math.BigDecimal;
1919
import java.math.BigInteger;
20+
import java.nio.charset.StandardCharsets;
2021
import java.util.HashMap;
2122
import java.util.HashSet;
2223
import java.util.Map;
@@ -48,7 +49,7 @@ public Set<GenericConverter.ConvertiblePair> getConvertibleTypes() {
4849

4950
Set<ConvertiblePair> convertiblePairs = new HashSet<>();
5051
Class<?>[] clazzes = new Class[] { String.class, Integer.class, Long.class, Float.class, Double.class,
51-
BigInteger.class, BigDecimal.class, Boolean.class };
52+
BigInteger.class, BigDecimal.class, Boolean.class, Enum.class };
5253
for (Class clazz : clazzes) {
5354
convertiblePairs.add(new ConvertiblePair(clazz, String.class));
5455
}
@@ -63,7 +64,7 @@ public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor t
6364
com.couchbase.client.java.encryption.annotation.Encrypted ann = sourceType
6465
.getAnnotation(com.couchbase.client.java.encryption.annotation.Encrypted.class);
6566
Map<Object, Object> result = new HashMap<>();
66-
result.putAll(cryptoManager.encrypt(source.toString().getBytes(), ann.encrypter()));
67+
result.putAll(cryptoManager.encrypt(source.toString().getBytes(StandardCharsets.UTF_8), ann.encrypter()));
6768
return new Encrypted(result);
6869
}
6970

spring-data-couchbase/src/main/java/org/springframework/data/couchbase/core/convert/MappingCouchbaseConverter.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -945,7 +945,7 @@ private <R> R readValue(Object value, TypeInformation type, Object parent) {
945945
} else if (value instanceof CouchbaseList) {
946946
return (R) readCollection(type, (CouchbaseList) value, parent);
947947
} else {
948-
return (R) getPotentiallyConvertedSimpleRead(value, type.getClass()); // type does not have annotations
948+
return (R) getPotentiallyConvertedSimpleRead(value, type.getType()); // type does not have annotations
949949
}
950950
}
951951

0 commit comments

Comments
 (0)