Workaround for ALF-11140

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@31720 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Florian Mü
2011-11-04 05:05:33 +00:00
parent 1c2c8442af
commit f19c9e5b52
2 changed files with 37 additions and 21 deletions

View File

@@ -2672,31 +2672,41 @@ public class AlfrescoCmisService extends AbstractCmisService
{ {
CMISNodeInfo nodeInfo = getOrCreateNodeInfo(objectId); CMISNodeInfo nodeInfo = getOrCreateNodeInfo(objectId);
// object info has not been found -> create one if (nodeInfo.getObjectVariant() == CMISObjectVariant.INVALID_ID
try || nodeInfo.getObjectVariant() == CMISObjectVariant.NOT_EXISTING
|| nodeInfo.getObjectVariant() == CMISObjectVariant.NOT_A_CMIS_OBJECT
|| nodeInfo.getObjectVariant() == CMISObjectVariant.PERMISSION_DENIED)
{ {
if (filter == null)
{
filter = MIN_FILTER;
} else if (!filter.equals("*"))
{
filter = filter + "," + MIN_FILTER;
}
// get the object and its info
ObjectData object = connector.createCMISObject(nodeInfo, filter, false, includeRelationships, null,
false, false);
info = getObjectInfoIntern(repositoryId, object);
// add object info
objectInfoMap.put(objectId, info);
} catch (Exception e)
{
e.printStackTrace();
info = null; info = null;
} else
{
// object info has not been found -> create one
try
{
if (filter == null)
{
filter = MIN_FILTER;
} else if (!filter.equals("*"))
{
filter = filter + "," + MIN_FILTER;
}
// get the object and its info
ObjectData object = connector.createCMISObject(nodeInfo, filter, false, includeRelationships, null,
false, false);
info = getObjectInfoIntern(repositoryId, object);
// add object info
objectInfoMap.put(objectId, info);
} catch (Exception e)
{
e.printStackTrace();
info = null;
}
} }
} }
return info; return info;
} }

View File

@@ -282,6 +282,12 @@ public class CMISNodeInfoImpl implements CMISNodeInfo
if (connector.getCheckOutCheckInService().isWorkingCopy(nodeRef)) if (connector.getCheckOutCheckInService().isWorkingCopy(nodeRef))
{ {
NodeRef checkedOut = connector.getCheckOutCheckInService().getCheckedOut(nodeRef); NodeRef checkedOut = connector.getCheckOutCheckInService().getCheckedOut(nodeRef);
if (checkedOut == null)
{
// catch a rare audit case
checkedOut = nodeRef;
}
objecVariant = CMISObjectVariant.PWC; objecVariant = CMISObjectVariant.PWC;
objectId = checkedOut.toString() + CMISConnector.ID_SEPERATOR + CMISConnector.PWC_VERSION_LABEL; objectId = checkedOut.toString() + CMISConnector.ID_SEPERATOR + CMISConnector.PWC_VERSION_LABEL;
versionLabel = CMISConnector.PWC_VERSION_LABEL; versionLabel = CMISConnector.PWC_VERSION_LABEL;