When a complex obs is deleted or voided, the file is deleted from the file system. On unvoiding, you get a server side FileNotFoundException because the file no longer exists.
For data that is stored in the database, we mark it with the voided flag on deleting. For data stored on the file system, deleting could move the file to some sort of voided complex obs folder, from which it can be restored on un voiding the obs.
This problem was discovered while working on ---
You could take a look at: ObsServiceImpl.voidExistingObs()
The legacyui module's code can be found at: https://github.com/openmrs/openmrs-module-legacyui