Browse Source

tmp save

issue/4185-light
Christoph Strobl 9 months ago
parent
commit
8fb2cb35b9
No known key found for this signature in database
GPG Key ID: E6054036D0C37A4B
  1. 37
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/encryption/MongoEncryptionConverter.java

37
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/encryption/MongoEncryptionConverter.java

@ -40,7 +40,6 @@ import org.springframework.data.mongodb.core.encryption.EncryptionKey; @@ -40,7 +40,6 @@ import org.springframework.data.mongodb.core.encryption.EncryptionKey;
import org.springframework.data.mongodb.core.encryption.EncryptionKeyResolver;
import org.springframework.data.mongodb.core.encryption.EncryptionOptions;
import org.springframework.data.mongodb.core.mapping.Encrypted;
import org.springframework.data.mongodb.core.mapping.ExplicitEncrypted;
import org.springframework.data.mongodb.core.mapping.MongoPersistentProperty;
import org.springframework.data.mongodb.core.mapping.RangeEncrypted;
import org.springframework.data.mongodb.util.BsonUtils;
@ -172,19 +171,30 @@ public class MongoEncryptionConverter implements EncryptingConverter<Object, Obj @@ -172,19 +171,30 @@ public class MongoEncryptionConverter implements EncryptingConverter<Object, Obj
getProperty(context).getOwner().getName(), getProperty(context).getName()));
}
boolean encryptExpression = false;
String algorithm = annotation.algorithm();
EncryptionKey key = keyResolver.getKey(context);
EncryptionOptions encryptionOptions = new EncryptionOptions(algorithm, key);
String fieldNameAndQueryOperator = context.getFieldNameAndQueryOperator();
ExplicitEncrypted explicitEncryptedAnnotation = persistentProperty.findAnnotation(ExplicitEncrypted.class);
if (explicitEncryptedAnnotation != null) {
encryptionOptions = new EncryptionOptions(algorithm, key, QueryableEncryptionOptions.none());
EncryptionOptions encryptionOptions = new EncryptionOptions(algorithm, key,
getEQOptions(persistentProperty, fieldNameAndQueryOperator));
if (fieldNameAndQueryOperator != null
&& !encryptionOptions.queryableEncryptionOptions().equals(QueryableEncryptionOptions.none())) {
return encryptExpression(fieldNameAndQueryOperator, value, encryptionOptions);
} else {
RangeEncrypted rangeEncryptedAnnotation = persistentProperty.findAnnotation(RangeEncrypted.class);
if (rangeEncryptedAnnotation != null) {
return encryptValue(value, context, persistentProperty, encryptionOptions);
}
}
private static QueryableEncryptionOptions getEQOptions(MongoPersistentProperty persistentProperty,
String fieldNameAndQueryOperator) {
QueryableEncryptionOptions queryableEncryptionOptions = QueryableEncryptionOptions.none();
RangeEncrypted rangeEncryptedAnnotation = persistentProperty.findAnnotation(RangeEncrypted.class);
if (rangeEncryptedAnnotation == null) {
return queryableEncryptionOptions;
}
String rangeOptions = rangeEncryptedAnnotation.rangeOptions();
if (!rangeOptions.isEmpty()) {
queryableEncryptionOptions = queryableEncryptionOptions.attributes(Document.parse(rangeOptions));
@ -197,18 +207,9 @@ public class MongoEncryptionConverter implements EncryptingConverter<Object, Obj @@ -197,18 +207,9 @@ public class MongoEncryptionConverter implements EncryptingConverter<Object, Obj
boolean isPartOfARangeQuery = fieldNameAndQueryOperator != null;
if (isPartOfARangeQuery) {
encryptExpression = true;
queryableEncryptionOptions = queryableEncryptionOptions.queryType("range");
}
encryptionOptions = new EncryptionOptions(algorithm, key, queryableEncryptionOptions);
}
}
if (encryptExpression) {
return encryptExpression(fieldNameAndQueryOperator, value, encryptionOptions);
} else {
return encryptValue(value, context, persistentProperty, encryptionOptions);
}
return queryableEncryptionOptions;
}
private BsonBinary encryptValue(Object value, EncryptionContext context, MongoPersistentProperty persistentProperty,

Loading…
Cancel
Save