Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ public ConnectorMessage getMergedConnectorMessage() {
if (mergedConnectorMessage == null) {
mergedConnectorMessage = new ConnectorMessage();
mergedConnectorMessage.setChannelId(channelId);
mergedConnectorMessage.setChannelName(channelName);
mergedConnectorMessage.setMessageId(messageId);
mergedConnectorMessage.setServerId(serverId);
mergedConnectorMessage.setReceivedDate(receivedDate);
Expand All @@ -128,6 +129,9 @@ public ConnectorMessage getMergedConnectorMessage() {
ConnectorMessage sourceConnectorMessage = connectorMessages.get(0);

if (sourceConnectorMessage != null) {
if (mergedConnectorMessage.getChannelName() == null) {
mergedConnectorMessage.setChannelName(sourceConnectorMessage.getChannelName());
}
mergedConnectorMessage.setRaw(sourceConnectorMessage.getRaw());
mergedConnectorMessage.setProcessedRaw(sourceConnectorMessage.getProcessedRaw());
sourceMap = sourceConnectorMessage.getSourceMap();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
// SPDX-License-Identifier: MPL-2.0
// SPDX-FileCopyrightText: 2026 Giovanni Giannola <giogiannola@globalesm.com>

package com.mirth.connect.donkey.test;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;

import java.util.Calendar;

import org.junit.Test;

import com.mirth.connect.donkey.model.message.ConnectorMessage;
import com.mirth.connect.donkey.model.message.Message;
import com.mirth.connect.donkey.model.message.Status;

public class MessageTest {

private static final String CHANNEL_ID = "test-channel-id";
private static final String CHANNEL_NAME = "Test Channel";
private static final String SERVER_ID = "test-server-id";
private static final long MESSAGE_ID = 1L;

/**
* Regression test for issue #309: the channelName variable was not available in the
* Postprocessor script because the merged connector message (used to build the postprocessor
* scope) never had its channelName populated.
*/
@Test
public void mergedConnectorMessageInheritsChannelNameFromSourceConnectorMessage() {
Calendar receivedDate = Calendar.getInstance();

Message message = new Message();
message.setMessageId(MESSAGE_ID);
message.setChannelId(CHANNEL_ID);
message.setServerId(SERVER_ID);
message.setReceivedDate(receivedDate);

ConnectorMessage sourceConnectorMessage = new ConnectorMessage(CHANNEL_ID, CHANNEL_NAME, MESSAGE_ID, 0, SERVER_ID, receivedDate, Status.RECEIVED);
message.getConnectorMessages().put(0, sourceConnectorMessage);

assertEquals(CHANNEL_NAME, message.getMergedConnectorMessage().getChannelName());
}

/**
* When the Message itself carries a channelName, it should be propagated to the merged
* connector message even if (theoretically) the source connector message did not have one.
*/
@Test
public void mergedConnectorMessageUsesMessageChannelNameWhenSet() {
Calendar receivedDate = Calendar.getInstance();

Message message = new Message();
message.setMessageId(MESSAGE_ID);
message.setChannelId(CHANNEL_ID);
message.setChannelName(CHANNEL_NAME);
message.setServerId(SERVER_ID);
message.setReceivedDate(receivedDate);

ConnectorMessage sourceConnectorMessage = new ConnectorMessage(CHANNEL_ID, null, MESSAGE_ID, 0, SERVER_ID, receivedDate, Status.RECEIVED);
message.getConnectorMessages().put(0, sourceConnectorMessage);

assertEquals(CHANNEL_NAME, message.getMergedConnectorMessage().getChannelName());
}

/**
* With no channel name available anywhere, the merged connector message channelName stays null
* (i.e. the fix does not fabricate a value).
*/
@Test
public void mergedConnectorMessageChannelNameNullWhenUnavailable() {
Calendar receivedDate = Calendar.getInstance();

Message message = new Message();
message.setMessageId(MESSAGE_ID);
message.setChannelId(CHANNEL_ID);
message.setServerId(SERVER_ID);
message.setReceivedDate(receivedDate);

ConnectorMessage sourceConnectorMessage = new ConnectorMessage(CHANNEL_ID, null, MESSAGE_ID, 0, SERVER_ID, receivedDate, Status.RECEIVED);
message.getConnectorMessages().put(0, sourceConnectorMessage);

assertNull(message.getMergedConnectorMessage().getChannelName());
}
}
Loading