GH-2874: Syslog - copy IpHeaders to message

Resolves https://github.com/spring-projects/spring-integration/issues/2874

**cherry-pick to 5.1.x**

# Conflicts:
#	spring-integration-syslog/src/test/java/org/springframework/integration/syslog/inbound/SyslogReceivingChannelAdapterTests.java
This commit is contained in:
Gary Russell
2019-04-01 11:20:34 -04:00
committed by Artem Bilan
parent 7dbb8368c4
commit 89cf135b56
3 changed files with 11 additions and 2 deletions

View File

@@ -93,6 +93,7 @@ public class DefaultMessageConverter implements MessageConverter, BeanFactoryAwa
}
}
return getMessageBuilderFactory().withPayload(this.asMap ? map : message.getPayload())
.copyHeaders(message.getHeaders())
.copyHeaders(out)
.build();
}

View File

@@ -79,7 +79,8 @@ public class RFC5424MessageConverter extends DefaultMessageConverter {
}
AbstractIntegrationMessageBuilder<Object> builder = getMessageBuilderFactory().withPayload(
asMap() ? map : originalContent);
asMap() ? map : originalContent)
.copyHeaders(message.getHeaders());
if (!asMap() && isMap) {
builder.copyHeaders(map);
}

View File

@@ -30,6 +30,7 @@ import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@@ -44,6 +45,7 @@ import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.integration.channel.QueueChannel;
import org.springframework.integration.ip.IpHeaders;
import org.springframework.integration.ip.tcp.connection.AbstractServerConnectionFactory;
import org.springframework.integration.ip.tcp.connection.TcpNioServerConnectionFactory;
import org.springframework.integration.ip.udp.UnicastReceivingChannelAdapter;
@@ -77,7 +79,7 @@ public class SyslogReceivingChannelAdapterTests {
UnicastReceivingChannelAdapter.class);
TestingUtilities.waitListening(server, null);
UdpSyslogReceivingChannelAdapter adapter = (UdpSyslogReceivingChannelAdapter) factory.getObject();
byte[] buf = "<157>JUL 26 22:08:35 WEBERN TESTING[70729]: TEST SYSLOG MESSAGE".getBytes("UTF-8");
byte[] buf = "<157>JUL 26 22:08:35 WEBERN TESTING[70729]: TEST SYSLOG MESSAGE".getBytes(StandardCharsets.UTF_8);
DatagramPacket packet = new DatagramPacket(buf, buf.length, new InetSocketAddress("localhost",
server.getPort()));
DatagramSocket socket = new DatagramSocket();
@@ -86,6 +88,7 @@ public class SyslogReceivingChannelAdapterTests {
Message<?> message = outputChannel.receive(10000);
assertNotNull(message);
assertEquals("WEBERN", message.getHeaders().get("syslog_HOST"));
assertTrue(message.getHeaders().containsKey(IpHeaders.IP_ADDRESS));
adapter.stop();
}
@@ -130,6 +133,7 @@ public class SyslogReceivingChannelAdapterTests {
Message<?> message = outputChannel.receive(10000);
assertNotNull(message);
assertEquals("WEBERN", message.getHeaders().get("syslog_HOST"));
assertTrue(message.getHeaders().containsKey(IpHeaders.IP_ADDRESS));
adapter.stop();
assertTrue(latch.await(10, TimeUnit.SECONDS));
}
@@ -163,6 +167,7 @@ public class SyslogReceivingChannelAdapterTests {
assertEquals("WEBERN", message.getHeaders().get("syslog_HOST"));
assertEquals("<157>JUL 26 22:08:35 WEBERN TESTING[70729]: TEST SYSLOG MESSAGE",
new String((byte[]) message.getPayload(), "UTF-8"));
assertTrue(message.getHeaders().containsKey(IpHeaders.IP_ADDRESS));
adapter.stop();
}
@@ -212,6 +217,7 @@ public class SyslogReceivingChannelAdapterTests {
Message<Map<String, ?>> message = (Message<Map<String, ?>>) outputChannel.receive(10000);
assertNotNull(message);
assertEquals("loggregator", message.getPayload().get("syslog_HOST"));
assertTrue(message.getHeaders().containsKey(IpHeaders.IP_ADDRESS));
adapter.stop();
assertTrue(latch.await(10, TimeUnit.SECONDS));
}
@@ -245,6 +251,7 @@ public class SyslogReceivingChannelAdapterTests {
Message<Map<String, ?>> message = (Message<Map<String, ?>>) outputChannel.receive(10000);
assertNotNull(message);
assertEquals("loggregator", message.getPayload().get("syslog_HOST"));
assertTrue(message.getHeaders().containsKey(IpHeaders.IP_ADDRESS));
adapter.stop();
}