Class AbstractMessageEncoder
- All Implemented Interfaces:
Component,DestructableComponent,InitializableComponent,UnmodifiableComponent,MessageEncoder
- Direct Known Subclasses:
AbstractHttpClientRequestMessageEncoder,AbstractHttpServletResponseMessageEncoder
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringLogging category for protocol messages.private final org.slf4j.LoggerClass logger.private MessageContextThe message context.private org.slf4j.LoggerUsed to log protocol messages.private StringThe configured logging sub-category for protocol messages. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract voiddoEncode()Performs the encoding logic.protected voidvoidencode()Encode theMessageContextsupplied viaMessageEncoder.setMessageContext(MessageContext)to the sink.protected MessageContextGet the message context.protected ObjectGet the XMLObject which will be logged as the protocol message.protected org.slf4j.LoggerGet the protocol message logger.protected StringGet the configured logging sub-category for protocol messages.protected voidLog the encoded message to the protocol message logger.voidThis method should prepare the message context by creating and populating any binding-specific data structures required in the MessageContext, prior to actually encoding.protected StringserializeMessageForLogging(Object message) Serialize the message for logging purposes.voidsetMessageContext(MessageContext context) Set theMessageContextwhich is to be encoded.protected voidsetProtocolMessageLoggerSubCategory(String category) Set the configured logging sub-category for protocol messages.Methods inherited from class net.shibboleth.shared.component.AbstractInitializableComponent
checkComponentActive, checkSetterPreconditions, destroy, doDestroy, ifDestroyedThrowDestroyedComponentException, ifInitializedThrowUnmodifiabledComponentException, ifNotInitializedThrowUninitializedComponentException, initialize, isDestroyed, isInitializedMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface net.shibboleth.shared.component.DestructableComponent
destroy, isDestroyedMethods inherited from interface net.shibboleth.shared.component.InitializableComponent
initialize, isInitialized
-
Field Details
-
BASE_PROTOCOL_MESSAGE_LOGGER_CATEGORY
Logging category for protocol messages.- See Also:
-
protocolMessageLog
@Nonnull private org.slf4j.Logger protocolMessageLogUsed to log protocol messages. -
log
@Nonnull private final org.slf4j.Logger logClass logger. -
messageContext
The message context. -
protocolMessageLoggerSubCategory
The configured logging sub-category for protocol messages.
-
-
Constructor Details
-
AbstractMessageEncoder
public AbstractMessageEncoder()
-
-
Method Details
-
setMessageContext
Set theMessageContextwhich is to be encoded.- Specified by:
setMessageContextin interfaceMessageEncoder- Parameters:
context- the message context
-
prepareContext
This method should prepare the message context by creating and populating any binding-specific data structures required in the MessageContext, prior to actually encoding.This method should be called after the MessageContext has been set, and before any binding-specific Handler or HandlerChains are invoked.
Example: For a SOAP encoder, this method would create and store the basic SOAP Envelope structure in the message context, so that Handlers that are invoked have a place to which to add headers.
This method may be a no-op if not required by the binding, or if the message type of the context implies that the binding-specific structures have already been created elsewhere (e.g. message-oriented code where the calling code already knows its SOAP, and is operating on the raw SOAP envelope anyway).
. Default implementation is a no-op.- Specified by:
prepareContextin interfaceMessageEncoder- Throws:
MessageEncodingException- if there is a problem preparing the message context for encoding
-
getMessageContext
Get the message context.- Returns:
- the message context.
-
doInitialize
- Overrides:
doInitializein classAbstractInitializableComponent- Throws:
ComponentInitializationException
-
encode
Encode theMessageContextsupplied viaMessageEncoder.setMessageContext(MessageContext)to the sink.- Specified by:
encodein interfaceMessageEncoder- Throws:
MessageEncodingException- if there is a problem encoding the message context
-
getProtocolMessageLogger
@Nonnull protected org.slf4j.Logger getProtocolMessageLogger()Get the protocol message logger.- Returns:
- The protocol message logger
-
getProtocolMessageLoggerSubCategory
Get the configured logging sub-category for protocol messages.- Returns:
- the logging sub-category
-
setProtocolMessageLoggerSubCategory
Set the configured logging sub-category for protocol messages.- Parameters:
category- the logging sub-category
-
logEncodedMessage
protected void logEncodedMessage()Log the encoded message to the protocol message logger. -
getMessageToLog
Get the XMLObject which will be logged as the protocol message.- Returns:
- the XMLObject message considered to be the protocol message for logging purposes
-
serializeMessageForLogging
Serialize the message for logging purposes.Default implementation is to return the message object's
Object.toString(), but subclasses should override if a better message-specific serialization mechanism exists.- Parameters:
message- the message to serialize- Returns:
- the serialized message, or null if message can not be serialized
-
doEncode
Performs the encoding logic. By the time this is called, this encoder has already been initialized and checked to ensure that it has not been destroyed.- Throws:
MessageEncodingException- thrown if there is a problem encoding the message
-