OpenCMIS server performance improvements

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@29571 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Florian Mü
2011-08-05 13:58:17 +00:00
parent 382ed97a94
commit 46ef31e926
6 changed files with 143 additions and 73 deletions

View File

@@ -19,8 +19,10 @@
package org.alfresco.opencmis;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.alfresco.model.ContentModel;
@@ -43,6 +45,7 @@ import org.alfresco.service.cmr.version.VersionDoesNotExistException;
import org.alfresco.service.cmr.version.VersionHistory;
import org.alfresco.service.cmr.version.VersionType;
import org.alfresco.service.namespace.QName;
import org.alfresco.service.namespace.RegexQNamePattern;
import org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
import org.apache.chemistry.opencmis.commons.exceptions.CmisPermissionDeniedException;
@@ -68,6 +71,7 @@ public class CMISNodeInfoImpl implements CMISNodeInfo
private Version version;
private Boolean isLatestMajorVersion;
private Map<String, Serializable> properties;
private List<CMISNodeInfo> parents;
public CMISNodeInfoImpl(CMISConnector connector, String objectId)
{
@@ -766,4 +770,25 @@ public class CMISNodeInfoImpl implements CMISNodeInfo
{
return getObjectId() + " (" + getNodeRef() + ")";
}
@Override
public List<CMISNodeInfo> getParents()
{
if (parents == null)
{
parents = new ArrayList<CMISNodeInfo>();
List<ChildAssociationRef> nodeParents = connector.getNodeService().getParentAssocs(nodeRef,
ContentModel.ASSOC_CONTAINS, RegexQNamePattern.MATCH_ALL);
if (nodeParents != null)
{
for (ChildAssociationRef parent : nodeParents)
{
parents.add(new CMISNodeInfoImpl(connector, parent.getParentRef()));
}
}
}
return parents;
}
}