@SuppressWarnings("unchecked") private <T> List<T> bulkReadAndConvertDBRefs(List<DBRef> dbrefs, TypeInformation<?> type, ObjectPath path, final Class<?> rawType) { if (CollectionUtils.isEmpty(dbrefs)) { return Collections.emptyList(); } List<Document> referencedRawDocuments = dbrefs.size() == 1 ? Collections.singletonList(readRef(dbrefs.iterator().next())) : bulkReadRefs(dbrefs); String collectionName = dbrefs.iterator().next().getCollectionName(); List<T> targeList = new ArrayList<>(dbrefs.size()); for (Document document : referencedRawDocuments) { if (document != null) { maybeEmitEvent(new AfterLoadEvent<>(document, (Class<T>) rawType, collectionName)); } final T target = (T) read(type, document, path); targeList.add(target); if (target != null) { maybeEmitEvent(new AfterConvertEvent<>(document, target, collectionName)); } } return targeList; }
@SuppressWarnings("unchecked") private <T> List<T> bulkReadAndConvertDBRefs(List<DBRef> dbrefs, TypeInformation<?> type, ObjectPath path, final Class<?> rawType) { if (CollectionUtils.isEmpty(dbrefs)) { return Collections.emptyList(); } List<Document> referencedRawDocuments = dbrefs.size() == 1 ? Collections.singletonList(readRef(dbrefs.iterator().next())) : bulkReadRefs(dbrefs); String collectionName = dbrefs.iterator().next().getCollectionName(); List<T> targeList = new ArrayList<>(dbrefs.size()); for (Document document : referencedRawDocuments) { if (document != null) { maybeEmitEvent(new AfterLoadEvent<>(document, (Class<T>) rawType, collectionName)); } final T target = (T) read(type, document, path); targeList.add(target); if (target != null) { maybeEmitEvent(new AfterConvertEvent<>(document, target, collectionName)); } } return targeList; }