cryptomator / webdav-nio-adapter-servlet

WebDAV-NIO-Adapter-Servlet
GNU Affero General Public License v3.0
10 stars 9 forks source link

Folder listing throws exception if attributes of a single child cannot be recieved #12

Closed infeo closed 2 years ago

infeo commented 2 years ago

Folders listings are created with DavFolder.getMembers(...): https://github.com/cryptomator/webdav-nio-adapter-servlet/blob/e8372ddd24c5a737c4c20d042d80571a2b24703f/src/main/java/org/cryptomator/webdav/core/servlet/DavFolder.java#L108-L128

If for a single child the attributes cannot be recieved, the whole listing is aborted and an exception thrown.

From my point of view this is not a good solution, because if we have a dir with 100 childs, a single failed IO operation makes the whole listing operation void. Additionally, the already made listing depends on the sorting of the child elements (e.g., if the failing IO-operation is one of the first elements, the DavFolder.children is quite empty while if it is one of the last elements, the object stores the nearly the whole listing).

I suggest to encapsulate all IO-ops for one child in a try-catch-block and continue with the next child, if an IOException is raised.