Merged HEAD-BUG-FIX (5.0/Cloud) to HEAD (5.0/Cloud)

75520: Merged V4.2-BUG-FIX (4.2.3) to HEAD-BUG-FIX (5.0/Cloud)
      75206: Merged DEV to V4.2-BUG-FIX (4.2.3)
         74383 : MNT-11726 : CMIS change log isn't returning valid cmis:objectId values for deleted objects
            - Use context safe objectId generation in CMISChangeLogDataExtractor. Test for the fix
         74484 : MNT-11726 : CMIS change log isn't returning valid cmis:objectId values for deleted objects
            - Test implemented in CMISTest
            - Changed CMISConnector.isFolder(NodeRef) logic. Can cause NPE if NodeRef is not FOLDER or FILE
         75113 : MNT-11726 : CMIS change log isn't returning valid cmis:objectId values for deleted objects
            - alfresco-audit-cmis.xml moved to Repository project


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@77482 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Mark Rogers
2014-07-22 12:52:57 +00:00
parent 238a2a02c1
commit 27e2d25a8b
5 changed files with 207 additions and 18 deletions

View File

@@ -22,7 +22,6 @@ import java.io.Serializable;
import java.util.HashMap;
import org.alfresco.opencmis.dictionary.CMISDictionaryService;
import org.alfresco.opencmis.dictionary.CMISPropertyAccessor;
import org.alfresco.opencmis.dictionary.TypeDefinitionWrapper;
import org.alfresco.repo.audit.extractor.AbstractDataExtractor;
import org.alfresco.service.cmr.model.FileInfo;
@@ -30,7 +29,6 @@ import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.namespace.QName;
import org.apache.chemistry.opencmis.commons.PropertyIds;
import org.apache.chemistry.opencmis.commons.enums.BaseTypeId;
/**
@@ -46,6 +44,7 @@ public class CMISChangeLogDataExtractor extends AbstractDataExtractor
private NodeService nodeService;
private CMISDictionaryService cmisDictionaryService;
private CMISConnector cmisConnector;
/**
* Extracts relevant node refs and Ids from auditing data
@@ -57,15 +56,10 @@ public class CMISChangeLogDataExtractor extends AbstractDataExtractor
{
NodeRef nodeRef = getNodeRef(value);
QName typeQName = nodeService.getType(nodeRef);
TypeDefinitionWrapper type = cmisDictionaryService.findNodeType(typeQName);
HashMap<String, Serializable> result = new HashMap<String, Serializable>(5);
result.put(KEY_NODE_REF, nodeRef);
// Support version nodes by recording the object ID
CMISPropertyAccessor accessor = type.getPropertyById(PropertyIds.OBJECT_ID).getPropertyAccessor();
result.put(KEY_OBJECT_ID, accessor.getValue(accessor.createNodeInfo(nodeRef)));
result.put(KEY_OBJECT_ID, cmisConnector.createObjectId(nodeRef, true));
return result;
}
@@ -125,4 +119,8 @@ public class CMISChangeLogDataExtractor extends AbstractDataExtractor
{
this.cmisDictionaryService = cmisDictionaryService;
}
public void setCmisConnector(CMISConnector cmisConnector) {
this.cmisConnector = cmisConnector;
}
}