Возможно ошибка в io.jmix.awsfs.AwsFileStorage

jmix 1.6

protected String createUuidFilename(String fileName) {
        String extension = FilenameUtils.getExtension(fileName);
        if (StringUtils.isNotEmpty(extension)) {
            return UuidProvider.createUuid().toString() + "." + extension;
        } else {
            return UuidProvider.createUuid().toString();
        }
    }

дело в том что FilenameUtils.getExtension(fileName) ищет первое вхождение точки. и в результате
может возвращаться не допустимая конструкция для fileKey

даете создать не валидный FIleRef
в
io.jmix.awsfs.AwsFileStorage#saveStream
строка 241
return new FileRef(getStorageName(), fileKey, fileName);

и в io.jmix.localfs.LocalFileStorage#saveStream(java.lang.String, java.io.InputStream)
строка 196
FileRef fileRef = new FileRef(this.storageName, this.pathToString(relativePath), fileName);

в тоже время
в io.jmix.core.entity.FileRefConverter#convertToEntityAttribute
в строке 39 проверяет валидность пути
return dbData == null ? null : FileRef.fromString(dbData);

Это не так, возвращается часть имени после последней точки: FilenameUtils (Apache Commons IO 2.19.0 API)

Не могли бы вы подробнее объяснить суть проблемы?

С уважением,
Константин

проблема в том что в одних местах не проверяется валидность fileKey
а в других проверяется, таким образом можно создать FileRef с инвалидным fileKey в одном месте, но не смочь прочитать его в другом.
проверьте на примере c наименованием файла “Ф12. Товарная накладная”

Спасибо, завел тикет: Inconsistent handling of file extensions in FileStorage implementations · Issue #4475 · jmix-framework/jmix · GitHub

С уважением,
Константин

1 симпатия