Package org.opensaml.soap.wssecurity.messaging.impl

# Class AddTimestampHandler

java.lang.Object
net.shibboleth.shared.component.AbstractInitializableComponent
org.opensaml.messaging.handler.AbstractMessageHandler
org.opensaml.soap.messaging.AbstractHeaderGeneratingMessageHandler
org.opensaml.soap.wssecurity.messaging.impl.AddTimestampHandler

All Implemented Interfaces:
  `Component`, `DestructableComponent`, `InitializableComponent`, `MessageHandler`

public class AddTimestampHandler extends AbstractHeaderGeneratingMessageHandler
Handler implementation that adds a wsse:Timestamp header to the wsse:Security header of the outbound SOAP envelope.

## Field Summary

Fields
Modifier and Type
Field
Description
`private Function<MessageContext,Instant>`
`createdLookup`
Context lookup function for the Created time.
`private Instant`
`createdValue`
The effective Created value to use.
`private Function<MessageContext,Instant>`
`expiresLookup`
Context lookup function for the Expires time.
`private Duration`
`expiresOffsetFromCreated`
Parameter indicating the offset from Created used to calculate the Expires time, if no Expires value is explicitly supplied via the other supported mechanisms.
`private Instant`
`expiresValue`
The effective Expires value to use.
`private org.slf4j.Logger`
`log`
Logger.
`private boolean`
`useCurrentTimeAsDefaultCreated`
Flag indicating whether to use the current time as the Created time, if no value is explicitly supplied by the other supported mechanisms.

## Constructor Summary

Constructors
Constructor
Description
`AddTimestampHandler()`

## Method Summary

Modifier and Type
Method
Description
`protected void`
`doInvoke(MessageContext messageContext)`
Performs the handler logic.
`protected boolean`
`doPreInvoke(MessageContext messageContext)`
Called prior to execution, handlers may override this method to perform pre-processing for a request.
`Function<MessageContext,Instant>`
`getCreatedLookup()`
Get the context lookup function for the Created time.
`protected Instant`
`getCreatedValue(MessageContext messageContext)`
Get the Created value.
`Function<MessageContext,Instant>`
`getExpiresLookup()`
Get the context lookup function for the Expires time.
`Duration`
`getExpiresOffsetFromCreated()`
Get the parameter indicating the offset from Created used to calculate the Expires time, if no Expires value is explicitly supplied via the other supported mechanisms.
`protected Instant`
`getExpiresValue(MessageContext messageContext, Instant created)`
Get the Expires value.
`boolean`
`isUseCurrentTimeAsDefaultCreated()`
Get the flag indicating whether to use the current time as the Created time, if no value is explicitly supplied by the other supported mechanisms.
`void`
`setCreatedLookup(Function<MessageContext,Instant> lookup)`
Set the context lookup function for the Created time.
`void`
`setExpiresLookup(Function<MessageContext,Instant> lookup)`
Set the context lookup function for the Expires time.
`void`
`setExpiresOffsetFromCreated(Duration value)`
Set the parameter indicating the offset from Created used to calculate the Expires time, if no Expires value is explicitly supplied via the other supported mechanisms.
`void`
`setUseCurrentTimeAsDefaultCreated(boolean flag)`
Set the flag indicating whether to use the current time as the Created time, if no value is explicitly supplied by the other supported mechanisms.

### Methods inherited from class org.opensaml.soap.messaging.AbstractHeaderGeneratingMessageHandler

`decorateGeneratedHeader, getEffectiveTargetNode, isEffectiveMustUnderstand, setMustUnderstand, setMustUnderstandStrategy, setTargetNode, setTargetNodeStrategy`

### Methods inherited from class org.opensaml.messaging.handler.AbstractMessageHandler

`doPostInvoke, doPostInvoke, getActivationCondition, getLogPrefix, invoke, isPreInvokeCalled, setActivationCondition`

### Methods inherited from class net.shibboleth.shared.component.AbstractInitializableComponent

`checkComponentActive, checkSetterPreconditions, destroy, doDestroy, doInitialize, ifDestroyedThrowDestroyedComponentException, ifInitializedThrowUnmodifiabledComponentException, ifNotInitializedThrowUninitializedComponentException, 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.shared.component.InitializableComponent

`initialize, isInitialized`

## Field Details

### log

@Nonnull private org.slf4j.Logger log
Logger.

### createdLookup

@Nullable private Function<MessageContext,Instant> createdLookup
Context lookup function for the Created time.

### expiresLookup

@Nullable private Function<MessageContext,Instant> expiresLookup
Context lookup function for the Expires time.

### useCurrentTimeAsDefaultCreated

private boolean useCurrentTimeAsDefaultCreated
Flag indicating whether to use the current time as the Created time, if no value is explicitly supplied by the other supported mechanisms.

### expiresOffsetFromCreated

@Nullable private Duration expiresOffsetFromCreated
Parameter indicating the offset from Created used to calculate the Expires time, if no Expires value is explicitly supplied via the other supported mechanisms.

### createdValue

@Nullable private Instant createdValue
The effective Created value to use.

### expiresValue

@Nullable private Instant expiresValue
The effective Expires value to use.

## Constructor Details

### AddTimestampHandler

public AddTimestampHandler()

## Method Details

### getCreatedLookup

@Nullable public Function<MessageContext,Instant> getCreatedLookup()
Get the context lookup function for the Created time.

Returns:
  the lookup function

### setCreatedLookup

public void setCreatedLookup(@Nullable Function<MessageContext,Instant> lookup)
Set the context lookup function for the Created time.

Parameters:
  `lookup` - the lookup function

### getExpiresLookup

@Nullable public Function<MessageContext,Instant> getExpiresLookup()
Get the context lookup function for the Expires time.

Returns:
  the lookup function

### setExpiresLookup

public void setExpiresLookup(@Nullable Function<MessageContext,Instant> lookup)
Set the context lookup function for the Expires time.

Parameters:
  `lookup` - the lookup function

### isUseCurrentTimeAsDefaultCreated

public boolean isUseCurrentTimeAsDefaultCreated()
Get the flag indicating whether to use the current time as the Created time, if no value is explicitly supplied by the other supported mechanisms.

Returns:
  true if should use current time, false if not

### setUseCurrentTimeAsDefaultCreated

public void setUseCurrentTimeAsDefaultCreated(boolean flag)
Set the flag indicating whether to use the current time as the Created time, if no value is explicitly supplied by the other supported mechanisms.

Parameters:
  `flag` - true if should use currnet time, false if not

### getExpiresOffsetFromCreated

@Nullable public Duration getExpiresOffsetFromCreated()
Get the parameter indicating the offset from Created used to calculate the Expires time, if no Expires value is explicitly supplied via the other supported mechanisms.

Returns:
  the expires offset, or null

### setExpiresOffsetFromCreated

public void setExpiresOffsetFromCreated(@Nullable Duration value)
Set the parameter indicating the offset from Created used to calculate the Expires time, if no Expires value is explicitly supplied via the other supported mechanisms.

Parameters:
  `value` - the expires offset, or null

### doPreInvoke

protected boolean doPreInvoke(@Nonnull MessageContext messageContext) throws MessageHandlerException
Called prior to execution, handlers may override this method to perform pre-processing for a request.

The default impl applies the `Predicate` set via the `AbstractMessageHandler.setActivationCondition(Predicate)`.

If false is returned, execution will not proceed.

Subclasses which override this method should generally invoke the super version of this method first, so that the activation condition will be applied up front, and immediately return false if the super version returns false. This avoids unnecessary execution of the remaining pre-invocation code if the handler ultimately will not execute.

Overrides:
  `doPreInvoke` in class `AbstractHeaderGeneratingMessageHandler`
Parameters:
  `messageContext` - the message context on which to invoke the handler
Returns:
  true iff execution should proceed
Throws:
  `MessageHandlerException` - if there is a problem executing the handler pre-routine

### doInvoke

protected void doInvoke(@Nonnull MessageContext messageContext) throws MessageHandlerException
Performs the handler logic.

Specified by:
  `doInvoke` in class `AbstractMessageHandler`
Parameters:
  `messageContext` - the message context on which to invoke the handler
Throws:
  `MessageHandlerException` - if there is an error invoking the handler on the message context

### getCreatedValue

@Nullable protected Instant getCreatedValue(@Nonnull MessageContext messageContext)
Get the Created value.

Parameters:
  `messageContext` - the current message context
Returns:
  the effective Created DateTime value to use

### getExpiresValue

@Nullable protected Instant getExpiresValue(@Nonnull MessageContext messageContext, @Nullable Instant created)
Get the Expires value.

Parameters:
  `messageContext` - the current message context
  `created` - the created value, if any
Returns:
  the effective Expires DateTime value to use