Thanks Hairong and Sanjay - glad we're all on the same page!
Latest patch attached does not modify the behavior of FileStatus#isDir, just deprecates it, updates its comment and removes all the added isDir asserts in the tests that are now no longer necessary.
I left the ParentNotDirectoryException messages in FileSystem as is since getFileStatus will always fully resolve the link, ie if the parent is not a directory it must be a file (as opposed to getFileLinkStatus which can return a FileStatus that represents a link). Lemme know if I missed something.
Ditto the comment in getContentSummary is correct since f can't be a symlink, I modified that code to check isFile instead which is equivalent and I think more clear.
Similarly in RawLocalFileSystem we want to check isDirectory in append since we are checking the FileStatus that the path fully resolves to, and we want to make sure that's not a directory. I should point out that in general the changes to FileSystem* are safe since isDir and isDirectory are now equivalent and FileSystem* always uses getFileStatus.