// do a recursive delete, since we can't delete directories if they are not empty.
boolean deleted = recursiveDelete(file);
if (deleted) {
ServiceManager.getServices().getMetadataHandler().delete(file); // this doesn't rely on the existence of the file, so it still works
Event event;
if (wasDir) {
event = new Event(Event.REMOVE_DIRECTORY, user, getRealParentWorkingDirectoryPath(), getFtpParentWorkingDirectory());
event.setProperty("dirlog.deleteRecursively", "true");
} else {
event = new Event(Event.DELETE_FILE, user, getRealParentWorkingDirectoryPath(), getFtpParentWorkingDirectory());
event.setProperty("file.size", String.valueOf(length));
}
event.setProperty("file.path.real", resolveRealPath(path));
event.setProperty("file.path.ftp", resolveFtpPath(path));
event.setProperty("site.section", getSection(path).getName());
ServiceManager.getServices().getEventHandler().handleAfterEvent(event);
} else {
if (fileMissing) {
// we do this here, so that we can delete orphaned symlinks, even though they report as being non-existent.
throw new FileNotFoundException("File not deleted: file not found: " + resolvePath(file));