Interface AuditComponent

  • All Known Implementing Classes:
    AuditComponentImpl

    public interface AuditComponent
    The audit component. Used by the AuditService and AuditMethodInterceptor to insert audit entries.
    Author:
    Derek Hulley
    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      boolean areAuditValuesRequired()
      Determine whether the audit infrastructure expects audit values to be passed in.
      boolean areAuditValuesRequired​(java.lang.String path)
      Determines if audit values are required based on whether there are any audit applications registered to record data for the given path.
      void auditQuery​(AuditService.AuditQueryCallback callback, AuditQueryParameters parameters, int maxResults)
      Find audit entries using the given parameters
      int deleteAuditEntries​(java.lang.String applicationName, java.lang.Long fromTime, java.lang.Long toTime)
      Delete audit entries for the given application and time range
      int deleteAuditEntries​(java.util.List<java.lang.Long> auditEntryIds)
      Delete a discrete list of audit entries based on ID
      int deleteAuditEntriesByIdRange​(java.lang.String applicationName, java.lang.Long fromId, java.lang.Long toId)
      Delete audit entries for the given application and id range
      void disableAudit​(java.lang.String applicationName, java.lang.String path)
      Disable auditing (if it is not already disabled) for all paths that contain the given path.
      void enableAudit​(java.lang.String applicationName, java.lang.String path)
      Enable auditing (if it is not already enabled) for all paths that contain the given path.
      java.util.Map<java.lang.String,​AuditApplication> getAuditApplications()
      Get all registered audit applications, whether active or not.
      boolean isAuditEnabled()
      Determines whether audit is globally enabled or disabled.
      boolean isAuditPathEnabled​(java.lang.String applicationName, java.lang.String path)
      Check if an audit path is enabled.
      java.util.Map<java.lang.String,​java.io.Serializable> recordAuditValues​(java.lang.String rootPath, java.util.Map<java.lang.String,​java.io.Serializable> values)
      Create an audit entry for the given map of values.
      java.util.Map<java.lang.String,​java.io.Serializable> recordAuditValuesWithUserFilter​(java.lang.String rootPath, java.util.Map<java.lang.String,​java.io.Serializable> values, boolean useUserFilter)
      The same as recordAuditValues(String, Map), but with controlled usage of userFilter
      void resetDisabledPaths​(java.lang.String applicationName)
      Remove all disabled paths i.e.
      void setAuditEnabled​(boolean enable)
      Switch auditing on or off
      void setUserAuditFilter​(UserAuditFilter userAuditFilter)  
    • Method Detail

      • isAuditEnabled

        boolean isAuditEnabled()
        Determines whether audit is globally enabled or disabled.
        Returns:
        Returns true if audit is enabled
        Since:
        3.3
      • setAuditEnabled

        void setAuditEnabled​(boolean enable)
        Switch auditing on or off
        Parameters:
        enable - true to enable auditing or false to disable
        Since:
        3.4
      • setUserAuditFilter

        void setUserAuditFilter​(UserAuditFilter userAuditFilter)
        Parameters:
        userAuditFilter - UserAuditFilter
        Since:
        4.2
      • getAuditApplications

        java.util.Map<java.lang.String,​AuditApplication> getAuditApplications()
        Get all registered audit applications, whether active or not.
        Returns:
        Returns a map of registered audit applications keyed by name
        Since:
        3.4
      • areAuditValuesRequired

        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.
        Returns:
        Returns true if the calling code (data producers) should go ahead and generate the data for recording.
        Since:
        3.3
      • areAuditValuesRequired

        boolean areAuditValuesRequired​(java.lang.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.
        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
      • deleteAuditEntries

        int deleteAuditEntries​(java.lang.String applicationName,
                               java.lang.Long fromTime,
                               java.lang.Long toTime)
        Delete audit entries for the given application and time range
        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

        int deleteAuditEntriesByIdRange​(java.lang.String applicationName,
                                        java.lang.Long fromId,
                                        java.lang.Long toId)
        Delete audit entries for the given application and id range
        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

        int deleteAuditEntries​(java.util.List<java.lang.Long> auditEntryIds)
        Delete a discrete list of audit entries based on ID
        Parameters:
        auditEntryIds - the audit entry IDs to delete
        Returns:
        Returns the number of entries deleted
      • isAuditPathEnabled

        boolean isAuditPathEnabled​(java.lang.String applicationName,
                                   java.lang.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.
        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

        void enableAudit​(java.lang.String applicationName,
                         java.lang.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

        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

        void disableAudit​(java.lang.String applicationName,
                          java.lang.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.

        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

        void resetDisabledPaths​(java.lang.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.
        Parameters:
        applicationName - the name of the application
        Since:
        3.2
      • recordAuditValues

        java.util.Map<java.lang.String,​java.io.Serializable> recordAuditValues​(java.lang.String rootPath,
                                                                                     java.util.Map<java.lang.String,​java.io.Serializable> values)
        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.

        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.
        Throws:
        java.lang.IllegalStateException - if the transaction state could not be determined
        Since:
        3.2
      • recordAuditValuesWithUserFilter

        java.util.Map<java.lang.String,​java.io.Serializable> recordAuditValuesWithUserFilter​(java.lang.String rootPath,
                                                                                                   java.util.Map<java.lang.String,​java.io.Serializable> values,
                                                                                                   boolean useUserFilter)
        The same as recordAuditValues(String, Map), but with controlled usage of userFilter
        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.
        Throws:
        java.lang.IllegalStateException - if the transaction state could not be determined
      • auditQuery

        void auditQuery​(AuditService.AuditQueryCallback callback,
                        AuditQueryParameters parameters,
                        int maxResults)
        Find audit entries using the given parameters
        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)
        Throws:
        java.lang.IllegalArgumentException - if maxResults less or equal to zero
        Since:
        3.2