You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2018/05/18 09:06:05 UTC

[directory-ldap-api] branch master updated: Migrated to commons-pool 2.5.0

This is an automated email from the ASF dual-hosted git repository.

elecharny pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/directory-ldap-api.git


The following commit(s) were added to refs/heads/master by this push:
     new c895bd2  Migrated to commons-pool 2.5.0
c895bd2 is described below

commit c895bd2d4000049be550a71dd512d1fc3e815c07
Author: Emmanuel Lécharny <el...@symas.com>
AuthorDate: Fri May 18 11:06:01 2018 +0200

    Migrated to commons-pool 2.5.0
---
 .../api/osgi/ApiLdapClientApiOsgiTest.java         |  8 +++----
 ldap/client/api/pom.xml                            |  8 +++----
 .../api/AbstractPoolableLdapConnectionFactory.java | 26 ++++++++++++----------
 .../ldap/client/api/LdapConnectionPool.java        | 19 +++++++---------
 .../ValidatingPoolableLdapConnectionFactory.java   | 17 +++++++++-----
 ...alidatingPoolableLdapConnectionFactoryTest.java |  2 +-
 pom.xml                                            |  6 ++---
 7 files changed, 46 insertions(+), 40 deletions(-)

diff --git a/integ-osgi/src/test/java/org/apache/directory/api/osgi/ApiLdapClientApiOsgiTest.java b/integ-osgi/src/test/java/org/apache/directory/api/osgi/ApiLdapClientApiOsgiTest.java
index b722ee8..bbcd73b 100644
--- a/integ-osgi/src/test/java/org/apache/directory/api/osgi/ApiLdapClientApiOsgiTest.java
+++ b/integ-osgi/src/test/java/org/apache/directory/api/osgi/ApiLdapClientApiOsgiTest.java
@@ -20,8 +20,8 @@
 package org.apache.directory.api.osgi;
 
 
-import org.apache.commons.pool.PoolableObjectFactory;
-import org.apache.commons.pool.impl.GenericObjectPool.Config;
+import org.apache.commons.pool2.PooledObjectFactory;
+import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
 import org.apache.directory.ldap.client.api.DefaultPoolableLdapConnectionFactory;
 import org.apache.directory.ldap.client.api.Krb5LoginConfiguration;
 import org.apache.directory.ldap.client.api.LdapConnection;
@@ -56,9 +56,9 @@ public class ApiLdapClientApiOsgiTest extends ApiOsgiTestBase
         FilterBuilder.and( FilterBuilder.not( FilterBuilder.contains( "cn", "a", "b" ) ) ).toString();
 
         // Test for DIRAPI-239
-        PoolableObjectFactory<LdapConnection> factory = new DefaultPoolableLdapConnectionFactory(
+        PooledObjectFactory<LdapConnection> factory = new DefaultPoolableLdapConnectionFactory(
             new LdapConnectionConfig() );
-        Config config = new Config();
+        GenericObjectPoolConfig config = new GenericObjectPoolConfig();
         LdapConnectionPool ldapConnectionPool = new LdapConnectionPool( factory, config );
         ldapConnectionPool.getLdapApiService();
         ldapConnectionPool.getTestOnBorrow();
diff --git a/ldap/client/api/pom.xml b/ldap/client/api/pom.xml
index 7a32f50..69bdeae 100644
--- a/ldap/client/api/pom.xml
+++ b/ldap/client/api/pom.xml
@@ -74,8 +74,8 @@
     </dependency>
 
     <dependency>
-      <groupId>commons-pool</groupId>
-      <artifactId>commons-pool</artifactId>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-pool2</artifactId>
     </dependency>
    
     <dependency>
@@ -146,8 +146,8 @@
               org.apache.directory.ldap.client.template.exception;version=${project.version};-noimport:=true
             </Export-Package>
             <Import-Package>
-              org.apache.commons.pool;version=${commons.pool.version},
-              org.apache.commons.pool.impl;version=${commons.pool.version},
+              org.apache.commons.pool2;version=${commons.pool.version},
+              org.apache.commons.pool2.impl;version=${commons.pool.version},
               org.apache.directory.api.asn1;version=${project.version},
               org.apache.directory.api.asn1.util;version=${project.version},
               org.apache.directory.api.i18n;version=${project.version},
diff --git a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/AbstractPoolableLdapConnectionFactory.java b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/AbstractPoolableLdapConnectionFactory.java
index acebc44..542b616 100644
--- a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/AbstractPoolableLdapConnectionFactory.java
+++ b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/AbstractPoolableLdapConnectionFactory.java
@@ -23,7 +23,9 @@ package org.apache.directory.ldap.client.api;
 
 import java.lang.reflect.Constructor;
 
-import org.apache.commons.pool.PoolableObjectFactory;
+import org.apache.commons.pool2.PooledObject;
+import org.apache.commons.pool2.PooledObjectFactory;
+import org.apache.commons.pool2.impl.DefaultPooledObject;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.model.exception.LdapException;
 import org.slf4j.Logger;
@@ -35,7 +37,7 @@ import org.slf4j.LoggerFactory;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public abstract class AbstractPoolableLdapConnectionFactory implements PoolableObjectFactory<LdapConnection>
+public abstract class AbstractPoolableLdapConnectionFactory implements PooledObjectFactory<LdapConnection>
 {
     /** This class logger */
     private static final Logger LOG = LoggerFactory.getLogger( AbstractPoolableLdapConnectionFactory.class );
@@ -52,21 +54,21 @@ public abstract class AbstractPoolableLdapConnectionFactory implements PoolableO
      * There is nothing to do to activate a connection.
      */
     @Override
-    public void activateObject( LdapConnection connection ) throws LdapException
+    public void activateObject( PooledObject<LdapConnection> connection ) throws LdapException
     {
         if ( LOG.isDebugEnabled() )
         {
             LOG.debug( "Activating {}", connection );
         }
         
-        if ( !connection.isConnected() || !connection.isAuthenticated() )
+        if ( !connection.getObject().isConnected() || !connection.getObject().isAuthenticated() )
         {
             if ( LOG.isDebugEnabled() )
             {
                 LOG.debug( "rebind due to connection dropped on {}", connection );
             }
             
-            connectionFactory.bindConnection( connection );
+            connectionFactory.bindConnection( connection.getObject() );
         }
     }
 
@@ -78,7 +80,7 @@ public abstract class AbstractPoolableLdapConnectionFactory implements PoolableO
      * of teh underlying protocol.
      */
     @Override
-    public void destroyObject( LdapConnection connection ) throws LdapException
+    public void destroyObject( PooledObject<LdapConnection> connection ) throws LdapException
     {
         if ( LOG.isDebugEnabled() )
         {
@@ -89,7 +91,7 @@ public abstract class AbstractPoolableLdapConnectionFactory implements PoolableO
         {
             // https://tools.ietf.org/html/rfc2251#section-4.3
             // unbind closes the connection so no need to close
-            connection.unBind();
+            connection.getObject().unBind();
         }
         catch ( LdapException e )
         {
@@ -122,14 +124,14 @@ public abstract class AbstractPoolableLdapConnectionFactory implements PoolableO
      * @throws LdapException If unable to connect.
      */
     @Override
-    public LdapConnection makeObject() throws LdapException
+    public PooledObject<LdapConnection> makeObject() throws LdapException
     {
         if ( LOG.isDebugEnabled() )
         {
             LOG.debug( "Creating a LDAP connection" );
         }
         
-        return connectionFactory.newLdapConnection();
+        return new DefaultPooledObject<>( connectionFactory.newLdapConnection() );
     }
 
 
@@ -159,7 +161,7 @@ public abstract class AbstractPoolableLdapConnectionFactory implements PoolableO
      * @throws LdapException If unable to reconfigure and rebind.
      */
     @Override
-    public void passivateObject( LdapConnection connection ) throws LdapException
+    public void passivateObject( PooledObject<LdapConnection> connection ) throws LdapException
     {
         if ( LOG.isDebugEnabled() )
         {
@@ -194,13 +196,13 @@ public abstract class AbstractPoolableLdapConnectionFactory implements PoolableO
      * Validating a connection is done by checking the connection status.
      */
     @Override
-    public boolean validateObject( LdapConnection connection )
+    public boolean validateObject( PooledObject<LdapConnection> connection )
     {
         if ( LOG.isDebugEnabled() )
         {
             LOG.debug( "Validating {}", connection );
         }
         
-        return validator.validate( connection );
+        return validator.validate( connection.getObject() );
     }
 }
diff --git a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapConnectionPool.java b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapConnectionPool.java
index 442f5cc..abc9b14 100644
--- a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapConnectionPool.java
+++ b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapConnectionPool.java
@@ -21,8 +21,9 @@
 package org.apache.directory.ldap.client.api;
 
 
-import org.apache.commons.pool.PoolableObjectFactory;
-import org.apache.commons.pool.impl.GenericObjectPool;
+import org.apache.commons.pool2.PooledObjectFactory;
+import org.apache.commons.pool2.impl.GenericObjectPool;
+import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.model.exception.LdapException;
 import org.slf4j.Logger;
@@ -41,7 +42,7 @@ public class LdapConnectionPool extends GenericObjectPool<LdapConnection>
 {
     private static final Logger LOG = LoggerFactory.getLogger( LdapConnectionPool.class );
 
-    private PoolableObjectFactory<LdapConnection> factory;
+    private PooledObjectFactory<LdapConnection> factory;
 
 
     /**
@@ -67,7 +68,7 @@ public class LdapConnectionPool extends GenericObjectPool<LdapConnection>
      * @param poolConfig The pool configuration
      */
     public LdapConnectionPool( LdapConnectionConfig connectionConfig,
-        LdapApiService apiService, long timeout, Config poolConfig )
+        LdapApiService apiService, long timeout, GenericObjectPoolConfig poolConfig )
     {
         this( newPoolableConnectionFactory( connectionConfig, apiService, timeout ), poolConfig );
     }
@@ -78,7 +79,7 @@ public class LdapConnectionPool extends GenericObjectPool<LdapConnection>
      *
      * @param factory The LDAP connection factory
      */
-    public LdapConnectionPool( PoolableObjectFactory<LdapConnection> factory )
+    public LdapConnectionPool( PooledObjectFactory<LdapConnection> factory )
     {
         this( factory, null );
     }
@@ -90,9 +91,9 @@ public class LdapConnectionPool extends GenericObjectPool<LdapConnection>
      * @param factory The LDAP connection factory
      * @param poolConfig The pool configuration
      */
-    public LdapConnectionPool( PoolableObjectFactory<LdapConnection> factory, Config poolConfig )
+    public LdapConnectionPool( PooledObjectFactory<LdapConnection> factory, GenericObjectPoolConfig poolConfig )
     {
-        super( factory, poolConfig == null ? new Config() : poolConfig );
+        super( factory, poolConfig == null ? new GenericObjectPoolConfig() : poolConfig );
         this.factory = factory;
     }
 
@@ -173,10 +174,6 @@ public class LdapConnectionPool extends GenericObjectPool<LdapConnection>
                 LOG.trace( "returned connection {}", connection );
             }
         }
-        catch ( LdapException e )
-        {
-            throw e;
-        }
         catch ( Exception e )
         {
             // wrap in runtime, but this should NEVER happen as it only throws 
diff --git a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/ValidatingPoolableLdapConnectionFactory.java b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/ValidatingPoolableLdapConnectionFactory.java
index b75114e..8f43259 100644
--- a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/ValidatingPoolableLdapConnectionFactory.java
+++ b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/ValidatingPoolableLdapConnectionFactory.java
@@ -21,6 +21,8 @@
 package org.apache.directory.ldap.client.api;
 
 
+import org.apache.commons.pool2.PooledObject;
+import org.apache.commons.pool2.impl.DefaultPooledObject;
 import org.apache.directory.api.asn1.util.Oid;
 import org.apache.directory.api.ldap.model.exception.LdapException;
 import org.apache.directory.api.ldap.model.message.BindRequest;
@@ -109,14 +111,16 @@ public class ValidatingPoolableLdapConnectionFactory extends AbstractPoolableLda
      * There is nothing to do to activate a connection.
      */
     @Override
-    public void activateObject( LdapConnection connection ) throws LdapException
+    public void activateObject( PooledObject<LdapConnection> pooledObject ) throws LdapException
     {
+        LdapConnection connection = pooledObject.getObject();
+        
         if ( LOG.isDebugEnabled() )
         {
             LOG.debug( "Activating {}", connection );
         }
         
-        super.activateObject( connection );
+        super.activateObject( pooledObject );
 
         // clear the monitors
         ( ( MonitoringLdapConnection ) connection ).resetMonitors();
@@ -132,14 +136,14 @@ public class ValidatingPoolableLdapConnectionFactory extends AbstractPoolableLda
      * @throws LdapException If unable to connect.
      */
     @Override
-    public MonitoringLdapConnection makeObject() throws LdapException
+    public PooledObject<LdapConnection> makeObject() throws LdapException
     {
         if ( LOG.isDebugEnabled() )
         {
             LOG.debug( "Creating a LDAP connection" );
         }
         
-        return new MonitoringLdapConnection( connectionFactory.newLdapConnection() );
+        return new DefaultPooledObject<LdapConnection>( new MonitoringLdapConnection( connectionFactory.newLdapConnection() ) );
     }
 
 
@@ -152,8 +156,10 @@ public class ValidatingPoolableLdapConnectionFactory extends AbstractPoolableLda
      * @throws LdapException If unable to reconfigure and rebind.
      */
     @Override
-    public void passivateObject( LdapConnection connection ) throws LdapException
+    public void passivateObject( PooledObject<LdapConnection> pooledObject ) throws LdapException
     {
+        LdapConnection connection = pooledObject.getObject();
+
         if ( LOG.isDebugEnabled() )
         {
             LOG.debug( "Passivating {}", connection );
@@ -169,6 +175,7 @@ public class ValidatingPoolableLdapConnectionFactory extends AbstractPoolableLda
             
             connectionFactory.bindConnection( connection );
         }
+        
         if ( ( ( MonitoringLdapConnection ) connection ).startTlsCalled() )
         {
             if ( LOG.isDebugEnabled() )
diff --git a/ldap/client/api/src/test/java/org/apache/directory/ldap/client/api/ValidatingPoolableLdapConnectionFactoryTest.java b/ldap/client/api/src/test/java/org/apache/directory/ldap/client/api/ValidatingPoolableLdapConnectionFactoryTest.java
index 3b2ab17..a812833 100755
--- a/ldap/client/api/src/test/java/org/apache/directory/ldap/client/api/ValidatingPoolableLdapConnectionFactoryTest.java
+++ b/ldap/client/api/src/test/java/org/apache/directory/ldap/client/api/ValidatingPoolableLdapConnectionFactoryTest.java
@@ -503,7 +503,7 @@ public class ValidatingPoolableLdapConnectionFactoryTest
             poolableFactory.setValidator( validator );
 
             pool = new LdapConnectionPool( poolableFactory );
-            pool.setMaxActive( 1 );
+            pool.setMaxTotal( 1 );
             pool.setTestOnBorrow( true );
             pool.setTestOnReturn( true );
         }
diff --git a/pom.xml b/pom.xml
index 798f0ee..51b5423 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,7 +49,7 @@
     <commons.codec.version>1.11</commons.codec.version>
     <commons.collections.version>3.2.2</commons.collections.version>
     <commons.lang.version>2.6</commons.lang.version>
-    <commons.pool.version>1.6</commons.pool.version>
+    <commons.pool.version>2.5.0</commons.pool.version>
     <dom4j.version>1.6.1</dom4j.version>
     <findbugs.annotations.version>1.0.0</findbugs.annotations.version>
     <forbiddenapis.version>2.2</forbiddenapis.version>
@@ -484,8 +484,8 @@
       </dependency>
 
       <dependency>
-        <groupId>commons-pool</groupId>
-        <artifactId>commons-pool</artifactId>
+        <groupId>org.apache.commons</groupId>
+        <artifactId>commons-pool2</artifactId>
         <version>${commons.pool.version}</version>
       </dependency>
 

-- 
To stop receiving notification emails like this one, please contact
elecharny@apache.org.