From f51e4456baf7d5538f8d5e06dddba6aa25c67b33 Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Fri, 20 Sep 2013 22:30:19 +0000
Subject: [PATCH] Backport fix OPENDJ-1121: Closing a connection after closing the connectionfactory causes NPE

---
 opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/ConnectionFactoryTestCase.java |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/ConnectionFactoryTestCase.java b/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/ConnectionFactoryTestCase.java
index 9c2ec9a..bc49974 100644
--- a/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/ConnectionFactoryTestCase.java
+++ b/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/ConnectionFactoryTestCase.java
@@ -27,7 +27,11 @@
 
 package org.forgerock.opendj.ldap;
 
+import static java.util.Arrays.asList;
 import static org.fest.assertions.Assertions.assertThat;
+import static org.forgerock.opendj.ldap.Connections.newFixedConnectionPool;
+import static org.forgerock.opendj.ldap.Connections.newHeartBeatConnectionFactory;
+import static org.forgerock.opendj.ldap.Connections.newLoadBalancer;
 import static org.forgerock.opendj.ldap.ErrorResultException.newErrorResult;
 import static org.forgerock.opendj.ldap.TestCaseUtils.findFreeSocketAddress;
 import static org.forgerock.opendj.ldap.TestCaseUtils.getServerSocketAddress;
@@ -650,6 +654,24 @@
         }
     }
 
+    @Test(description = "Test for OPENDJ-1121: Closing a connection after "
+            + "closing the connection factory causes NPE")
+    public void testFactoryCloseBeforeConnectionClose() throws Exception {
+        final ConnectionFactory factory =
+                newLoadBalancer(new FailoverLoadBalancingAlgorithm(asList(newFixedConnectionPool(
+                        newHeartBeatConnectionFactory(new LDAPConnectionFactory(
+                                getServerSocketAddress())), 2))));
+        Connection conn = null;
+        try {
+            conn = factory.getConnection();
+        } finally {
+            factory.close();
+            if (conn != null) {
+                conn.close();
+            }
+        }
+    }
+
     private void waitForCondition(Callable<Boolean> condition) throws Exception {
         long timeout = System.currentTimeMillis() + TEST_TIMEOUT_MS;
         while (!condition.call()) {

--
Gitblit v1.10.0