Class CsvAuditEventHandler
- java.lang.Object
-
- org.forgerock.audit.events.handlers.AuditEventHandlerBase
-
- org.forgerock.audit.handlers.csv.CsvAuditEventHandler
-
- All Implemented Interfaces:
AuditEventHandler
public class CsvAuditEventHandler extends AuditEventHandlerBase
Handles AuditEvents by writing them to a CSV file.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description class
CsvAuditEventHandler.ParseJsonValue
CellProcessor for parsing JsonValue objects from CSV file.
-
Field Summary
Fields Modifier and Type Field Description static String
ROTATE_FILE_ACTION_NAME
Name of action to force file rotation.-
Fields inherited from class org.forgerock.audit.events.handlers.AuditEventHandlerBase
eventTopicsMetaData
-
-
Constructor Summary
Constructors Constructor Description CsvAuditEventHandler(CsvAuditEventHandlerConfiguration configuration, EventTopicsMetaData eventTopicsMetaData, KeyStoreHandlerProvider keyStoreHandlerProvider)
Create a new CsvAuditEventHandler instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Promise<ActionResponse,ResourceException>
handleAction(Context context, String topic, ActionRequest request)
Performs an action.Promise<ResourceResponse,ResourceException>
publishEvent(Context context, String topic, JsonValue event)
Create a csv audit log entry.Promise<QueryResponse,ResourceException>
queryEvents(Context context, String topic, QueryRequest query, QueryResourceHandler handler)
Perform a query on the csv audit log.Promise<ResourceResponse,ResourceException>
readEvent(Context context, String topic, String resourceId)
Read from the csv audit log.void
shutdown()
Instruct this object to flush any buffers and close any open file handles or network connections.void
startup()
Instruct this object that it is safe to initialize file handles and network connections.-
Methods inherited from class org.forgerock.audit.events.handlers.AuditEventHandlerBase
getHandledTopics, getName, isEnabled
-
-
-
-
Field Detail
-
ROTATE_FILE_ACTION_NAME
public static final String ROTATE_FILE_ACTION_NAME
Name of action to force file rotation.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
CsvAuditEventHandler
@Inject public CsvAuditEventHandler(CsvAuditEventHandlerConfiguration configuration, EventTopicsMetaData eventTopicsMetaData, KeyStoreHandlerProvider keyStoreHandlerProvider)
Create a new CsvAuditEventHandler instance.- Parameters:
configuration
- Configuration parameters that can be adjusted by system administrators.eventTopicsMetaData
- Meta-data for all audit event topics.keyStoreHandlerProvider
- The secure storage to use for keys.
-
-
Method Detail
-
startup
public void startup() throws ResourceException
Instruct this object that it is safe to initialize file handles and network connections.Reconfiguration of the
AuditService
and its handlers is achieved by replacing rather than modifying the existing objects. Therefore, it's essential that the replacements do not perform any I/O that would interfere with the operation of the objects they are replacing until the old objects are shutdown. For example, when shutting down an old instance of a file-based AuditEventHandler, the old instance may need to flush buffers, apply file rotation or retention policies, or even add line or block signatures as part of tamper evident logging. Any of these operations could be broken if two handler instances are operating on the same set of files simultaneously.- Throws:
ResourceException
- if starting the AuditEventHandler fails
-
shutdown
public void shutdown() throws ResourceException
Instruct this object to flush any buffers and close any open file handles or network connections.- Throws:
ResourceException
- if closing the AuditEventHandler fails
-
publishEvent
public Promise<ResourceResponse,ResourceException> publishEvent(Context context, String topic, JsonValue event)
Create a csv audit log entry. Publishes an event to the provided topic.Note for implementors, it is imperative that the supplied
event
is not modified in any way as this may cause undesirable behaviour where multiple handlers are configured. If theevent
must be modified, then make a copy of it and work with that.- Parameters:
context
- The context chain that initiated the event.topic
- The topic where to publish the event.event
- The event to publish - which should be considered immutable.- Returns:
- a promise with either a response or an exception
-
queryEvents
public Promise<QueryResponse,ResourceException> queryEvents(Context context, String topic, QueryRequest query, QueryResourceHandler handler)
Perform a query on the csv audit log. Query some events from the provided topic.- Parameters:
context
- The context chain that initiated the event.topic
- The topic on which query is performed.query
- The request with the query.handler
- The handler to process responses for the query.- Returns:
- a promise with either a response or an exception
-
readEvent
public Promise<ResourceResponse,ResourceException> readEvent(Context context, String topic, String resourceId)
Read from the csv audit log. Reads an event with the provided resource id from the provided topic.- Parameters:
context
- The context chain that initiated the event.topic
- The topic where event is read.resourceId
- The identifier of the event.- Returns:
- a promise with either a response or an exception
-
handleAction
public Promise<ActionResponse,ResourceException> handleAction(Context context, String topic, ActionRequest request)
Description copied from interface:AuditEventHandler
Performs an action.- Specified by:
handleAction
in interfaceAuditEventHandler
- Overrides:
handleAction
in classAuditEventHandlerBase
- Parameters:
context
- The context chain that initiated the event.topic
- The topic on which action is performed.request
- The request with the action.- Returns:
- a promise with either a response or an exception
-
-