Package com.helger.phase4.sender
Class AbstractAS4MessageBuilder<IMPLTYPE extends AbstractAS4MessageBuilder<IMPLTYPE>>
java.lang.Object
com.helger.phase4.sender.AbstractAS4MessageBuilder<IMPLTYPE>
- Type Parameters:
IMPLTYPE- The implementation type
- All Implemented Interfaces:
com.helger.commons.traits.IGenericImplTrait<IMPLTYPE>
- Direct Known Subclasses:
AbstractAS4PullRequestBuilder,AbstractAS4UserMessageBuilder
@NotThreadSafe
public abstract class AbstractAS4MessageBuilder<IMPLTYPE extends AbstractAS4MessageBuilder<IMPLTYPE>>
extends Object
implements com.helger.commons.traits.IGenericImplTrait<IMPLTYPE>
Abstract builder base class with the requirements for all message types.
- Since:
- 0.10.0
- Author:
- Philip Helger
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Localeprotected IAS4ClientBuildMessageCallbackprotected IAS4CryptoFactoryprotected IHttpPosterprotected com.helger.httpclient.HttpClientFactoryprotected HttpRetrySettingsprotected IAS4IncomingDumperprotected Localeprotected IAS4OutgoingDumperprotected IAS4RawResponseConsumerprotected IAS4RetryCallbackprotected OffsetDateTimeprotected ESoapVersionprotected Stringprotected String -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedCreate a new builder, with the following fields already set:
httpClientFactory(HttpClientFactory)
cryptoFactory(IAS4CryptoFactory)
soapVersion(ESoapVersion)pmodeResolver(IPModeResolver)
incomingAttachmentFactory(IAS4IncomingAttachmentFactory)
incomingProfileSelector(IAS4IncomingProfileSelector) -
Method Summary
Modifier and TypeMethodDescriptionfinal IMPLTYPEbuildMessageCallback(IAS4ClientBuildMessageCallback aBuildMessageCallback) Set a internal message callback.final IAS4CryptoFactoryfinal IMPLTYPEcryptoFactory(IAS4CryptoFactory aCryptoFactory) Set the crypto factory to be used.final IHttpPosterfinal IMPLTYPEcustomHttpPoster(IHttpPoster aCustomHttpPoster) Set the HTTP poster to be used.protected voidInternal method that is invoked after the required fields are checked but before sending takes place.protected com.helger.commons.state.ESuccessInternal method that is invoked before the required field check is performed.final com.helger.httpclient.HttpClientFactoryfinal IMPLTYPEhttpClientFactory(com.helger.httpclient.HttpClientFactory aHttpClientFactory) Set the HTTP client factory to be used.final IMPLTYPEhttpClientFactory(com.helger.httpclient.HttpClientSettings aHttpClientSettings) Set the HTTP client factory to be used.final IMPLTYPESet the HTTP retry settings to be used.final IMPLTYPESet the incoming attachment factory to be used.final IMPLTYPEincomingDumper(IAS4IncomingDumper aIncomingDumper) Set a specific incoming dumper for this builder.final IMPLTYPEincomingProfileSelector(IAS4IncomingProfileSelector aIncomingProfileSelector) Set the selector for the AS4 profile of incoming messages.booleanfinal IMPLTYPESet the locale to use.protected abstract voidSynchronously send the AS4 message.final IMPLTYPESet the optional AS4 message ID.final IMPLTYPEoutgoingDumper(IAS4OutgoingDumper aOutgoingDumper) Set a specific outgoing dumper for this builder.final IPModeResolverfinal IMPLTYPEpmodeResolver(IPModeResolver aPModeResolver) Set the PMode resolver to be used.final IMPLTYPErawResponseConsumer(IAS4RawResponseConsumer aResponseConsumer) Set an optional handler for the synchronous result message received from the other side.final IMPLTYPErefToMessageID(String sRefToMessageID) Set the optional AS4 reference to a previous message ID.final IMPLTYPEretryCallback(IAS4RetryCallback aRetryCallback) Set an optional handler that is notified if an http sending will be retried.final IAS4SenderInterruptfinal IMPLTYPEsenderInterrupt(IAS4SenderInterrupt aSenderInterrupt) Set the sender interrupt to be used.final IMPLTYPEsendingDateTime(OffsetDateTime aSendingDateTime) Set the optional sending date time.final com.helger.commons.state.ESuccessSynchronously send the AS4 message.final ESoapVersionfinal IMPLTYPEsoapVersion(ESoapVersion eSoapVersion) Set the SOAP version to be used.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.helger.commons.traits.IGenericImplTrait
thisAsT
-
Field Details
-
DEFAULT_LOCALE
-
m_aCustomHttpPoster
-
m_aHttpClientFactory
protected com.helger.httpclient.HttpClientFactory m_aHttpClientFactory -
m_aCryptoFactory
-
m_sMessageID
-
m_sRefToMessageID
-
m_aSendingDateTime
-
m_eSoapVersion
-
m_aHttpRetrySettings
-
m_aLocale
-
m_aBuildMessageCallback
-
m_aOutgoingDumper
-
m_aIncomingDumper
-
m_aRetryCallback
-
m_aResponseConsumer
-
-
Constructor Details
-
AbstractAS4MessageBuilder
protected AbstractAS4MessageBuilder()Create a new builder, with the following fields already set:
httpClientFactory(HttpClientFactory)
cryptoFactory(IAS4CryptoFactory)
soapVersion(ESoapVersion)pmodeResolver(IPModeResolver)
incomingAttachmentFactory(IAS4IncomingAttachmentFactory)
incomingProfileSelector(IAS4IncomingProfileSelector)
-
-
Method Details
-
customHttpPoster
- Returns:
- The currently set
IHttpPoster. May benull. - Since:
- 1.3.10
-
customHttpPoster
Set the HTTP poster to be used. This is a very low level API and should only be used if you know what you are doing! It allows you to overwrite how the message is sent over the wire.
Note: if this method is used with a non-nullparameter,httpClientFactory()becomes useless- Parameters:
aCustomHttpPoster- The new HTTP poster to be used. May benullwhich means "use the default" poster.- Returns:
- this for chaining
- Since:
- 1.3.10
-
httpClientFactory
- Returns:
- The currently set
HttpClientFactory. May benull.
-
httpClientFactory
@Nonnull public final IMPLTYPE httpClientFactory(@Nullable com.helger.httpclient.HttpClientSettings aHttpClientSettings) Set the HTTP client factory to be used. If the passed settings are non-null, a newHttpClientFactoryis created with them, else anull-HttpClientFactoryis set.- Parameters:
aHttpClientSettings- The new HTTP client settings to be used. May benull.- Returns:
- this for chaining
-
httpClientFactory
@Nonnull public final IMPLTYPE httpClientFactory(@Nullable com.helger.httpclient.HttpClientFactory aHttpClientFactory) Set the HTTP client factory to be used. By default a default instance ofHttpClientFactoryis used (set in the constructor) and there is no need to invoke this method.- Parameters:
aHttpClientFactory- The new HTTP client factory to be used. May benull.- Returns:
- this for chaining
-
cryptoFactory
- Returns:
- The currently set
IAS4CryptoFactory. May benull.
-
cryptoFactory
Set the crypto factory to be used. The default crypto factory is set in the constructor toAS4CryptoFactoryProperties.getDefaultInstance().- Parameters:
aCryptoFactory- The crypto factory to be used. May benull.- Returns:
- this for chaining
-
messageID
Set the optional AS4 message ID. If this field is not set, a random message ID is created.- Parameters:
sMessageID- The optional AS4 message ID to be used. May benull.- Returns:
- this for chaining
-
refToMessageID
Set the optional AS4 reference to a previous message ID. If this field is not set, it will not be emitted in the message.- Parameters:
sRefToMessageID- The optional AS4 reference to a previous message ID to be used. May benull.- Returns:
- this for chaining
- Since:
- 1.3.2
-
sendingDateTime
Set the optional sending date time. If no time is specified, the current date time will be used.- Parameters:
aSendingDateTime- The sending date time to set. May benull.- Returns:
- this for chaining
- Since:
- 0.12.0
-
soapVersion
- Returns:
- The SOAP version to be used. May be
null.
-
soapVersion
Set the SOAP version to be used. The default is SOAP 1.2 and is set in the constructor. Usually you don't need to call that method.- Parameters:
eSoapVersion- The SOAP version to be used. May benull.- Returns:
- this for chaining
-
httpRetrySettings
Set the HTTP retry settings to be used. If none are set, the default values are used.- Parameters:
a- The HTTP retry settings to be used. May benull.- Returns:
- this for chaining
-
locale
Set the locale to use. The main purpose is to use the correct language for processing error message in response messages. This field must be set. The default value isDEFAULT_LOCALE.- Parameters:
a- The locale to use. May benull.- Returns:
- this for chaining
-
pmodeResolver
- Returns:
- The currently set
IPModeResolver. May benull.
-
pmodeResolver
Set the PMode resolver to be used. This is only used to determine the PMode of an eventually received synchronous response message.- Parameters:
aPModeResolver- The PMode resolver to be used. May benull.- Returns:
- this for chaining
-
incomingAttachmentFactory
- Returns:
- The currently set
IAS4IncomingAttachmentFactory. Nevernull.
-
incomingAttachmentFactory
@Nonnull public final IMPLTYPE incomingAttachmentFactory(@Nonnull IAS4IncomingAttachmentFactory aIAF) Set the incoming attachment factory to be used. This is only used for an eventually received synchronous response message.- Parameters:
aIAF- The incoming attachment factory to be used. May not benull.- Returns:
- this for chaining
-
incomingProfileSelector
- Returns:
- The profile selector for incoming AS4 messages. Never
null. - Since:
- 0.13.0
-
incomingProfileSelector
@Nonnull public final IMPLTYPE incomingProfileSelector(@Nonnull IAS4IncomingProfileSelector aIncomingProfileSelector) Set the selector for the AS4 profile of incoming messages. This is only used for an eventually received synchronous response message.- Parameters:
aIncomingProfileSelector- The profile selector to use. May not benull.- Returns:
- this for chaining
- Since:
- 0.13.0
-
senderInterrupt
- Returns:
- The currently set
IAS4SenderInterrupt. May benull. - Since:
- 0.13.0
-
senderInterrupt
Set the sender interrupt to be used. This is only needed in very specific cases, isnullby default and should be handled with care.- Parameters:
aSenderInterrupt- The sender interrupt to be used. May benull.- Returns:
- this for chaining
- Since:
- 0.13.0
-
buildMessageCallback
@Nonnull public final IMPLTYPE buildMessageCallback(@Nullable IAS4ClientBuildMessageCallback aBuildMessageCallback) Set a internal message callback. Usually this method is NOT needed. Use only when you know what you are doing.- Parameters:
aBuildMessageCallback- An internal to be used for the created message. May benull.- Returns:
- this for chaining
-
outgoingDumper
Set a specific outgoing dumper for this builder.- Parameters:
aOutgoingDumper- An outgoing dumper to be used. Maybenull. Ifnullthe global outgoing dumper is used.- Returns:
- this for chaining
-
incomingDumper
Set a specific incoming dumper for this builder.- Parameters:
aIncomingDumper- An incoming dumper to be used. Maybenull. Ifnullthe global incoming dumper is used.- Returns:
- this for chaining
-
retryCallback
Set an optional handler that is notified if an http sending will be retried. This method is optional and must not be called prior to sending.- Parameters:
aRetryCallback- The optional retry callback. May benull.- Returns:
- this for chaining
-
rawResponseConsumer
@Nonnull public final IMPLTYPE rawResponseConsumer(@Nullable IAS4RawResponseConsumer aResponseConsumer) Set an optional handler for the synchronous result message received from the other side. This method is optional and must not be called prior to sending.- Parameters:
aResponseConsumer- The optional response consumer. May benull.- Returns:
- this for chaining
-
isEveryRequiredFieldSet
-
finishFields
@OverrideOnDemand @OverridingMethodsMustInvokeSuper protected com.helger.commons.state.ESuccess finishFields() throws Phase4ExceptionInternal method that is invoked before the required field check is performed. Override to set additional dynamically created fields if necessary.
Don't add message properties in here, because if the required fields check fails than this method would be called again.- Returns:
ESuccess- nevernull. Returning failure here stops sending the message.- Throws:
Phase4Exception- if something goes wrong
-
customizeBeforeSending
Internal method that is invoked after the required fields are checked but before sending takes place. This is e.g. the perfect place to add custom message properties.- Throws:
Phase4Exception- if something goes wrong
-
mainSendMessage
Synchronously send the AS4 message. This method may only be called bysendMessage()- Throws:
Phase4Exception- In case of any error
-
sendMessage
Synchronously send the AS4 message. First the internal "finishFields" method is called, to ensure all dynamic fields are filled - on failure this methods exits. AfterwardsisEveryRequiredFieldSet()is called to check that all mandatory elements are set - on failure this methods exits. Afterwards "customizeBeforeSending" is called to make final adjustments to the message. As the very last step, the customizable sender interrupt is invoked which may prevent the main message sending. As the last step "mainSendMessage" is invoked and "SUCCESS" is returned.
Note: since 0.13.0 this common implementation is in place.- Returns:
ESuccess.FAILUREif not all mandatory parameters are set or if sending failed,ESuccess.SUCCESSupon success. Nevernull. This result code does not reflect the semantics of a semantically correct message exchange or not. It just states, if the message was sent or nor. The rest needs to be determined separately.- Throws:
Phase4Exception- In case of any error- See Also:
-