org.alfresco.repo.audit
Class AuditComponentImpl

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

public class AuditComponentImpl
extends java.lang.Object
implements AuditComponent

The default audit component implementation. TODO: Implement before, after and exception filtering. At the moment these filters are ignored. TODO: Respect audit internal - at the moment audit internal is fixed to false.

The V3.2 audit functionality is contained within the same component. When the newer audit implementation has been tested and approved, then older ones will be deprecated as necessary.


Constructor Summary
AuditComponentImpl()
          Default constructor
 
Method Summary
 java.lang.Object audit(org.aopalliance.intercept.MethodInvocation mi)
          Audit entry point for method interceptors.
 void audit(java.lang.String source, java.lang.String description, NodeRef key, java.lang.Object[] args)
          A simple audit entry Currently we ignore filtering here.
 java.lang.Object auditImpl(org.aopalliance.intercept.MethodInvocation mi, boolean execute)
          Internal audit of a method invocation
 void auditQuery(AuditService.AuditQueryCallback callback, AuditQueryParameters parameters, int maxResults)
          Find audit entries using the given parameters
 void beforeMethodCallManualAudit(java.lang.Class clazz, java.lang.Object target, java.lang.String methodName, java.lang.Object[] args)
          Add an audit entry - without invoking the method invocation.
 void deleteAuditEntries(java.lang.String applicationName, java.lang.Long fromTime, java.lang.Long toTime)
          Delete audit entries for the given application and time 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.List getAuditTrail(NodeRef nodeRef)
          Get the audit trail for a node.
 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.
 boolean isSourcePathMapped(java.lang.String sourcePath)
          Determines whether the given source path is mapped to any audit applications.
 java.util.Map recordAuditValues(java.lang.String rootPath, java.util.Map values)
          Create an audit entry for the given map of values.
 java.util.Map recordAuditValuesImpl(java.util.Map mappedValues)
          
 void resetDisabledPaths(java.lang.String applicationName)
          Remove all disabled paths i.e.
 void setAuditConfiguration(AuditConfiguration auditConfiguration)
          Set the audit configuration.
 void setAuditDAO(AuditDAO auditDAO)
          Set the DAO for recording auditable information when no exception occurs.
 void setAuditModel(AuditModel auditModel)
          Set the audit model.
 void setAuditModelRegistry(AuditModelRegistry auditModelRegistry)
          Set the registry holding the audit models
 void setNamespacePrefixResolver(NamespacePrefixResolver namespacePrefixResolver)
          Set the namespacePrefixResolver.
 void setNodeService(NodeService nodeService)
          Set the NodeService for path extracting.
 void setPropertyValueDAO(PropertyValueDAO propertyValueDAO)
          Set the DAO for manipulating property values
 void setPublicServiceIdentifier(PublicServiceIdentifier publicServiceIdentifier)
          Set the helper used to identify public services
 void setTransactionService(TransactionService transactionService)
          Set the DAO for recording failed actions - this is done in another transaction.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AuditComponentImpl

public AuditComponentImpl()
Default constructor

Method Detail

setAuditDAO

public void setAuditDAO(AuditDAO auditDAO)
Set the DAO for recording auditable information when no exception occurs.


setTransactionService

public void setTransactionService(TransactionService transactionService)
Set the DAO for recording failed actions - this is done in another transaction.


setNodeService

public void setNodeService(NodeService nodeService)
Set the NodeService for path extracting.


setAuditConfiguration

public void setAuditConfiguration(AuditConfiguration auditConfiguration)
Set the audit configuration.


setPublicServiceIdentifier

public void setPublicServiceIdentifier(PublicServiceIdentifier publicServiceIdentifier)
Set the helper used to identify public services


setAuditModel

public void setAuditModel(AuditModel auditModel)
Set the audit model.


setNamespacePrefixResolver

public void setNamespacePrefixResolver(NamespacePrefixResolver namespacePrefixResolver)
Set the namespacePrefixResolver.


audit

public java.lang.Object audit(org.aopalliance.intercept.MethodInvocation mi)
                       throws java.lang.Throwable
Description copied from interface: AuditComponent
Audit entry point for method interceptors.

Specified by:
audit in interface AuditComponent
Returns:
- the return onbject from the normal invocation of the audited method.
Throws:
java.lang.Throwable

auditImpl

public java.lang.Object auditImpl(org.aopalliance.intercept.MethodInvocation mi,
                                  boolean execute)
                           throws java.lang.Throwable
Internal audit of a method invocation

Parameters:
mi - - the method to audit
Returns:
- the return object from the audited method
Throws:
java.lang.Throwable - - any Throwable that can be thrown by th audtied method.

beforeMethodCallManualAudit

public void beforeMethodCallManualAudit(java.lang.Class clazz,
                                        java.lang.Object target,
                                        java.lang.String methodName,
                                        java.lang.Object[] args)
Description copied from interface: AuditComponent
Add an audit entry - without invoking the method invocation. Only the method arguments can be audited.

Specified by:
beforeMethodCallManualAudit in interface AuditComponent

audit

public void audit(java.lang.String source,
                  java.lang.String description,
                  NodeRef key,
                  java.lang.Object[] args)
A simple audit entry Currently we ignore filtering here.

Specified by:
audit in interface AuditComponent
Parameters:
source - - a string that represents the application
description - - the audit entry *
key - - a node ref to use as the key for filtering etc
args - - an arbitrary list of parameters

getAuditTrail

public java.util.List getAuditTrail(NodeRef nodeRef)
Description copied from interface: AuditComponent
Get the audit trail for a node.

Specified by:
getAuditTrail in interface AuditComponent
Parameters:
nodeRef - - the node ref for which we want the audit trail
Returns:
- a list of AuditInfo objects that represent the audit trail for the given node reference.

setAuditModelRegistry

public void setAuditModelRegistry(AuditModelRegistry 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

deleteAuditEntries

public void deleteAuditEntries(java.lang.String applicationName,
                               java.lang.Long fromTime,
                               java.lang.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 being logged to
fromTime - the start time of entries to remove (inclusive and optional)
toTime - the end time of entries to remove (exclusive and optional)
Since:
3.2

isAuditEnabled

public boolean isAuditEnabled()
Determines whether audit is globally enabled or disabled.

Specified by:
isAuditEnabled in interface AuditComponent
Returns:
true, if audit is enabled
Since:
3.2

isSourcePathMapped

public boolean isSourcePathMapped(java.lang.String sourcePath)
Determines whether the given source path is mapped to any audit applications. Allows optimizations to be made in calling components.

Specified by:
isSourcePathMapped in interface AuditComponent
Returns:
true if the given source path is mapped to one or more audit applications
Since:
3.2

isAuditPathEnabled

public 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.

Specified by:
isAuditPathEnabled in interface AuditComponent
Parameters:
applicationName - the name of the application being logged to
path - the audit path to check
Returns:
Returns true if the audit path has been disabled
Since:
3.2

enableAudit

public 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 (see #audit(String, String, Map)) 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 enable auditing on
Since:
3.2

disableAudit

public 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 (see #audit(String, String, Map)) 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 enable auditing on
Since:
3.2

resetDisabledPaths

public 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 disabling.

Specified by:
resetDisabledPaths in interface AuditComponent
Parameters:
applicationName - the name of the application
Since:
3.2

recordAuditValues

public java.util.Map recordAuditValues(java.lang.String rootPath,
                                       java.util.Map 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.

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.
Since:
3.2

recordAuditValuesImpl

public java.util.Map recordAuditValuesImpl(java.util.Map 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 (zero or negative to ignore)


Copyright © 2005 - 2010 Alfresco Software, Inc. All Rights Reserved.