Class PopulateAuditContext
- java.lang.Object
-
- net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
-
- org.opensaml.profile.action.AbstractProfileAction
-
- org.opensaml.profile.action.AbstractConditionalProfileAction
-
- net.shibboleth.idp.profile.AbstractProfileAction
-
- net.shibboleth.idp.profile.audit.impl.PopulateAuditContext
-
- All Implemented Interfaces:
Component,DestructableComponent,InitializableComponent,ProfileAction,Aware,MessageSource,MessageSourceAware,Action
public class PopulateAuditContext extends AbstractProfileAction
Action that populates fields in anAuditContextusing injected functions.Each function is registered against a field specifier, and the result of the function is added to that field in the context's map. This reduces the code footprint required to implement, and extend, the fields logged, instead of requiring a dedicated action for a particular field or set of fields.
The eventual map of formatting strings is also provided in order to recognize which extractors actually need to be run.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classPopulateAuditContext.FormattingMapParserParser for the formatting strings that exposes a final set of field labels that are present in any of the input formatters.
-
Field Summary
Fields Modifier and Type Field Description private Function<ProfileRequestContext,AuditContext>auditContextCreationStrategyStrategy used to locate or create theAuditContextto populate.private AuditContextauditCtxAuditContextto populate.private booleanclearAuditContextFlag signalling to clear context on entry.private DateTimeFormatterdateTimeFormatterFormatter for date/time fields.private Map<String,Function<ProfileRequestContext,Object>>fieldExtractorsMap of fields to extract and the corresponding extraction functions.private Map<String,String>fieldReplacementsMap allowing substitutions of values during field extraction.private Set<String>fieldsToExtractFields being audited, to optimize extraction..private org.slf4j.LoggerlogClass logger.private booleanuseDefaultTimeZoneConvert date/time fields to default time zone.
-
Constructor Summary
Constructors Constructor Description PopulateAuditContext()Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidaddField(String key, Object value)Add a non-null field to the audit record.protected voiddoExecute(ProfileRequestContext profileRequestContext)protected voiddoInitialize()protected booleandoPreExecute(ProfileRequestContext profileRequestContext)voidsetAuditContextCreationStrategy(Function<ProfileRequestContext,AuditContext> strategy)Set the strategy used to locate theAuditContextassociated with a givenProfileRequestContext.voidsetClearAuditContext(boolean flag)Sets whether to clear any existing fields from the audit context.voidsetDateTimeFormat(String format)Set the formatting string to apply when extracting date/time fields.voidsetFieldExtractors(Map<String,Function<ProfileRequestContext,Object>> map)Set the map of fields and extraction functions to run.voidsetFieldReplacements(Map<String,String> map)Set the map of field values to replace, and the replacement values.voidsetFormattingMapParser(PopulateAuditContext.FormattingMapParser parser)Set the parsed map of logging category to formatting strings for log entries.voidsetUseDefaultTimeZone(boolean flag)Convert date/time fields to default time zone.-
Methods inherited from class net.shibboleth.idp.profile.AbstractProfileAction
doExecute, execute, getBean, getBean, getMessage, getMessage, getMessage, getParameter, getParameter, getProfileContextLookupStrategy, getRequestContext, getResult, setMessageSource, setProfileContextLookupStrategy
-
Methods inherited from class org.opensaml.profile.action.AbstractConditionalProfileAction
getActivationCondition, setActivationCondition
-
Methods inherited from class org.opensaml.profile.action.AbstractProfileAction
doPostExecute, doPostExecute, execute, getHttpServletRequest, getHttpServletRequestSupplier, getHttpServletResponse, getHttpServletResponseSupplier, getLogPrefix, setHttpServletRequest, setHttpServletRequestSupplier, setHttpServletResponse, setHttpServletResponseSupplier
-
Methods inherited from class net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
destroy, doDestroy, initialize, isDestroyed, isInitialized
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface net.shibboleth.utilities.java.support.component.InitializableComponent
initialize, isInitialized
-
-
-
-
Field Detail
-
log
@Nonnull private final org.slf4j.Logger log
Class logger.
-
auditContextCreationStrategy
@Nonnull private Function<ProfileRequestContext,AuditContext> auditContextCreationStrategy
Strategy used to locate or create theAuditContextto populate.
-
fieldExtractors
@Nonnull @NonnullElements private Map<String,Function<ProfileRequestContext,Object>> fieldExtractors
Map of fields to extract and the corresponding extraction functions.
-
fieldsToExtract
@Nonnull @NonnullElements private Set<String> fieldsToExtract
Fields being audited, to optimize extraction..
-
fieldReplacements
@Nonnull private Map<String,String> fieldReplacements
Map allowing substitutions of values during field extraction.
-
dateTimeFormatter
@Nonnull private DateTimeFormatter dateTimeFormatter
Formatter for date/time fields.
-
useDefaultTimeZone
private boolean useDefaultTimeZone
Convert date/time fields to default time zone.
-
clearAuditContext
private boolean clearAuditContext
Flag signalling to clear context on entry.
-
auditCtx
@Nullable private AuditContext auditCtx
AuditContextto populate.
-
-
Method Detail
-
setAuditContextCreationStrategy
public void setAuditContextCreationStrategy(@Nonnull Function<ProfileRequestContext,AuditContext> strategy)Set the strategy used to locate theAuditContextassociated with a givenProfileRequestContext.- Parameters:
strategy- lookup strategy
-
setFieldExtractors
public void setFieldExtractors(@Nonnull @NonnullElements Map<String,Function<ProfileRequestContext,Object>> map)
Set the map of fields and extraction functions to run.- Parameters:
map- map from field name to extraction function
-
setFormattingMapParser
public void setFormattingMapParser(@Nonnull PopulateAuditContext.FormattingMapParser parser)Set the parsed map of logging category to formatting strings for log entries.A formatting string consists of tokens prefixed by '%' separated by any non-alphanumeric or whitespace. Tokens can contain any letter or number or a hyphen. Anything other than a token, including whitespace, is a literal.
The input class exposes the parsed field data for efficiency.
- Parameters:
parser- the parsed map
-
setFieldReplacements
public void setFieldReplacements(@Nullable Map<String,String> map)Set the map of field values to replace, and the replacement values.- Parameters:
map- map of replacements
-
setDateTimeFormat
public void setDateTimeFormat(@Nullable @NotEmpty String format)
Set the formatting string to apply when extracting date/time fields.- Parameters:
format- formatting string
-
setUseDefaultTimeZone
public void setUseDefaultTimeZone(boolean flag)
Convert date/time fields to default time zone.- Parameters:
flag- flag to set
-
setClearAuditContext
public void setClearAuditContext(boolean flag)
Sets whether to clear any existing fields from the audit context.Defaults to false.
- Parameters:
flag- flag to set- Since:
- 4.3.0
-
doInitialize
protected void doInitialize() throws ComponentInitializationException- Overrides:
doInitializein classAbstractInitializableComponent- Throws:
ComponentInitializationException
-
doPreExecute
protected boolean doPreExecute(@Nonnull ProfileRequestContext profileRequestContext)- Overrides:
doPreExecutein classAbstractConditionalProfileAction
-
doExecute
protected void doExecute(@Nonnull ProfileRequestContext profileRequestContext)- Overrides:
doExecutein classAbstractProfileAction
-
-