Class AuditComponentImpl

java.lang.Object
org.alfresco.repo.audit.AuditComponentImpl
All Implemented Interfaces:
AuditComponent

public class AuditComponentImpl extends Object implements AuditComponent
Component that records audit values as well as providing the query implementation.

To turn on logging of all potentially auditable data, turn on logging for:
org.alfresco.repo.audit.inbound.

TODO: Respect audit internal - at the moment audit internal is fixed to false.

Since:
3.2 (in its current form)
Author:
Derek Hulley
  • Constructor Details

    • AuditComponentImpl

      public AuditComponentImpl()
      Default constructor
  • Method Details

    • setAuditModelRegistry

      public void setAuditModelRegistry(AuditModelRegistryImpl auditModelRegistry)
      Set the registry holding the audit models
      Since:
      3.2
    • setPropertyValueDAO

      public void setPropertyValueDAO(PropertyValueDAO propertyValueDAO)
      Set the DAO for manipulating property values
      Since:
      3.2
    • setAuditDAO

      public void setAuditDAO(AuditDAO auditDAO)
      Set the DAO for accessing audit data
      Since:
      3.2
    • setTransactionService

      public void setTransactionService(TransactionService transactionService)
      Set the service used to start new transactions
    • setAuditFilter

      public void setAuditFilter(AuditFilter auditFilter)
      Set the component used to filter which audit events to record
    • setUserAuditFilter

      public void setUserAuditFilter(UserAuditFilter userAuditFilter)
      Specified by:
      setUserAuditFilter in interface AuditComponent
      Parameters:
      userAuditFilter - UserAuditFilter
    • setAuditRecordReporter

      public void setAuditRecordReporter(AuditRecordReporter auditRecordReporter)
      Specified by:
      setAuditRecordReporter in interface AuditComponent
      Parameters:
      auditRecordReporter - AuditRecordReporter
    • deleteAuditEntries

      public int deleteAuditEntries(String applicationName, Long fromTime, Long toTime)
      Delete audit entries for the given application and time range
      Specified by:
      deleteAuditEntries in interface AuditComponent
      Parameters:
      applicationName - the name of the application
      fromTime - the start time of entries to remove (inclusive and optional)
      toTime - the end time of entries to remove (exclusive and optional)
      Returns:
      Returns the number of entries deleted
      Since:
      3.2
    • deleteAuditEntriesByIdRange

      public int deleteAuditEntriesByIdRange(String applicationName, Long fromId, Long toId)
      Delete audit entries for the given application and id range
      Specified by:
      deleteAuditEntriesByIdRange in interface AuditComponent
      Parameters:
      applicationName - the name of the application
      fromId - the start time of entries to remove (inclusive and optional)
      toId - the end time of entries to remove (exclusive and optional)
      Returns:
      Returns the number of entries deleted
      Since:
      5.2.2
    • deleteAuditEntries

      public int deleteAuditEntries(List<Long> auditEntryIds)
      Delete a discrete list of audit entries based on ID
      Specified by:
      deleteAuditEntries in interface AuditComponent
      Parameters:
      auditEntryIds - the audit entry IDs to delete
      Returns:
      Returns the number of entries deleted
      Since:
      3.2
    • isAuditEnabled

      public boolean isAuditEnabled()
      Determines whether audit is globally enabled or disabled.
      Specified by:
      isAuditEnabled in interface AuditComponent
      Returns:
      Returns true if audit is enabled
      Since:
      3.2
    • isAuditingToDatabaseEnabled

      public boolean isAuditingToDatabaseEnabled()
    • isAuditingToAuditStorageEnabled

      public boolean isAuditingToAuditStorageEnabled()
    • setAuditEnabled

      public void setAuditEnabled(boolean enable)
      Switch auditing on or off
      Specified by:
      setAuditEnabled in interface AuditComponent
      Parameters:
      enable - true to enable auditing or false to disable
      Since:
      3.4
    • getAuditApplications

      public Map<String,AuditApplication> getAuditApplications()
      Get all registered audit applications, whether active or not.
      Specified by:
      getAuditApplications in interface AuditComponent
      Returns:
      Returns a map of registered audit applications keyed by name
      Since:
      3.4
    • areAuditValuesRequired

      public boolean areAuditValuesRequired()
      Determine whether the audit infrastructure expects audit values to be passed in. This is a helper method to allow optimizations in the client code. Reasons why this method might return false are: auditing is disabled; no audit applications have been registered. Sometimes, depending on the log level, this method may always return true.

      Note that if DEBUG is on for the the INBOUND_LOGGER, then true will always be returned.

      Specified by:
      areAuditValuesRequired in interface AuditComponent
      Returns:
      Returns true if the calling code (data producers) should go ahead and generate the data for recording.
      Since:
      3.2
    • areAuditValuesRequired

      public boolean areAuditValuesRequired(String path)
      Determines if audit values are required based on whether there are any audit applications registered to record data for the given path. This helper method gives data producers a shortcut in the event that nothing would be recorded in any event.

      Note that if DEBUG is on for the the INBOUND_LOGGER, then true will always be returned.

      Specified by:
      areAuditValuesRequired in interface AuditComponent
      Parameters:
      path - the audit path
      Returns:
      Returns true if there is at least one audit application registered to handle the given path.
      Since:
      3.4
    • isAuditPathEnabled

      public boolean isAuditPathEnabled(String applicationName, String path)
      Check if an audit path is enabled. The path will be disabled if it or any higher path has been explicitly disabled. Any disabled path will not be processed when data is audited.
      Specified by:
      isAuditPathEnabled in interface AuditComponent
      Parameters:
      applicationName - the name of the application being logged to
      path - the audit path to check or null to assume the application's root path
      Returns:
      Returns true if the audit path has been disabled
      Since:
      3.2
    • enableAudit

      public void enableAudit(String applicationName, String path)
      Enable auditing (if it is not already enabled) for all paths that contain the given path. The path is the path as originally logged and not the path that the generated data may contain - although this would be similarly enabled.

      If the enabled

      Specified by:
      enableAudit in interface AuditComponent
      Parameters:
      applicationName - the name of the application being logged to
      path - the audit path to check or null to assume the application's root path
      Since:
      3.2
    • disableAudit

      public void disableAudit(String applicationName, String path)
      Disable auditing (if it is not already disabled) for all paths that contain the given path. The path is the path as originally logged and not the path that the generated data may contain - although this would be similarly disabled.

      If the path is /x/y then any data paths that start with /x/y will be stripped out before data generators and data recorders are applied. If the path represents the root path of the application, then auditing for that application is effectively disabled.

      Specified by:
      disableAudit in interface AuditComponent
      Parameters:
      applicationName - the name of the application being logged to
      path - the audit path to check or null to assume the application's root path
      Since:
      3.2
    • resetDisabledPaths

      public void resetDisabledPaths(String applicationName)
      Remove all disabled paths i.e. enable all per-path based auditing. Auditing may still be disabled globally. This is primarily for test purposes; applications should know which paths need enabling or disabled.
      Specified by:
      resetDisabledPaths in interface AuditComponent
      Parameters:
      applicationName - the name of the application
      Since:
      3.2
    • recordAuditValues

      public Map<String,Serializable> recordAuditValues(String rootPath, Map<String,Serializable> values)
      Description copied from interface: AuditComponent
      Create an audit entry for the given map of values. The map key is a path - starting with '/' (AuditApplication.AUDIT_PATH_SEPARATOR) - relative to the root path provided.

      The root path and value keys are combined to produce a map of data keyed by full path. This fully-pathed map is then passed through the audit path mapper. The result may yield data destined for several different audit applications. depending on the data extraction and generation defined in the applications, values (or derived values) may be recorded against several audit entries (one per application represented).

      The return values reflect what was actually persisted and is controlled by the data extractors defined in the audit configuration.

      A new read-write transaction is started if there are values to write that there is not a viable transaction present.

      Specified by:
      recordAuditValues in interface AuditComponent
      Parameters:
      rootPath - a base path of AuditPath key entries concatenated with the path separator '/' (AuditApplication.AUDIT_PATH_SEPARATOR)
      values - the values to audit mapped by AuditPath key relative to root path (may be null)
      Returns:
      Returns the values that were actually persisted, keyed by their full path.
    • recordAuditValuesWithUserFilter

      public Map<String,Serializable> recordAuditValuesWithUserFilter(String rootPath, Map<String,Serializable> values, boolean useUserFilter)
      Description copied from interface: AuditComponent
      The same as AuditComponent.recordAuditValues(String, Map), but with controlled usage of userFilter
      Specified by:
      recordAuditValuesWithUserFilter in interface AuditComponent
      Parameters:
      rootPath - a base path of AuditPath key entries concatenated with the path separator '/' (AuditApplication.AUDIT_PATH_SEPARATOR)
      values - the values to audit mapped by AuditPath key relative to root path (may be null)
      useUserFilter - if false the user filter is disabled.
      Returns:
      Returns the values that were actually persisted, keyed by their full path.
    • recordAuditValuesImpl

      public Map<String,Serializable> recordAuditValuesImpl(Map<String,Serializable> mappedValues)
      Since:
      3.2
    • auditQuery

      public void auditQuery(AuditService.AuditQueryCallback callback, AuditQueryParameters parameters, int maxResults)
      Find audit entries using the given parameters
      Specified by:
      auditQuery in interface AuditComponent
      Parameters:
      callback - the data callback per entry
      parameters - the parameters for the query (may not be null)
      maxResults - the maximum number of results to retrieve (must be greater than 0)
    • getAuditMinMaxByApp

      public HashMap<String,Long> getAuditMinMaxByApp(String applicationName, List<String> extremes)
      Issue an audit query to retrieve min / max audit record id for a given application.
      Specified by:
      getAuditMinMaxByApp in interface AuditComponent
      Parameters:
      applicationName - the name of the application
      extremes - a list containing min/max or both
      Returns:
      a map containing min/max and the associated value
    • getAuditEntriesCountByApp

      public int getAuditEntriesCountByApp(String applicationName)
      Description copied from interface: AuditComponent
      Issue an audit query to retrieve count of records for a given application.
      Specified by:
      getAuditEntriesCountByApp in interface AuditComponent
      Parameters:
      applicationName - the name of the application
      Returns:
      a map containing min/max and the associated value
    • getAuditEntriesCountByAppAndProperties

      public int getAuditEntriesCountByAppAndProperties(String applicationName, AuditQueryParameters parameters)
      Description copied from interface: AuditComponent
      Issue an audit query to retrieve count of records for a given application and properties
      Specified by:
      getAuditEntriesCountByAppAndProperties in interface AuditComponent
      Parameters:
      applicationName - the name of the application
      parameters - audit parameters provided by the where clause on the ReST API
      Returns:
      a map containing min/max and the associated value