Class AbstractAS4UserMessageBuilder<IMPLTYPE extends AbstractAS4UserMessageBuilder<IMPLTYPE>>

java.lang.Object
com.helger.phase4.sender.AbstractAS4MessageBuilder<IMPLTYPE>
com.helger.phase4.sender.AbstractAS4UserMessageBuilder<IMPLTYPE>
Type Parameters:
IMPLTYPE - The implementation type
All Implemented Interfaces:
com.helger.commons.traits.IGenericImplTrait<IMPLTYPE>
Direct Known Subclasses:
AbstractAS4UserMessageBuilderMIMEPayload

@NotThreadSafe public abstract class AbstractAS4UserMessageBuilder<IMPLTYPE extends AbstractAS4UserMessageBuilder<IMPLTYPE>> extends AbstractAS4MessageBuilder<IMPLTYPE>
Abstract builder base class for a user message.
Since:
0.10.0
Author:
Philip Helger
  • Field Details

    • m_aPMode

      protected IPMode m_aPMode
    • m_sServiceType

      protected String m_sServiceType
    • m_sService

      protected String m_sService
    • m_sAction

      protected String m_sAction
    • m_sAgreementRef

      protected String m_sAgreementRef
    • m_sPModeID

      protected String m_sPModeID
    • m_sFromPartyIDType

      protected String m_sFromPartyIDType
    • m_sFromPartyID

      protected String m_sFromPartyID
    • m_sFromRole

      protected String m_sFromRole
    • m_sToPartyIDType

      protected String m_sToPartyIDType
    • m_sToPartyID

      protected String m_sToPartyID
    • m_sToRole

      protected String m_sToRole
    • m_sConversationID

      protected String m_sConversationID
    • m_aMessageProperties

      protected final com.helger.commons.collection.impl.ICommonsList<MessageProperty> m_aMessageProperties
    • m_sEndpointURL

      protected String m_sEndpointURL
    • m_aAttachments

      protected final com.helger.commons.collection.impl.ICommonsList<AS4OutgoingAttachment> m_aAttachments
    • m_bForceMimeMessage

      protected boolean m_bForceMimeMessage
    • m_aSignalMsgConsumer

      protected IAS4SignalMessageConsumer m_aSignalMsgConsumer
  • Constructor Details

    • AbstractAS4UserMessageBuilder

      protected AbstractAS4UserMessageBuilder()
      Create a new builder, with the following fields already set:
      pmode(IPMode)
  • Method Details

    • pmode

      @Nullable public final IPMode pmode()
      Returns:
      The currently set P-Mode. May be null.
    • pmode

      @Nonnull public final IMPLTYPE pmode(@Nullable IPMode aPMode)
      Set the PMode to be used. By default a generic PMode is used.
      Parameters:
      aPMode - The PMode to be used. May be null.
      Returns:
      this for chaining
    • service

      @Nonnull public final IMPLTYPE service(@Nullable String sServiceValue)
      Set the "Service" value only, leaving the type null.
      Parameters:
      sServiceValue - Service value. May be null.
      Returns:
      this for chaining.
    • service

      @Nonnull public final IMPLTYPE service(@Nullable String sServiceType, @Nullable String sServiceValue)
      Set the "Service" value consisting of type and value. It's optional. If the "Service" value is not set, it the "service type" defaults to the "process identifier scheme" and the "service value" defaults to the "process identifier value".
      Parameters:
      sServiceType - Service type. May be null.
      sServiceValue - Service value. May be null.
      Returns:
      this for chaining.
    • action

      @Nonnull public final IMPLTYPE action(@Nullable String sAction)
      Set the "Action" value. It's optional. If the "Action" value is not set, it defaults to the "document type identifier value" (URI encoded).
      Parameters:
      sAction - Action value. May be null.
      Returns:
      this for chaining.
    • agreementRef

      @Nonnull public final IMPLTYPE agreementRef(@Nullable String sAgreementRef)
      Set the "AgreementRef" value. It's optional.
      Parameters:
      sAgreementRef - Agreement reference. May be null.
      Returns:
      this for chaining.
    • pmodeID

      @Nonnull public final IMPLTYPE pmodeID(@Nullable String s)
      Set the optional PMode ID for packaging in the user message.
      Parameters:
      s - Pmode ID. May be null.
      Returns:
      this for chaining
    • fromPartyIDType

      @Nonnull public final IMPLTYPE fromPartyIDType(@Nullable String sFromPartyIDType)
      Set the "from party ID type".
      Parameters:
      sFromPartyIDType - The from party ID.
      Returns:
      this for chaining
    • fromPartyID

      @Nonnull public final IMPLTYPE fromPartyID(@Nullable String sFromPartyID)
      Set the "from party ID".
      Parameters:
      sFromPartyID - The from party ID.
      Returns:
      this for chaining
    • fromRole

      @Nonnull public final IMPLTYPE fromRole(@Nullable String sFromRole)
      Set the "from party role". This is optional
      Parameters:
      sFromRole - The from role. May be null.
      Returns:
      this for chaining
    • toPartyIDType

      @Nonnull public final IMPLTYPE toPartyIDType(@Nullable String sToPartyIDType)
      Set the "to party ID type".
      Parameters:
      sToPartyIDType - The to party ID.
      Returns:
      this for chaining
    • toPartyID

      @Nonnull public final IMPLTYPE toPartyID(@Nullable String sToPartyID)
      Set the "to party ID".
      Parameters:
      sToPartyID - The to party ID.
      Returns:
      this for chaining
    • toRole

      @Nonnull public final IMPLTYPE toRole(@Nullable String sToRole)
      Set the "to party role". This is optional
      Parameters:
      sToRole - The to role. May be null.
      Returns:
      this for chaining
    • conversationID

      @Nonnull public final IMPLTYPE conversationID(@Nullable String sConversationID)
      Set the optional AS4 conversation ID. If this field is not set, a random conversation ID is created.
      Parameters:
      sConversationID - The optional AS4 conversation ID to be used. May be null.
      Returns:
      this for chaining
    • addMessageProperty

      @Nonnull public final IMPLTYPE addMessageProperty(@Nullable Ebms3Property a)
    • addMessageProperty

      @Nonnull public final IMPLTYPE addMessageProperty(@Nullable MessageProperty.Builder a)
    • addMessageProperty

      @Nonnull public final IMPLTYPE addMessageProperty(@Nullable MessageProperty a)
    • messageProperty

      @Nonnull public final IMPLTYPE messageProperty(@Nullable Ebms3Property a)
    • messageProperty

      @Nonnull public final IMPLTYPE messageProperty(@Nullable MessageProperty.Builder a)
    • messageProperty

      @Nonnull public final IMPLTYPE messageProperty(@Nullable MessageProperty a)
    • messageProperties

      @Nonnull public final IMPLTYPE messageProperties(@Nullable MessageProperty... a)
    • messageProperties

      @Nonnull public final IMPLTYPE messageProperties(@Nullable Iterable<? extends MessageProperty> a)
    • receiverCertificate

      @Nonnull public final IMPLTYPE receiverCertificate(@Nullable X509Certificate aCertificate)
      Set the receiver certificate used to encrypt the message with. This is the full certificate. This method overwrites any receiver certificate alias configuration (the later call "wins").
      Parameters:
      aCertificate - The certificate of the receiver to be used. May be null.
      Returns:
      this for chaining
      See Also:
    • receiverCertificateAlias

      @Nonnull public final IMPLTYPE receiverCertificateAlias(@Nullable String sAlias)
      Set the receiver certificate alias into the CryptoFactory keystore used to encrypt the message with. This is only the alias or name of the entry. This method overwrites any receiver certificate configuration (the later call "wins").
      Parameters:
      sAlias - The certificate alias of the receiver to be used. May be null.
      Returns:
      this for chaining
      Since:
      2.1.4
      See Also:
    • endpointURL

      @Nonnull public final IMPLTYPE endpointURL(@Nullable String sEndointURL)
      Set an receiver AS4 endpoint URL, independent of its usability.
      Parameters:
      sEndointURL - The endpoint URL to be used. May be null.
      Returns:
      this for chaining
    • addAttachment

      @Nonnull public final IMPLTYPE addAttachment(@Nullable AS4OutgoingAttachment.Builder a)
      Add an optional attachment
      Parameters:
      a - The attachment to be added. May be null.
      Returns:
      this for chaining
    • addAttachment

      @Nonnull public final IMPLTYPE addAttachment(@Nullable AS4OutgoingAttachment a)
      Add an optional attachment
      Parameters:
      a - The attachment to be added. May be null.
      Returns:
      this for chaining
    • attachment

      Set optional attachment. All existing attachments are overridden.
      Parameters:
      a - The attachment to be set. May be null.
      Returns:
      this for chaining
    • attachment

      @Nonnull public final IMPLTYPE attachment(@Nullable AS4OutgoingAttachment a)
      Set optional attachment. All existing attachments are overridden.
      Parameters:
      a - The attachment to be set. May be null.
      Returns:
      this for chaining
    • attachments

      @Nonnull public final IMPLTYPE attachments(@Nullable AS4OutgoingAttachment... a)
      Set optional attachments. All existing attachments are overridden.
      Parameters:
      a - The attachment to be set. May be null.
      Returns:
      this for chaining
    • attachments

      @Nonnull public final IMPLTYPE attachments(@Nullable Iterable<? extends AS4OutgoingAttachment> a)
      Set optional attachments. All existing attachments are overridden.
      Parameters:
      a - The attachment to be set. May be null.
      Returns:
      this for chaining
    • forceMimeMessage

      @Nonnull public final IMPLTYPE forceMimeMessage(boolean b)
      Enable the enforcement of packaging the AS4 user message in a MIME message.
      Parameters:
      b - true to enforce it, false to make it dynamic.
      Returns:
      this for chaining
      Since:
      2.5.1
    • signalMsgConsumer

      @Nonnull public final IMPLTYPE signalMsgConsumer(@Nullable IAS4SignalMessageConsumer aSignalMsgConsumer)
      Set an optional Ebms3 Signal Message Consumer. If this consumer is set, the response is trying to be parsed as a Signal Message. This method is optional and must not be called prior to sending.
      Parameters:
      aSignalMsgConsumer - The optional signal message consumer. May be null.
      Returns:
      this for chaining
    • isEveryRequiredFieldSet

      @OverridingMethodsMustInvokeSuper public boolean isEveryRequiredFieldSet()
      Overrides:
      isEveryRequiredFieldSet in class AbstractAS4MessageBuilder<IMPLTYPE extends AbstractAS4UserMessageBuilder<IMPLTYPE>>
    • applyToUserMessage

      @OverridingMethodsMustInvokeSuper protected void applyToUserMessage(@Nonnull AS4ClientUserMessage aUserMsg)
      This method applies all builder parameters onto the user message, except the attachments.
      Parameters:
      aUserMsg - The user message the parameters should be applied to. May not be null.
    • sendMessageAndCheckForReceipt

      @Nonnull public final AbstractAS4UserMessageBuilder.ESimpleUserMessageSendResult sendMessageAndCheckForReceipt()
      This is a sanity method that encapsulates all the sending checks that are necessary to determine overall sending success or error.
      Note: this method is not thread-safe, because it changes the signal message consumer internally.
      Returns:
      AbstractAS4UserMessageBuilder.ESimpleUserMessageSendResult.SUCCESS only if all parameters are correct, HTTP transmission was successful and if a positive AS4 Receipt was returned. Never null.
      Since:
      0.13.0
    • sendMessageAndCheckForReceipt

      @Nonnull public final AbstractAS4UserMessageBuilder.ESimpleUserMessageSendResult sendMessageAndCheckForReceipt(@Nullable Consumer<? super Phase4Exception> aExceptionConsumer)
      This is a sanity method that encapsulates all the sending checks that are necessary to determine overall sending success or error.
      Note: this method is not thread-safe, because it changes the signal message consumer internally.
      Parameters:
      aExceptionConsumer - An optional Consumer that takes an eventually thrown Phase4Exception. May be null.
      Returns:
      AbstractAS4UserMessageBuilder.ESimpleUserMessageSendResult.SUCCESS only if all parameters are correct, HTTP transmission was successful and if a positive AS4 Receipt was returned. Never null.
      Since:
      1.0.0-rc1