diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java index 49defcd77..a23e4849a 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java @@ -37,7 +37,6 @@ import org.bson.json.JsonReader; import org.bson.types.ObjectId; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; @@ -1192,7 +1191,7 @@ public class MappingMongoConverter extends AbstractMongoConverter implements App map.put(key, read(defaultedValueType, (BasicDBObject) value, path)); } else if (value instanceof DBRef) { map.put(key, DBRef.class.equals(rawValueType) ? value - : readAndConvertDBRef((DBRef) value, defaultedValueType, ObjectPath.ROOT, rawValueType != null ? rawValueType : ClassTypeInformation.OBJECT.getType())); + : readAndConvertDBRef((DBRef) value, defaultedValueType, ObjectPath.ROOT, rawValueType)); } else if (value instanceof List) { map.put(key, readCollectionOrArray(valueType != null ? valueType : ClassTypeInformation.LIST, (List) value, path)); @@ -1596,7 +1595,7 @@ public class MappingMongoConverter extends AbstractMongoConverter implements App @Nullable private T readAndConvertDBRef(@Nullable DBRef dbref, TypeInformation type, ObjectPath path, - final Class rawType) { + @Nullable Class rawType) { List result = bulkReadAndConvertDBRefs(Collections.singletonList(dbref), type, path, rawType); return CollectionUtils.isEmpty(result) ? null : result.iterator().next(); @@ -1619,7 +1618,7 @@ public class MappingMongoConverter extends AbstractMongoConverter implements App @SuppressWarnings("unchecked") private List bulkReadAndConvertDBRefs(List dbrefs, TypeInformation type, ObjectPath path, - final Class rawType) { + @Nullable Class rawType) { if (CollectionUtils.isEmpty(dbrefs)) { return Collections.emptyList(); @@ -1635,7 +1634,8 @@ public class MappingMongoConverter extends AbstractMongoConverter implements App for (Document document : referencedRawDocuments) { if (document != null) { - maybeEmitEvent(new AfterLoadEvent<>(document, (Class) rawType, collectionName)); + maybeEmitEvent( + new AfterLoadEvent<>(document, (Class) (rawType != null ? rawType : Object.class), collectionName)); } T target = (T) read(type, document, path); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java index c4950c05a..82a6840f9 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java @@ -42,7 +42,6 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.junit.jupiter.MockitoExtension; - import org.springframework.aop.framework.ProxyFactory; import org.springframework.beans.ConversionNotSupportedException; import org.springframework.beans.factory.annotation.Value; @@ -80,7 +79,6 @@ import org.springframework.data.mongodb.core.mapping.PersonPojoStringId; import org.springframework.data.mongodb.core.mapping.TextScore; import org.springframework.data.mongodb.core.mapping.event.AfterConvertCallback; import org.springframework.data.util.ClassTypeInformation; -import org.springframework.data.util.TypeInformation; import org.springframework.test.util.ReflectionTestUtils; import com.mongodb.BasicDBList; @@ -2162,8 +2160,7 @@ public class MappingMongoConverterUnitTests { DBRefWrapper result = converter.read(DBRefWrapper.class, document); - verify(afterConvertCallback).onAfterConvert(eq(result.personMap.get("foo")), - eq(new org.bson.Document()), any()); + verify(afterConvertCallback).onAfterConvert(eq(result.personMap.get("foo")), eq(new org.bson.Document()), any()); } @Test // DATAMONGO-2300