Skip to content

Commit

Permalink
Extended API of IAS4(Signal|User)MessageConsumer. #177
Browse files Browse the repository at this point in the history
  • Loading branch information
phax committed Oct 25, 2023
1 parent ebb4f6e commit 72ac706
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ public static void main (final String [] args)
.compressionGZIP ()
.mimeTypeXML ()
.charset (StandardCharsets.UTF_8), aBDEWPayloadParams)
.signalMsgConsumer (aSignalMsgHolder::set)
.signalMsgConsumer ( (aSignalMsg, aMMD) -> aSignalMsgHolder.set (aSignalMsg))
.sendMessageAndCheckForReceipt ();
LOGGER.info ("BDEW send result: " + eResult);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import javax.annotation.Nonnull;

import com.helger.phase4.ebms3header.Ebms3SignalMessage;
import com.helger.phase4.messaging.IAS4IncomingMessageMetadata;
import com.helger.phase4.util.Phase4Exception;

/**
Expand All @@ -35,8 +36,12 @@ public interface IAS4SignalMessageConsumer
*
* @param aSignalMsg
* The Signal Message domain object. Never <code>null</code>.
* @param aMessageMetadata
* The message metadata of the synchronously received message. Never
* <code>null</code>. Added in v2.5.0.
* @throws Phase4Exception
* in case of error
*/
void handleSignalMessage (@Nonnull Ebms3SignalMessage aSignalMsg) throws Phase4Exception;
void handleSignalMessage (@Nonnull Ebms3SignalMessage aSignalMsg,
@Nonnull IAS4IncomingMessageMetadata aMessageMetadata) throws Phase4Exception;
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import javax.annotation.Nonnull;

import com.helger.phase4.ebms3header.Ebms3UserMessage;
import com.helger.phase4.messaging.IAS4IncomingMessageMetadata;
import com.helger.phase4.util.Phase4Exception;

/**
Expand All @@ -35,8 +36,12 @@ public interface IAS4UserMessageConsumer
*
* @param aUserMsg
* The User Message domain object. Never <code>null</code>.
* @param aMessageMetadata
* The message metadata of the synchronously received message. Never
* <code>null</code>. Added in v2.5.0.
* @throws Phase4Exception
* in case of error
*/
void handleUserMessage (@Nonnull Ebms3UserMessage aUserMsg) throws Phase4Exception;
void handleUserMessage (@Nonnull Ebms3UserMessage aUserMsg, @Nonnull IAS4IncomingMessageMetadata aMessageMetadata)
throws Phase4Exception;
}
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ public static void sendAS4UserMessageAndReceiveAS4SignalMessage (@Nonnull final
@Nullable final IAS4IncomingDumper aIncomingDumper,
@Nonnull final IAS4IncomingSecurityConfiguration aIncomingSecurityConfiguration,
@Nullable final IAS4RetryCallback aRetryCallback,
@Nullable final IAS4RawResponseConsumer aResponseConsumer,
@Nullable final IAS4RawResponseConsumer aRawResponseConsumer,
@Nullable final IAS4SignalMessageConsumer aSignalMsgConsumer) throws IOException,
Phase4Exception,
WSSecurityException,
Expand Down Expand Up @@ -135,6 +135,7 @@ public static void sendAS4UserMessageAndReceiveAS4SignalMessage (@Nonnull final
return EntityUtils.toByteArray (aEntity);
};

// Main HTTP sending
final AS4ClientSentMessage <byte []> aResponseEntity = aClientUserMsg.sendMessageWithRetries (sURL,
aHttpResponseHdl,
aBuildMessageCallback,
Expand All @@ -147,8 +148,8 @@ public static void sendAS4UserMessageAndReceiveAS4SignalMessage (@Nonnull final
sURL +
"'");

if (aResponseConsumer != null)
aResponseConsumer.handleResponse (aResponseEntity);
if (aRawResponseConsumer != null)
aRawResponseConsumer.handleResponse (aResponseEntity);

// Try interpret result as SignalMessage
if (aResponseEntity.hasResponse () && aResponseEntity.getResponse ().length > 0)
Expand All @@ -172,7 +173,7 @@ public static void sendAS4UserMessageAndReceiveAS4SignalMessage (@Nonnull final
aIncomingDumper,
aIncomingSecurityConfiguration);
if (aSignalMessage != null && aSignalMsgConsumer != null)
aSignalMsgConsumer.handleSignalMessage (aSignalMessage);
aSignalMsgConsumer.handleSignalMessage (aSignalMessage, aMessageMetadata);
}
else
LOGGER.info ("AS4 ResponseEntity is empty");
Expand Down Expand Up @@ -254,7 +255,7 @@ public static void sendAS4PullRequestAndReceiveAS4UserMessage (@Nonnull final IA
aIncomingDumper,
aIncomingSecurityConfiguration);
if (aUserMessage != null && aUserMsgConsumer != null)
aUserMsgConsumer.handleUserMessage (aUserMessage);
aUserMsgConsumer.handleUserMessage (aUserMessage, aMessageMetadata);
}
else
LOGGER.info ("AS4 ResponseEntity is empty");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -747,9 +747,10 @@ public final ESimpleUserMessageSendResult sendMessageAndCheckForReceipt (@Nullab
{
// Store the received signal message
final Wrapper <Ebms3SignalMessage> aSignalMsgKeeper = new Wrapper <> ();
m_aSignalMsgConsumer = aOld == null ? aSignalMsgKeeper::set : x -> {
aSignalMsgKeeper.set (x);
aOld.handleSignalMessage (x);
m_aSignalMsgConsumer = aOld == null ? (aSignalMsg, aMMD) -> aSignalMsgKeeper.set (aSignalMsg) : (aSignalMsg,
aMMD) -> {
aSignalMsgKeeper.set (aSignalMsg);
aOld.handleSignalMessage (aSignalMsg, aMMD);
};

// Main sending
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ public void onAS4Message (final AbstractAS4Message <?> aMsg)
new Phase4PeppolValidatonResultHandler ())
.buildMessageCallback (aBuildMessageCallback)
.rawResponseConsumer (aRRC)
.signalMsgConsumer (aSignalMsgWrapper::set)
.signalMsgConsumer ( (aSignalMsg, aMMD) -> aSignalMsgWrapper.set (aSignalMsg))
.sendMessageAndCheckForReceipt ();
LOGGER.info ("Peppol send result: " + eResult);
}
Expand Down

0 comments on commit 72ac706

Please sign in to comment.