From 9a5c26581b511dbb75f3ec3bbda88cb10437579d Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Fri, 4 Mar 2011 18:53:51 -0500 Subject: [PATCH] INT-1822 Add Attribute to Suppress Reverse DNS Lokup --- docs/src/reference/docbook/ip.xml | 32 ++++++++++++++++ .../ip/config/IpAdapterParserUtils.java | 2 + .../ip/config/TcpConnectionParser.java | 2 + .../UdpInboundChannelAdapterParser.java | 2 + .../connection/AbstractConnectionFactory.java | 20 +++++++++- .../tcp/connection/AbstractTcpConnection.java | 20 +++++++++- .../TcpNetClientConnectionFactory.java | 2 +- .../ip/tcp/connection/TcpNetConnection.java | 15 +------- .../TcpNetServerConnectionFactory.java | 2 +- .../TcpNioClientConnectionFactory.java | 2 +- .../ip/tcp/connection/TcpNioConnection.java | 16 +------- .../TcpNioServerConnectionFactory.java | 2 +- .../ip/udp/DatagramPacketMessageMapper.java | 24 ++++++++++-- .../udp/UnicastReceivingChannelAdapter.java | 6 ++- .../integration/ip/util/SocketUtils.java | 37 ------------------- .../ip/config/spring-integration-ip-2.0.xsd | 16 ++++++++ .../ip/config/ParserUnitTests-context.xml | 3 ++ .../ip/config/ParserUnitTests.java | 11 ++++++ .../ConnectionToConnectionTests-context.xml | 2 + .../ip/tcp/ConnectionToConnectionTests.java | 16 ++++++++ .../tcp/connection/TcpMessageMapperTests.java | 2 +- .../udp/DatagramPacketMessageMapperTests.java | 10 +++++ 22 files changed, 167 insertions(+), 77 deletions(-) delete mode 100644 spring-integration-ip/src/main/java/org/springframework/integration/ip/util/SocketUtils.java diff --git a/docs/src/reference/docbook/ip.xml b/docs/src/reference/docbook/ip.xml index 3bf14e07bf..1f724b9d6a 100644 --- a/docs/src/reference/docbook/ip.xml +++ b/docs/src/reference/docbook/ip.xml @@ -123,6 +123,13 @@ check-length="true" />]]> A basic multicast inbound udp channel adapter. + + By default, reverse DNS lookups are done on inbound packets to convert IP addresses to + hostnames for use in message headers. + In environments where DNS is not configured, this can cause delays. + This default behavior can be overridden by setting the lookup-host + attribute to "false". +
TCP Connection Factories @@ -306,6 +313,13 @@ For full details of the attributes available on connection factories, see the reference at the end of this section. + + By default, reverse DNS lookups are done on inbound packets to convert IP addresses to + hostnames for use in message headers. + In environments where DNS is not configured, this can cause connection delays. + This default behavior can be overridden by setting the lookup-host + attribute to "false". +
Tcp Connection Interceptors @@ -782,6 +796,16 @@ However, pool-size is also used for the server socket backlog, regardless of whether an external task executor is used. Defaults to 5. + + lookup-host + Y + Y + true, false + + Specifies whether reverse lookups are done on IP addresses to convert to host names + for use in message headers. If false, the IP address is used instead. Defaults to true. + + interceptor-factory-chain Y @@ -885,6 +909,14 @@ component, the MessagingException message containing the exception and failed message is sent to this channel. + + lookup-host + true, false + + Specifies whether reverse lookups are done on IP addresses to convert to host names + for use in message headers. If false, the IP address is used instead. Defaults to true. + + diff --git a/spring-integration-ip/src/main/java/org/springframework/integration/ip/config/IpAdapterParserUtils.java b/spring-integration-ip/src/main/java/org/springframework/integration/ip/config/IpAdapterParserUtils.java index 20a2ae9804..2c1c734998 100644 --- a/spring-integration-ip/src/main/java/org/springframework/integration/ip/config/IpAdapterParserUtils.java +++ b/spring-integration-ip/src/main/java/org/springframework/integration/ip/config/IpAdapterParserUtils.java @@ -104,6 +104,8 @@ public abstract class IpAdapterParserUtils { public static final String REPLY_TIMEOUT = "reply-timeout"; public static final String REPLY_CHANNEL = "reply-channel"; + + public static final String LOOKUP_HOST = "lookup-host"; /** diff --git a/spring-integration-ip/src/main/java/org/springframework/integration/ip/config/TcpConnectionParser.java b/spring-integration-ip/src/main/java/org/springframework/integration/ip/config/TcpConnectionParser.java index e42f86f670..5903425e24 100644 --- a/spring-integration-ip/src/main/java/org/springframework/integration/ip/config/TcpConnectionParser.java +++ b/spring-integration-ip/src/main/java/org/springframework/integration/ip/config/TcpConnectionParser.java @@ -92,6 +92,8 @@ public class TcpConnectionParser extends AbstractBeanDefinitionParser { IpAdapterParserUtils.SINGLE_USE); IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, IpAdapterParserUtils.INTERCEPTOR_FACTORY_CHAIN); + IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, + IpAdapterParserUtils.LOOKUP_HOST); return builder.getBeanDefinition(); } diff --git a/spring-integration-ip/src/main/java/org/springframework/integration/ip/config/UdpInboundChannelAdapterParser.java b/spring-integration-ip/src/main/java/org/springframework/integration/ip/config/UdpInboundChannelAdapterParser.java index 80830b3294..127774e1d1 100644 --- a/spring-integration-ip/src/main/java/org/springframework/integration/ip/config/UdpInboundChannelAdapterParser.java +++ b/spring-integration-ip/src/main/java/org/springframework/integration/ip/config/UdpInboundChannelAdapterParser.java @@ -47,6 +47,8 @@ public class UdpInboundChannelAdapterParser extends AbstractChannelAdapterParser element, "error-channel", "errorChannel"); IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, IpAdapterParserUtils.TASK_EXECUTOR); + IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, + IpAdapterParserUtils.LOOKUP_HOST); return builder.getBeanDefinition(); } diff --git a/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/AbstractConnectionFactory.java b/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/AbstractConnectionFactory.java index bb8cb23a76..db89441c0f 100644 --- a/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/AbstractConnectionFactory.java +++ b/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/AbstractConnectionFactory.java @@ -86,9 +86,11 @@ public abstract class AbstractConnectionFactory protected int poolSize = 5; - protected boolean active; + protected volatile boolean active; protected TcpConnectionInterceptorFactoryChain interceptorFactoryChain; + + private boolean lookupHost = true; /** * Sets socket attributes on the socket. @@ -305,6 +307,22 @@ public abstract class AbstractConnectionFactory this.interceptorFactoryChain = interceptorFactoryChain; } + /** + * If true, DNS reverse lookup is done on the remote ip address. + * Default true. + * @param lookupHost the lookupHost to set + */ + public void setLookupHost(boolean lookupHost) { + this.lookupHost = lookupHost; + } + + /** + * @return the lookupHost + */ + public boolean isLookupHost() { + return lookupHost; + } + /** * Closes the server. */ diff --git a/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/AbstractTcpConnection.java b/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/AbstractTcpConnection.java index 963af34fe0..5860a2dc22 100644 --- a/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/AbstractTcpConnection.java +++ b/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/AbstractTcpConnection.java @@ -70,13 +70,26 @@ public abstract class AbstractTcpConnection implements TcpConnection { private String hostAddress = "unknown"; - public AbstractTcpConnection(Socket socket, boolean server) { + private int port; + + private final boolean lookupHost; + + private int hashCode; + + public AbstractTcpConnection(Socket socket, boolean server, boolean lookupHost) { this.server = server; + this.lookupHost = lookupHost; + this.hashCode = socket.hashCode(); InetAddress inetAddress = socket.getInetAddress(); if (inetAddress != null) { this.hostAddress = inetAddress.getHostAddress(); - this.hostName = inetAddress.getHostName(); + if (this.lookupHost) { + this.hostName = inetAddress.getHostName(); + } else { + this.hostName = this.hostAddress; + } } + this.connectionId = this.hostName + ":" + this.port + ":" + this.hashCode; try { this.soLinger = socket.getSoLinger(); } catch (SocketException e) { } @@ -239,5 +252,8 @@ public abstract class AbstractTcpConnection implements TcpConnection { return this.hostName; } + public String getConnectionId() { + return this.connectionId; + } } diff --git a/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNetClientConnectionFactory.java b/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNetClientConnectionFactory.java index b79d8e1a76..0b9d92d2e9 100644 --- a/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNetClientConnectionFactory.java +++ b/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNetClientConnectionFactory.java @@ -50,7 +50,7 @@ public class TcpNetClientConnectionFactory extends logger.debug("Opening new socket connection to " + this.host + ":" + this.port); Socket socket = SocketFactory.getDefault().createSocket(this.host, this.port); setSocketAttributes(socket); - TcpConnection connection = new TcpNetConnection(socket, false); + TcpConnection connection = new TcpNetConnection(socket, false, this.isLookupHost()); connection = wrapConnection(connection); initializeConnection(connection, socket); this.taskExecutor.execute(connection); diff --git a/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNetConnection.java b/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNetConnection.java index 43a3333cbf..d44c64b5ac 100644 --- a/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNetConnection.java +++ b/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNetConnection.java @@ -16,14 +16,12 @@ package org.springframework.integration.ip.tcp.connection; -import java.net.InetAddress; import java.net.Socket; import java.net.SocketTimeoutException; import org.springframework.core.serializer.Deserializer; import org.springframework.integration.Message; import org.springframework.integration.ip.tcp.serializer.SoftEndOfStreamException; -import org.springframework.integration.ip.util.SocketUtils; /** * A TcpConnection that uses and underlying {@link Socket}. @@ -44,10 +42,9 @@ public class TcpNetConnection extends AbstractTcpConnection { * @param server if true this connection was created as * a result of an incoming request. */ - public TcpNetConnection(Socket socket, boolean server) { - super(socket, server); + public TcpNetConnection(Socket socket, boolean server, boolean lookupHost) { + super(socket, server, lookupHost); this.socket = socket; - getConnectionId(); } /** @@ -162,12 +159,4 @@ public class TcpNetConnection extends AbstractTcpConnection { } } - public String getConnectionId() { - if (this.connectionId == null) { - this.connectionId = SocketUtils.getSocketId(this.socket); - } - return this.connectionId; - } - - } diff --git a/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNetServerConnectionFactory.java b/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNetServerConnectionFactory.java index c43cec354a..1f17431935 100644 --- a/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNetServerConnectionFactory.java +++ b/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNetServerConnectionFactory.java @@ -72,7 +72,7 @@ public class TcpNetServerConnectionFactory extends AbstractServerConnectionFacto final Socket socket = serverSocket.accept(); logger.debug("Accepted connection from " + socket.getInetAddress().getHostAddress()); setSocketAttributes(socket); - TcpConnection connection = new TcpNetConnection(socket, true); + TcpConnection connection = new TcpNetConnection(socket, true, this.isLookupHost()); connection = wrapConnection(connection); this.initializeConnection(connection, socket); this.taskExecutor.execute(connection); diff --git a/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNioClientConnectionFactory.java b/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNioClientConnectionFactory.java index 42ab27344e..ad6df77813 100644 --- a/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNioClientConnectionFactory.java +++ b/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNioClientConnectionFactory.java @@ -78,7 +78,7 @@ public class TcpNioClientConnectionFactory extends logger.debug("Opening new socket channel connection to " + this.host + ":" + this.port); SocketChannel socketChannel = SocketChannel.open(new InetSocketAddress(this.host, this.port)); setSocketAttributes(socketChannel.socket()); - TcpNioConnection connection = new TcpNioConnection(socketChannel, false); + TcpNioConnection connection = new TcpNioConnection(socketChannel, false, this.isLookupHost()); connection.setUsingDirectBuffers(this.usingDirectBuffers); if (this.taskExecutor == null) { connection.setTaskExecutor(Executors.newSingleThreadExecutor()); diff --git a/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNioConnection.java b/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNioConnection.java index c658bcdb12..40ae936a30 100644 --- a/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNioConnection.java +++ b/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNioConnection.java @@ -32,7 +32,6 @@ import java.util.concurrent.atomic.AtomicInteger; import org.springframework.integration.Message; import org.springframework.integration.ip.tcp.serializer.SoftEndOfStreamException; -import org.springframework.integration.ip.util.SocketUtils; /** * A TcpConnection that uses and underlying {@link SocketChannel}. @@ -71,16 +70,12 @@ public class TcpNioConnection extends AbstractTcpConnection { * @param server if true this connection was created as * a result of an incoming request. */ - public TcpNioConnection(SocketChannel socketChannel, boolean server) throws Exception { - super(socketChannel.socket(), server); + public TcpNioConnection(SocketChannel socketChannel, boolean server, boolean lookupHost) throws Exception { + super(socketChannel.socket(), server, lookupHost); this.socketChannel = socketChannel; this.pipedInputStream = new PipedInputStream(); this.pipedOutputStream = new PipedOutputStream(this.pipedInputStream); this.channelOutputStream = new ChannelOutputStream(); - getConnectionId(); - if (this.connectionId == null) { - throw new Exception("Null id"); - } } public void close() { @@ -338,13 +333,6 @@ public class TcpNioConnection extends AbstractTcpConnection { this.usingDirectBuffers = usingDirectBuffers; } - public String getConnectionId() { - if (this.connectionId == null) { - this.connectionId = SocketUtils.getSocketId(this.socketChannel.socket()); - } - return this.connectionId; - } - /** * * @return Time of last read. diff --git a/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNioServerConnectionFactory.java b/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNioServerConnectionFactory.java index 6574d3e081..a6d826f1d2 100644 --- a/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNioServerConnectionFactory.java +++ b/spring-integration-ip/src/main/java/org/springframework/integration/ip/tcp/connection/TcpNioServerConnectionFactory.java @@ -142,7 +142,7 @@ public class TcpNioServerConnectionFactory extends AbstractServerConnectionFacto private TcpNioConnection createTcpNioConnection(SocketChannel socketChannel) { try { - TcpNioConnection connection = new TcpNioConnection(socketChannel, true); + TcpNioConnection connection = new TcpNioConnection(socketChannel, true, this.isLookupHost()); connection.setUsingDirectBuffers(this.usingDirectBuffers); TcpConnection wrappedConnection = wrapConnection(connection); this.initializeConnection(wrappedConnection, socketChannel.socket()); diff --git a/spring-integration-ip/src/main/java/org/springframework/integration/ip/udp/DatagramPacketMessageMapper.java b/spring-integration-ip/src/main/java/org/springframework/integration/ip/udp/DatagramPacketMessageMapper.java index f3ab492594..ff72e6b783 100644 --- a/spring-integration-ip/src/main/java/org/springframework/integration/ip/udp/DatagramPacketMessageMapper.java +++ b/spring-integration-ip/src/main/java/org/springframework/integration/ip/udp/DatagramPacketMessageMapper.java @@ -66,6 +66,8 @@ public class DatagramPacketMessageMapper implements InboundMessageMapper 0) { message = MessageBuilder.withPayload(payload) - .setHeader(IpHeaders.HOSTNAME, packet.getAddress().getHostName()) - .setHeader(IpHeaders.IP_ADDRESS, packet.getAddress().getHostAddress()) + .setHeader(IpHeaders.HOSTNAME, hostName) + .setHeader(IpHeaders.IP_ADDRESS, hostAddress) .build(); } } diff --git a/spring-integration-ip/src/main/java/org/springframework/integration/ip/udp/UnicastReceivingChannelAdapter.java b/spring-integration-ip/src/main/java/org/springframework/integration/ip/udp/UnicastReceivingChannelAdapter.java index a07014b00d..1b49345761 100644 --- a/spring-integration-ip/src/main/java/org/springframework/integration/ip/udp/UnicastReceivingChannelAdapter.java +++ b/spring-integration-ip/src/main/java/org/springframework/integration/ip/udp/UnicastReceivingChannelAdapter.java @@ -189,7 +189,7 @@ public class UnicastReceivingChannelAdapter extends AbstractInternetProtocolRece super.doStop(); try { this.socket.close(); - socket = null; + this.socket = null; } catch (Exception e) { // ignore @@ -200,6 +200,10 @@ public class UnicastReceivingChannelAdapter extends AbstractInternetProtocolRece this.soSendBufferSize = soSendBufferSize; } + public void setLookupHost(boolean lookupHost) { + this.mapper.setLookupHost(lookupHost); + } + public String getComponentType(){ return "ip:udp-inbound-channel-adapter"; } diff --git a/spring-integration-ip/src/main/java/org/springframework/integration/ip/util/SocketUtils.java b/spring-integration-ip/src/main/java/org/springframework/integration/ip/util/SocketUtils.java deleted file mode 100644 index 780b2e7b49..0000000000 --- a/spring-integration-ip/src/main/java/org/springframework/integration/ip/util/SocketUtils.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2002-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.integration.ip.util; - -import java.net.InetAddress; -import java.net.Socket; - -/** - * @author Gary Russell - * @since 2.0 - */ -public abstract class SocketUtils { - - public static String getSocketId(Socket socket) { - InetAddress inetAddress = socket.getInetAddress(); - String hostName = ""; - if (inetAddress != null) { - hostName = inetAddress.getHostName(); - } - return hostName + ":" + socket.getPort() + ":" + socket.hashCode(); - } - -} diff --git a/spring-integration-ip/src/main/resources/org/springframework/integration/ip/config/spring-integration-ip-2.0.xsd b/spring-integration-ip/src/main/resources/org/springframework/integration/ip/config/spring-integration-ip-2.0.xsd index c6de636097..7f76faf778 100644 --- a/spring-integration-ip/src/main/resources/org/springframework/integration/ip/config/spring-integration-ip-2.0.xsd +++ b/spring-integration-ip/src/main/resources/org/springframework/integration/ip/config/spring-integration-ip-2.0.xsd @@ -62,6 +62,14 @@ its configuration specifies the number of threads. + + + +Whether or not to do a DNS reverse-lookup on the remote ip address to insert the host name into the +message headers (ip_hostName). Default "true". + + + @@ -385,6 +393,14 @@ its configuration specifies the number of threads. + + + +Whether or not to do a DNS reverse-lookup on the remote ip address to insert the host name into the +message headers (ip_connectionId, ip_hostName). Default "true". + + + diff --git a/spring-integration-ip/src/test/java/org/springframework/integration/ip/config/ParserUnitTests-context.xml b/spring-integration-ip/src/test/java/org/springframework/integration/ip/config/ParserUnitTests-context.xml index 1b888f7d9d..8dc22a1919 100644 --- a/spring-integration-ip/src/test/java/org/springframework/integration/ip/config/ParserUnitTests-context.xml +++ b/spring-integration-ip/src/test/java/org/springframework/integration/ip/config/ParserUnitTests-context.xml @@ -30,6 +30,7 @@ local-address="127.0.0.1" task-executor="externalTE" error-channel="errorChannel" + lookup-host="false" /> @@ -27,6 +28,7 @@ host="localhost" port="#{server.port}" single-use="true" + lookup-host="false" so-timeout="100000" /> diff --git a/spring-integration-ip/src/test/java/org/springframework/integration/ip/tcp/ConnectionToConnectionTests.java b/spring-integration-ip/src/test/java/org/springframework/integration/ip/tcp/ConnectionToConnectionTests.java index d4e3c80012..84635eef01 100644 --- a/spring-integration-ip/src/test/java/org/springframework/integration/ip/tcp/ConnectionToConnectionTests.java +++ b/spring-integration-ip/src/test/java/org/springframework/integration/ip/tcp/ConnectionToConnectionTests.java @@ -18,6 +18,7 @@ package org.springframework.integration.ip.tcp; import static junit.framework.Assert.assertTrue; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import java.util.Properties; @@ -99,4 +100,19 @@ public class ConnectionToConnectionTests { assertNotNull(message); assertEquals("Test", new String((byte[]) message.getPayload())); } + + @Test + public void testLookup() throws Exception { + TcpConnection connection = client.getConnection(); + assertFalse(connection.getConnectionId().contains("localhost")); + connection.close(); + client.setLookupHost(true); + connection = client.getConnection(); + assertTrue(connection.getConnectionId().contains("localhost")); + connection.close(); + client.setLookupHost(false); + connection = client.getConnection(); + assertFalse(connection.getConnectionId().contains("localhost")); + connection.close(); + } } diff --git a/spring-integration-ip/src/test/java/org/springframework/integration/ip/tcp/connection/TcpMessageMapperTests.java b/spring-integration-ip/src/test/java/org/springframework/integration/ip/tcp/connection/TcpMessageMapperTests.java index 414bdf62c0..29cde829e5 100644 --- a/spring-integration-ip/src/test/java/org/springframework/integration/ip/tcp/connection/TcpMessageMapperTests.java +++ b/spring-integration-ip/src/test/java/org/springframework/integration/ip/tcp/connection/TcpMessageMapperTests.java @@ -73,7 +73,7 @@ public class TcpMessageMapperTests { TcpMessageMapper mapper = new TcpMessageMapper(); Socket socket = SocketFactory.getDefault().createSocket(); - TcpConnection connection = new AbstractTcpConnection(socket, false) { + TcpConnection connection = new AbstractTcpConnection(socket, false, false) { public void run() { } public void send(Message message) throws Exception { diff --git a/spring-integration-ip/src/test/java/org/springframework/integration/ip/udp/DatagramPacketMessageMapperTests.java b/spring-integration-ip/src/test/java/org/springframework/integration/ip/udp/DatagramPacketMessageMapperTests.java index 9a8296a03f..fb6f07ec0d 100644 --- a/spring-integration-ip/src/test/java/org/springframework/integration/ip/udp/DatagramPacketMessageMapperTests.java +++ b/spring-integration-ip/src/test/java/org/springframework/integration/ip/udp/DatagramPacketMessageMapperTests.java @@ -18,6 +18,7 @@ package org.springframework.integration.ip.udp; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.fail; import java.net.DatagramPacket; @@ -71,6 +72,15 @@ public class DatagramPacketMessageMapperTests { assertEquals(messageOut.getHeaders().get(IpHeaders.ACK_ID).toString(), message.getHeaders().getId().toString()); } + assertTrue(((String)messageOut.getHeaders().get(IpHeaders.HOSTNAME)).contains("localhost")); + mapper.setLookupHost(false); + messageOut = mapper.toMessage(packet); + assertEquals(new String(message.getPayload()), new String(messageOut.getPayload())); + if (ack) { + assertEquals(messageOut.getHeaders().get(IpHeaders.ACK_ID).toString(), + message.getHeaders().getId().toString()); + } + assertFalse(((String)messageOut.getHeaders().get(IpHeaders.HOSTNAME)).contains("localhost")); } @Test