From 2247d46ccc88f2c940d297057feff5f77cb52e93 Mon Sep 17 00:00:00 2001
From: Otmane Lahlou <otmane.lahlou@c-s.fr>
Date: Mon, 5 Sep 2011 16:30:19 +0200
Subject: [PATCH] ENH : some checks on the input image filename, and catch
 exception when input file is not readable

---
 Code/Core/otbWrapperInputImageParameter.cxx | 29 ++++++++++++++++-----
 1 file changed, 23 insertions(+), 6 deletions(-)

diff --git a/Code/Core/otbWrapperInputImageParameter.cxx b/Code/Core/otbWrapperInputImageParameter.cxx
index 08554076cd..f25fbed3ca 100644
--- a/Code/Core/otbWrapperInputImageParameter.cxx
+++ b/Code/Core/otbWrapperInputImageParameter.cxx
@@ -16,6 +16,7 @@
 
 =========================================================================*/
 #include "otbWrapperInputImageParameter.h"
+#include "itksys/SystemTools.hxx"
 
 namespace otb
 {
@@ -35,13 +36,29 @@ InputImageParameter::~InputImageParameter()
 void
 InputImageParameter::SetFromFileName(const std::string& filename)
 {
-  ImageFileReaderType::Pointer reader = ImageFileReaderType::New();
-  reader->SetFileName(filename);
-  reader->UpdateOutputInformation();
+  // First clear previous file choosen
+  this->ClearValue();
 
-  // everything went fine, store the object references
-  m_Reader = reader;
-  m_Image = reader->GetOutput();
+  // TODO : when the logger will be available, redirect the exception
+  // in the logger (like what is done in MsgReporter)
+  if (!filename.empty()
+      && itksys::SystemTools::FileExists(filename.c_str()))
+    {
+    ImageFileReaderType::Pointer reader = ImageFileReaderType::New();
+    reader->SetFileName(filename);
+    try
+      {
+      reader->UpdateOutputInformation();
+      }
+    catch(itk::ExceptionObject & err)
+      {
+      this->ClearValue();
+      }
+
+    // everything went fine, store the object references
+    m_Reader = reader;
+    m_Image = reader->GetOutput();
+    }
 }
 
 std::string
-- 
GitLab