From 09f3f7c3421f3540969a3b013925212c19292d19 Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Mon, 9 Jul 2012 14:47:54 -0400 Subject: [PATCH] INT-2660 NPE When Using SSL and NIO with Defaults DefaultTcpNioSSLConnectionSupport and DefaultTcpNetSSLSocketFactorySupport need an SSLContext which is set up in afterPropertiesSet(). However, when configuring the connection factories with default strategies, afterPropertiesSet() is not called. Result: NullPointerException. Add call to afterPropertiesSet() where appropriate and tests to verify. --- .../TcpConnectionFactoryFactoryBean.java | 18 ++++++++++++++++-- .../ip/config/ParserUnitTests-context.xml | 9 +++++++++ .../ip/config/ParserUnitTests.java | 19 +++++++++++++++++-- 3 files changed, 42 insertions(+), 4 deletions(-) diff --git a/spring-integration-ip/src/main/java/org/springframework/integration/ip/config/TcpConnectionFactoryFactoryBean.java b/spring-integration-ip/src/main/java/org/springframework/integration/ip/config/TcpConnectionFactoryFactoryBean.java index 89a259050c..863ebdc83d 100644 --- a/spring-integration-ip/src/main/java/org/springframework/integration/ip/config/TcpConnectionFactoryFactoryBean.java +++ b/spring-integration-ip/src/main/java/org/springframework/integration/ip/config/TcpConnectionFactoryFactoryBean.java @@ -183,7 +183,14 @@ public class TcpConnectionFactoryFactoryBean extends AbstractFactoryBean + + diff --git a/spring-integration-ip/src/test/java/org/springframework/integration/ip/config/ParserUnitTests.java b/spring-integration-ip/src/test/java/org/springframework/integration/ip/config/ParserUnitTests.java index d18b25ccb9..e26eed4632 100644 --- a/spring-integration-ip/src/test/java/org/springframework/integration/ip/config/ParserUnitTests.java +++ b/spring-integration-ip/src/test/java/org/springframework/integration/ip/config/ParserUnitTests.java @@ -29,7 +29,6 @@ import java.util.Set; import org.junit.Test; import org.junit.runner.RunWith; - import org.springframework.beans.DirectFieldAccessor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; @@ -52,6 +51,7 @@ import org.springframework.integration.ip.tcp.connection.TcpNetServerConnectionF import org.springframework.integration.ip.tcp.connection.TcpNioClientConnectionFactory; import org.springframework.integration.ip.tcp.connection.TcpNioServerConnectionFactory; import org.springframework.integration.ip.tcp.connection.support.DefaultTcpNetSSLSocketFactorySupport; +import org.springframework.integration.ip.tcp.connection.support.DefaultTcpNioSSLConnectionSupport; import org.springframework.integration.ip.tcp.connection.support.TcpSocketFactorySupport; import org.springframework.integration.ip.tcp.connection.support.TcpSocketSupport; import org.springframework.integration.ip.udp.DatagramPacketMessageMapper; @@ -166,6 +166,9 @@ public class ParserUnitTests { @Autowired AbstractConnectionFactory cfS1; + @Autowired + AbstractConnectionFactory cfS1Nio; + @Autowired AbstractConnectionFactory cfS2; @@ -278,7 +281,19 @@ public class ParserUnitTests { assertEquals(124, tcpIn.getPhase()); assertTrue((Boolean) TestUtils.getPropertyValue( TestUtils.getPropertyValue(cfS1, "mapper"), "applySequence")); - assertTrue(TestUtils.getPropertyValue(cfS1, "tcpSocketFactorySupport") instanceof DefaultTcpNetSSLSocketFactorySupport); + Object socketSupport = TestUtils.getPropertyValue(cfS1, "tcpSocketFactorySupport"); + assertTrue(socketSupport instanceof DefaultTcpNetSSLSocketFactorySupport); + assertNotNull(TestUtils.getPropertyValue(socketSupport, "sslContext")); + } + + @Test + public void testInTcpNioSSLDefaultConfig() { + assertFalse(cfS1Nio.isLookupHost()); + assertTrue((Boolean) TestUtils.getPropertyValue( + TestUtils.getPropertyValue(cfS1Nio, "mapper"), "applySequence")); + Object connectionSupport = TestUtils.getPropertyValue(cfS1Nio, "tcpNioConnectionSupport"); + assertTrue(connectionSupport instanceof DefaultTcpNioSSLConnectionSupport); + assertNotNull(TestUtils.getPropertyValue(connectionSupport, "sslContext")); } @Test