Добрый день.
Есть бин который отвечает за скачивание файла из хранилища. Там есть метод, в который мы передаём FileRef.
@Component("ui_Downloader")
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
public class DownloaderImpl implements Downloader {
@Override
public void download(FileRef fileReference, @Nullable DownloadFormat format) {
if (fileStorage == null) {
fileStorage = fileStorageLocator.getDefault();
}
String fileName = fileReference.getFileName();
download(new FileDataProvider(fileReference, fileStorage), fileName, format);
}
}
Непонятно, почему имея объект FileRef в котором задано имя хранилища, не брать его оттуда?
public class DownloaderImpl extends io.jmix.ui.download.DownloaderImpl {
@Override
public void download(FileRef fileReference, @Nullable DownloadFormat format) {
try {
fileStorage = fileStorageLocator.getByName(fileReference.getStorageName());
} catch (IllegalArgumentException e) {
if (fileStorage == null) {
fileStorage = fileStorageLocator.getDefault();
}
}
String fileName = fileReference.getFileName();
download(new FileDataProvider(fileReference, fileStorage), fileName, format);
}
}
Уже после того как это написал увидел что в jmix 2.x этот метод переписан практически как я переписал у себя.
@Override
public void download(FileRef fileReference, @Nullable DownloadFormat format) {
FileStorage fileReferenceStorage = fileStorageLocator.getByName(fileReference.getStorageName());
String fileName = fileReference.getFileName();
download(new FileRefDownloadDataProvider(fileReference, fileReferenceStorage), fileName, format);
}
Jmix 1.x ещё будут выходить исправления, ожидать? Если нет рук/времени могу предложить pull request.