From: Jurrie O. <ju...@st...> - 2015-06-06 22:00:48
|
Hello everyone, What is the best way to submit bugfixes for LogicalDOC? Because I did not see a bugtracker, I thought I'll just outline my fix in the mailing list. Here goes :) My colleague encountered a nasty little bug in LogicalDOC's CMIS support. He ported the Apache VFS CMIS provider to the latest version of Apache VFS (check it out here: https://github.com/topicusfinan/commons-vfs-cmis) The bug is in the "getObjectByPath" method, when calling it with a non-existing path. A little funny, but this is the way the VFS provider works. It then catches the CmisObjectNotFoundException and goes on its merry way (generating an imaginary VFS file, which will be created for real later). The bug is that the "getObjectByPath" method does not throw a CmisObjectNotFoundException, but rather just returns NULL. The OpenCMIS framework specifies that that is illegal in the Javadoc above the method: "Object infos should contain the returned object." (See here for the class: https://svn.apache.org/repos/asf/chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/server/AbstractCmisService.java) The fix for the bug would be in function com.logicaldoc.cmis.LDRepository.getObjectByPath(CallContext, String, String, Boolean, IncludeRelationships, String, Boolean, Boolean, ExtensionsData). Just append the lines to LDRepository.java around line 992 (replacing "return out;"): if (out == null) { throw new CmisObjectNotFoundException("Object not found!"); } else { return out; } This prevents org.apache.chemistry.opencmis.server.impl.atompub.ObjectService$GetObjectByPath.serve throwing a stacktrace, and instead returns a correct 404 HTTP response. With kind regards, Jurrie Overgoor |