The reading of image data can fail when ITK itself fails to return a valid ImageIOBase object. This is done in
mitk::ItkImageFileReader
l.197 itk::ImageIOBase::Pointer imageIO = itk::ImageIOFactory::CreateImageIO( filename.c_str(), itk::ImageIOFactory::ReadMode );
if ( imageIO.IsNull() ) return false;
The bug here is, that the user is not notified at all about the failed attempt to read in the requested data. It remains to clear, where the output should happen.
Pipeline (backtrace-like)
- [ITK Code]
- mitk::ItkImageFileReader::CanReadFile() -- no logging if iamgeIO.IsNull()
- mitk::BaseDataIO::LoadBaseDataFromFile() -- no logging, returning 'false' if none of the possible reader is able to read the file
- mitk::DataNodeFactory::GenerateData() -- no logging if the vector of BaseData* retrieved is empty
- mitk::CoreDataNodeReader::Read(...) -- no logging if the number of Outputs retrieved is 0
- mitk::IOUtil::LoadFiles(...) -- no logging if the number of nodes retrieved is 0
- [When through GUI] mitk::WorkbenchUtil::LoadFiles() -- no logging, uses the output of IOUtil::LoadFiles to check whether the datastorage has changed or not
The question is, since Core is affected in every case : Where to put the message?