[ https://issues.apache.org/jira/browse/CMIS-818?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14068372#comment-14068372 ]
Ron Gavlin edited comment on CMIS-818 at 7/21/14 10:13 AM: ----------------------------------------------------------- Yes, this appears to be a effective, generalized means for addressing my specific requirement as well as potentially many others. Thanks much! FYI, it appears there is a typo in your patch. See the duplicate stopAfterService(service) invocations in the getFolderTree() method of NavigationService below. https://github.com/apache/chemistry-opencmis/blob/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/NavigationService.java {code} public List<CmisObjectInFolderContainerType> getFolderTree(String repositoryId, String folderId, BigInteger depth, String filter, Boolean includeAllowableActions, EnumIncludeRelationships includeRelationships, String renditionFilter, Boolean includePathSegment, CmisExtensionType extension) throws CmisException { CmisService service = null; CmisVersion cmisVersion = null; try { service = getService(wsContext, repositoryId); cmisVersion = getCmisVersion(wsContext); List<CmisObjectInFolderContainerType> result = new ArrayList<CmisObjectInFolderContainerType>(); if (stopBeforeService(service)) { return null; } if (stopAfterService(service)) { return null; } List<ObjectInFolderContainer> serviceResult = service.getFolderTree(repositoryId, folderId, depth, filter, includeAllowableActions, convert(IncludeRelationships.class, includeRelationships), renditionFilter, includePathSegment, convert(extension)); if (stopAfterService(service)) { return null; } if (serviceResult != null) { for (ObjectInFolderContainer container : serviceResult) { result.add(convert(container, cmisVersion)); } } return result; } catch (Exception e) { throw convertException(e); } finally { closeService(service); } } {code} Thanks again! BTW, this is a painful patch to backport to a custom 0.11.0+ fork until an official Chemistry OpenCMIS release with this patch becomes available. If a 1.0 release is far off, is there any way an interim 0.12.0 release could be made that includes this fix? was (Author: rgavlin): Yes, this appears to be a effective, generalized means for addressing my specific requirement as well as potentially many others. Thanks much! FYI, it appears there is a typo in your patch. See the duplicate stopAfterService(service) invocations in the getFolderTree() method of NavigationService below. https://github.com/apache/chemistry-opencmis/blob/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/webservices/NavigationService.java {code} public List<CmisObjectInFolderContainerType> getFolderTree(String repositoryId, String folderId, BigInteger depth, String filter, Boolean includeAllowableActions, EnumIncludeRelationships includeRelationships, String renditionFilter, Boolean includePathSegment, CmisExtensionType extension) throws CmisException { CmisService service = null; CmisVersion cmisVersion = null; try { service = getService(wsContext, repositoryId); cmisVersion = getCmisVersion(wsContext); List<CmisObjectInFolderContainerType> result = new ArrayList<CmisObjectInFolderContainerType>(); if (stopBeforeService(service)) { return null; } if (stopAfterService(service)) { return null; } List<ObjectInFolderContainer> serviceResult = service.getFolderTree(repositoryId, folderId, depth, filter, includeAllowableActions, convert(IncludeRelationships.class, includeRelationships), renditionFilter, includePathSegment, convert(extension)); if (stopAfterService(service)) { return null; } if (serviceResult != null) { for (ObjectInFolderContainer container : serviceResult) { result.add(convert(container, cmisVersion)); } } return result; } catch (Exception e) { throw convertException(e); } finally { closeService(service); } } {code} Thanks again! > Navigation services should support Last-Modified/If-Modified-Since Headers > -------------------------------------------------------------------------- > > Key: CMIS-818 > URL: https://issues.apache.org/jira/browse/CMIS-818 > Project: Chemistry > Issue Type: Improvement > Components: opencmis-server > Affects Versions: OpenCMIS 0.11.0 > Reporter: Ron Gavlin > Assignee: Florian Müller > > AtomPub and Browser navigation services including getChildren, getFolderTree, > getDescendants, and potentially the others should support > Last-Modified/If-Modified-Since Headers. > Some repositories have built-in caching mechanisms to track whether a folder > tree has been modified. Since many of the Navigation services often require > significant server-side resources, repositories with these built-in caching > mechanisms should be able to leverage them with OpenCMIS. Currently, the > OpenCMIS NavigationService does not provide hooks to implement such > optimizations. -- This message was sent by Atlassian JIRA (v6.2#6252)