Browse Source

Polishing.

Add Override annotations and comment why we optimize.

See #4612
Original pull request: #4613
pull/4693/head
Mark Paluch 2 years ago
parent
commit
49a3be60b7
No known key found for this signature in database
GPG Key ID: 55BC6374BAA9D973
  1. 6
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/ReferenceLoader.java
  2. 7
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/ReferenceLookupDelegate.java

6
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/ReferenceLoader.java

@ -130,7 +130,7 @@ public interface ReferenceLoader { @@ -130,7 +130,7 @@ public interface ReferenceLoader {
/**
* @return a {@link DocumentReferenceQuery} that will not match any documents.
* @since 4.3
* @since 4.2.5
*/
static DocumentReferenceQuery forNoResult() {
return NoResultsFilter.INSTANCE;
@ -139,8 +139,8 @@ public interface ReferenceLoader { @@ -139,8 +139,8 @@ public interface ReferenceLoader {
/**
* A dedicated {@link DocumentReferenceQuery} that will not match any documents.
*
* @since 4.3
*
* @since 4.2.5
*/
enum NoResultsFilter implements DocumentReferenceQuery {
INSTANCE;

7
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/ReferenceLookupDelegate.java

@ -240,7 +240,8 @@ public final class ReferenceLookupDelegate { @@ -240,7 +240,8 @@ public final class ReferenceLookupDelegate {
EvaluationContext evaluationContextFor(MongoPersistentProperty property, Object source, SpELContext spELContext) {
Object target = source instanceof DocumentReferenceSource documentReferenceSource ? documentReferenceSource.getTargetSource()
Object target = source instanceof DocumentReferenceSource documentReferenceSource
? documentReferenceSource.getTargetSource()
: source;
if (target == null) {
@ -285,6 +286,7 @@ public final class ReferenceLookupDelegate { @@ -285,6 +286,7 @@ public final class ReferenceLookupDelegate {
Collection<Object> objects = (Collection<Object>) value;
// optimization: bypass query if the collection pointing to the references is empty
if (objects.isEmpty()) {
return DocumentReferenceQuery.forNoResult();
}
@ -301,7 +303,7 @@ public final class ReferenceLookupDelegate { @@ -301,7 +303,7 @@ public final class ReferenceLookupDelegate {
if (property.isMap() && value instanceof Map) {
if(ObjectUtils.isEmpty(value)) {
if (ObjectUtils.isEmpty(value)) {
return DocumentReferenceQuery.forNoResult();
}
@ -461,6 +463,7 @@ public final class ReferenceLookupDelegate { @@ -461,6 +463,7 @@ public final class ReferenceLookupDelegate {
return target.stream().sorted((o1, o2) -> compareAgainstReferenceIndex(ors, o1, o2)).collect(Collectors.toList());
}
@Override
public Document getQuery() {
return query;
}

Loading…
Cancel
Save