diff --git a/source/java/org/alfresco/cmis/changelog/CMISChangeLogDataExtractor.java b/source/java/org/alfresco/cmis/changelog/CMISChangeLogDataExtractor.java index d16ea265ea..bef544471b 100755 --- a/source/java/org/alfresco/cmis/changelog/CMISChangeLogDataExtractor.java +++ b/source/java/org/alfresco/cmis/changelog/CMISChangeLogDataExtractor.java @@ -28,9 +28,10 @@ import java.io.Serializable; import java.util.HashMap; import org.alfresco.cmis.CMISDictionaryModel; +import org.alfresco.cmis.CMISInvalidArgumentException; import org.alfresco.cmis.CMISServices; +import org.alfresco.cmis.CMISTypeId; import org.alfresco.repo.audit.extractor.AbstractDataExtractor; -import org.alfresco.service.cmr.model.FileFolderService; import org.alfresco.service.cmr.model.FileInfo; import org.alfresco.service.cmr.repository.NodeRef; @@ -43,7 +44,6 @@ import org.alfresco.service.cmr.repository.NodeRef; public class CMISChangeLogDataExtractor extends AbstractDataExtractor { private CMISServices cmisService; - private FileFolderService fileFolderService; public static final String KEY_NODE_REF = "nodeRef"; public static final String KEY_OBJECT_ID = "objectId"; @@ -69,28 +69,23 @@ public class CMISChangeLogDataExtractor extends AbstractDataExtractor */ public boolean isSupported(Serializable data) { - boolean result = false; if (data != null) { NodeRef nodeRef = getNodeRef(data); if (nodeRef != null) { - if (!fileFolderService.exists(nodeRef)) + try { - result = true; + CMISTypeId typeId = cmisService.getTypeDefinition(nodeRef).getBaseType().getTypeId(); + return typeId.equals(CMISDictionaryModel.DOCUMENT_TYPE_ID) || typeId.equals(CMISDictionaryModel.FOLDER_TYPE_ID); } - // Does the node represent a file or folder - else if (fileFolderService.getFileInfo(nodeRef) != null) + catch (CMISInvalidArgumentException e) { - // Is the node located within CMIS defaultRootStore - if (cmisService.getDefaultRootStoreRef().equals(nodeRef.getStoreRef())) - { - result = true; - } + // Ignore and return false } } } - return result; + return false; } /** @@ -122,15 +117,4 @@ public class CMISChangeLogDataExtractor extends AbstractDataExtractor { this.cmisService = cmisService; } - - /** - * Set the FileFolder service - * - * @param fileFolderService FileFolder service - */ - public void setFileFolderService(FileFolderService fileFolderService) - { - this.fileFolderService = fileFolderService; - } - } diff --git a/source/java/org/alfresco/repo/audit/AuditComponentImpl.java b/source/java/org/alfresco/repo/audit/AuditComponentImpl.java index a779394973..66948b77e4 100644 --- a/source/java/org/alfresco/repo/audit/AuditComponentImpl.java +++ b/source/java/org/alfresco/repo/audit/AuditComponentImpl.java @@ -47,6 +47,7 @@ import org.alfresco.repo.audit.model.TrueFalseUnset; import org.alfresco.repo.domain.audit.AuditDAO; import org.alfresco.repo.domain.propval.PropertyValueDAO; import org.alfresco.repo.security.authentication.AuthenticationUtil; +import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork; import org.alfresco.repo.transaction.AlfrescoTransactionSupport; import org.alfresco.repo.transaction.AlfrescoTransactionSupport.TxnReadState; import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; @@ -1284,9 +1285,9 @@ public class AuditComponentImpl implements AuditComponent * @return Returns all values as audited */ private Map audit( - AuditApplication application, + final AuditApplication application, Set disabledPaths, - Map values) + final Map values) { // Get the model ID for the application Long applicationId = application.getApplicationId(); @@ -1327,7 +1328,13 @@ public class AuditComponentImpl implements AuditComponent Map auditData = generateData(generators); // Now extract values - Map extractedData = extractData(application, values); + Map extractedData = AuthenticationUtil.runAs(new RunAsWork>() + { + public Map doWork() throws Exception + { + return extractData(application, values); + } + }, AuthenticationUtil.getSystemUserName()); // Combine extracted and generated values (extracted data takes precedence) auditData.putAll(extractedData);