AccessAuditor implements InitializingBean, 

        BeforeDeleteNodePolicy, OnAddAspectPolicy, OnCreateNodePolicy, OnMoveNodePolicy,
        OnRemoveAspectPolicy, OnUpdatePropertiesPolicy,
        
        OnContentReadPolicy, OnContentUpdatePolicy,
        
        OnCreateVersionPolicy,
        
        OnCopyCompletePolicy,
        
        OnCheckOut, OnCheckIn, OnCancelCheckOut { public void onCopyComplete(QName classRef, NodeRef sourceNodeRef, NodeRef targetNodeRef, boolean copyToNewNode, Map<NodeRef, NodeRef> copyMap) { if (auditEnabled()) { getNodeChange(targetNodeRef).onCopyComplete(classRef, sourceNodeRef, targetNodeRef, copyToNewNode, copyMap); } }  void setProperties(Properties properties); void setPolicyComponent(PolicyComponent policyComponent); void setAuditComponent(AuditComponent auditComponent); void setTransactionService(TransactionService transactionService); void setNamespaceService(NamespaceService namespaceService); void setNodeInfoFactory(NodeInfoFactory nodeInfoFactory); void afterPropertiesSet(); @Override void beforeDeleteNode(NodeRef nodeRef); @Override void onCreateNode(ChildAssociationRef childAssocRef); @Override void onMoveNode(ChildAssociationRef fromChildAssocRef,
            ChildAssociationRef toChildAssocRef); @Override void onUpdateProperties(NodeRef nodeRef,
            Map<QName, Serializable> fromProperties, Map<QName, Serializable> toProperties); @Override void onRemoveAspect(NodeRef nodeRef, QName aspect); @Override void onAddAspect(NodeRef nodeRef, QName aspect); @Override void onContentUpdate(NodeRef nodeRef, boolean newContent); @Override void onContentRead(NodeRef nodeRef); @Override void onCreateVersion(QName classRef, NodeRef nodeRef,
            Map<String, Serializable> versionProperties, PolicyScope nodeDetails); void onCopyComplete(QName classRef, NodeRef sourceNodeRef, NodeRef targetNodeRef,
            boolean copyToNewNode, Map<NodeRef, NodeRef> copyMap); void onCheckOut(NodeRef workingCopy); void onCheckIn(NodeRef nodeRef); void onCancelCheckOut(NodeRef nodeRef);  }
@Test public final void testOnCopyComplete() throws Exception { serviceRegistry.getFileFolderService().copy(content2, folder1, null); txn.commit(); txn = null; assertEquals(1, auditMapList.size()); Map<String, Serializable> auditMap = auditMapList.get(0); assertEquals("COPY", auditMap.get("action")); assertContains("createNode", auditMap.get("sub-actions")); assertContains("updateNodeProperties", auditMap.get("sub-actions")); assertContains("addNodeAspect", auditMap.get("sub-actions")); assertContains("copyNode", auditMap.get("sub-actions")); assertEquals("/cm:homeFolder/cm:folder1/cm:content2", auditMap.get("path")); assertEquals("/cm:homeFolder/cm:folder2/cm:content2", auditMap.get("copy/from/path")); assertEquals("cm:content", auditMap.get("type")); }