diff --git a/source/java/org/alfresco/opencmis/AlfrescoCmisService.java b/source/java/org/alfresco/opencmis/AlfrescoCmisService.java index 9223df9be1..7457f1cbd6 100644 --- a/source/java/org/alfresco/opencmis/AlfrescoCmisService.java +++ b/source/java/org/alfresco/opencmis/AlfrescoCmisService.java @@ -2672,31 +2672,41 @@ public class AlfrescoCmisService extends AbstractCmisService { CMISNodeInfo nodeInfo = getOrCreateNodeInfo(objectId); - // object info has not been found -> create one - try + if (nodeInfo.getObjectVariant() == CMISObjectVariant.INVALID_ID + || 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; + } 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; } diff --git a/source/java/org/alfresco/opencmis/CMISNodeInfoImpl.java b/source/java/org/alfresco/opencmis/CMISNodeInfoImpl.java index dd2a24f9f4..cd11e3cf92 100644 --- a/source/java/org/alfresco/opencmis/CMISNodeInfoImpl.java +++ b/source/java/org/alfresco/opencmis/CMISNodeInfoImpl.java @@ -282,6 +282,12 @@ public class CMISNodeInfoImpl implements CMISNodeInfo if (connector.getCheckOutCheckInService().isWorkingCopy(nodeRef)) { NodeRef checkedOut = connector.getCheckOutCheckInService().getCheckedOut(nodeRef); + if (checkedOut == null) + { + // catch a rare audit case + checkedOut = nodeRef; + } + objecVariant = CMISObjectVariant.PWC; objectId = checkedOut.toString() + CMISConnector.ID_SEPERATOR + CMISConnector.PWC_VERSION_LABEL; versionLabel = CMISConnector.PWC_VERSION_LABEL;