Class AbstractProfileAction
- All Implemented Interfaces:
Component
,DestructableComponent
,InitializableComponent
,ProfileAction
,Aware
,MessageSource
,MessageSourceAware
,Action
- Direct Known Subclasses:
AbstractAuthenticationAction
,AbstractCASProtocolAction
,AbstractProfileInterceptorAction
,AbstractSubjectCanonicalizationAction
,AddAuthnStatementToAssertionFromInboundAssertionToken
,AddDelegationPolicyToAssertion
,AddDelegationRestrictionToAssertions
,BaseAddAttributeStatementToAssertion
,DecorateDelegatedAssertion
,DestroySessions
,DoLockoutManagerOperation
,DoRevocationCacheOperation
,DoStorageOperation
,EvaluateDelegationPolicy
,ExtractSubjectFromRequest
,FilterAttributes
,FilterByQueriedAttributeDesignators
,FilterByQueriedAttributes
,FinalizeSAMLSubjectCanonicalization
,FinalizeSAMLTokenProcessing
,InitializeAdministrativeProfileContextTree
,InitializeAuthenticationContext
,InitializeOutboundMessageContext
,InitializeOutboundMessageContextForError
,InitializeProfileRequestContext
,InitializeProxyProfileRequestContext
,InitializeRelyingPartyContextFromSAMLPeer
,LogContextTree
,LogSpringContextInfo
,MapRequestedAttributesInAttributeConsumingService
,OutputMetrics
,PopulateAuditContext
,PopulateBindingAndEndpointContexts
,PopulateDelegationContext
,PopulateEncryptionParameters
,PopulateInboundMessageContextWithSAMLSelf
,PopulateLibertyContext
,PopulateLogoutPropagationContext
,PopulateMultiRPContextFromLogoutContext
,PopulateOutboundMessageContext
,PopulateSessionContext
,PopulateSubjectContext
,PopulateUserAgentContext
,PrepareInboundMessageContext
,PreProcessLogoutMessage
,ProcessDelegatedAssertion
,ProcessLogout
,ProcessLogoutRequest
,RecordResponseComplete
,ReloadMetadata
,ReloadServiceConfiguration
,ResolveAttributes
,RestoreProfileRequestContextTree
,SaveLogoutContext
,SaveProfileRequestContextTree
,ScriptedAction
,SelectLogoutPropagationFlow
,SelectProfileConfiguration
,SelectRelyingPartyConfiguration
,SetRPUIInformation
,SOAPLogoutRequest
,UnlockDataSealers
,UnlockPrivateKeys
,UpdateSAMLSelfEntityContext
,UpdateSessionWithSPSession
,WebFlowMessageHandlerAdaptor
,WebFlowProfileActionAdaptor
,WriteAuditLog
,WriteFTICKSLog
This base class takes care of the following:
- retrieving the
ProfileRequestContext
from the current request environment - populating the SWF
RequestContext
into the profile context tree - starting or stopping any timers as instructed by a
MetricContext
in the tree
Action implementations may override doExecute(RequestContext, ProfileRequestContext)
if they require SWF functionality, but most should override AbstractProfileAction.doExecute(ProfileRequestContext)
instead.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final org.slf4j.Logger
Class logger.private MessageSource
MessageSource injected by Spring, typically the parent ApplicationContext itself.private Function<RequestContext,
ProfileRequestContext> Strategy used to lookup theProfileRequestContext
from a given WebFlowRequestContext
. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected Event
doExecute
(RequestContext springRequestContext, ProfileRequestContext profileRequestContext) Spring-aware actions can override this method to fully control the execution of an Action by the Web Flow engine.execute
(RequestContext springRequestContext) protected <T> T
getBean
(ProfileRequestContext profileRequestContext, String name, Class<T> claz) Utilizes the active flow'sApplicationContext
to obtain a bean of a given name and class.protected <T> T
getBean
(RequestContext flowRequestContext, String name, Class<T> claz) Utilizes the active flow'sApplicationContext
to obtain a bean of a given name and class.getMessage
(String code, Object[] args, String defaultMessage, Locale locale) getMessage
(String code, Object[] args, Locale locale) getMessage
(MessageSourceResolvable resolvable, Locale locale) protected <T> T
getParameter
(ProfileRequestContext profileRequestContext, String name) Return a casted parameter of a given name from the flow's flow or conversation scope (in that order).protected <T> T
getParameter
(RequestContext flowRequestContext, String name) Return a casted parameter of a given name from the flow's flow or conversation scope (in that order).Get the strategy used to lookup theProfileRequestContext
from a given WebFlowRequestContext
.protected RequestContext
getRequestContext
(ProfileRequestContext profileRequestContext) Gets the SpringRequestContext
from aSpringRequestContext
stored in the context tree.protected Event
getResult
(ProfileAction action, ProfileRequestContext profileRequestContext) Examines the profile context for an event to return, or signals a successful outcome if noEventContext
is located; the EventContext will be removed upon completion.void
setMessageSource
(MessageSource source) void
Set the strategy used to lookup theProfileRequestContext
from a given WebFlowRequestContext
.Methods inherited from class org.opensaml.profile.action.AbstractConditionalProfileAction
doPreExecute, getActivationCondition, setActivationCondition
Methods inherited from class org.opensaml.profile.action.AbstractProfileAction
doExecute, 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, doInitialize, 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 Details
-
log
@Nonnull private final org.slf4j.Logger logClass logger. -
profileContextLookupStrategy
Strategy used to lookup theProfileRequestContext
from a given WebFlowRequestContext
. -
messageSource
MessageSource injected by Spring, typically the parent ApplicationContext itself.
-
-
Constructor Details
-
AbstractProfileAction
public AbstractProfileAction()Constructor. Initializes the ID of this action to the class name and callssetProfileContextLookupStrategy(Function)
withWebflowRequestContextProfileRequestContextLookup
.
-
-
Method Details
-
getProfileContextLookupStrategy
Get the strategy used to lookup theProfileRequestContext
from a given WebFlowRequestContext
.- Returns:
- lookup strategy
-
setProfileContextLookupStrategy
public void setProfileContextLookupStrategy(@Nonnull Function<RequestContext, ProfileRequestContext> strategy) Set the strategy used to lookup theProfileRequestContext
from a given WebFlowRequestContext
.- Parameters:
strategy
- lookup strategy
-
execute
-
doExecute
@Nonnull protected Event doExecute(@Nonnull RequestContext springRequestContext, @Nonnull ProfileRequestContext profileRequestContext) Spring-aware actions can override this method to fully control the execution of an Action by the Web Flow engine.Alternatively they may override
AbstractProfileAction.doExecute(ProfileRequestContext)
and access Spring information via aSpringRequestContext
attached to the profile request context.The default implementation attaches the Spring Web Flow request context to the profile request context tree to "narrow" the execution signature to the basic OpenSAML
ProfileAction
interface. After execution, anEventContext
is sought, and used to return a result back to the Web Flow engine. If no context exists, a "proceed" event is signaled.- Parameters:
springRequestContext
- the Spring request contextprofileRequestContext
- a profile request context- Returns:
- a Web Flow event produced by the action
-
getResult
@Nonnull protected Event getResult(@Nonnull ProfileAction action, @Nonnull ProfileRequestContext profileRequestContext) Examines the profile context for an event to return, or signals a successful outcome if noEventContext
is located; the EventContext will be removed upon completion.The EventContext must contain a Spring Web Flow
Event
or aString
. Any other type of context data will be ignored.- Parameters:
action
- the action signaling the eventprofileRequestContext
- the profile request context to examine- Returns:
- an event based on the profile request context, or "proceed"
-
getBean
@Nullable protected <T> T getBean(@Nonnull ProfileRequestContext profileRequestContext, @Nonnull @NotEmpty String name, @Nonnull Class<T> claz) Utilizes the active flow'sApplicationContext
to obtain a bean of a given name and class.- Type Parameters:
T
- the bean type- Parameters:
profileRequestContext
- the profile request contextname
- bean nameclaz
- bean type- Returns:
- the bean or null
- Since:
- 4.3.0
-
getBean
@Nullable protected <T> T getBean(@Nonnull RequestContext flowRequestContext, @Nonnull @NotEmpty String name, @Nonnull Class<T> claz) Utilizes the active flow'sApplicationContext
to obtain a bean of a given name and class.- Type Parameters:
T
- the bean type- Parameters:
flowRequestContext
- the active flow's request contextname
- bean nameclaz
- bean type- Returns:
- the bean or null
- Since:
- 4.3.0
-
getParameter
@Nullable protected <T> T getParameter(@Nonnull ProfileRequestContext profileRequestContext, @Nonnull @NotEmpty String name) Return a casted parameter of a given name from the flow's flow or conversation scope (in that order).- Type Parameters:
T
- the parameter type- Parameters:
profileRequestContext
- profile request contextname
- parameter name- Returns:
- the parameter or null
- Since:
- 4.3.0
-
getParameter
@Nullable protected <T> T getParameter(@Nonnull RequestContext flowRequestContext, @Nonnull @NotEmpty String name) Return a casted parameter of a given name from the flow's flow or conversation scope (in that order).- Type Parameters:
T
- the parameter type- Parameters:
flowRequestContext
- the active flow's request contextname
- parameter name- Returns:
- the parameter or null
- Since:
- 4.3.0
-
setMessageSource
- Specified by:
setMessageSource
in interfaceMessageSourceAware
-
getMessage
- Specified by:
getMessage
in interfaceMessageSource
-
getMessage
- Specified by:
getMessage
in interfaceMessageSource
-
getMessage
- Specified by:
getMessage
in interfaceMessageSource
-
getRequestContext
@Nullable protected RequestContext getRequestContext(@Nonnull ProfileRequestContext profileRequestContext) Gets the SpringRequestContext
from aSpringRequestContext
stored in the context tree.- Parameters:
profileRequestContext
- Profile request context.- Returns:
- Spring request context.
-