Merged HEAD (5.1) to 5.1.N (5.1.1)

118887 jvonka: ACE-198 / ACE-202 / ACE-4734: Perf improvements for CMIS (getChildren et al)\n Merge BRANCHES/DEV/HEAD_ACE198_2


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.1.N/root@119389 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Ancuta Morarasu
2015-12-02 10:14:31 +00:00
parent be48287050
commit 60408a953b
8 changed files with 162 additions and 142 deletions

View File

@@ -140,6 +140,8 @@ import org.apache.commons.logging.LogFactory;
*
* @author florian.mueller
* @author Derek Hulley
* @author janv
*
* @since 4.0
*/
public class AlfrescoCmisServiceImpl extends AbstractCmisService implements AlfrescoCmisService
@@ -159,8 +161,8 @@ public class AlfrescoCmisServiceImpl extends AbstractCmisService implements Alfr
public AlfrescoCmisServiceImpl(CMISConnector connector)
{
this.connector = connector;
nodeInfoMap = new HashMap<String, CMISNodeInfo>();
objectInfoMap = new HashMap<String, ObjectInfo>();
nodeInfoMap = new HashMap<>();
objectInfoMap = new HashMap<>();
}
@Override
@@ -187,12 +189,17 @@ public class AlfrescoCmisServiceImpl extends AbstractCmisService implements Alfr
protected CMISNodeInfoImpl createNodeInfo(NodeRef nodeRef)
{
return createNodeInfo(nodeRef, null);
return createNodeInfo(nodeRef, null, true);
}
protected CMISNodeInfoImpl createNodeInfo(NodeRef nodeRef, VersionHistory versionHistory)
protected CMISNodeInfoImpl createNodeInfo(NodeRef nodeRef, VersionHistory versionHistory, boolean checkExists)
{
CMISNodeInfoImpl result = connector.createNodeInfo(nodeRef, versionHistory);
return createNodeInfo(nodeRef, null, null, versionHistory, checkExists);
}
protected CMISNodeInfoImpl createNodeInfo(NodeRef nodeRef, QName nodeType, Map<QName,Serializable> nodeProps, VersionHistory versionHistory, boolean checkExists)
{
CMISNodeInfoImpl result = connector.createNodeInfo(nodeRef, nodeType, nodeProps, versionHistory, checkExists);
nodeInfoMap.put(result.getObjectId(), result);
return result;
@@ -494,20 +501,19 @@ public class AlfrescoCmisServiceImpl extends AbstractCmisService implements Alfr
}
// create a child CMIS object
CMISNodeInfo ni = createNodeInfo(child.getNodeRef());
CMISNodeInfo ni = createNodeInfo(child.getNodeRef(), child.getType(), child.getProperties(), null, false); // note: checkExists=false (don't need to check again)
if (getObjectInfo(repositoryId, ni.getObjectId(), includeRelationships)==null)
// ignore invalid children
// Skip non-cmis objects
if (ni.getObjectVariant() == CMISObjectVariant.INVALID_ID
|| ni.getObjectVariant() == CMISObjectVariant.NOT_EXISTING
|| ni.getObjectVariant() == CMISObjectVariant.NOT_A_CMIS_OBJECT
|| ni.getObjectVariant() == CMISObjectVariant.PERMISSION_DENIED)
{
// ignore invalid children
continue;
}
if (CMISObjectVariant.NOT_A_CMIS_OBJECT.equals(ni.getObjectVariant()))
{
continue; //Skip non-cmis objects
}
ObjectData object = connector.createCMISObject(ni, child, filter, includeAllowableActions,
ObjectData object = connector.createCMISObject(ni, filter, includeAllowableActions,
includeRelationships, renditionFilter, false, false/*, getContext().getCmisVersion()*/);
boolean isObjectInfoRequired = getContext().isObjectInfoRequired();
@@ -731,7 +737,7 @@ public class AlfrescoCmisServiceImpl extends AbstractCmisService implements Alfr
// create a child CMIS object
ObjectInFolderDataImpl object = new ObjectInFolderDataImpl();
CMISNodeInfo ni = createNodeInfo(child.getChildRef());
CMISNodeInfo ni = createNodeInfo(child.getChildRef(), null, false); // note: checkExists=false (don't need to check again)
object.setObject(connector.createCMISObject(
ni, filter, includeAllowableActions, includeRelationships,
renditionFilter, false, false));
@@ -2050,10 +2056,9 @@ public class AlfrescoCmisServiceImpl extends AbstractCmisService implements Alfr
throw new CmisObjectNotFoundException("Object not found: " + path);
}
CMISNodeInfo info = createNodeInfo(fileInfo.getNodeRef());
CMISNodeInfo info = createNodeInfo(fileInfo.getNodeRef(), fileInfo.getType(), fileInfo.getProperties(), null, false);
object = connector.createCMISObject(
info, fileInfo, filter, includeAllowableActions,
object = connector.createCMISObject(info, filter, includeAllowableActions,
includeRelationships, renditionFilter, includePolicyIds, includeAcl);
isObjectInfoRequired = getContext().isObjectInfoRequired();
@@ -2357,7 +2362,7 @@ public class AlfrescoCmisServiceImpl extends AbstractCmisService implements Alfr
// convert the version history
for (Version version : versionHistory.getAllVersions())
{
CMISNodeInfo versionInfo = createNodeInfo(version.getFrozenStateNodeRef(), versionHistory);
CMISNodeInfo versionInfo = createNodeInfo(version.getFrozenStateNodeRef(), versionHistory, true); // TODO do we need to check existence ?
// MNT-9557 fix. Replace head version with current node info
if (versionHistory.getHeadVersion().equals(version))
{
@@ -2412,7 +2417,7 @@ public class AlfrescoCmisServiceImpl extends AbstractCmisService implements Alfr
StringBuilder sb = new StringBuilder();
sb.append(objectId).append("-").append(versionSeriesId);
logGetObjectCall("getObjectOfLatestVersion", start, sb.toString(), filter, includeAllowableActions, includeRelationships,
renditionFilter, includePolicyIds, includeAcl, isObjectInfoRequired, extension);