[Issue #27] Use normalize instead of getFullPath. Throw an IOException if source is invalid