The AuditService API provides facilities to query audit data. There are also methods to clear audit data, enable and disable auditing, and check auditing status.
/** * Returns content changes. */ public ObjectList getContentChanges(Holder<String> changeLogToken, BigInteger maxItems) { final ObjectListImpl result = new ObjectListImpl(); result.setObjects(new ArrayList<ObjectData>()); EntryIdCallback changeLogCollectingCallback = new EntryIdCallback(true) { @Override publicbooleanhandleAuditEntry(Long entryId, String user, long time, Map<String, Serializable> values) { result.getObjects().addAll(createChangeEvents(time, values)); returnsuper.handleAuditEntry(entryId, user, time, values); } }; Long from = null; if ((changeLogToken != null) && (changeLogToken.getValue() != null)) { try { from = Long.parseLong(changeLogToken.getValue()); } catch (NumberFormatException e) { thrownew CmisInvalidArgumentException("Invalid change log token: " + changeLogToken); } } AuditQueryParameters params = new AuditQueryParameters(); params.setApplicationName(CMIS_CHANGELOG_AUDIT_APPLICATION); params.setForward(true); params.setFromId(from); int maxResults = (maxItems == null ? 0 : maxItems.intValue()); maxResults = (maxResults < 1 ? 0 : maxResults + 1); serviceRegistry.getAuditService().auditQuery(changeLogCollectingCallback, params, maxResults); String newChangeLogToken = null; if (maxResults > 0) { if (result.getObjects().size() >= maxResults) { StringBuilder clt = new StringBuilder(); newChangeLogToken = (from == null ? clt.append(maxItems.intValue() + 1).toString() : clt.append(from.longValue() + maxItems.intValue()).toString()); result.getObjects().remove(result.getObjects().size() - 1).getId(); result.setHasMoreItems(true); } else { result.setHasMoreItems(false); } } if (changeLogToken != null) { changeLogToken.setValue(newChangeLogToken); } return result; }
See also:
- Audit Log
- Auditing provides a detailed overview of auditing.
- Audit API Hints and Tricks DevCon presentation by Mehdi Belmekki.