From 3f7ddbf313aaabbfba4650cb2036cb41e51a9bde Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Thu, 18 Apr 2013 11:37:28 +0000
Subject: [PATCH] Fix OPENDJ-838: Add ConnectionFactory.close() method to facilitate resource cleanup after application exit

---
 opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/Connections.java |   40 ++++++++++++++++++++++++++++++++++++----
 1 files changed, 36 insertions(+), 4 deletions(-)

diff --git a/opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/Connections.java b/opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/Connections.java
index deea05a..42f31b2 100644
--- a/opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/Connections.java
+++ b/opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/Connections.java
@@ -386,6 +386,11 @@
         return new ConnectionFactory() {
 
             @Override
+            public void close() {
+                factory.close();
+            }
+
+            @Override
             public Connection getConnection() throws ErrorResultException {
                 return factory.getConnection();
             }
@@ -396,9 +401,6 @@
                 return factory.getConnectionAsync(handler);
             }
 
-            /**
-             * {@inheritDoc}
-             */
             @Override
             public String toString() {
                 return name;
@@ -483,7 +485,7 @@
      * @return An uncloseable view of the provided connection.
      */
     public static Connection uncloseable(Connection connection) {
-        return new AbstractConnectionWrapper(connection) {
+        return new AbstractConnectionWrapper<Connection>(connection) {
             @Override
             public void close() {
                 // Do nothing.
@@ -496,6 +498,36 @@
         };
     }
 
+    /**
+     * Returns an uncloseable view of the provided connection factory. Attempts
+     * to call {@link ConnectionFactory#close()} will be ignored.
+     *
+     * @param factory
+     *            The connection factory whose {@code close} method is to be
+     *            disabled.
+     * @return An uncloseable view of the provided connection factory.
+     */
+    public static ConnectionFactory uncloseable(final ConnectionFactory factory) {
+        return new ConnectionFactory() {
+
+            @Override
+            public FutureResult<Connection> getConnectionAsync(
+                    ResultHandler<? super Connection> handler) {
+                return factory.getConnectionAsync(handler);
+            }
+
+            @Override
+            public Connection getConnection() throws ErrorResultException {
+                return factory.getConnection();
+            }
+
+            @Override
+            public void close() {
+                // Do nothing.
+            }
+        };
+    }
+
     // Prevent instantiation.
     private Connections() {
         // Do nothing.

--
Gitblit v1.10.0