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/02/27 03:25:08 UTC

[directory-ldap-api] branch master updated (e06d0b7 -> ba6bb8d)

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

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


    from e06d0b7  o Declared the EndTransaction extended operation for OSGi usage
     new 5bebbd5  o Used synchronized/wait/notifyAll to manage messages with simgle response o The isDone method is now implemented
     new fc948ea  Moved some messages to I18n
     new 80fe8ad  o Used syncrhonized/wait/notifyll to manage single response messages o isDone method is now implemented
     new ba6bb8d  Removed an unused thrown exception

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../java/org/apache/directory/api/i18n/I18n.java   | 1491 ++++++++++----------
 .../apache/directory/api/i18n/errors.properties    |   91 +-
 .../apache/directory/api/i18n/messages.properties  |   50 +
 .../ldap/client/api/AbstractLdapConnection.java    |    2 -
 .../ldap/client/api/LdapNetworkConnection.java     |  550 ++++++--
 .../ldap/client/api/future/AddFuture.java          |    2 +-
 .../ldap/client/api/future/BindFuture.java         |    2 +-
 .../ldap/client/api/future/CompareFuture.java      |    3 +-
 .../ldap/client/api/future/DeleteFuture.java       |    3 +-
 .../ldap/client/api/future/ExtendedFuture.java     |    2 +-
 .../ldap/client/api/future/ModifyDnFuture.java     |    3 +-
 .../ldap/client/api/future/ModifyFuture.java       |    3 +-
 ...onseFuture.java => MultipleResponseFuture.java} |    6 +-
 .../ldap/client/api/future/ResponseFuture.java     |  146 +-
 .../ldap/client/api/future/SearchFuture.java       |    2 +-
 ...sponseFuture.java => UniqueResponseFuture.java} |  104 +-
 .../api/ldap/model/cursor/AbstractCursor.java      |    3 +-
 .../api/ldap/model/cursor/EmptyCursor.java         |   18 +-
 .../api/ldap/model/cursor/ListCursor.java          |   18 +-
 .../directory/api/ldap/model/cursor/SetCursor.java |   18 +-
 .../api/ldap/model/cursor/SingletonCursor.java     |   18 +-
 .../apache/directory/api/ldap/model/name/Rdn.java  |    2 -
 .../api/ldap/model/name/DnParserTest.java          |    4 +-
 .../directory/api/ldap/model/name/RdnTest.java     |    9 +
 24 files changed, 1405 insertions(+), 1145 deletions(-)
 copy ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/{ResponseFuture.java => MultipleResponseFuture.java} (96%)
 copy ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/{ResponseFuture.java => UniqueResponseFuture.java} (73%)

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

[directory-ldap-api] 01/04: o Used synchronized/wait/notifyAll to manage messages with simgle response o The isDone method is now implemented

Posted by el...@apache.org.
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

commit 5bebbd5b2f8ab1ad6c56ba09f60cc9e766725147
Author: Emmanuel Lécharny <el...@symas.com>
AuthorDate: Tue Feb 27 04:16:40 2018 +0100

    o Used synchronized/wait/notifyAll to manage messages with simgle
    response
    o The isDone method is now implemented
---
 .../ldap/client/api/future/AddFuture.java          |   2 +-
 .../ldap/client/api/future/BindFuture.java         |   2 +-
 .../ldap/client/api/future/CompareFuture.java      |   3 +-
 .../ldap/client/api/future/DeleteFuture.java       |   3 +-
 .../ldap/client/api/future/ExtendedFuture.java     |   2 +-
 .../ldap/client/api/future/ModifyDnFuture.java     |   3 +-
 .../ldap/client/api/future/ModifyFuture.java       |   3 +-
 ...onseFuture.java => MultipleResponseFuture.java} |   6 +-
 .../ldap/client/api/future/ResponseFuture.java     | 146 +--------------------
 .../ldap/client/api/future/SearchFuture.java       |   2 +-
 ...sponseFuture.java => UniqueResponseFuture.java} | 110 ++++++++++------
 .../api/ldap/model/cursor/AbstractCursor.java      |   3 +-
 .../api/ldap/model/cursor/EmptyCursor.java         |  18 +--
 .../api/ldap/model/cursor/ListCursor.java          |  18 +--
 .../directory/api/ldap/model/cursor/SetCursor.java |  18 +--
 .../api/ldap/model/cursor/SingletonCursor.java     |  18 +--
 .../apache/directory/api/ldap/model/name/Rdn.java  |   2 -
 .../api/ldap/model/name/DnParserTest.java          |   4 +-
 .../directory/api/ldap/model/name/RdnTest.java     |   9 ++
 19 files changed, 132 insertions(+), 240 deletions(-)

diff --git a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/AddFuture.java b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/AddFuture.java
index 902b20b..2b1d30d 100644
--- a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/AddFuture.java
+++ b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/AddFuture.java
@@ -29,7 +29,7 @@ import org.apache.directory.ldap.client.api.LdapConnection;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class AddFuture extends ResponseFuture<AddResponse>
+public class AddFuture extends UniqueResponseFuture<AddResponse>
 {
     /**
      * Creates a new instance of AddFuture.
diff --git a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/BindFuture.java b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/BindFuture.java
index bad1213..e3fccfb 100644
--- a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/BindFuture.java
+++ b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/BindFuture.java
@@ -29,7 +29,7 @@ import org.apache.directory.ldap.client.api.LdapConnection;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class BindFuture extends ResponseFuture<BindResponse>
+public class BindFuture extends MultipleResponseFuture<BindResponse>
 {
     /**
      * Creates a new instance of BindFuture.
diff --git a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/CompareFuture.java b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/CompareFuture.java
index 9562c8e..6e1fba5 100644
--- a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/CompareFuture.java
+++ b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/CompareFuture.java
@@ -19,7 +19,6 @@
  */
 package org.apache.directory.ldap.client.api.future;
 
-
 import org.apache.directory.api.ldap.model.message.CompareResponse;
 import org.apache.directory.ldap.client.api.LdapConnection;
 
@@ -29,7 +28,7 @@ import org.apache.directory.ldap.client.api.LdapConnection;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class CompareFuture extends ResponseFuture<CompareResponse>
+public class CompareFuture extends UniqueResponseFuture<CompareResponse>
 {
     /**
      * Creates a new instance of CompareFuture.
diff --git a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/DeleteFuture.java b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/DeleteFuture.java
index 8043dce..4b8ad04 100644
--- a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/DeleteFuture.java
+++ b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/DeleteFuture.java
@@ -19,7 +19,6 @@
  */
 package org.apache.directory.ldap.client.api.future;
 
-
 import org.apache.directory.api.ldap.model.message.DeleteResponse;
 import org.apache.directory.ldap.client.api.LdapConnection;
 
@@ -29,7 +28,7 @@ import org.apache.directory.ldap.client.api.LdapConnection;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class DeleteFuture extends ResponseFuture<DeleteResponse>
+public class DeleteFuture extends UniqueResponseFuture<DeleteResponse>
 {
     /**
      * Creates a new instance of DeleteFuture.
diff --git a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/ExtendedFuture.java b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/ExtendedFuture.java
index 1f57518..0feacee 100644
--- a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/ExtendedFuture.java
+++ b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/ExtendedFuture.java
@@ -29,7 +29,7 @@ import org.apache.directory.ldap.client.api.LdapConnection;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class ExtendedFuture extends ResponseFuture<Response>
+public class ExtendedFuture extends MultipleResponseFuture<Response>
 {
     /**
      * Creates a new instance of ExtendedFuture.
diff --git a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/ModifyDnFuture.java b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/ModifyDnFuture.java
index f301b86..60e6921 100644
--- a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/ModifyDnFuture.java
+++ b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/ModifyDnFuture.java
@@ -19,7 +19,6 @@
  */
 package org.apache.directory.ldap.client.api.future;
 
-
 import org.apache.directory.api.ldap.model.message.ModifyDnResponse;
 import org.apache.directory.ldap.client.api.LdapConnection;
 
@@ -29,7 +28,7 @@ import org.apache.directory.ldap.client.api.LdapConnection;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class ModifyDnFuture extends ResponseFuture<ModifyDnResponse>
+public class ModifyDnFuture extends UniqueResponseFuture<ModifyDnResponse>
 {
     /**
      * Creates a new instance of ModifyDnFuture.
diff --git a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/ModifyFuture.java b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/ModifyFuture.java
index 56a386b..a1dcaf2 100644
--- a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/ModifyFuture.java
+++ b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/ModifyFuture.java
@@ -19,7 +19,6 @@
  */
 package org.apache.directory.ldap.client.api.future;
 
-
 import org.apache.directory.api.ldap.model.message.ModifyResponse;
 import org.apache.directory.ldap.client.api.LdapConnection;
 
@@ -29,7 +28,7 @@ import org.apache.directory.ldap.client.api.LdapConnection;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class ModifyFuture extends ResponseFuture<ModifyResponse>
+public class ModifyFuture extends UniqueResponseFuture<ModifyResponse>
 {
     /**
      * Creates a new instance of ModifyFuture.
diff --git a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/ResponseFuture.java b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/MultipleResponseFuture.java
similarity index 96%
copy from ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/ResponseFuture.java
copy to ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/MultipleResponseFuture.java
index 7cb2931..1d582a8 100644
--- a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/ResponseFuture.java
+++ b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/MultipleResponseFuture.java
@@ -17,12 +17,10 @@
  *   under the License.
  *
  */
-
 package org.apache.directory.ldap.client.api.future;
 
 
 import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.Future;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.TimeUnit;
 
@@ -36,7 +34,7 @@ import org.apache.directory.ldap.client.api.LdapConnection;
  * @param <R> The result type returned by this Future's <tt>get</tt> method
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class ResponseFuture<R extends Response> implements Future<Response>
+public abstract class MultipleResponseFuture<R extends Response> implements ResponseFuture<R>
 {
     /** the blocking queue holding LDAP responses */
     protected BlockingQueue<R> queue;
@@ -60,7 +58,7 @@ public class ResponseFuture<R extends Response> implements Future<Response>
      * @param connection The LdapConnection used by the request
      * @param messageId The associated message ID
      */
-    public ResponseFuture( LdapConnection connection, int messageId )
+    public MultipleResponseFuture( LdapConnection connection, int messageId )
     {
         queue = new LinkedBlockingQueue<>();
         this.messageId = messageId;
diff --git a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/ResponseFuture.java b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/ResponseFuture.java
index 7cb2931..2c8b73b 100644
--- a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/ResponseFuture.java
+++ b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/ResponseFuture.java
@@ -17,17 +17,12 @@
  *   under the License.
  *
  */
-
 package org.apache.directory.ldap.client.api.future;
 
 
-import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.Future;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.TimeUnit;
 
 import org.apache.directory.api.ldap.model.message.Response;
-import org.apache.directory.ldap.client.api.LdapConnection;
 
 
 /**
@@ -36,164 +31,33 @@ import org.apache.directory.ldap.client.api.LdapConnection;
  * @param <R> The result type returned by this Future's <tt>get</tt> method
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class ResponseFuture<R extends Response> implements Future<Response>
+public interface ResponseFuture<R extends Response> extends Future<R>
 {
-    /** the blocking queue holding LDAP responses */
-    protected BlockingQueue<R> queue;
-
-    /** flag to determine if this future is cancelled */
-    protected boolean cancelled = false;
-
-    /** If the request has been cancelled because of an exception  it will be stored here */
-    protected Throwable cause;
-
-    /** The messageID for this future */
-    protected int messageId;
-
-    /** The connection used by the request */
-    protected LdapConnection connection;
-
-
-    /**
-     * Creates a new instance of ResponseFuture.
-     *
-     * @param connection The LdapConnection used by the request
-     * @param messageId The associated message ID
-     */
-    public ResponseFuture( LdapConnection connection, int messageId )
-    {
-        queue = new LinkedBlockingQueue<>();
-        this.messageId = messageId;
-        this.connection = connection;
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public boolean cancel( boolean mayInterruptIfRunning )
-    {
-        if ( cancelled )
-        {
-            return cancelled;
-        }
-
-        // set the cancel flag first
-        cancelled = true;
-
-        // Send an abandonRequest only if this future exists
-        if ( !connection.isRequestCompleted( messageId ) )
-        {
-            connection.abandon( messageId );
-        }
-
-        // then clear the queue, cause the might be some incoming messages before this abandon request
-        // hits the server
-        queue.clear();
-
-        return cancelled;
-    }
-
-
-    /**
-     * {@inheritDoc}
-     * @throws InterruptedException if the operation has been cancelled by client
-     */
-    @Override
-    public R get() throws InterruptedException
-    {
-        return queue.take();
-    }
-
-
     /**
      * Set the associated Response in this Future
      * 
      * @param response The response to add into the Future
      * @throws InterruptedException if the operation has been cancelled by client
      */
-    public void set( R response ) throws InterruptedException
-    {
-        queue.add( response );
-    }
-
-
-    /**
-     * {@inheritDoc}
-     * @throws InterruptedException if the operation has been cancelled by client
-     */
-    @Override
-    public R get( long timeout, TimeUnit unit ) throws InterruptedException
-    {
-        return queue.poll( timeout, unit );
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public boolean isCancelled()
-    {
-        return cancelled;
-    }
-
-
-    /**
-     * This operation is not supported in this implementation of Future.
-     * 
-     * {@inheritDoc}
-     */
-    @Override
-    public boolean isDone()
-    {
-        throw new UnsupportedOperationException( "Operation not supported" );
-    }
+    void set( R response ) throws InterruptedException;
 
 
     /**
      * @return the cause
      */
-    public Throwable getCause()
-    {
-        return cause;
-    }
+    Throwable getCause();
 
 
     /**
      * Associate a cause to the ResponseFuture
      * @param cause the cause to set
      */
-    public void setCause( Throwable cause )
-    {
-        this.cause = cause;
-    }
+    void setCause( Throwable cause );
 
 
     /**
      * Cancel the Future
      *
      */
-    public void cancel()
-    {
-        // set the cancel flag first
-        cancelled = true;
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public String toString()
-    {
-        StringBuilder sb = new StringBuilder();
-
-        sb.append( "[msgId : " ).append( messageId ).append( ", " );
-        sb.append( "size : " ).append( queue.size() ).append( ", " );
-        sb.append( "Canceled :" ).append( cancelled ).append( "]" );
-
-        return sb.toString();
-    }
+    void cancel();
 }
diff --git a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/SearchFuture.java b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/SearchFuture.java
index c88d56d..b8f1e03 100644
--- a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/SearchFuture.java
+++ b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/SearchFuture.java
@@ -29,7 +29,7 @@ import org.apache.directory.ldap.client.api.LdapConnection;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class SearchFuture extends ResponseFuture<Response>
+public class SearchFuture extends MultipleResponseFuture<Response>
 {
     /**
      * Creates a new instance of SearchFuture.
diff --git a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/ResponseFuture.java b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/UniqueResponseFuture.java
similarity index 75%
copy from ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/ResponseFuture.java
copy to ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/UniqueResponseFuture.java
index 7cb2931..8bb9a7d 100644
--- a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/ResponseFuture.java
+++ b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/UniqueResponseFuture.java
@@ -17,29 +17,29 @@
  *   under the License.
  *
  */
-
 package org.apache.directory.ldap.client.api.future;
 
-
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.Future;
-import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
 
 import org.apache.directory.api.ldap.model.message.Response;
 import org.apache.directory.ldap.client.api.LdapConnection;
 
-
 /**
- * A Future implementation used in LdapConnection operations.
+ * A Future implementation used in LdapConnection operations for operations
+ * that only get one single response.
  *
  * @param <R> The result type returned by this Future's <tt>get</tt> method
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class ResponseFuture<R extends Response> implements Future<Response>
+public abstract class UniqueResponseFuture<R extends Response> implements ResponseFuture<R>
 {
-    /** the blocking queue holding LDAP responses */
-    protected BlockingQueue<R> queue;
+    /** A lock for the response */
+    private final Lock lock = new ReentrantLock();
+    
+    /** The response */
+    private R response;
 
     /** flag to determine if this future is cancelled */
     protected boolean cancelled = false;
@@ -53,16 +53,14 @@ public class ResponseFuture<R extends Response> implements Future<Response>
     /** The connection used by the request */
     protected LdapConnection connection;
 
-
     /**
-     * Creates a new instance of ResponseFuture.
+     * Creates a new instance of UniqueResponseFuture.
      *
      * @param connection The LdapConnection used by the request
      * @param messageId The associated message ID
      */
-    public ResponseFuture( LdapConnection connection, int messageId )
+    public UniqueResponseFuture( LdapConnection connection, int messageId )
     {
-        queue = new LinkedBlockingQueue<>();
         this.messageId = messageId;
         this.connection = connection;
     }
@@ -70,29 +68,14 @@ public class ResponseFuture<R extends Response> implements Future<Response>
 
     /**
      * {@inheritDoc}
+     * @throws InterruptedException if the operation has been cancelled by client
      */
     @Override
-    public boolean cancel( boolean mayInterruptIfRunning )
+    public R get() throws InterruptedException
     {
-        if ( cancelled )
-        {
-            return cancelled;
-        }
-
-        // set the cancel flag first
-        cancelled = true;
-
-        // Send an abandonRequest only if this future exists
-        if ( !connection.isRequestCompleted( messageId ) )
-        {
-            connection.abandon( messageId );
-        }
-
-        // then clear the queue, cause the might be some incoming messages before this abandon request
-        // hits the server
-        queue.clear();
-
-        return cancelled;
+        lock.wait();
+        
+        return response;
     }
 
 
@@ -101,9 +84,13 @@ public class ResponseFuture<R extends Response> implements Future<Response>
      * @throws InterruptedException if the operation has been cancelled by client
      */
     @Override
-    public R get() throws InterruptedException
+    public R get( long timeout, TimeUnit unit ) throws InterruptedException
     {
-        return queue.take();
+        long nanos = unit.toNanos( timeout );
+        
+        lock.wait( nanos / 1_000_000, ( int ) nanos );
+        
+        return response;
     }
 
 
@@ -115,18 +102,50 @@ public class ResponseFuture<R extends Response> implements Future<Response>
      */
     public void set( R response ) throws InterruptedException
     {
-        queue.add( response );
+        try 
+        {
+            lock.lock();
+            this.response = response;
+            lock.notify();
+        }
+        finally
+        {
+            lock.unlock();
+        }
     }
 
 
     /**
      * {@inheritDoc}
-     * @throws InterruptedException if the operation has been cancelled by client
      */
     @Override
-    public R get( long timeout, TimeUnit unit ) throws InterruptedException
+    public boolean cancel( boolean mayInterruptIfRunning )
     {
-        return queue.poll( timeout, unit );
+        if ( cancelled )
+        {
+            return cancelled;
+        }
+
+        // set the cancel flag first
+        cancelled = true;
+
+        // Send an abandonRequest only if this future exists
+        if ( !connection.isRequestCompleted( messageId ) )
+        {
+            connection.abandon( messageId );
+        }
+        
+        // Notify the future
+        try
+        { 
+            set( null );
+        }
+        catch ( InterruptedException ie )
+        {
+            // Nothing we can do
+        }
+
+        return cancelled;
     }
 
 
@@ -179,6 +198,16 @@ public class ResponseFuture<R extends Response> implements Future<Response>
     {
         // set the cancel flag first
         cancelled = true;
+        
+        // Notify the future
+        try
+        { 
+            set( null );
+        }
+        catch ( InterruptedException ie )
+        {
+            // Nothing we can do
+        }
     }
 
 
@@ -191,7 +220,6 @@ public class ResponseFuture<R extends Response> implements Future<Response>
         StringBuilder sb = new StringBuilder();
 
         sb.append( "[msgId : " ).append( messageId ).append( ", " );
-        sb.append( "size : " ).append( queue.size() ).append( ", " );
         sb.append( "Canceled :" ).append( cancelled ).append( "]" );
 
         return sb.toString();
diff --git a/ldap/model/src/main/java/org/apache/directory/api/ldap/model/cursor/AbstractCursor.java b/ldap/model/src/main/java/org/apache/directory/api/ldap/model/cursor/AbstractCursor.java
index 36518ec..1a6af60 100755
--- a/ldap/model/src/main/java/org/apache/directory/api/ldap/model/cursor/AbstractCursor.java
+++ b/ldap/model/src/main/java/org/apache/directory/api/ldap/model/cursor/AbstractCursor.java
@@ -55,10 +55,9 @@ public abstract class AbstractCursor<E> implements Cursor<E>
     /**
      * Check that the cursor is not closed before executing an operation.
      * 
-     * @param operation The operation we try to execute
      * @throws CursorClosedException If there is a problem during the check
      */
-    public final void checkNotClosed( String operation ) throws CursorClosedException
+    public final void checkNotClosed() throws CursorClosedException
     {
         monitor.checkNotClosed();
     }
diff --git a/ldap/model/src/main/java/org/apache/directory/api/ldap/model/cursor/EmptyCursor.java b/ldap/model/src/main/java/org/apache/directory/api/ldap/model/cursor/EmptyCursor.java
index d10217c..5030c02 100755
--- a/ldap/model/src/main/java/org/apache/directory/api/ldap/model/cursor/EmptyCursor.java
+++ b/ldap/model/src/main/java/org/apache/directory/api/ldap/model/cursor/EmptyCursor.java
@@ -70,7 +70,7 @@ public class EmptyCursor<E> extends AbstractCursor<E>
     @Override
     public void before( E element ) throws LdapException, CursorException
     {
-        checkNotClosed( "before()" );
+        checkNotClosed();
     }
 
 
@@ -80,7 +80,7 @@ public class EmptyCursor<E> extends AbstractCursor<E>
     @Override
     public void after( E element ) throws LdapException, CursorException
     {
-        checkNotClosed( "after()" );
+        checkNotClosed();
     }
 
 
@@ -90,7 +90,7 @@ public class EmptyCursor<E> extends AbstractCursor<E>
     @Override
     public void beforeFirst() throws LdapException, CursorException
     {
-        checkNotClosed( "beforeFirst()" );
+        checkNotClosed();
     }
 
 
@@ -100,7 +100,7 @@ public class EmptyCursor<E> extends AbstractCursor<E>
     @Override
     public void afterLast() throws LdapException, CursorException
     {
-        checkNotClosed( "afterLast()" );
+        checkNotClosed();
     }
 
 
@@ -110,7 +110,7 @@ public class EmptyCursor<E> extends AbstractCursor<E>
     @Override
     public boolean first() throws LdapException, CursorException
     {
-        checkNotClosed( "first()" );
+        checkNotClosed();
         return false;
     }
 
@@ -121,7 +121,7 @@ public class EmptyCursor<E> extends AbstractCursor<E>
     @Override
     public boolean last() throws LdapException, CursorException
     {
-        checkNotClosed( "last()" );
+        checkNotClosed();
         return false;
     }
 
@@ -132,7 +132,7 @@ public class EmptyCursor<E> extends AbstractCursor<E>
     @Override
     public boolean previous() throws LdapException, CursorException
     {
-        checkNotClosed( "previous()" );
+        checkNotClosed();
         return false;
     }
 
@@ -143,7 +143,7 @@ public class EmptyCursor<E> extends AbstractCursor<E>
     @Override
     public boolean next() throws LdapException, CursorException
     {
-        checkNotClosed( "next()" );
+        checkNotClosed();
         return false;
     }
 
@@ -154,7 +154,7 @@ public class EmptyCursor<E> extends AbstractCursor<E>
     @Override
     public E get() throws CursorException
     {
-        checkNotClosed( "get()" );
+        checkNotClosed();
         throw new InvalidCursorPositionException( I18n.err( I18n.ERR_02004_EMPTY_CURSOR ) );
     }
 
diff --git a/ldap/model/src/main/java/org/apache/directory/api/ldap/model/cursor/ListCursor.java b/ldap/model/src/main/java/org/apache/directory/api/ldap/model/cursor/ListCursor.java
index a364d65..39bca9e 100644
--- a/ldap/model/src/main/java/org/apache/directory/api/ldap/model/cursor/ListCursor.java
+++ b/ldap/model/src/main/java/org/apache/directory/api/ldap/model/cursor/ListCursor.java
@@ -251,7 +251,7 @@ public class ListCursor<E> extends AbstractCursor<E>
     @Override
     public void before( E element ) throws LdapException, CursorException
     {
-        checkNotClosed( "before()" );
+        checkNotClosed();
 
         if ( comparator == null )
         {
@@ -285,7 +285,7 @@ public class ListCursor<E> extends AbstractCursor<E>
     @Override
     public void after( E element ) throws LdapException, CursorException
     {
-        checkNotClosed( "after()" );
+        checkNotClosed();
 
         if ( comparator == null )
         {
@@ -319,7 +319,7 @@ public class ListCursor<E> extends AbstractCursor<E>
     @Override
     public void beforeFirst() throws LdapException, CursorException
     {
-        checkNotClosed( "beforeFirst()" );
+        checkNotClosed();
         this.index = -1;
     }
 
@@ -330,7 +330,7 @@ public class ListCursor<E> extends AbstractCursor<E>
     @Override
     public void afterLast() throws LdapException, CursorException
     {
-        checkNotClosed( "afterLast()" );
+        checkNotClosed();
         this.index = end;
     }
 
@@ -341,7 +341,7 @@ public class ListCursor<E> extends AbstractCursor<E>
     @Override
     public boolean first() throws LdapException, CursorException
     {
-        checkNotClosed( "first()" );
+        checkNotClosed();
 
         if ( !list.isEmpty() )
         {
@@ -360,7 +360,7 @@ public class ListCursor<E> extends AbstractCursor<E>
     @Override
     public boolean last() throws LdapException, CursorException
     {
-        checkNotClosed( "last()" );
+        checkNotClosed();
 
         if ( !list.isEmpty() )
         {
@@ -419,7 +419,7 @@ public class ListCursor<E> extends AbstractCursor<E>
     @Override
     public boolean previous() throws LdapException, CursorException
     {
-        checkNotClosed( "previous()" );
+        checkNotClosed();
 
         // if parked at -1 we cannot go backwards
         if ( index == -1 )
@@ -458,7 +458,7 @@ public class ListCursor<E> extends AbstractCursor<E>
     @Override
     public boolean next() throws LdapException, CursorException
     {
-        checkNotClosed( "next()" );
+        checkNotClosed();
 
         // if parked at -1 we advance to the start index and return true
         if ( !list.isEmpty() && ( index == -1 ) )
@@ -499,7 +499,7 @@ public class ListCursor<E> extends AbstractCursor<E>
     @Override
     public E get() throws CursorException
     {
-        checkNotClosed( "get()" );
+        checkNotClosed();
 
         if ( ( index < start ) || ( index >= end ) )
         {
diff --git a/ldap/model/src/main/java/org/apache/directory/api/ldap/model/cursor/SetCursor.java b/ldap/model/src/main/java/org/apache/directory/api/ldap/model/cursor/SetCursor.java
index e907893..24695bb 100644
--- a/ldap/model/src/main/java/org/apache/directory/api/ldap/model/cursor/SetCursor.java
+++ b/ldap/model/src/main/java/org/apache/directory/api/ldap/model/cursor/SetCursor.java
@@ -141,7 +141,7 @@ public class SetCursor<E> extends AbstractCursor<E>
     @Override
     public void before( E element ) throws LdapException, CursorException
     {
-        checkNotClosed( "before()" );
+        checkNotClosed();
 
         if ( comparator == null )
         {
@@ -175,7 +175,7 @@ public class SetCursor<E> extends AbstractCursor<E>
     @Override
     public void after( E element ) throws LdapException, CursorException
     {
-        checkNotClosed( "after()" );
+        checkNotClosed();
 
         if ( comparator == null )
         {
@@ -209,7 +209,7 @@ public class SetCursor<E> extends AbstractCursor<E>
     @Override
     public void beforeFirst() throws LdapException, CursorException
     {
-        checkNotClosed( "beforeFirst()" );
+        checkNotClosed();
         this.index = -1;
     }
 
@@ -220,7 +220,7 @@ public class SetCursor<E> extends AbstractCursor<E>
     @Override
     public void afterLast() throws LdapException, CursorException
     {
-        checkNotClosed( "afterLast()" );
+        checkNotClosed();
         this.index = set.length;
     }
 
@@ -231,7 +231,7 @@ public class SetCursor<E> extends AbstractCursor<E>
     @Override
     public boolean first() throws LdapException, CursorException
     {
-        checkNotClosed( "first()" );
+        checkNotClosed();
 
         if ( set.length > 0 )
         {
@@ -250,7 +250,7 @@ public class SetCursor<E> extends AbstractCursor<E>
     @Override
     public boolean last() throws LdapException, CursorException
     {
-        checkNotClosed( "last()" );
+        checkNotClosed();
 
         if ( set.length > 0 )
         {
@@ -309,7 +309,7 @@ public class SetCursor<E> extends AbstractCursor<E>
     @Override
     public boolean previous() throws LdapException, CursorException
     {
-        checkNotClosed( "previous()" );
+        checkNotClosed();
 
         // if parked at -1 we cannot go backwards
         if ( index == -1 )
@@ -348,7 +348,7 @@ public class SetCursor<E> extends AbstractCursor<E>
     @Override
     public boolean next() throws LdapException, CursorException
     {
-        checkNotClosed( "next()" );
+        checkNotClosed();
 
         // if parked at -1 we advance to the start index and return true
         if ( ( set.length > 0 ) && ( index == -1 ) )
@@ -389,7 +389,7 @@ public class SetCursor<E> extends AbstractCursor<E>
     @Override
     public E get() throws CursorException
     {
-        checkNotClosed( "get()" );
+        checkNotClosed();
 
         if ( ( index < 0 ) || ( index >= set.length ) )
         {
diff --git a/ldap/model/src/main/java/org/apache/directory/api/ldap/model/cursor/SingletonCursor.java b/ldap/model/src/main/java/org/apache/directory/api/ldap/model/cursor/SingletonCursor.java
index ae618a4..deb8d0e 100755
--- a/ldap/model/src/main/java/org/apache/directory/api/ldap/model/cursor/SingletonCursor.java
+++ b/ldap/model/src/main/java/org/apache/directory/api/ldap/model/cursor/SingletonCursor.java
@@ -105,7 +105,7 @@ public class SingletonCursor<E> extends AbstractCursor<E>
     @Override
     public void before( E element ) throws LdapException, CursorException
     {
-        checkNotClosed( "before()" );
+        checkNotClosed();
 
         if ( comparator == null )
         {
@@ -131,7 +131,7 @@ public class SingletonCursor<E> extends AbstractCursor<E>
     @Override
 public void after( E element ) throws LdapException, CursorException
     {
-        checkNotClosed( "after()" );
+        checkNotClosed();
 
         if ( comparator == null )
         {
@@ -157,7 +157,7 @@ public void after( E element ) throws LdapException, CursorException
     @Override
     public void beforeFirst() throws LdapException, CursorException
     {
-        checkNotClosed( "beforeFirst" );
+        checkNotClosed();
         beforeFirst = true;
         afterLast = false;
         onSingleton = false;
@@ -170,7 +170,7 @@ public void after( E element ) throws LdapException, CursorException
     @Override
     public void afterLast() throws LdapException, CursorException
     {
-        checkNotClosed( "afterLast" );
+        checkNotClosed();
         beforeFirst = false;
         afterLast = true;
         onSingleton = false;
@@ -183,7 +183,7 @@ public void after( E element ) throws LdapException, CursorException
     @Override
     public boolean first() throws LdapException, CursorException
     {
-        checkNotClosed( "first" );
+        checkNotClosed();
         beforeFirst = false;
         onSingleton = true;
         afterLast = false;
@@ -198,7 +198,7 @@ public void after( E element ) throws LdapException, CursorException
     @Override
     public boolean last() throws LdapException, CursorException
     {
-        checkNotClosed( "last" );
+        checkNotClosed();
         beforeFirst = false;
         onSingleton = true;
         afterLast = false;
@@ -253,7 +253,7 @@ public void after( E element ) throws LdapException, CursorException
     @Override
     public boolean previous() throws LdapException, CursorException
     {
-        checkNotClosed( "previous" );
+        checkNotClosed();
 
         if ( beforeFirst )
         {
@@ -284,7 +284,7 @@ public void after( E element ) throws LdapException, CursorException
     @Override
     public boolean next() throws LdapException, CursorException
     {
-        checkNotClosed( "next" );
+        checkNotClosed();
 
         if ( beforeFirst )
         {
@@ -315,7 +315,7 @@ public void after( E element ) throws LdapException, CursorException
     @Override
     public E get() throws CursorException
     {
-        checkNotClosed( "get" );
+        checkNotClosed();
 
         if ( onSingleton )
         {
diff --git a/ldap/model/src/main/java/org/apache/directory/api/ldap/model/name/Rdn.java b/ldap/model/src/main/java/org/apache/directory/api/ldap/model/name/Rdn.java
index 5362c03..e30464a 100644
--- a/ldap/model/src/main/java/org/apache/directory/api/ldap/model/name/Rdn.java
+++ b/ldap/model/src/main/java/org/apache/directory/api/ldap/model/name/Rdn.java
@@ -1410,8 +1410,6 @@ public class Rdn implements Cloneable, Externalizable, Iterable<Ava>, Comparable
                                     bytes[pos++] = '#';
                                     break;
                                 }
-                            case '=':
-                                throw new IllegalArgumentException( I18n.err( I18n.ERR_04215 ) );
 
                             case ' ':
                                 if ( ( i == 0 ) || ( i == chars.length - 1 ) )
diff --git a/ldap/model/src/test/java/org/apache/directory/api/ldap/model/name/DnParserTest.java b/ldap/model/src/test/java/org/apache/directory/api/ldap/model/name/DnParserTest.java
index fb323f1..c88be37 100644
--- a/ldap/model/src/test/java/org/apache/directory/api/ldap/model/name/DnParserTest.java
+++ b/ldap/model/src/test/java/org/apache/directory/api/ldap/model/name/DnParserTest.java
@@ -674,9 +674,9 @@ public class DnParserTest
 
     
     @Test
-    public void testSameAttributeInDn() throws LdapInvalidDnException
+    public void testEqualInRdn() throws LdapInvalidDnException
     {
-        //Dn dn = new Dn( "l=eu + l=de + l=Berlin + l=Brandenburger Tor,dc=example,dc=org" );
+        Dn dn = new Dn( "uid=nghZwwtHgxgyvVbTQCYyeY\\+O4cc=,dc=example,dc=com" );
     }
     
     
diff --git a/ldap/model/src/test/java/org/apache/directory/api/ldap/model/name/RdnTest.java b/ldap/model/src/test/java/org/apache/directory/api/ldap/model/name/RdnTest.java
index f57e0a1..7899c40 100644
--- a/ldap/model/src/test/java/org/apache/directory/api/ldap/model/name/RdnTest.java
+++ b/ldap/model/src/test/java/org/apache/directory/api/ldap/model/name/RdnTest.java
@@ -764,6 +764,15 @@ public class RdnTest
 
 
     @Test
+    public void testUnescapeValueStringWithEqualInTheMiddle()
+    {
+        String res = ( String ) Rdn.unescapeValue( "a=b" );
+
+        assertEquals( "a=b", res );
+    }
+
+
+    @Test
     public void testEscapeValueString()
     {
         String res = Rdn.escapeValue( Strings.getBytesUtf8( "azerty" ) );

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

[directory-ldap-api] 04/04: Removed an unused thrown exception

Posted by el...@apache.org.
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

commit ba6bb8d6d1170f538a9d82ff3f655fbf73688674
Author: Emmanuel Lécharny <el...@symas.com>
AuthorDate: Tue Feb 27 04:19:16 2018 +0100

    Removed an unused thrown exception
---
 .../org/apache/directory/ldap/client/api/AbstractLdapConnection.java    | 2 --
 1 file changed, 2 deletions(-)

diff --git a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/AbstractLdapConnection.java b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/AbstractLdapConnection.java
index 2f33cf4..d64d9ad 100644
--- a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/AbstractLdapConnection.java
+++ b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/AbstractLdapConnection.java
@@ -141,10 +141,8 @@ public abstract class AbstractLdapConnection extends IoHandlerAdapter implements
      * @param saslMechanism The SASL mechanism to use
      * @param controls The controls to send
      * @return The created BindRequest
-     * @throws LdapException If the creation failed
      */
     protected BindRequest createBindRequest( String name, byte[] credentials, String saslMechanism, Control... controls )
-        throws LdapException
     {
         // Set the new messageId
         BindRequest bindRequest = new BindRequestImpl();

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

[directory-ldap-api] 03/04: o Used syncrhonized/wait/notifyll to manage single response messages o isDone method is now implemented

Posted by el...@apache.org.
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

commit 80fe8ad1ffc89e290299ba663bf75231f1dfc4f8
Author: Emmanuel Lécharny <el...@symas.com>
AuthorDate: Tue Feb 27 04:18:32 2018 +0100

    o Used syncrhonized/wait/notifyll to manage single response messages
    o isDone method is now implemented
---
 .../client/api/future/UniqueResponseFuture.java    | 40 +++++++++-------------
 1 file changed, 17 insertions(+), 23 deletions(-)

diff --git a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/UniqueResponseFuture.java b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/UniqueResponseFuture.java
index 8bb9a7d..01d196a 100644
--- a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/UniqueResponseFuture.java
+++ b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/future/UniqueResponseFuture.java
@@ -20,8 +20,6 @@
 package org.apache.directory.ldap.client.api.future;
 
 import java.util.concurrent.TimeUnit;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
 
 import org.apache.directory.api.ldap.model.message.Response;
 import org.apache.directory.ldap.client.api.LdapConnection;
@@ -35,9 +33,6 @@ import org.apache.directory.ldap.client.api.LdapConnection;
  */
 public abstract class UniqueResponseFuture<R extends Response> implements ResponseFuture<R>
 {
-    /** A lock for the response */
-    private final Lock lock = new ReentrantLock();
-    
     /** The response */
     private R response;
 
@@ -52,6 +47,9 @@ public abstract class UniqueResponseFuture<R extends Response> implements Respon
 
     /** The connection used by the request */
     protected LdapConnection connection;
+    
+    /** A flag set to TRUE when the response has been received */
+    private volatile boolean done = false;
 
     /**
      * Creates a new instance of UniqueResponseFuture.
@@ -71,9 +69,12 @@ public abstract class UniqueResponseFuture<R extends Response> implements Respon
      * @throws InterruptedException if the operation has been cancelled by client
      */
     @Override
-    public R get() throws InterruptedException
+    public synchronized R get() throws InterruptedException
     {
-        lock.wait();
+        while ( !done && !cancelled )
+        {
+            wait();
+        }
         
         return response;
     }
@@ -84,11 +85,9 @@ public abstract class UniqueResponseFuture<R extends Response> implements Respon
      * @throws InterruptedException if the operation has been cancelled by client
      */
     @Override
-    public R get( long timeout, TimeUnit unit ) throws InterruptedException
+    public synchronized R get( long timeout, TimeUnit unit ) throws InterruptedException
     {
-        long nanos = unit.toNanos( timeout );
-        
-        lock.wait( nanos / 1_000_000, ( int ) nanos );
+        wait( unit.toMillis( timeout ) );
         
         return response;
     }
@@ -100,18 +99,13 @@ public abstract class UniqueResponseFuture<R extends Response> implements Respon
      * @param response The response to add into the Future
      * @throws InterruptedException if the operation has been cancelled by client
      */
-    public void set( R response ) throws InterruptedException
+    public synchronized void set( R response ) throws InterruptedException
     {
-        try 
-        {
-            lock.lock();
-            this.response = response;
-            lock.notify();
-        }
-        finally
-        {
-            lock.unlock();
-        }
+        this.response = response;
+        
+        done = response != null;
+        
+        notifyAll();
     }
 
 
@@ -167,7 +161,7 @@ public abstract class UniqueResponseFuture<R extends Response> implements Respon
     @Override
     public boolean isDone()
     {
-        throw new UnsupportedOperationException( "Operation not supported" );
+        return done;
     }
 
 

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

[directory-ldap-api] 02/04: Moved some messages to I18n

Posted by el...@apache.org.
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

commit fc948ea0675705d7efaf1014551e278b448c6e2e
Author: Emmanuel Lécharny <el...@symas.com>
AuthorDate: Tue Feb 27 04:17:21 2018 +0100

    Moved some messages to I18n
---
 .../java/org/apache/directory/api/i18n/I18n.java   | 1491 ++++++++++----------
 .../apache/directory/api/i18n/errors.properties    |   91 +-
 .../apache/directory/api/i18n/messages.properties  |   50 +
 .../ldap/client/api/LdapNetworkConnection.java     |  550 ++++++--
 4 files changed, 1279 insertions(+), 903 deletions(-)

diff --git a/i18n/src/main/java/org/apache/directory/api/i18n/I18n.java b/i18n/src/main/java/org/apache/directory/api/i18n/I18n.java
index 2697950..397b872 100644
--- a/i18n/src/main/java/org/apache/directory/api/i18n/I18n.java
+++ b/i18n/src/main/java/org/apache/directory/api/i18n/I18n.java
@@ -36,750 +36,807 @@ import java.util.ResourceBundle;
 public enum I18n
 {
     // asn1
-    ERR_00001_BAD_TRANSITION_FROM_STATE("ERR_00001_BAD_TRANSITION_FROM_STATE"),
-    ERR_00002_BAD_TRANSITION("ERR_00002_BAD_TRANSITION"),
-    ERR_00003_CANNOT_PUT_PDU_IN_NULL_BUFFER("ERR_00003_CANNOT_PUT_PDU_IN_NULL_BUFFER"),
-    ERR_00004_PDU_BUFFER_SIZE_TOO_SMALL("ERR_00004_PDU_BUFFER_SIZE_TOO_SMALL"),
-    ERR_00005_LENGTH_OVERFLOW("ERR_00005_LENGTH_OVERFLOW"),
-    ERR_00006_LENGTH_EXTENSION_RESERVED("ERR_00006_LENGTH_EXTENSION_RESERVED"),
-    ERR_00007_TLV_NULL("ERR_00007_TLV_NULL"),
-    ERR_00008_VALUE_LENGTH_ABOVE_EXPECTED_LENGTH("ERR_00008_VALUE_LENGTH_ABOVE_EXPECTED_LENGTH"),
-    ERR_00009_MORE_TLV_EXPECTED("ERR_00009_MORE_TLV_EXPECTED"),
-    ERR_00010_TRUNCATED_PDU("ERR_00010_TRUNCATED_PDU"),
-    ERR_00011_LENGTH_TOO_LONG_FOR_DEFINITE_FORM("ERR_00011_LENGTH_TOO_LONG_FOR_DEFINITE_FORM"),
-    ERR_00013_ODD_NUM_OF_CHARS("ERR_00013_ODD_NUM_OF_CHARS"),
-    ERR_00014_ILLEGAL_HEX_CHAR("ERR_00014_ILLEGAL_HEX_CHAR"),
-    ERR_00016_END_OF_STREAM("ERR_00016_END_OF_STREAM"),
-    ERR_00017_EOF_FOUND_LENGTH_EXPECTED("ERR_00017_EOF_FOUND_LENGTH_EXPECTED"),
-    ERR_00018_DER_LENGTH_ABOVE_4_BYTES("ERR_00018_DER_LENGTH_ABOVE_4_BYTES"),
-    ERR_00019_EOF_FOUND_IN_LENGTH("ERR_00019_EOF_FOUND_IN_LENGTH"),
-    ERR_00020_CORRUPTED_STREAM("ERR_00020_CORRUPTED_STREAM"),
-    ERR_00021_EOF_FOUND_IN_OBJECT("ERR_00021_EOF_FOUND_IN_OBJECT"),
-    ERR_00022_READ_PAST_END_OF_FILE("ERR_00022_READ_PAST_END_OF_FILE"),
-    ERR_00023_UNKNOWN_BER_OBJECT("ERR_00023_UNKNOWN_BER_OBJECT"),
-    ERR_00024_OBJECT_NOT_DER_ENCODABLE("ERR_00024_OBJECT_NOT_DER_ENCODABLE"),
-    ERR_00025_DER_OCTET_STRING_EXPECTED("ERR_DER_OCTET_STRING_EXPECTED_00025"),
-    ERR_00026_CANNOT_CONVERT_OCTETS("ERR_00026_CANNOT_CONVERT_OCTETS"),
-    ERR_00027_NOT_IMPLEMENTED("ERR_00027_NOT_IMPLEMENTED"),
-    ERR_00028_INTERNAL_ERROR_ENCODING_BITSTRING("ERR_00028_INTERNAL_ERROR_ENCODING_BITSTRING"),
-    ERR_00029_NULL_OR_NEG_LENGTH_NOT_ALLOWED("ERR_00029_NULL_OR_NEG_LENGTH_NOT_ALLOWED"),
-    ERR_00030_BIT_NUMBER_OUT_OF_BOUND("ERR_00030_BIT_NUMBER_OUT_OF_BOUND"),
-    ERR_00031_CANNOT_FIND_BIT("ERR_00031_CANNOT_FIND_BIT"),
-    ERR_00032_NULL_OID("ERR_00032_NULL_OID"),
-    ERR_00033_INVALID_OID("ERR_00033_INVALID_OID"),
-    ERR_00034_0_BYTES_LONG_BOOLEAN("ERR_00034_0_BYTES_LONG_BOOLEAN"),
-    ERR_00035_N_BYTES_LONG_BOOLEAN("ERR_00035_N_BYTES_LONG_BOOLEAN"),
-    ERR_00036_0_BYTES_LONG_INTEGER("ERR_00036_0_BYTES_LONG_INTEGER"),
-    ERR_00037_ABOVE_4_BYTES_INTEGER("ERR_00037_ABOVE_4_BYTES_INTEGER"),
-    ERR_00038_VALUE_NOT_IN_RANGE("ERR_00038_VALUE_NOT_IN_RANGE"),
-    ERR_00039_0_BYTES_LONG_LONG("ERR_00039_0_BYTES_LONG_LONG"),
-    ERR_00041_CURRENT_LENGTH_EXCEED_EXPECTED_LENGTH("ERR_00041_CURRENT_LENGTH_EXCEED_EXPECTED_LENGTH"),
-    ERR_00042_PDU_SIZE_TOO_LONG("ERR_00042_PDU_SIZE_TOO_LONG"),
-    ERR_00043_REMAINING_BYTES_FOR_DECODED_PDU("ERR_00043_REMAINING_BYTES_FOR_DECODED_PDU"),
+    ERR_00001_BAD_TRANSITION_FROM_STATE( "ERR_00001_BAD_TRANSITION_FROM_STATE" ),
+    ERR_00002_BAD_TRANSITION( "ERR_00002_BAD_TRANSITION" ),
+    ERR_00003_CANNOT_PUT_PDU_IN_NULL_BUFFER( "ERR_00003_CANNOT_PUT_PDU_IN_NULL_BUFFER" ),
+    ERR_00004_PDU_BUFFER_SIZE_TOO_SMALL( "ERR_00004_PDU_BUFFER_SIZE_TOO_SMALL" ),
+    ERR_00005_LENGTH_OVERFLOW( "ERR_00005_LENGTH_OVERFLOW" ),
+    ERR_00006_LENGTH_EXTENSION_RESERVED( "ERR_00006_LENGTH_EXTENSION_RESERVED" ),
+    ERR_00007_TLV_NULL( "ERR_00007_TLV_NULL" ),
+    ERR_00008_VALUE_LENGTH_ABOVE_EXPECTED_LENGTH( "ERR_00008_VALUE_LENGTH_ABOVE_EXPECTED_LENGTH" ),
+    ERR_00009_MORE_TLV_EXPECTED( "ERR_00009_MORE_TLV_EXPECTED" ),
+    ERR_00010_TRUNCATED_PDU( "ERR_00010_TRUNCATED_PDU" ),
+    ERR_00011_LENGTH_TOO_LONG_FOR_DEFINITE_FORM( "ERR_00011_LENGTH_TOO_LONG_FOR_DEFINITE_FORM" ),
+    ERR_00013_ODD_NUM_OF_CHARS( "ERR_00013_ODD_NUM_OF_CHARS" ),
+    ERR_00014_ILLEGAL_HEX_CHAR( "ERR_00014_ILLEGAL_HEX_CHAR" ),
+    ERR_00016_END_OF_STREAM( "ERR_00016_END_OF_STREAM" ),
+    ERR_00017_EOF_FOUND_LENGTH_EXPECTED( "ERR_00017_EOF_FOUND_LENGTH_EXPECTED" ),
+    ERR_00018_DER_LENGTH_ABOVE_4_BYTES( "ERR_00018_DER_LENGTH_ABOVE_4_BYTES" ),
+    ERR_00019_EOF_FOUND_IN_LENGTH( "ERR_00019_EOF_FOUND_IN_LENGTH" ),
+    ERR_00020_CORRUPTED_STREAM( "ERR_00020_CORRUPTED_STREAM" ),
+    ERR_00021_EOF_FOUND_IN_OBJECT( "ERR_00021_EOF_FOUND_IN_OBJECT" ),
+    ERR_00022_READ_PAST_END_OF_FILE( "ERR_00022_READ_PAST_END_OF_FILE" ),
+    ERR_00023_UNKNOWN_BER_OBJECT( "ERR_00023_UNKNOWN_BER_OBJECT" ),
+    ERR_00024_OBJECT_NOT_DER_ENCODABLE( "ERR_00024_OBJECT_NOT_DER_ENCODABLE" ),
+    ERR_00025_DER_OCTET_STRING_EXPECTED( "ERR_DER_OCTET_STRING_EXPECTED_00025" ),
+    ERR_00026_CANNOT_CONVERT_OCTETS( "ERR_00026_CANNOT_CONVERT_OCTETS" ),
+    ERR_00027_NOT_IMPLEMENTED( "ERR_00027_NOT_IMPLEMENTED" ),
+    ERR_00028_INTERNAL_ERROR_ENCODING_BITSTRING( "ERR_00028_INTERNAL_ERROR_ENCODING_BITSTRING" ),
+    ERR_00029_NULL_OR_NEG_LENGTH_NOT_ALLOWED( "ERR_00029_NULL_OR_NEG_LENGTH_NOT_ALLOWED" ),
+    ERR_00030_BIT_NUMBER_OUT_OF_BOUND( "ERR_00030_BIT_NUMBER_OUT_OF_BOUND" ),
+    ERR_00031_CANNOT_FIND_BIT( "ERR_00031_CANNOT_FIND_BIT" ),
+    ERR_00032_NULL_OID( "ERR_00032_NULL_OID" ),
+    ERR_00033_INVALID_OID( "ERR_00033_INVALID_OID" ),
+    ERR_00034_0_BYTES_LONG_BOOLEAN( "ERR_00034_0_BYTES_LONG_BOOLEAN" ),
+    ERR_00035_N_BYTES_LONG_BOOLEAN( "ERR_00035_N_BYTES_LONG_BOOLEAN" ),
+    ERR_00036_0_BYTES_LONG_INTEGER( "ERR_00036_0_BYTES_LONG_INTEGER" ),
+    ERR_00037_ABOVE_4_BYTES_INTEGER( "ERR_00037_ABOVE_4_BYTES_INTEGER" ),
+    ERR_00038_VALUE_NOT_IN_RANGE( "ERR_00038_VALUE_NOT_IN_RANGE" ),
+    ERR_00039_0_BYTES_LONG_LONG( "ERR_00039_0_BYTES_LONG_LONG" ),
+    ERR_00041_CURRENT_LENGTH_EXCEED_EXPECTED_LENGTH( "ERR_00041_CURRENT_LENGTH_EXCEED_EXPECTED_LENGTH" ),
+    ERR_00042_PDU_SIZE_TOO_LONG( "ERR_00042_PDU_SIZE_TOO_LONG" ),
+    ERR_00043_REMAINING_BYTES_FOR_DECODED_PDU( "ERR_00043_REMAINING_BYTES_FOR_DECODED_PDU" ),
 
     // cursor
-    ERR_02001_MONITOR("ERR_02001_MONITOR"),
-    ERR_02002_FAILURE_ON_UNDERLYING_CURSOR("ERR_02002_FAILURE_ON_UNDERLYING_CURSOR"),
-    ERR_02003_REMOVAL_NOT_SUPPORTED("ERR_02003_REMOVAL_NOT_SUPPORTED"),
-    ERR_02004_EMPTY_CURSOR("ERR_02004_EMPTY_CURSOR"),
-    ERR_02005_START_INDEX_OUT_OF_RANGE("ERR_02005_START_INDEX_OUT_OF_RANGE"),
-    ERR_02006_END_INDEX_OUT_OF_RANGE("ERR_02006_END_INDEX_OUT_OF_RANGE"),
-    ERR_02007_START_INDEX_ABOVE_END_INDEX("ERR_02007_START_INDEX_ABOVE_END_INDEX"),
-    ERR_02008_LIST_MAY_BE_SORTED("ERR_02008_LIST_MAY_BE_SORTED"),
-    ERR_02009_CURSOR_NOT_POSITIONED("ERR_02009_CURSOR_NOT_POSITIONED"),
-    ERR_02010_NO_COMPARATOR_CANT_MOVE_BEFORE("ERR_02010_NO_COMPARATOR_CANT_MOVE_BEFORE"),
-    ERR_02011_NO_COMPARATOR_CANT_MOVE_AFTER("ERR_02011_NO_COMPARATOR_CANT_MOVE_AFTER"),
-    ERR_02012_CANNOT_ACCESS_IF_BEFORE_FIRST("ERR_02012_CANNOT_ACCESS_IF_BEFORE_FIRST"),
-    ERR_02013_CANNOT_ACCESS_IF_AFTER_LAST("ERR_02013_CANNOT_ACCESS_IF_AFTER_LAST"),
-    ERR_02014_UNSUPPORTED_OPERATION("ERR_02014_UNSUPPORTED_OPERATION"),
+    ERR_02001_MONITOR( "ERR_02001_MONITOR" ),
+    ERR_02002_FAILURE_ON_UNDERLYING_CURSOR( "ERR_02002_FAILURE_ON_UNDERLYING_CURSOR" ),
+    ERR_02003_REMOVAL_NOT_SUPPORTED( "ERR_02003_REMOVAL_NOT_SUPPORTED" ),
+    ERR_02004_EMPTY_CURSOR( "ERR_02004_EMPTY_CURSOR" ),
+    ERR_02005_START_INDEX_OUT_OF_RANGE( "ERR_02005_START_INDEX_OUT_OF_RANGE" ),
+    ERR_02006_END_INDEX_OUT_OF_RANGE( "ERR_02006_END_INDEX_OUT_OF_RANGE" ),
+    ERR_02007_START_INDEX_ABOVE_END_INDEX( "ERR_02007_START_INDEX_ABOVE_END_INDEX" ),
+    ERR_02008_LIST_MAY_BE_SORTED( "ERR_02008_LIST_MAY_BE_SORTED" ),
+    ERR_02009_CURSOR_NOT_POSITIONED( "ERR_02009_CURSOR_NOT_POSITIONED" ),
+    ERR_02010_NO_COMPARATOR_CANT_MOVE_BEFORE( "ERR_02010_NO_COMPARATOR_CANT_MOVE_BEFORE" ),
+    ERR_02011_NO_COMPARATOR_CANT_MOVE_AFTER( "ERR_02011_NO_COMPARATOR_CANT_MOVE_AFTER" ),
+    ERR_02012_CANNOT_ACCESS_IF_BEFORE_FIRST( "ERR_02012_CANNOT_ACCESS_IF_BEFORE_FIRST" ),
+    ERR_02013_CANNOT_ACCESS_IF_AFTER_LAST( "ERR_02013_CANNOT_ACCESS_IF_AFTER_LAST" ),
+    ERR_02014_UNSUPPORTED_OPERATION( "ERR_02014_UNSUPPORTED_OPERATION"),
 
     // dsml-parser
-    ERR_03001("ERR_03001"),
-    ERR_03002("ERR_03002"),
-    ERR_03003("ERR_03003"),
-    ERR_03004("ERR_03004"),
-    ERR_03005("ERR_03005"),
-    ERR_03006("ERR_03006"),
-    ERR_03007("ERR_03007"),
-    ERR_03008("ERR_03008"),
-    ERR_03009("ERR_03009"),
-    ERR_03010("ERR_03010"),
-    ERR_03011("ERR_03011"),
-    ERR_03012("ERR_03012"),
-    ERR_03013("ERR_03013"),
-    ERR_03014("ERR_03014"),
-    ERR_03015("ERR_03015"),
-    ERR_03016("ERR_03016"),
-    ERR_03017("ERR_03017"),
-    ERR_03018("ERR_03018"),
-    ERR_03019("ERR_03019"),
-    ERR_03020("ERR_03020"),
-    ERR_03021("ERR_03021"),
-    ERR_03022("ERR_03022"),
-    ERR_03023("ERR_03023"),
-    ERR_03024("ERR_03024"),
-    ERR_03025("ERR_00025"),
-    ERR_03026("ERR_03026"),
-    ERR_03027("ERR_03027"),
-    ERR_03028("ERR_03028"),
-    ERR_03029("ERR_03029"),
-    ERR_03030("ERR_03030"),
-    ERR_03031("ERR_03031"),
-    ERR_03032("ERR_03032"),
-    ERR_03033("ERR_03033"),
-    ERR_03034("ERR_03034"),
-    ERR_03035("ERR_03035"),
-    ERR_03036("ERR_03036"),
-    ERR_03037("ERR_03037"),
-    ERR_03038("ERR_03038"),
-    ERR_03039("ERR_03039"),
-    ERR_03040("ERR_03040"),
+    ERR_03001( "ERR_03001"),
+    ERR_03002( "ERR_03002"),
+    ERR_03003( "ERR_03003"),
+    ERR_03004( "ERR_03004"),
+    ERR_03005( "ERR_03005"),
+    ERR_03006( "ERR_03006"),
+    ERR_03007( "ERR_03007"),
+    ERR_03008( "ERR_03008"),
+    ERR_03009( "ERR_03009"),
+    ERR_03010( "ERR_03010"),
+    ERR_03011( "ERR_03011"),
+    ERR_03012( "ERR_03012"),
+    ERR_03013( "ERR_03013"),
+    ERR_03014( "ERR_03014"),
+    ERR_03015( "ERR_03015"),
+    ERR_03016( "ERR_03016"),
+    ERR_03017( "ERR_03017"),
+    ERR_03018( "ERR_03018"),
+    ERR_03019( "ERR_03019"),
+    ERR_03020( "ERR_03020"),
+    ERR_03021( "ERR_03021"),
+    ERR_03022( "ERR_03022"),
+    ERR_03023( "ERR_03023"),
+    ERR_03024( "ERR_03024"),
+    ERR_03025( "ERR_00025"),
+    ERR_03026( "ERR_03026"),
+    ERR_03027( "ERR_03027"),
+    ERR_03028( "ERR_03028"),
+    ERR_03029( "ERR_03029"),
+    ERR_03030( "ERR_03030"),
+    ERR_03031( "ERR_03031"),
+    ERR_03032( "ERR_03032"),
+    ERR_03033( "ERR_03033"),
+    ERR_03034( "ERR_03034"),
+    ERR_03035( "ERR_03035"),
+    ERR_03036( "ERR_03036"),
+    ERR_03037( "ERR_03037" ),
+    ERR_03038( "ERR_03038" ),
+    ERR_03039( "ERR_03039" ),
+    ERR_03040( "ERR_03040" ),
 
     // dsml-engine
-    ERR_03101_MISSING_CONNECTION_TO("ERR_03101_MISSING_CONNECTION_TO"),
+    ERR_03101_MISSING_CONNECTION_TO( "ERR_03101_MISSING_CONNECTION_TO" ),
+    
+    // ldap-client
+    ERR_03201_CURSOR_CLOSE_FAIL( "ERR_03201_CURSOR_CLOSE_FAIL" ),
+    ERR_03202_ERROR_PROCESSING_NOD( "ERR_03202_ERROR_PROCESSING_NOD" ),
+    ERR_03203_OP_FAILED_TIMEOUT( "ERR_03203_OP_FAILED_TIMEOUT" ),
+    ERR_03204_ERROR_LOADING_SCHEMA( "ERR_03204_ERROR_LOADING_SCHEMA" ),
+    ERR_03205_FAIL_LOAD_SCHEMA( "ERR_03205_FAIL_LOAD_SCHEMA" ),
+    ERR_03206_FAIL_LOAD_SCHEMA_FILE( "ERR_03206_FAIL_LOAD_SCHEMA_FILE" ),
+    ERR_03207_SOMETHING_WRONG_HAPPENED( "ERR_03207_SOMETHING_WRONG_HAPPENED" ),
+    ERR_03208_TIMEOUT( "ERR_03208_TIMEOUT" ),
 
     // ldap
-    ERR_04001_NULL_IDENTIFICATION_TAG("ERR_04001_NULL_IDENTIFICATION_TAG"),
-    ERR_04002_BAD_PRECENDENCE("ERR_04002_BAD_PRECENDENCE"),
-    ERR_04003_NULL_AUTHENTICATION_LEVEL("ERR_04003_NULL_AUTHENTICATION_LEVEL"),
-    ERR_04004_PARSER_FAILURE_ACI_ITEM("ERR_04004_PARSER_FAILURE_ACI_ITEM"),
-    ERR_04005("ERR_04005"),
-    ERR_04006("ERR_04006"),
-    ERR_04007("ERR_04007"),
-    ERR_04008("ERR_04008"),
-    ERR_04009("ERR_04009"),
-    ERR_04010("ERR_04010"),
-    ERR_04011("ERR_04011"),
-    ERR_04012("ERR_04012"),
-    ERR_04013("ERR_04013"),
-    ERR_04014("ERR_04014"),
-    ERR_04015("ERR_04015"),
-    ERR_04016("ERR_04016"),
-    ERR_04017("ERR_04017"),
-    ERR_04018("ERR_04018"),
-    ERR_04019("ERR_04019"),
-    ERR_04020("ERR_04020"),
-    ERR_04021("ERR_04021"),
-    ERR_04022("ERR_04022"),
-    ERR_04023("ERR_04023"),
-    ERR_04024("ERR_04024"),
-    ERR_04025("ERR_04025"),
-    ERR_04026("ERR_04026"),
-    ERR_04027("ERR_04027"),
-    ERR_04028("ERR_04028"),
-    ERR_04029("ERR_04029"),
-    ERR_04030("ERR_04030"),
-    ERR_04031("ERR_04031"),
-    ERR_04032("ERR_04032"),
-    ERR_04033("ERR_04033"),
-    ERR_04034("ERR_04034"),
-    ERR_04035("ERR_04035"),
-    ERR_04036("ERR_04036"),
-    ERR_04037("ERR_04037"),
-    ERR_04038("ERR_04038"),
-    ERR_04039("ERR_04039"),
-    ERR_04040("ERR_04040"),
-    ERR_04041("ERR_04041"),
-    ERR_04042("ERR_04042"),
-    ERR_04043("ERR_04043"),
-    ERR_04044("ERR_04044"),
-    ERR_04045("ERR_04045"),
-    ERR_04046("ERR_04046"),
-    ERR_04047("ERR_04047"),
-    ERR_04048("ERR_04048"),
-    ERR_04049("ERR_04049"),
-    ERR_04050("ERR_04050"),
-    ERR_04051("ERR_04051"),
-    ERR_04052("ERR_04052"),
-    ERR_04053("ERR_04053"),
-    ERR_04054("ERR_04054"),
-    ERR_04055("ERR_04055"),
-    ERR_04056("ERR_04056"),
-    ERR_04057("ERR_04057"),
-    ERR_04058("ERR_04058"),
-    ERR_04059("ERR_04059"),
-    ERR_04060("ERR_04060"),
-    ERR_04061("ERR_04061"),
-    ERR_04062("ERR_04062"),
-    ERR_04063("ERR_04063"),
-    ERR_04064("ERR_04064"),
-    ERR_04065("ERR_04065"),
-    ERR_04066("ERR_04066"),
-    ERR_04067("ERR_04067"),
-    ERR_04068("ERR_04068"),
-    ERR_04069("ERR_04069"),
-    ERR_04070("ERR_04070"),
-    ERR_04071("ERR_04071"),
-    ERR_04072("ERR_04072"),
-    ERR_04073("ERR_04073"),
-    ERR_04074("ERR_04074"),
-    ERR_04075("ERR_04075"),
-    ERR_04076("ERR_04076"),
-    ERR_04077("ERR_04077"),
-    ERR_04078("ERR_04078"),
-    ERR_04079("ERR_04079"),
-    ERR_04080("ERR_04080"),
-    ERR_04081("ERR_04081"),
-    ERR_04082("ERR_04082"),
-    ERR_04083("ERR_04083"),
-    ERR_04084("ERR_04084"),
-    ERR_04085("ERR_04085"),
-    ERR_04086("ERR_04086"),
-    ERR_04087("ERR_04087"),
-    ERR_04088("ERR_04088"),
-    ERR_04089("ERR_04089"),
-    ERR_04090("ERR_04090"),
-    ERR_04091("ERR_04091"),
-    ERR_04092("ERR_04092"),
-    ERR_04093("ERR_04093"),
-    ERR_04094("ERR_04094"),
-    ERR_04095("ERR_04095"),
-    ERR_04096_NULL_CONTROL_LENGTH("ERR_04096_NULL_CONTROL_LENGTH"),
-    ERR_04097_NULL_CONTROL_OID("ERR_04097_NULL_CONTROL_OID"),
-    ERR_04098_INVALID_CONTROL_OID("ERR_04098_INVALID_CONTROL_OID"),
-    ERR_04099_INVALID_CONTROL_LIST("ERR_04099_INVALID_CONTROL_LIST"),
-    ERR_04100_BAD_CONTROL_CRITICALITY("ERR_04100_BAD_CONTROL_CRITICALITY"),
-    ERR_04101("ERR_04101"),
-    ERR_04102("ERR_04102"),
-    ERR_04103("ERR_04103"),
-    ERR_04104("ERR_04104"),
-    ERR_04105("ERR_04105"),
-    ERR_04106("ERR_04106"),
-    ERR_04107("ERR_04107"),
-    ERR_04108("ERR_04108"),
-    ERR_04109("ERR_04109"),
-    ERR_04110("ERR_04110"),
-    ERR_04111("ERR_04111"),
-    ERR_04112("ERR_04112"),
-    ERR_04113("ERR_04113"),
-    ERR_04114("ERR_04114"),
-    ERR_04115("ERR_04115"),
-    ERR_04116("ERR_04116"),
-    ERR_04117("ERR_04117"),
-    ERR_04118("ERR_04118"),
-    ERR_04119("ERR_04119"),
-    ERR_04120("ERR_04120"),
-    ERR_04121("ERR_04121"),
-    ERR_04122("ERR_04122"),
-    ERR_04123("ERR_04123"),
-    ERR_04124("ERR_04124"),
-    ERR_04125("ERR_04125"),
-    ERR_04126("ERR_04126"),
-    ERR_04127("ERR_04127"),
-    ERR_04128("ERR_04128"),
-    ERR_04129("ERR_04129"),
-    ERR_04130("ERR_04130"),
-    ERR_04131("ERR_04131"),
-    ERR_04132("ERR_04132"),
-    ERR_04133("ERR_04133"),
-    ERR_04134("ERR_04134"),
-    ERR_04135("ERR_04135"),
-    ERR_04136("ERR_04136"),
-    ERR_04137("ERR_04137"),
-    ERR_04138("ERR_04138"),
-    ERR_04139_NULL_SYNTAX_CHECKER("ERR_04139_NULL_SYNTAX_CHECKER"),
-    ERR_04140_UNACCEPTABLE_RESULT_CODE("ERR_04140_UNACCEPTABLE_RESULT_CODE"),
-    ERR_04141("ERR_04141"),
-    ERR_04142("ERR_04142"),
-    ERR_04143("ERR_04143"),
-    ERR_04144("ERR_04144"),
-    ERR_04145("ERR_04145"),
-    ERR_04146("ERR_04146"),
-    ERR_04147("ERR_04147"),
-    ERR_04148_MATCHING_RULE_EXPECTED("ERR_04148_MATCHING_RULE_EXPECTED"),
-    ERR_04149("ERR_04149"),
-    ERR_04150("ERR_04150"),
-    ERR_04151("ERR_04151"),
-    ERR_04152("ERR_04152"),
-    ERR_04153("ERR_04153"),
-    ERR_04154("ERR_04154"),
-    ERR_04155("ERR_04155"),
-    ERR_04156("ERR_04156"),
-    ERR_04157("ERR_04157"),
-    ERR_04158("ERR_04158"),
-    ERR_04159("ERR_04159"),
-    ERR_04160("ERR_04160"),
-    ERR_04161("ERR_04161"),
-    ERR_04162("ERR_04162"),
-    ERR_04163("ERR_04163"),
-    ERR_04164("ERR_04164"),
-    ERR_04165_PAYLOAD_DECODING_ERROR("ERR_04165_PAYLOAD_DECODING_ERROR"),
-    ERR_04166("ERR_04166"),
-    ERR_04167("ERR_04167"),
-    ERR_04168("ERR_04168"),
-    ERR_04169("ERR_04169"),
-    ERR_04170("ERR_04170"),
-    ERR_04171("ERR_04171"),
-    ERR_04172("ERR_04172"),
-    ERR_04173("ERR_04173"),
-    ERR_04174("ERR_04174"),
-    ERR_04175("ERR_04175"),
-    ERR_04176("ERR_04176"),
-    ERR_04177("ERR_04177"),
-    ERR_04178("ERR_04178"),
-    ERR_04179("ERR_04179"),
-    ERR_04180("ERR_04180"),
-    ERR_04181("ERR_04181"),
-    ERR_04182("ERR_04182"),
-    ERR_04183("ERR_04183"),
-    ERR_04184("ERR_04184"),
-    ERR_04185("ERR_04185"),
-    ERR_04186("ERR_04186"),
-    ERR_04187("ERR_04187"),
-    ERR_04188("ERR_04188"),
-    ERR_04189("ERR_04189"),
-    ERR_04190("ERR_04190"),
-    ERR_04191("ERR_04191"),
-    ERR_04192("ERR_04192"),
-    ERR_04193("ERR_04193"),
-    ERR_04194("ERR_04194"),
-    ERR_04195("ERR_04195"),
-    ERR_04196("ERR_04196"),
-    ERR_04197("ERR_04197"),
-    ERR_04198("ERR_04198"),
-    ERR_04199("ERR_04199"),
-    ERR_04200("ERR_04200"),
-    ERR_04201("ERR_04201"),
-    ERR_04202("ERR_04202"),
-    ERR_04203("ERR_04203"),
-    ERR_04204("ERR_04204"),
-    ERR_04205("ERR_04205"),
-    ERR_04206("ERR_04206"),
-    ERR_04207("ERR_04207"),
-    ERR_04208("ERR_04208"),
-    ERR_04209_EMPTY_TYPE_NOT_ALLOWED("ERR_04209_EMPTY_TYPE_NOT_ALLOWED"),
-    ERR_04210("ERR_04210"),
-    ERR_04211("ERR_04211"),
-    ERR_04212("ERR_04212"),
-    ERR_04213("ERR_04213"),
-    ERR_04214("ERR_04214"),
-    ERR_04215("ERR_04215"),
-    ERR_04216("ERR_04216"),
-    ERR_04217("ERR_04217"),
-    ERR_04218("ERR_04218"),
-    ERR_04219_ARGUMENT1_NULL("ERR_04219_ARGUMENT1_NULL"),
-    ERR_04220_ARGUMENT2_NULL("ERR_04220_ARGUMENT2_NULL"),
-    ERR_04221("ERR_04221"),
-    ERR_04222("ERR_04222"),
-    ERR_04223("ERR_04223"),
-    ERR_04224("ERR_04224"),
-    ERR_04225("ERR_04225"),
-    ERR_04226("ERR_04226"),
-    ERR_04227("ERR_04227"),
-    ERR_04228("ERR_04228"),
-    ERR_04229("ERR_04229"),
-    ERR_04230("ERR_04230"),
-    ERR_04231("ERR_04231"),
-    ERR_04232("ERR_04232"),
-    ERR_04233("ERR_04233"),
-    ERR_04234("ERR_04234"),
-    ERR_04235("ERR_04235"),
-    ERR_04236("ERR_04236"),
-    ERR_04237("ERR_04237"),
-    ERR_04238("ERR_04238"),
-    ERR_04239("ERR_04239"),
-    ERR_04240("ERR_04240"),
-    ERR_04241("ERR_04241"),
-    ERR_04242("ERR_04242"),
-    ERR_04243("ERR_04243"),
-    ERR_04244("ERR_04244"),
-    ERR_04245("ERR_04245"),
-    ERR_04246("ERR_04246"),
-    ERR_04247("ERR_04247"),
-    ERR_04248("ERR_04248"),
-    ERR_04249("ERR_04249"),
-    ERR_04250("ERR_04250"),
-    ERR_04251("ERR_04251"),
-    ERR_04252("ERR_04252"),
-    ERR_04253("ERR_04253"),
-    ERR_04254("ERR_04254"),
-    ERR_04255("ERR_04255"),
-    ERR_04256("ERR_04256"),
-    ERR_04257("ERR_04257"),
-    ERR_04258("ERR_04258"),
-    ERR_04259("ERR_04259"),
-    ERR_04260("ERR_04260"),
-    ERR_04261("ERR_04261"),
-    ERR_04262("ERR_04262"),
-    ERR_04263("ERR_04263"),
-    ERR_04264("ERR_04264"),
-    ERR_04265("ERR_04265"),
-    ERR_04266("ERR_04266"),
-    ERR_04267("ERR_04267"),
-    ERR_04268_OID_NOT_FOUND("ERR_04268_OID_NOT_FOUND"),
-    ERR_04269("ERR_04269"),
-    ERR_04270("ERR_04270"),
-    ERR_04271("ERR_04271"),
-    ERR_04272("ERR_04272"),
-    ERR_04273("ERR_04273"),
-    ERR_04274("ERR_04274"),
-    ERR_04275("ERR_04275"),
-    ERR_04276("ERR_04276"),
-    ERR_04277("ERR_04277"),
-    ERR_04278("ERR_04278"),
-    ERR_04279("ERR_04279"),
-    ERR_04280("ERR_04280"),
-    ERR_04281("ERR_04281"),
-    ERR_04282("ERR_04282"),
-    ERR_04283("ERR_04283"),
-    ERR_04284("ERR_04284"),
-    ERR_04285("ERR_04285"),
-    ERR_04286("ERR_04286"),
-    ERR_04287("ERR_04287"),
-    ERR_04288("ERR_04288"),
-    ERR_04289("ERR_04289"),
-    ERR_04290("ERR_04290"),
-    ERR_04291("ERR_04291"),
-    ERR_04292("ERR_04292"),
-    ERR_04293("ERR_04293"),
-    ERR_04294("ERR_04294"),
-    ERR_04295_NO_NORMALIZER("ERR_04295_NO_NORMALIZER"),
-    ERR_04296("ERR_04296"),
-    ERR_04297("ERR_04297"),
-    ERR_04298("ERR_04298"),
-    ERR_04299("ERR_04299"),
-    ERR_04300("ERR_04300"),
-    ERR_04301("ERR_04301"),
-    ERR_04302("ERR_04302"),
-    ERR_04303("ERR_04303"),
-    ERR_04304("ERR_04304"),
-    ERR_04305("ERR_04305"),
-    ERR_04306("ERR_04306"),
-    ERR_04307("ERR_04307"),
-    ERR_04308("ERR_04308"),
-    ERR_04309("ERR_04309"),
-    ERR_04310("ERR_04310"),
-    ERR_04311("ERR_04311"),
-    ERR_04312("ERR_04312"),
-    ERR_04313("ERR_04313"),
-    ERR_04314("ERR_04314"),
-    ERR_04315("ERR_04315"),
-    ERR_04316("ERR_04316"),
-    ERR_04317("ERR_04317"),
-    ERR_04318("ERR_04318"),
-    ERR_04319("ERR_04319"),
-    ERR_04320("ERR_04320"),
-    ERR_04321("ERR_04321"),
-    ERR_04322("ERR_04322"),
-    ERR_04323("ERR_04323"),
-    ERR_04324("ERR_04324"),
-    ERR_04325("ERR_04325"),
-    ERR_04326("ERR_04326"),
-    ERR_04327("ERR_04327"),
-    ERR_04328("ERR_04328"),
-    ERR_04329("ERR_04329"),
-    ERR_04330("ERR_04330"),
-    ERR_04331("ERR_04331"),
-    ERR_04332("ERR_04332"),
-    ERR_04333("ERR_04333"),
-    ERR_04334("ERR_04334"),
-    ERR_04335("ERR_04335"),
-    ERR_04336("ERR_04336"),
-    ERR_04337("ERR_04337"),
-    ERR_04338("ERR_04338"),
-    ERR_04339("ERR_04339"),
-    ERR_04340("ERR_04340"),
-    ERR_04341("ERR_04341"),
-    ERR_04342("ERR_04342"),
-    ERR_04343("ERR_04343"),
-    ERR_04344("ERR_04344"),
-    ERR_04345("ERR_04345"),
-    ERR_04346("ERR_04346"),
-    ERR_04347("ERR_04347"),
-    ERR_04348("ERR_04348"),
-    ERR_04349("ERR_04349"),
-    ERR_04350("ERR_04350"),
-    ERR_04351("ERR_04351"),
-    ERR_04352("ERR_04352"),
-    ERR_04353("ERR_04353"),
-    ERR_04354("ERR_04354"),
-    ERR_04355("ERR_04355"),
-    ERR_04356("ERR_04356"),
-    ERR_04357("ERR_04357"),
-    ERR_04358("ERR_04358"),
-    ERR_04359("ERR_04359"),
-    ERR_04360("ERR_04360"),
-    ERR_04361("ERR_04361"),
-    ERR_04362("ERR_04362"),
-    ERR_04363("ERR_04363"),
-    ERR_04364("ERR_04364"),
-    ERR_04365("ERR_04365"),
-    ERR_04366("ERR_04366"),
-    ERR_04367("ERR_04367"),
-    ERR_04368("ERR_04368"),
-    ERR_04369("ERR_04369"),
-    ERR_04370("ERR_04370"),
-    ERR_04371("ERR_04371"),
-    ERR_04372("ERR_04372"),
-    ERR_04373("ERR_04373"),
-    ERR_04374("ERR_04374"),
-    ERR_04375("ERR_04375"),
-    ERR_04376("ERR_04376"),
-    ERR_04377("ERR_04377"),
-    ERR_04378("ERR_04378"),
-    ERR_04379("ERR_04379"),
-    ERR_04380("ERR_04380"),
-    ERR_04381("ERR_04381"),
-    ERR_04382("ERR_04382"),
-    ERR_04383("ERR_04383"),
-    ERR_04384("ERR_04384"),
-    ERR_04385("ERR_04385"),
-    ERR_04386("ERR_04386"),
-    ERR_04387("ERR_04387"),
-    ERR_04388("ERR_04388"),
-    ERR_04389("ERR_04389"),
-    ERR_04390("ERR_04390"),
-    ERR_04391("ERR_04391"),
-    ERR_04392("ERR_04392"),
-    ERR_04393("ERR_04393"),
-    ERR_04394("ERR_04394"),
-    ERR_04395("ERR_04395"),
-    ERR_04396("ERR_04396"),
-    ERR_04397("ERR_04397"),
-    ERR_04398("ERR_04398"),
-    ERR_04399("ERR_04399"),
-    ERR_04400("ERR_04400"),
-    ERR_04401("ERR_04401"),
-    ERR_04402("ERR_04402"),
-    ERR_04403("ERR_04403"),
-    ERR_04404("ERR_04404"),
-    ERR_04405("ERR_04405"),
-    ERR_04406("ERR_04406"),
-    ERR_04407("ERR_04407"),
-    ERR_04408("ERR_04408"),
-    ERR_04409("ERR_04409"),
-    ERR_04410("ERR_04410"),
-    ERR_04411("ERR_04411"),
-    ERR_04412("ERR_04412"),
-    ERR_04413("ERR_04413"),
-    ERR_04414("ERR_04414"),
-    ERR_04415("ERR_04415"),
-    ERR_04416("ERR_04416"),
-    ERR_04417("ERR_04417"),
-    ERR_04418("ERR_04418"),
-    ERR_04419("ERR_04419"),
-    ERR_04420("ERR_04420"),
-    ERR_04421("ERR_04421"),
-    ERR_04422("ERR_04422"),
-    ERR_04423("ERR_04423"),
-    ERR_04424("ERR_04424"),
-    ERR_04425("ERR_04425"),
-    ERR_04426("ERR_04426"),
-    ERR_04427("ERR_04427"),
-    ERR_04428("ERR_04428"),
-    ERR_04429("ERR_04429"),
-    ERR_04430("ERR_04430"),
-    ERR_04431("ERR_04431"),
-    ERR_04432("ERR_04432"),
-    ERR_04433("ERR_04433"),
-    ERR_04434("ERR_04434"),
-    ERR_04435("ERR_04435"),
-    ERR_04436("ERR_04436"),
-    ERR_04437("ERR_04437"),
-    ERR_04438("ERR_04438"),
-    ERR_04439("ERR_04439"),
-    ERR_04440("ERR_04440"),
-    ERR_04441("ERR_04441"),
-    ERR_04442_NOT_EXISTING_ATTRIBUTE_TYPE("ERR_04442_NOT_EXISTING_ATTRIBUTE_TYPE"),
-    ERR_04443("ERR_04443"),
-    ERR_04444("ERR_04444"),
-    ERR_04445_NO_SYNTAX("ERR_04445_NO_SYNTAX"),
-    ERR_04446("ERR_04446"),
-    ERR_04447_CANNOT_NORMALIZE_VALUE("ERR_04447_CANNOT_NORMALIZE_VALUE"),
-    ERR_04448("ERR_04448"),
-    ERR_04449("ERR_04449"),
-    ERR_04450("ERR_04450"),
-    ERR_04451("ERR_04451"),
-    ERR_04452("ERR_04452"),
-    ERR_04453("ERR_04453"),
-    ERR_04454("ERR_04454"),
-    ERR_04455("ERR_04455"),
-    ERR_04456("ERR_04456"),
-    ERR_04457_NULL_ATTRIBUTE_ID("ERR_04457_NULL_ATTRIBUTE_ID"),
-    ERR_04458("ERR_04458"),
-    ERR_04459("ERR_04459"),
-    ERR_04460_ATTRIBUTE_TYPE_NULL_NOT_ALLOWED("ERR_04460_ATTRIBUTE_TYPE_NULL_NOT_ALLOWED"),
-    ERR_04461("ERR_04461"),
-    ERR_04462("ERR_04462"),
-    ERR_04463("ERR_04463"),
-    ERR_04464("ERR_04464"),
-    ERR_04465("ERR_04465"),
-    ERR_04466("ERR_04466"),
-    ERR_04467("ERR_04467"),
-    ERR_04468("ERR_04468"),
-    ERR_04469("ERR_04469"),
-    ERR_04470("ERR_04470"),
-    ERR_04471("ERR_04471"),
-    ERR_04472("ERR_04472"),
-    ERR_04473_NOT_VALID_VALUE("ERR_04473_NOT_VALID_VALUE"),
-    ERR_04474("ERR_04474"),
-    ERR_04475("ERR_04475"),
-    ERR_04476("ERR_04476"),
-    ERR_04477_NO_VALID_AT_FOR_THIS_ID("ERR_04477_NO_VALID_AT_FOR_THIS_ID"),
-    ERR_04478_NO_VALUE_NOT_ALLOWED("ERR_04478_NO_VALUE_NOT_ALLOWED"),
-    ERR_04479_INVALID_SYNTAX_VALUE("ERR_04479_INVALID_SYNTAX_VALUE"),
-    ERR_04480_END_OF_STREAM("ERR_04480_END_OF_STREAM"),
-    ERR_04481_ENTRY_NULL_VALUE("ERR_04481_ENTRY_NULL_VALUE"),
-    ERR_04482_CANNOT_SUBTYPE_COLLECTIVE("ERR_04482_CANNOT_SUBTYPE_COLLECTIVE"),
-    ERR_04483_COLLECTIVE_NOT_MULTI_VALUED("ERR_04483_COLLECTIVE_NOT_MULTI_VALUED"),
-    ERR_04484_COLLECTIVE_NOT_ALLOWED_IN_MUST("ERR_04484_COLLECTIVE_NOT_ALLOWED_IN_MUST"),
-    ERR_04485_COLLECTIVE_NOT_ALLOWED_IN_MAY("ERR_04485_COLLECTIVE_NOT_ALLOWED_IN_MAY"),
-    ERR_04486_VALUE_ALREADY_EXISTS("ERR_04486_VALUE_ALREADY_EXISTS"),
-    ERR_04487_ATTRIBUTE_IS_SINGLE_VALUED("ERR_04487_ATTRIBUTE_IS_SINGLE_VALUED"),
-    ERR_04488_NULL_ATTRIBUTE_TYPE("ERR_04488_NULL_ATTRIBUTE_TYPE"),
-    ERR_04489_SYNTAX_INVALID("ERR_04489_SYNTAX_INVALID"),
-    ERR_04490_BAD_END_TRANSACTION_COMMIT("ERR_04490_BAD_END_TRANSACTION_COMMIT"),
-    ERR_04491_BAD_END_TRANSACTION_MESSAGE_ID("ERR_04490_BAD_END_TRANSACTION_MESSAGE_ID"),
+    ERR_04001_NULL_IDENTIFICATION_TAG( "ERR_04001_NULL_IDENTIFICATION_TAG" ),
+    ERR_04002_BAD_PRECENDENCE( "ERR_04002_BAD_PRECENDENCE" ),
+    ERR_04003_NULL_AUTHENTICATION_LEVEL( "ERR_04003_NULL_AUTHENTICATION_LEVEL" ),
+    ERR_04004_PARSER_FAILURE_ACI_ITEM( "ERR_04004_PARSER_FAILURE_ACI_ITEM" ),
+    ERR_04005( "ERR_04005" ),
+    ERR_04006( "ERR_04006" ),
+    ERR_04007( "ERR_04007" ),
+    ERR_04008( "ERR_04008" ),
+    ERR_04009( "ERR_04009" ),
+    ERR_04010( "ERR_04010" ),
+    ERR_04011( "ERR_04011" ),
+    ERR_04012( "ERR_04012" ),
+    ERR_04013( "ERR_04013" ),
+    ERR_04014( "ERR_04014" ),
+    ERR_04015( "ERR_04015" ),
+    ERR_04016( "ERR_04016" ),
+    ERR_04017( "ERR_04017" ),
+    ERR_04018( "ERR_04018" ),
+    ERR_04019( "ERR_04019" ),
+    ERR_04020( "ERR_04020" ),
+    ERR_04021( "ERR_04021" ),
+    ERR_04022( "ERR_04022" ),
+    ERR_04023( "ERR_04023" ),
+    ERR_04024( "ERR_04024" ),
+    ERR_04025( "ERR_04025" ),
+    ERR_04026( "ERR_04026" ),
+    ERR_04027( "ERR_04027" ),
+    ERR_04028( "ERR_04028" ),
+    ERR_04029( "ERR_04029" ),
+    ERR_04030( "ERR_04030" ),
+    ERR_04031( "ERR_04031" ),
+    ERR_04032( "ERR_04032" ),
+    ERR_04033( "ERR_04033" ),
+    ERR_04034( "ERR_04034" ),
+    ERR_04035( "ERR_04035" ),
+    ERR_04036( "ERR_04036" ),
+    ERR_04037( "ERR_04037" ),
+    ERR_04038( "ERR_04038" ),
+    ERR_04039( "ERR_04039" ),
+    ERR_04040( "ERR_04040" ),
+    ERR_04041( "ERR_04041" ),
+    ERR_04042( "ERR_04042" ),
+    ERR_04043( "ERR_04043" ),
+    ERR_04044( "ERR_04044" ),
+    ERR_04045( "ERR_04045" ),
+    ERR_04046( "ERR_04046" ),
+    ERR_04047( "ERR_04047" ),
+    ERR_04048( "ERR_04048" ),
+    ERR_04049( "ERR_04049" ),
+    ERR_04050( "ERR_04050" ),
+    ERR_04051( "ERR_04051" ),
+    ERR_04052( "ERR_04052" ),
+    ERR_04053( "ERR_04053" ),
+    ERR_04054( "ERR_04054" ),
+    ERR_04055( "ERR_04055" ),
+    ERR_04056( "ERR_04056" ),
+    ERR_04057( "ERR_04057" ),
+    ERR_04058( "ERR_04058" ),
+    ERR_04059( "ERR_04059" ),
+    ERR_04060( "ERR_04060" ),
+    ERR_04061( "ERR_04061" ),
+    ERR_04062( "ERR_04062" ),
+    ERR_04063( "ERR_04063" ),
+    ERR_04064( "ERR_04064" ),
+    ERR_04065( "ERR_04065" ),
+    ERR_04066( "ERR_04066" ),
+    ERR_04067( "ERR_04067" ),
+    ERR_04068( "ERR_04068" ),
+    ERR_04069( "ERR_04069" ),
+    ERR_04070( "ERR_04070" ),
+    ERR_04071( "ERR_04071" ),
+    ERR_04072( "ERR_04072" ),
+    ERR_04073( "ERR_04073" ),
+    ERR_04074( "ERR_04074" ),
+    ERR_04075( "ERR_04075" ),
+    ERR_04076( "ERR_04076" ),
+    ERR_04077( "ERR_04077" ),
+    ERR_04078( "ERR_04078" ),
+    ERR_04079( "ERR_04079" ),
+    ERR_04080( "ERR_04080" ),
+    ERR_04081( "ERR_04081" ),
+    ERR_04082( "ERR_04082" ),
+    ERR_04083( "ERR_04083" ),
+    ERR_04084( "ERR_04084" ),
+    ERR_04085( "ERR_04085" ),
+    ERR_04086( "ERR_04086" ),
+    ERR_04087( "ERR_04087" ),
+    ERR_04088( "ERR_04088" ),
+    ERR_04089( "ERR_04089" ),
+    ERR_04090( "ERR_04090" ),
+    ERR_04091( "ERR_04091" ),
+    ERR_04092( "ERR_04092" ),
+    ERR_04093( "ERR_04093" ),
+    ERR_04094( "ERR_04094" ),
+    ERR_04095( "ERR_04095" ),
+    ERR_04096_NULL_CONTROL_LENGTH( "ERR_04096_NULL_CONTROL_LENGTH" ),
+    ERR_04097_NULL_CONTROL_OID( "ERR_04097_NULL_CONTROL_OID" ),
+    ERR_04098_INVALID_CONTROL_OID( "ERR_04098_INVALID_CONTROL_OID" ),
+    ERR_04099_INVALID_CONTROL_LIST( "ERR_04099_INVALID_CONTROL_LIST" ),
+    ERR_04100_BAD_CONTROL_CRITICALITY( "ERR_04100_BAD_CONTROL_CRITICALITY" ),
+    ERR_04101( "ERR_04101" ),
+    ERR_04102( "ERR_04102" ),
+    ERR_04103( "ERR_04103" ),
+    ERR_04104( "ERR_04104" ),
+    ERR_04105( "ERR_04105" ),
+    ERR_04106( "ERR_04106" ),
+    ERR_04107( "ERR_04107" ),
+    ERR_04108( "ERR_04108" ),
+    ERR_04109( "ERR_04109" ),
+    ERR_04110( "ERR_04110" ),
+    ERR_04111( "ERR_04111" ),
+    ERR_04112( "ERR_04112" ),
+    ERR_04113( "ERR_04113" ),
+    ERR_04114( "ERR_04114" ),
+    ERR_04115( "ERR_04115" ),
+    ERR_04116( "ERR_04116" ),
+    ERR_04117( "ERR_04117" ),
+    ERR_04118( "ERR_04118" ),
+    ERR_04119( "ERR_04119" ),
+    ERR_04120( "ERR_04120" ),
+    ERR_04121( "ERR_04121" ),
+    ERR_04122( "ERR_04122" ),
+    ERR_04123( "ERR_04123" ),
+    ERR_04124( "ERR_04124" ),
+    ERR_04125( "ERR_04125" ),
+    ERR_04126( "ERR_04126" ),
+    ERR_04127( "ERR_04127" ),
+    ERR_04128( "ERR_04128" ),
+    ERR_04129( "ERR_04129" ),
+    ERR_04130( "ERR_04130" ),
+    ERR_04131( "ERR_04131" ),
+    ERR_04132( "ERR_04132" ),
+    ERR_04133( "ERR_04133" ),
+    ERR_04134( "ERR_04134" ),
+    ERR_04135( "ERR_04135" ),
+    ERR_04136( "ERR_04136" ),
+    ERR_04137( "ERR_04137" ),
+    ERR_04138( "ERR_04138" ),
+    ERR_04139_NULL_SYNTAX_CHECKER( "ERR_04139_NULL_SYNTAX_CHECKER" ),
+    ERR_04140_UNACCEPTABLE_RESULT_CODE( "ERR_04140_UNACCEPTABLE_RESULT_CODE" ),
+    ERR_04141( "ERR_04141" ),
+    ERR_04142( "ERR_04142" ),
+    ERR_04143( "ERR_04143" ),
+    ERR_04144( "ERR_04144" ),
+    ERR_04145( "ERR_04145" ),
+    ERR_04146( "ERR_04146" ),
+    ERR_04147( "ERR_04147" ),
+    ERR_04148_MATCHING_RULE_EXPECTED( "ERR_04148_MATCHING_RULE_EXPECTED" ),
+    ERR_04149( "ERR_04149" ),
+    ERR_04150( "ERR_04150" ),
+    ERR_04151( "ERR_04151" ),
+    ERR_04152( "ERR_04152" ),
+    ERR_04153( "ERR_04153" ),
+    ERR_04154( "ERR_04154" ),
+    ERR_04155( "ERR_04155" ),
+    ERR_04156( "ERR_04156" ),
+    ERR_04157( "ERR_04157" ),
+    ERR_04158( "ERR_04158" ),
+    ERR_04159( "ERR_04159" ),
+    ERR_04160( "ERR_04160" ),
+    ERR_04161( "ERR_04161" ),
+    ERR_04162( "ERR_04162" ),
+    ERR_04163( "ERR_04163" ),
+    ERR_04164( "ERR_04164" ),
+    ERR_04165_PAYLOAD_DECODING_ERROR( "ERR_04165_PAYLOAD_DECODING_ERROR" ),
+    ERR_04166( "ERR_04166" ),
+    ERR_04167( "ERR_04167" ),
+    ERR_04168( "ERR_04168" ),
+    ERR_04169( "ERR_04169" ),
+    ERR_04170( "ERR_04170" ),
+    ERR_04171( "ERR_04171" ),
+    ERR_04172( "ERR_04172" ),
+    ERR_04173( "ERR_04173" ),
+    ERR_04174( "ERR_04174" ),
+    ERR_04175( "ERR_04175" ),
+    ERR_04176( "ERR_04176" ),
+    ERR_04177( "ERR_04177" ),
+    ERR_04178( "ERR_04178" ),
+    ERR_04179( "ERR_04179" ),
+    ERR_04180( "ERR_04180" ),
+    ERR_04181( "ERR_04181" ),
+    ERR_04182( "ERR_04182" ),
+    ERR_04183( "ERR_04183" ),
+    ERR_04184( "ERR_04184" ),
+    ERR_04185( "ERR_04185" ),
+    ERR_04186( "ERR_04186" ),
+    ERR_04187( "ERR_04187" ),
+    ERR_04188( "ERR_04188" ),
+    ERR_04189( "ERR_04189" ),
+    ERR_04190( "ERR_04190" ),
+    ERR_04191( "ERR_04191" ),
+    ERR_04192( "ERR_04192" ),
+    ERR_04193( "ERR_04193" ),
+    ERR_04194( "ERR_04194" ),
+    ERR_04195( "ERR_04195" ),
+    ERR_04196( "ERR_04196" ),
+    ERR_04197( "ERR_04197" ),
+    ERR_04198( "ERR_04198" ),
+    ERR_04199( "ERR_04199" ),
+    ERR_04200( "ERR_04200" ),
+    ERR_04201( "ERR_04201" ),
+    ERR_04202( "ERR_04202" ),
+    ERR_04203( "ERR_04203" ),
+    ERR_04204( "ERR_04204" ),
+    ERR_04205( "ERR_04205" ),
+    ERR_04206( "ERR_04206" ),
+    ERR_04207( "ERR_04207" ),
+    ERR_04208( "ERR_04208" ),
+    ERR_04209_EMPTY_TYPE_NOT_ALLOWED( "ERR_04209_EMPTY_TYPE_NOT_ALLOWED" ),
+    ERR_04210( "ERR_04210" ),
+    ERR_04211( "ERR_04211" ),
+    ERR_04212( "ERR_04212" ),
+    ERR_04213( "ERR_04213" ),
+    ERR_04214( "ERR_04214" ),
+    ERR_04215( "ERR_04215" ),
+    ERR_04216( "ERR_04216" ),
+    ERR_04217( "ERR_04217" ),
+    ERR_04218( "ERR_04218" ),
+    ERR_04219_ARGUMENT1_NULL( "ERR_04219_ARGUMENT1_NULL" ),
+    ERR_04220_ARGUMENT2_NULL( "ERR_04220_ARGUMENT2_NULL" ),
+    ERR_04221( "ERR_04221" ),
+    ERR_04222( "ERR_04222" ),
+    ERR_04223( "ERR_04223" ),
+    ERR_04224( "ERR_04224" ),
+    ERR_04225( "ERR_04225" ),
+    ERR_04226( "ERR_04226" ),
+    ERR_04227( "ERR_04227" ),
+    ERR_04228( "ERR_04228" ),
+    ERR_04229( "ERR_04229" ),
+    ERR_04230( "ERR_04230" ),
+    ERR_04231( "ERR_04231" ),
+    ERR_04232( "ERR_04232" ),
+    ERR_04233( "ERR_04233" ),
+    ERR_04234( "ERR_04234" ),
+    ERR_04235( "ERR_04235" ),
+    ERR_04236( "ERR_04236" ),
+    ERR_04237( "ERR_04237" ),
+    ERR_04238( "ERR_04238" ),
+    ERR_04239( "ERR_04239" ),
+    ERR_04240( "ERR_04240" ),
+    ERR_04241( "ERR_04241" ),
+    ERR_04242( "ERR_04242" ),
+    ERR_04243( "ERR_04243" ),
+    ERR_04244( "ERR_04244" ),
+    ERR_04245( "ERR_04245" ),
+    ERR_04246( "ERR_04246" ),
+    ERR_04247( "ERR_04247" ),
+    ERR_04248( "ERR_04248" ),
+    ERR_04249( "ERR_04249" ),
+    ERR_04250( "ERR_04250" ),
+    ERR_04251( "ERR_04251" ),
+    ERR_04252( "ERR_04252" ),
+    ERR_04253( "ERR_04253" ),
+    ERR_04254( "ERR_04254" ),
+    ERR_04255( "ERR_04255" ),
+    ERR_04256( "ERR_04256" ),
+    ERR_04257( "ERR_04257" ),
+    ERR_04258( "ERR_04258" ),
+    ERR_04259( "ERR_04259" ),
+    ERR_04260( "ERR_04260" ),
+    ERR_04261( "ERR_04261" ),
+    ERR_04262( "ERR_04262" ),
+    ERR_04263( "ERR_04263" ),
+    ERR_04264( "ERR_04264" ),
+    ERR_04265( "ERR_04265" ),
+    ERR_04266( "ERR_04266" ),
+    ERR_04267( "ERR_04267" ),
+    ERR_04268_OID_NOT_FOUND( "ERR_04268_OID_NOT_FOUND" ),
+    ERR_04269( "ERR_04269" ),
+    ERR_04270( "ERR_04270" ),
+    ERR_04271( "ERR_04271" ),
+    ERR_04272( "ERR_04272" ),
+    ERR_04273( "ERR_04273" ),
+    ERR_04274( "ERR_04274" ),
+    ERR_04275( "ERR_04275" ),
+    ERR_04276( "ERR_04276" ),
+    ERR_04277( "ERR_04277" ),
+    ERR_04278( "ERR_04278" ),
+    ERR_04279( "ERR_04279" ),
+    ERR_04280( "ERR_04280" ),
+    ERR_04281( "ERR_04281" ),
+    ERR_04282( "ERR_04282" ),
+    ERR_04283( "ERR_04283" ),
+    ERR_04284( "ERR_04284" ),
+    ERR_04285( "ERR_04285" ),
+    ERR_04286( "ERR_04286" ),
+    ERR_04287( "ERR_04287" ),
+    ERR_04288( "ERR_04288" ),
+    ERR_04289( "ERR_04289" ),
+    ERR_04290( "ERR_04290" ),
+    ERR_04291( "ERR_04291" ),
+    ERR_04292( "ERR_04292" ),
+    ERR_04293( "ERR_04293" ),
+    ERR_04294( "ERR_04294" ),
+    ERR_04295_NO_NORMALIZER( "ERR_04295_NO_NORMALIZER" ),
+    ERR_04296( "ERR_04296" ),
+    ERR_04297( "ERR_04297" ),
+    ERR_04298( "ERR_04298" ),
+    ERR_04299( "ERR_04299" ),
+    ERR_04300( "ERR_04300" ),
+    ERR_04301( "ERR_04301" ),
+    ERR_04302( "ERR_04302" ),
+    ERR_04303( "ERR_04303" ),
+    ERR_04304( "ERR_04304" ),
+    ERR_04305( "ERR_04305" ),
+    ERR_04306( "ERR_04306" ),
+    ERR_04307( "ERR_04307" ),
+    ERR_04308( "ERR_04308" ),
+    ERR_04309( "ERR_04309" ),
+    ERR_04310( "ERR_04310" ),
+    ERR_04311( "ERR_04311" ),
+    ERR_04312( "ERR_04312" ),
+    ERR_04313( "ERR_04313" ),
+    ERR_04314( "ERR_04314" ),
+    ERR_04315( "ERR_04315" ),
+    ERR_04316( "ERR_04316" ),
+    ERR_04317( "ERR_04317" ),
+    ERR_04318( "ERR_04318" ),
+    ERR_04319( "ERR_04319" ),
+    ERR_04320( "ERR_04320" ),
+    ERR_04321( "ERR_04321" ),
+    ERR_04322( "ERR_04322" ),
+    ERR_04323( "ERR_04323" ),
+    ERR_04324( "ERR_04324" ),
+    ERR_04325( "ERR_04325" ),
+    ERR_04326( "ERR_04326" ),
+    ERR_04327( "ERR_04327" ),
+    ERR_04328( "ERR_04328" ),
+    ERR_04329( "ERR_04329" ),
+    ERR_04330( "ERR_04330" ),
+    ERR_04331( "ERR_04331" ),
+    ERR_04332( "ERR_04332" ),
+    ERR_04333( "ERR_04333" ),
+    ERR_04334( "ERR_04334" ),
+    ERR_04335( "ERR_04335" ),
+    ERR_04336( "ERR_04336" ),
+    ERR_04337( "ERR_04337" ),
+    ERR_04338( "ERR_04338" ),
+    ERR_04339( "ERR_04339" ),
+    ERR_04340( "ERR_04340" ),
+    ERR_04341( "ERR_04341" ),
+    ERR_04342( "ERR_04342" ),
+    ERR_04343( "ERR_04343" ),
+    ERR_04344( "ERR_04344" ),
+    ERR_04345( "ERR_04345" ),
+    ERR_04346( "ERR_04346" ),
+    ERR_04347( "ERR_04347" ),
+    ERR_04348( "ERR_04348" ),
+    ERR_04349( "ERR_04349" ),
+    ERR_04350( "ERR_04350" ),
+    ERR_04351( "ERR_04351" ),
+    ERR_04352( "ERR_04352" ),
+    ERR_04353( "ERR_04353" ),
+    ERR_04354( "ERR_04354" ),
+    ERR_04355( "ERR_04355" ),
+    ERR_04356( "ERR_04356" ),
+    ERR_04357( "ERR_04357" ),
+    ERR_04358( "ERR_04358" ),
+    ERR_04359( "ERR_04359" ),
+    ERR_04360( "ERR_04360" ),
+    ERR_04361( "ERR_04361" ),
+    ERR_04362( "ERR_04362" ),
+    ERR_04363( "ERR_04363" ),
+    ERR_04364( "ERR_04364" ),
+    ERR_04365( "ERR_04365" ),
+    ERR_04366( "ERR_04366" ),
+    ERR_04367( "ERR_04367" ),
+    ERR_04368( "ERR_04368" ),
+    ERR_04369( "ERR_04369" ),
+    ERR_04370( "ERR_04370" ),
+    ERR_04371( "ERR_04371" ),
+    ERR_04372( "ERR_04372" ),
+    ERR_04373( "ERR_04373" ),
+    ERR_04374( "ERR_04374" ),
+    ERR_04375( "ERR_04375" ),
+    ERR_04376( "ERR_04376" ),
+    ERR_04377( "ERR_04377" ),
+    ERR_04378( "ERR_04378" ),
+    ERR_04379( "ERR_04379" ),
+    ERR_04380( "ERR_04380" ),
+    ERR_04381( "ERR_04381" ),
+    ERR_04382( "ERR_04382" ),
+    ERR_04383( "ERR_04383" ),
+    ERR_04384( "ERR_04384" ),
+    ERR_04385( "ERR_04385" ),
+    ERR_04386( "ERR_04386" ),
+    ERR_04387( "ERR_04387" ),
+    ERR_04388( "ERR_04388" ),
+    ERR_04389( "ERR_04389" ),
+    ERR_04390( "ERR_04390" ),
+    ERR_04391( "ERR_04391" ),
+    ERR_04392( "ERR_04392" ),
+    ERR_04393( "ERR_04393" ),
+    ERR_04394( "ERR_04394" ),
+    ERR_04395( "ERR_04395" ),
+    ERR_04396( "ERR_04396" ),
+    ERR_04397( "ERR_04397" ),
+    ERR_04398( "ERR_04398" ),
+    ERR_04399( "ERR_04399" ),
+    ERR_04400( "ERR_04400" ),
+    ERR_04401( "ERR_04401" ),
+    ERR_04402( "ERR_04402" ),
+    ERR_04403( "ERR_04403" ),
+    ERR_04404( "ERR_04404" ),
+    ERR_04405( "ERR_04405" ),
+    ERR_04406( "ERR_04406" ),
+    ERR_04407( "ERR_04407" ),
+    ERR_04408( "ERR_04408" ),
+    ERR_04409( "ERR_04409" ),
+    ERR_04410( "ERR_04410" ),
+    ERR_04411( "ERR_04411" ),
+    ERR_04412( "ERR_04412" ),
+    ERR_04413( "ERR_04413" ),
+    ERR_04414( "ERR_04414" ),
+    ERR_04415( "ERR_04415" ),
+    ERR_04416( "ERR_04416" ),
+    ERR_04417( "ERR_04417" ),
+    ERR_04418( "ERR_04418" ),
+    ERR_04419( "ERR_04419" ),
+    ERR_04420( "ERR_04420" ),
+    ERR_04421( "ERR_04421" ),
+    ERR_04422( "ERR_04422" ),
+    ERR_04423( "ERR_04423" ),
+    ERR_04424( "ERR_04424" ),
+    ERR_04425( "ERR_04425" ),
+    ERR_04426( "ERR_04426" ),
+    ERR_04427( "ERR_04427" ),
+    ERR_04428( "ERR_04428" ),
+    ERR_04429( "ERR_04429" ),
+    ERR_04430( "ERR_04430" ),
+    ERR_04431( "ERR_04431" ),
+    ERR_04432( "ERR_04432" ),
+    ERR_04433( "ERR_04433" ),
+    ERR_04434( "ERR_04434" ),
+    ERR_04435( "ERR_04435" ),
+    ERR_04436( "ERR_04436" ),
+    ERR_04437( "ERR_04437" ),
+    ERR_04438( "ERR_04438" ),
+    ERR_04439( "ERR_04439" ),
+    ERR_04440( "ERR_04440" ),
+    ERR_04441( "ERR_04441" ),
+    ERR_04442_NOT_EXISTING_ATTRIBUTE_TYPE( "ERR_04442_NOT_EXISTING_ATTRIBUTE_TYPE" ),
+    ERR_04443( "ERR_04443" ),
+    ERR_04444( "ERR_04444" ),
+    ERR_04445_NO_SYNTAX( "ERR_04445_NO_SYNTAX" ),
+    ERR_04446( "ERR_04446" ),
+    ERR_04447_CANNOT_NORMALIZE_VALUE( "ERR_04447_CANNOT_NORMALIZE_VALUE" ),
+    ERR_04448( "ERR_04448" ),
+    ERR_04449( "ERR_04449" ),
+    ERR_04450( "ERR_04450" ),
+    ERR_04451( "ERR_04451" ),
+    ERR_04452( "ERR_04452" ),
+    ERR_04453( "ERR_04453" ),
+    ERR_04454( "ERR_04454" ),
+    ERR_04455( "ERR_04455" ),
+    ERR_04456( "ERR_04456" ),
+    ERR_04457_NULL_ATTRIBUTE_ID( "ERR_04457_NULL_ATTRIBUTE_ID" ),
+    ERR_04458( "ERR_04458" ),
+    ERR_04459( "ERR_04459" ),
+    ERR_04460_ATTRIBUTE_TYPE_NULL_NOT_ALLOWED( "ERR_04460_ATTRIBUTE_TYPE_NULL_NOT_ALLOWED" ),
+    ERR_04461( "ERR_04461" ),
+    ERR_04462( "ERR_04462" ),
+    ERR_04463( "ERR_04463" ),
+    ERR_04464( "ERR_04464" ),
+    ERR_04465( "ERR_04465" ),
+    ERR_04466( "ERR_04466" ),
+    ERR_04467( "ERR_04467" ),
+    ERR_04468( "ERR_04468" ),
+    ERR_04469( "ERR_04469" ),
+    ERR_04470( "ERR_04470" ),
+    ERR_04471( "ERR_04471" ),
+    ERR_04472( "ERR_04472" ),
+    ERR_04473_NOT_VALID_VALUE( "ERR_04473_NOT_VALID_VALUE" ),
+    ERR_04474( "ERR_04474" ),
+    ERR_04475( "ERR_04475" ),
+    ERR_04476( "ERR_04476" ),
+    ERR_04477_NO_VALID_AT_FOR_THIS_ID( "ERR_04477_NO_VALID_AT_FOR_THIS_ID" ),
+    ERR_04478_NO_VALUE_NOT_ALLOWED( "ERR_04478_NO_VALUE_NOT_ALLOWED" ),
+    ERR_04479_INVALID_SYNTAX_VALUE( "ERR_04479_INVALID_SYNTAX_VALUE" ),
+    ERR_04480_END_OF_STREAM( "ERR_04480_END_OF_STREAM" ),
+    ERR_04481_ENTRY_NULL_VALUE( "ERR_04481_ENTRY_NULL_VALUE" ),
+    ERR_04482_CANNOT_SUBTYPE_COLLECTIVE( "ERR_04482_CANNOT_SUBTYPE_COLLECTIVE" ),
+    ERR_04483_COLLECTIVE_NOT_MULTI_VALUED( "ERR_04483_COLLECTIVE_NOT_MULTI_VALUED" ),
+    ERR_04484_COLLECTIVE_NOT_ALLOWED_IN_MUST( "ERR_04484_COLLECTIVE_NOT_ALLOWED_IN_MUST" ),
+    ERR_04485_COLLECTIVE_NOT_ALLOWED_IN_MAY( "ERR_04485_COLLECTIVE_NOT_ALLOWED_IN_MAY" ),
+    ERR_04486_VALUE_ALREADY_EXISTS( "ERR_04486_VALUE_ALREADY_EXISTS" ),
+    ERR_04487_ATTRIBUTE_IS_SINGLE_VALUED( "ERR_04487_ATTRIBUTE_IS_SINGLE_VALUED" ),
+    ERR_04488_NULL_ATTRIBUTE_TYPE( "ERR_04488_NULL_ATTRIBUTE_TYPE" ),
+    ERR_04489_SYNTAX_INVALID( "ERR_04489_SYNTAX_INVALID" ),
+    ERR_04490_BAD_END_TRANSACTION_COMMIT( "ERR_04490_BAD_END_TRANSACTION_COMMIT" ),
+    ERR_04491_BAD_END_TRANSACTION_MESSAGE_ID( "ERR_04490_BAD_END_TRANSACTION_MESSAGE_ID" ),
 
     // ldap-constants
-    ERR_05001_UNKNOWN_AUTHENT_LEVEL("ERR_05001_UNKNOWN_AUTHENT_LEVEL"),
+    ERR_05001_UNKNOWN_AUTHENT_LEVEL( "ERR_05001_UNKNOWN_AUTHENT_LEVEL" ),
 
     // ldap-converter
-    ERR_06001_EMPTY_OR_NULL_SCHEMA_OBJECT("ERR_06001_EMPTY_OR_NULL_SCHEMA_OBJECT"),
-    ERR_06002_PARSER_FAILURE("ERR_06002_PARSER_FAILURE"),
-    ERR_06003_NO_NAME("ERR_06003_NO_NAME"),
-    ERR_06004_CANNOT_GENERATE_SOURCES("ERR_06004_CANNOT_GENERATE_SOURCES"),
-    ERR_06005_NULL_SCHEMA("ERR_06005_NULL_SCHEMA"),
-    ERR_06006_NO_PROPERTY("ERR_06006_NO_PROPERTY"),
+    ERR_06001_EMPTY_OR_NULL_SCHEMA_OBJECT( "ERR_06001_EMPTY_OR_NULL_SCHEMA_OBJECT" ),
+    ERR_06002_PARSER_FAILURE( "ERR_06002_PARSER_FAILURE" ),
+    ERR_06003_NO_NAME( "ERR_06003_NO_NAME" ),
+    ERR_06004_CANNOT_GENERATE_SOURCES( "ERR_06004_CANNOT_GENERATE_SOURCES" ),
+    ERR_06005_NULL_SCHEMA( "ERR_06005_NULL_SCHEMA" ),
+    ERR_06006_NO_PROPERTY( "ERR_06006_NO_PROPERTY" ),
 
     // ldap-jndi
     // no exceptions to translate
 
     // ldap-schema
-    ERR_08001("ERR_08001"),
-    ERR_08002("ERR_08002"),
-    ERR_08003("ERR_08003"),
-    ERR_08004("ERR_08004"),
-    ERR_08005("ERR_08005"),
-    ERR_08006("ERR_08006"),
+    ERR_08001( "ERR_08001" ),
+    ERR_08002( "ERR_08002" ),
+    ERR_08003( "ERR_08003" ),
+    ERR_08004( "ERR_08004" ),
+    ERR_08005( "ERR_08005" ),
+    ERR_08006( "ERR_08006" ),
 
     // ldap-schema
-    ERR_09001_DIRECTORY_CREATION_FAILED("ERR_09001_DIRECTORY_CREATION_FAILED"),
+    ERR_09001_DIRECTORY_CREATION_FAILED( "ERR_09001_DIRECTORY_CREATION_FAILED" ),
 
     // ldap-schema-loader
-    ERR_10001("ERR_10001"),
-    ERR_10002("ERR_10002"),
-    ERR_10003("ERR_10003"),
-    ERR_10004("ERR_10004"),
-    ERR_10005("ERR_10005"),
-    ERR_10006("ERR_10006"),
-    ERR_10007("ERR_10007"),
-    ERR_10008("ERR_10008"),
-    ERR_10009("ERR_10009"),
-    ERR_10010("ERR_10010"),
-    ERR_10011("ERR_10011"),
-    ERR_10012("ERR_10012"),
-    ERR_10013("ERR_10013"),
-    ERR_10014("ERR_10014"),
-    ERR_10015("ERR_10015"),
-    ERR_10016("ERR_10016"),
-    ERR_10017("ERR_10017"),
-    ERR_10018("ERR_10018"),
-    ERR_10019("ERR_10019"),
-    ERR_10020("ERR_10020"),
-    ERR_10021("ERR_10021"),
-    ERR_10022("ERR_10022"),
-    ERR_10023("ERR_10023"),
-    ERR_10024("ERR_10024"),
-    ERR_10025("ERR_10025"),
-    ERR_10026("ERR_10026"),
-    ERR_10027("ERR_10027"),
-    ERR_10028("ERR_10028"),
+    ERR_10001( "ERR_10001" ),
+    ERR_10002( "ERR_10002" ),
+    ERR_10003( "ERR_10003" ),
+    ERR_10004( "ERR_10004" ),
+    ERR_10005( "ERR_10005" ),
+    ERR_10006( "ERR_10006" ),
+    ERR_10007( "ERR_10007" ),
+    ERR_10008( "ERR_10008" ),
+    ERR_10009( "ERR_10009" ),
+    ERR_10010( "ERR_10010" ),
+    ERR_10011( "ERR_10011" ),
+    ERR_10012( "ERR_10012" ),
+    ERR_10013( "ERR_10013" ),
+    ERR_10014( "ERR_10014" ),
+    ERR_10015( "ERR_10015" ),
+    ERR_10016( "ERR_10016" ),
+    ERR_10017( "ERR_10017" ),
+    ERR_10018( "ERR_10018" ),
+    ERR_10019( "ERR_10019" ),
+    ERR_10020( "ERR_10020" ),
+    ERR_10021( "ERR_10021" ),
+    ERR_10022( "ERR_10022" ),
+    ERR_10023( "ERR_10023" ),
+    ERR_10024( "ERR_10024" ),
+    ERR_10025( "ERR_10025" ),
+    ERR_10026( "ERR_10026" ),
+    ERR_10027( "ERR_10027" ),
+    ERR_10028( "ERR_10028" ),
 
     // ldap-schema-manager
-    ERR_11001("ERR_11001"),
-    ERR_11002("ERR_11002"),
-    ERR_11003("ERR_11003"),
-    ERR_11004("ERR_11004"),
-    ERR_11005("ERR_11005"),
-    ERR_11006("ERR_11006"),
-    ERR_11007("ERR_11007"),
-    ERR_11008("ERR_11008"),
-    ERR_11009("ERR_11009"),
-    ERR_11010("ERR_11010"),
-    ERR_11011("ERR_11011"),
-    ERR_11012("ERR_11012"),
-    ERR_11013("ERR_11013"),
+    ERR_11001( "ERR_11001" ),
+    ERR_11002( "ERR_11002" ),
+    ERR_11003( "ERR_11003" ),
+    ERR_11004( "ERR_11004" ),
+    ERR_11005( "ERR_11005" ),
+    ERR_11006( "ERR_11006" ),
+    ERR_11007( "ERR_11007" ),
+    ERR_11008( "ERR_11008" ),
+    ERR_11009( "ERR_11009" ),
+    ERR_11010( "ERR_11010" ),
+    ERR_11011( "ERR_11011" ),
+    ERR_11012( "ERR_11012" ),
+    ERR_11013( "ERR_11013" ),
 
     // ldap-schema-manager
-    ERR_12001_UNKNOWN_CHANGE_TYPE("ERR_12001_UNKNOWN_CHANGE_TYPE"),
-    ERR_12002_ENTRY_WITH_TWO_DNS("ERR_12002_ENTRY_WITH_TWO_DNS"),
-    ERR_12003_LDIF_ENTRY_WITH_TWO_DNS("ERR_12003_LDIF_ENTRY_WITH_TWO_DNS"),
-    ERR_12004_CHANGE_NOT_ALLOWED("ERR_12004_CHANGE_NOT_ALLOWED"),
-    ERR_12005_NO_CHANGE("ERR_12005_NO_CHANGE"),
-    ERR_12006_EXPECTING_ATTRIBUTE_TYPE("ERR_12006_EXPECTING_ATTRIBUTE_TYPE"),
-    ERR_12007_BAD_ATTRIBUTE("ERR_12007_BAD_ATTRIBUTE"),
-    ERR_12008_CANNOT_PARSE_LDIF_BUFFER("ERR_12008_CANNOT_PARSE_LDIF_BUFFER"),
-    ERR_12009_ERROR_PARSING_LDIF_BUFFER("ERR_12009_ERROR_PARSING_LDIF_BUFFER"),
-    ERR_12010_CANNOT_FIND_FILE("ERR_12010_CANNOT_FIND_FILE"),
-    ERR_12011_CANNOT_READ_FILE("ERR_12011_CANNOT_READ_FILE"),
-    ERR_12012_EMPTY_DN_NOT_ALLOWED("ERR_12012_EMPTY_DN_NOT_ALLOWED"),
-    ERR_12013_NO_DN("ERR_12013_NO_DN"),
-    ERR_12014_BASE64_DN_EXPECTED("ERR_12014_BASE64_DN_EXPECTED"),
-    ERR_12015_INVALID_BASE64_DN("ERR_12015_INVALID_BASE64_DN"),
-    ERR_12016_DN_EXPECTED("ERR_12016_DN_EXPECTED"),
-    ERR_12017_INVALID_DN("ERR_12017_INVALID_DN"),
-    ERR_12018_FILE_NOT_FOUND("ERR_12018_FILE_NOT_FOUND"),
-    ERR_12019_BAD_URL_FILE_NOT_FOUND("ERR_12019_BAD_URL_FILE_NOT_FOUND"),
-    ERR_12020_FILE_TOO_BIG("ERR_12020_FILE_TOO_BIG"),
-    ERR_12022_ERROR_READING_FILE("ERR_12022_ERROR_READING_FILE"),
-    ERR_12023_ERROR_READING_BAD_URL("ERR_12023_ERROR_READING_BAD_URL"),
-    ERR_12024_CANNOT_CLOSE_FILE("ERR_12024_CANNOT_CLOSE_FILE"),
-    ERR_12025_BAD_PROTOCOL("ERR_12025_BAD_PROTOCOL"),
-    ERR_12026_UNSUPPORTED_PROTOCOL("ERR_12026_UNSUPPORTED_PROTOCOL"),
-    ERR_12027_BAD_URL("ERR_12027_BAD_URL"),
-    ERR_12029_CONTROL_WITHOUT_OID("ERR_12029_CONTROL_WITHOUT_OID"),
-    ERR_12031_INVALID_OID("ERR_12031_INVALID_OID"),
-    ERR_12033_INVALID_CRITICALITY("ERR_12033_INVALID_CRITICALITY"),
-    ERR_12035_BAD_MODRDN_OPERATION("ERR_12035_BAD_MODRDN_OPERATION"),
-    ERR_12038_NO_DELETEOLDRDN("ERR_12038_NO_DELETEOLDRDN"),
-    ERR_12040_BAD_MODIFY_SEPARATOR("ERR_12040_BAD_MODIFY_SEPARATOR"),
-    ERR_12042_BAD_MODIFY_SEPARATOR_2("ERR_12042_BAD_MODIFY_SEPARATOR_2"),
-    ERR_12044("ERR_12044"),
-    ERR_12045("ERR_12045"),
-    ERR_12046("ERR_12046"),
-    ERR_12047("ERR_12047"),
-    ERR_12048("ERR_12048"),
-    ERR_12049("ERR_12049"),
-    ERR_12050("ERR_12050"),
-    ERR_12051("ERR_12051"),
-    ERR_12052("ERR_12052"),
-    ERR_12053("ERR_12053"),
-    ERR_12054("ERR_12054"),
-    ERR_12055("ERR_12055"),
-    ERR_12056("ERR_12056"),
-    ERR_12057_BAD_ATTRIBUTE("ERR_12057_BAD_ATTRIBUTE"),
-    ERR_12058_UNKNOWN_ENTRY_TYPE("ERR_12058_UNKNOWN_ENTRY_TYPE"),
-    ERR_12059_UNKNOWN_ENTRY("ERR_12059_UNKNOWN_ENTRY"),
-    ERR_12060_VERSION_NOT_A_NUMBER("ERR_12060_VERSION_NOT_A_NUMBER"),
-    ERR_12061_LDIF_PARSING_ERROR("ERR_12061_LDIF_PARSING_ERROR"),
-    ERR_12062_EMPTY_CONTINUATION_LINE("ERR_12062_EMPTY_CONTINUATION_LINE"),
-    ERR_12063_ERROR_WHILE_READING_LDIF_LINE("ERR_12063_ERROR_WHILE_READING_LDIF_LINE"),
-    ERR_12064_EMPTY_FILE_NAME("ERR_12064_EMPTY_FILE_NAME"),
-    ERR_12066("ERR_12066"),
-    ERR_12067("ERR_12067"),
-    ERR_12068("ERR_12068"),
-    ERR_12069("ERR_12069"),
-    ERR_12070("ERR_12070"),
-    ERR_12071("ERR_12071"),
-    ERR_12072("ERR_12072"),
-    ERR_12073("ERR_12073"),
-    ERR_12074("ERR_12074"),
-    ERR_12075("ERR_12075"),
-    ERR_12076("ERR_12076"),
-    ERR_12077("ERR_12077"),
-    ERR_12078("ERR_12078"),
-    ERR_12079("ERR_12079"),
-    ERR_12080("ERR_12080"),
-    ERR_12081("ERR_12081"),
-    ERR_12082("ERR_12082"),
-    ERR_12083("ERR_12083"),
-    ERR_12084("ERR_12084"),
-    ERR_12085("ERR_12085"),
-    ERR_12086("ERR_12086"),
-    ERR_12087("ERR_12087"),
+    ERR_12001_UNKNOWN_CHANGE_TYPE( "ERR_12001_UNKNOWN_CHANGE_TYPE" ),
+    ERR_12002_ENTRY_WITH_TWO_DNS( "ERR_12002_ENTRY_WITH_TWO_DNS" ),
+    ERR_12003_LDIF_ENTRY_WITH_TWO_DNS( "ERR_12003_LDIF_ENTRY_WITH_TWO_DNS" ),
+    ERR_12004_CHANGE_NOT_ALLOWED( "ERR_12004_CHANGE_NOT_ALLOWED" ),
+    ERR_12005_NO_CHANGE( "ERR_12005_NO_CHANGE" ),
+    ERR_12006_EXPECTING_ATTRIBUTE_TYPE( "ERR_12006_EXPECTING_ATTRIBUTE_TYPE" ),
+    ERR_12007_BAD_ATTRIBUTE( "ERR_12007_BAD_ATTRIBUTE" ),
+    ERR_12008_CANNOT_PARSE_LDIF_BUFFER( "ERR_12008_CANNOT_PARSE_LDIF_BUFFER" ),
+    ERR_12009_ERROR_PARSING_LDIF_BUFFER( "ERR_12009_ERROR_PARSING_LDIF_BUFFER" ),
+    ERR_12010_CANNOT_FIND_FILE( "ERR_12010_CANNOT_FIND_FILE" ),
+    ERR_12011_CANNOT_READ_FILE( "ERR_12011_CANNOT_READ_FILE" ),
+    ERR_12012_EMPTY_DN_NOT_ALLOWED( "ERR_12012_EMPTY_DN_NOT_ALLOWED" ),
+    ERR_12013_NO_DN( "ERR_12013_NO_DN" ),
+    ERR_12014_BASE64_DN_EXPECTED( "ERR_12014_BASE64_DN_EXPECTED" ),
+    ERR_12015_INVALID_BASE64_DN( "ERR_12015_INVALID_BASE64_DN" ),
+    ERR_12016_DN_EXPECTED( "ERR_12016_DN_EXPECTED" ),
+    ERR_12017_INVALID_DN( "ERR_12017_INVALID_DN" ),
+    ERR_12018_FILE_NOT_FOUND( "ERR_12018_FILE_NOT_FOUND" ),
+    ERR_12019_BAD_URL_FILE_NOT_FOUND( "ERR_12019_BAD_URL_FILE_NOT_FOUND" ),
+    ERR_12020_FILE_TOO_BIG( "ERR_12020_FILE_TOO_BIG" ),
+    ERR_12022_ERROR_READING_FILE( "ERR_12022_ERROR_READING_FILE" ),
+    ERR_12023_ERROR_READING_BAD_URL( "ERR_12023_ERROR_READING_BAD_URL" ),
+    ERR_12024_CANNOT_CLOSE_FILE( "ERR_12024_CANNOT_CLOSE_FILE" ),
+    ERR_12025_BAD_PROTOCOL( "ERR_12025_BAD_PROTOCOL" ),
+    ERR_12026_UNSUPPORTED_PROTOCOL( "ERR_12026_UNSUPPORTED_PROTOCOL" ),
+    ERR_12027_BAD_URL( "ERR_12027_BAD_URL" ),
+    ERR_12029_CONTROL_WITHOUT_OID( "ERR_12029_CONTROL_WITHOUT_OID" ),
+    ERR_12031_INVALID_OID( "ERR_12031_INVALID_OID" ),
+    ERR_12033_INVALID_CRITICALITY( "ERR_12033_INVALID_CRITICALITY" ),
+    ERR_12035_BAD_MODRDN_OPERATION( "ERR_12035_BAD_MODRDN_OPERATION" ),
+    ERR_12038_NO_DELETEOLDRDN( "ERR_12038_NO_DELETEOLDRDN" ),
+    ERR_12040_BAD_MODIFY_SEPARATOR( "ERR_12040_BAD_MODIFY_SEPARATOR" ),
+    ERR_12042_BAD_MODIFY_SEPARATOR_2( "ERR_12042_BAD_MODIFY_SEPARATOR_2" ),
+    ERR_12044( "ERR_12044" ),
+    ERR_12045( "ERR_12045" ),
+    ERR_12046( "ERR_12046" ),
+    ERR_12047( "ERR_12047" ),
+    ERR_12048( "ERR_12048" ),
+    ERR_12049( "ERR_12049" ),
+    ERR_12050( "ERR_12050" ),
+    ERR_12051( "ERR_12051" ),
+    ERR_12052( "ERR_12052" ),
+    ERR_12053( "ERR_12053" ),
+    ERR_12054( "ERR_12054" ),
+    ERR_12055( "ERR_12055" ),
+    ERR_12056( "ERR_12056" ),
+    ERR_12057_BAD_ATTRIBUTE( "ERR_12057_BAD_ATTRIBUTE" ),
+    ERR_12058_UNKNOWN_ENTRY_TYPE( "ERR_12058_UNKNOWN_ENTRY_TYPE" ),
+    ERR_12059_UNKNOWN_ENTRY( "ERR_12059_UNKNOWN_ENTRY" ),
+    ERR_12060_VERSION_NOT_A_NUMBER( "ERR_12060_VERSION_NOT_A_NUMBER" ),
+    ERR_12061_LDIF_PARSING_ERROR( "ERR_12061_LDIF_PARSING_ERROR" ),
+    ERR_12062_EMPTY_CONTINUATION_LINE( "ERR_12062_EMPTY_CONTINUATION_LINE" ),
+    ERR_12063_ERROR_WHILE_READING_LDIF_LINE( "ERR_12063_ERROR_WHILE_READING_LDIF_LINE" ),
+    ERR_12064_EMPTY_FILE_NAME( "ERR_12064_EMPTY_FILE_NAME" ),
+    ERR_12066( "ERR_12066" ),
+    ERR_12067( "ERR_12067" ),
+    ERR_12068( "ERR_12068" ),
+    ERR_12069( "ERR_12069" ),
+    ERR_12070( "ERR_12070" ),
+    ERR_12071( "ERR_12071" ),
+    ERR_12072( "ERR_12072" ),
+    ERR_12073( "ERR_12073" ),
+    ERR_12074( "ERR_12074" ),
+    ERR_12075( "ERR_12075" ),
+    ERR_12076( "ERR_12076" ),
+    ERR_12077( "ERR_12077" ),
+    ERR_12078( "ERR_12078" ),
+    ERR_12079( "ERR_12079" ),
+    ERR_12080( "ERR_12080" ),
+    ERR_12081( "ERR_12081" ),
+    ERR_12082( "ERR_12082" ),
+    ERR_12083( "ERR_12083" ),
+    ERR_12084( "ERR_12084" ),
+    ERR_12085( "ERR_12085" ),
+    ERR_12086( "ERR_12086" ),
+    ERR_12087( "ERR_12087 "),
 
     // The messages
+    MSG_03201_BIND_FAIL( "MSG_03201_BIND_FAIL" ),
+    MSG_03202_BIND_SUCCESSFUL( "MSG_03202_BIND_SUCCESSFUL" ),
+    MSG_03203_BIND_REQUEST( "MSG_03203_BIND_REQUEST" ),
+    MSG_03204_NULL_REQUEST( "MSG_03204_NULL_REQUEST" ),
+    MSG_03205_SENDING_REQUEST( "MSG_03205_SENDING_REQUEST" ),
+    MSG_03206_MISSING_PASSWORD( "MSG_03206_MISSING_PASSWORD" ),
+    MSG_03207_ADDING( "MSG_03207_ADDING" ),
+    MSG_03208_ADD_FAILED( "MSG_03208_ADD_FAILED" ),
+    MSG_03209_ADD_SUCCESSFUL( "MSG_03209_ADD_SUCCESSFUL" ),
+    MSG_03210_ANONYMOUS_BIND( "MSG_03210_ANONYMOUS_BIND" ),
+    MSG_03211_ANONYMOUS_ASYNC_BIND( "MSG_03211_ANONYMOUS_ASYNC_BIND" ),
+    MSG_03212_ASYNC_BIND( "MSG_03212_ASYNC_BIND" ),
+    MSG_03213_BIND( "MSG_03213_BIND" ),
+    MSG_03214_COMPARE_FAILED( "MSG_03214_COMPARE_FAILED" ),
+    MSG_03215_COMPARE_SUCCESSFUL( "MSG_03215_COMPARE_SUCCESSFUL" ),
+    MSG_03216_DELETE_FAILED( "MSG_03216_COMPARE_FAILED" ),
+    MSG_03217_DELETE_SUCCESSFUL( "MSG_03217_COMPARE_SUCCESSFUL" ),
+    MSG_03218_EXTENDED_FAILED( "MSG_03218_EXTENDED_FAILED" ),
+    MSG_03219_EXTENDED_SUCCESSFUL( "MSG_03219_EXTENDED_SUCCESSFUL" ),
+    MSG_03220_GETTING( "MSG_03220_GETTING" ),
+    MSG_03221_INTERRUPTED_WAITING_FOR_CONNECTION( "MSG_03221_INTERRUPTED_WAITING_FOR_CONNECTION" ),
+    MSG_03222_LDAP_ALREADY_USING_START_TLS( "MSG_03222_LDAP_ALREADY_USING_START_TLS" ),
+    MSG_03223_MODIFY_FAILED( "MSG_03223_MODIFY_FAILED" ),
+    MSG_03224_MODIFY_SUCCESSFUL( "MSG_03224_MODIFY_SUCCESSFUL" ),
+    MSG_03225_MODIFYDN_FAILED( "MSG_03225_MODIFYDN_FAILED" ),
+    MSG_03226_MODIFYDN_SUCCESSFUL( "MSG_03226_MODIFYDN_SUCCESSFUL" ),
+    MSG_03227_REMOVING( "MSG_03227_REMOVING" ),
+    MSG_03228_SASL_PLAIN_BIND( "MSG_03228_SASL_PLAIN_BIND" ),
+    MSG_03229_SEARCH_ENTRY_FOUND( "MSG_03229_SEARCH_ENTRY_FOUND" ),
+    MSG_03230_SEARCH_FAILED( "MSG_03230_SEARCH_FAILED" ),
+    MSG_03231_SEARCH_REFERENCE_FOUND( "MSG_03231_SEARCH_REFERENCE_FOUND" ),
+    MSG_03232_SEARCH_SUCCESSFUL( "MSG_03232_SEARCH_SUCCESSFUL" ),
+    MSG_03233_SENDING_UNBIND( "MSG_03233_SENDING_UNBIND" ),
+    MSG_03234_UNBINDSUCCESSFUL( "MSG_03234_UNBINDSUCCESSFUL" ),
+    MSG_03235_CLOSING( "MSG_03235_CLOSING" ),
+    MSG_03236_KRB5_FILE_CREATED( "MSG_03236_KRB5_FILE_CREATED" ),
+    MSG_03237_NOTIFYING_CLOSE_LISTENERS( "MSG_03237_NOTIFYING_CLOSE_LISTENERS" ),
+    MSG_03238_NOD_RECEIVED( "MSG_03238_NOD_RECEIVED" ),
+    MSG_03239_NULL_DN_SEARCH( "MSG_03239_NULL_DN_SEARCH" ),
+    MSG_03240_NULL_DN_MODIFY( "MSG_03240_NULL_DN_MODIFY" ),
+    MSG_03241_NULL_ENTRY_MODIFY( "MSG_03241_NULL_ENTRY_MODIFY" ),
+    MSG_03242_SENDING_CANCEL( "MSG_03242_SENDING_CANCEL" ),
+    MSG_03243_MESSAGE_RECEIVED( "MSG_03243_MESSAGE_RECEIVED" ),
+    MSG_03244_CONNECTION_RETRYING( "MSG_03244_CONNECTION_RETRYING" ),
+    MSG_03245_CONNECTION_ERROR( "MSG_03245_CONNECTION_ERROR" ),
+
+    
     MSG_04490_SYNTAX_VALID( "MSG_04490_SYNTAX_VALID" );
     
 
diff --git a/i18n/src/main/resources/org/apache/directory/api/i18n/errors.properties b/i18n/src/main/resources/org/apache/directory/api/i18n/errors.properties
index c3f1ae4..2fc1029 100644
--- a/i18n/src/main/resources/org/apache/directory/api/i18n/errors.properties
+++ b/i18n/src/main/resources/org/apache/directory/api/i18n/errors.properties
@@ -125,11 +125,22 @@ ERR_03040=unable to find the batch request
 # dsml-parser
 ERR_03101_MISSING_CONNECTION_TO BIND=Missing connection, can not bind
 
+# ldap-client
+ERR_03201_CURSOR_CLOSE_FAIL=Failed to close open cursor
+ERR_03201_BIND_FAIL_TIMEOUT=Bind failed : timeout occurred
+ERR_03202_ERROR_PROCESSING_NOD=Error while processing the NoD for {}
+ERR_03203_OP_FAILED_TIMEOUT={} failed: timeout occurred
+ERR_03204_ERROR_LOADING_SCHEMA=There are errors while loading the schema
+ERR_03205_FAIL_LOAD_SCHEMA=Failed to load the schema
+ERR_03206_FAIL_LOAD_SCHEMA_FILE=Failed to load the schema from file {}
+ERR_03207_SOMETHING_WRONG_HAPPENED=Message failed: something wrong has occurred
+ERR_03208_TIMEOUT=Timeout has occurred
+
 # ldap
 ERR_04001_NULL_IDENTIFICATION_TAG=identificationTag parameter is null
 ERR_04002_BAD_PRECENDENCE=precedence parameter not in [0-255] : {0}
 ERR_04003_NULL_AUTHENTICATION_LEVEL=authenticationLevel parameter is null
-ERR_04004_PARSER_FAILURE_ACI_ITEM=Parser failure on ACIItem\:\n\t{0}\nAntlr exception trace\:\n{1} [Line:{2} - Column:{3}]
+ERR_04004_PARSER_FAILURE_ACI_ITEM=Parser failure on ACIItem:\n\t{0}\nAntlr exception trace:\n{1} [Line:{2} - Column:{3}]
 ERR_04005=The PDU buffer size is too small !
 ERR_04006=The And filter PDU must not be empty
 ERR_04007=The attribute description is empty
@@ -140,7 +151,7 @@ ERR_04011=The Referrals must not be null
 ERR_04012=The Substring filter PDU must not be empty
 ERR_04013=Incorrect DN given : {0} ({1}) is invalid : {2}
 ERR_04014=Incorrect DN given : {0}
-ERR_04015=The URL {0} is not valid \: {1} 
+ERR_04015=The URL {0} is not valid : {1} 
 ERR_04016=Invalid URL : {0}
 ERR_04017=The name must not be null
 ERR_04018=The result code {0} is invalid : {1}. The result code must be between (0 .. 121)
@@ -252,7 +263,7 @@ ERR_04123=The replicaID must not be null or empty
 ERR_04124=The replicaId ''{0}'' is not a valid number
 ERR_04125=The operationNumber is absent
 ERR_04126=The operationNumber ''{0}'' is not a valid number
-ERR_04127=I don't really know how to compare anything other than ServerBinaryValues at this point in time.
+ERR_04127=I don''t really know how to compare anything other than ServerBinaryValues at this point in time.
 ERR_04128=Cannot compare {0} with the unknown value {1} 
 ERR_04129=Unknown value type: {0}
 ERR_04130=The value is expected to be a byte[]
@@ -309,7 +320,7 @@ ERR_04180=Could not instantiate provider - environment does not specify {0} prop
 ERR_04181=Count not find the Provider class {0}
 ERR_04182=Count not invoke the Provider''s factory method: {0}.getProvider() - it may not exist!
 ERR_04183=Count not invoke the Provider''s factory method: {0}.getProvider() - it does seem to be a public method!
-ERR_04184=Call to Provider''s factory method\: {0}.getProvider() threw the following exception\:\n{1}
+ERR_04184=Call to Provider''s factory method: {0}.getProvider() threw the following exception:\n{1}
 ERR_04185=RFC 2251 [Section 4.11]: Abandon, Bind, Unbind, and StartTLS operations cannot be abandoned.
 ERR_04186=Unrecognized value ''{0}'' for {1} JNDI property.\nExpected a value of either always, never, searching, or finding.
 ERR_04187=Class has bug: check for valid enumeration values
@@ -342,7 +353,7 @@ ERR_04213=This value is not in hex form, we have an odd number of hex chars
 ERR_04214=This value is not in hex form
 ERR_04215=Unescaped special characters are not allowed
 ERR_04216=This class is not aware of schema information and cannot normalize
-ERR_04217=None of the arguments are Comparable objects\:\n\targ1 \= {0}\n\targ2 \= {1}
+ERR_04217=None of the arguments are Comparable objects:\n\targ1 \= {0}\n\targ2 \= {1}
 ERR_04218=I do not know how to handle dn comparisons with objects of class: {0}
 ERR_04219_ARGUMENT1_NULL=Argument ''obj1'' is null
 ERR_04220_ARGUMENT2_NULL=Argument ''obj2'' is null
@@ -353,39 +364,39 @@ ERR_04224=Invalid value : {0}
 ERR_04225=Encountered name based id of {0} which was not found in the OID registry
 ERR_04226=I do not know how to handle NameAndOptionalUID normalization with objects of class: {0}
 ERR_04227=Cannot parse a null AttributeType
-ERR_04228=Parser failure on attribute type description\:\n{0}\nAntlr message\: {1}\nAntlr column\: {2}
-ERR_04229=Parser failure on attribute type description\:\n\t{0}\nAntlr message\: {1}
+ERR_04228=Parser failure on attribute type description:\n{0}\nAntlr message: {1}\nAntlr column: {2}
+ERR_04229=Parser failure on attribute type description:\n\t{0}\nAntlr message: {1}
 ERR_04230=Cannot parse a null DITContentRule
-ERR_04231=Parser failure on DIT content rule description\:\n\t{0}\nAntlr message\: {1}\nAntlr column\: {2}
-ERR_04232=Parser failure on DIT content rule description\:\n\t{0}\nAntlr message\: {1}
+ERR_04231=Parser failure on DIT content rule description:\n\t{0}\nAntlr message: {1}\nAntlr column: {2}
+ERR_04232=Parser failure on DIT content rule description:\n\t{0}\nAntlr message: {1}
 ERR_04233=Cannot parse a null DITStructureRule description
-ERR_04234=Parser failure on DIT structure rule description\:\n\t{0}\nAntlr message\: {1}nAntlr column\: {2}
-ERR_04235=Parser failure on DIT structure rule description\:\n\t{0}\nAntlr message\: {1}
+ERR_04234=Parser failure on DIT structure rule description:\n\t{0}\nAntlr message: {1}nAntlr column: {2}
+ERR_04235=Parser failure on DIT structure rule description:\n\t{0}\nAntlr message: {1}
 ERR_04236=Cannot parse a null LdapComparator description
-ERR_04237=Parser failure on comparator description\:\n\t{0}\nAntlr message\: {1}\nAntlr column\: {2}
-ERR_04238=Parser failure on comparator description\:\n\t{0}\nAntlr message\: {1}
+ERR_04237=Parser failure on comparator description:\n\t{0}\nAntlr message: {1}\nAntlr column: {2}
+ERR_04238=Parser failure on comparator description:\n\t{0}\nAntlr message: {1}
 ERR_04239=Cannot parse a null LdapSyntax
-ERR_04240=Parser failure on LDAP syntay description\:\n\t{0}\nAntlr message\: {1}\nAntlr column\: {2}
-ERR_04241=Parser failure on LDAP syntay description\:\n\t{0}\nAntlr message\: {1}
+ERR_04240=Parser failure on LDAP syntay description:\n\t{0}\nAntlr message: {1}\nAntlr column: {2}
+ERR_04241=Parser failure on LDAP syntay description:\n\t{0}\nAntlr message: {1}
 ERR_04242=Cannot parse a null MatchingRule
-ERR_04243=Parser failure on matching rule description\:\n\t{0}\nAntlr message\: {1}\nAntlr column\: {2}
-ERR_04244=Parser failure on matching rule description\:\n\t{0}\nAntlr message\: {1}
+ERR_04243=Parser failure on matching rule description:\n\t{0}\nAntlr message: {1}\nAntlr column: {2}
+ERR_04244=Parser failure on matching rule description:\n\t{0}\nAntlr message: {1}
 ERR_04245=Cannot parse a null MatchingRuleUse
-ERR_04246=Parser failure on matching rule description\:\n\t{0}\nAntlr message\: {1}\nAntlr column\: {2}
-ERR_04247=Parser failure on matching rule description\:\n\t{0}\nAntlr message\: {1}
+ERR_04246=Parser failure on matching rule description:\n\t{0}\nAntlr message: {1}\nAntlr column: {2}
+ERR_04247=Parser failure on matching rule description:\n\t{0}\nAntlr message: {1}
 ERR_04248=Cannot parse a null NameForm
-ERR_04249=Parser failure on name form description\:\n\t{0}\nAntlr message\: {1}\nAntlr column\: {2} 
-ERR_04250="Parser failure on name form description\:\n\t{0}\nAntlr message\: {1}
+ERR_04249=Parser failure on name form description:\n\t{0}\nAntlr message: {1}\nAntlr column: {2} 
+ERR_04250="Parser failure on name form description:\n\t{0}\nAntlr message: {1}
 ERR_04251=Cannot parse a null Normalizer description
-ERR_04252=Parser failure on normalizer description\:\n\t{0}\nAntlr message\: {1}\nAntlr column\: {2}
-ERR_04253=Parser failure on normalizer description\:\n\t{0}\nAntlr message\: {1}
+ERR_04252=Parser failure on normalizer description:\n\t{0}\nAntlr message: {1}\nAntlr column: {2}
+ERR_04253=Parser failure on normalizer description:\n\t{0}\nAntlr message: {1}
 ERR_04254=Cannot parse a null LdapComparator description
-ERR_04255=Parser failure on object class description\:\n\t{0}\nAntlr message\: {1}\nAntlr column\: {2}
-ERR_04256=Parser failure on object class description\:\n\t{0}\nAntlr message\: {1}
+ERR_04255=Parser failure on object class description:\n\t{0}\nAntlr message: {1}\nAntlr column: {2}
+ERR_04256=Parser failure on object class description:\n\t{0}\nAntlr message: {1}
 ERR_04257=No object identifier macro with name {0}
 ERR_04258=The schemaObject is either null or is the empty String!
-ERR_04259="Parser failure on syntax checker description\:\n\t{0}\nAntlr message\: {1}\nAntlr column\: {2}
-ERR_04260=Parser failure on syntax checker description\:\n\t{0}\nAntlr message\: {1}
+ERR_04259="Parser failure on syntax checker description:\n\t{0}\nAntlr message: {1}\nAntlr column: {2}
+ERR_04260=Parser failure on syntax checker description:\n\t{0}\nAntlr message: {1}
 ERR_04261=entry cannot be null
 ERR_04262=entry must have a valid cn attribute
 ERR_04263=RuleId {0} not found in ruleId to schema name map!
@@ -425,7 +436,7 @@ ERR_04296=The MatchingRule {0} does not have a comparator. This is invalid
 ERR_04297=The AttributeType {0} can''t have itself as a superior, or a cycle has been detected while processing the superior''s tree
 ERR_04298=The AttributeType {0} does not have a superior nor a Syntax. This is invalid
 ERR_04299=The ObjectClass {0} has some AttribteType in MAY which is already declared in one of its superior MUST
-ERR_04300=The ObjectClass {0} can''t have itself as a superior, or a cycle has been detected while processing the superior''s tree, or this superior has already been added \: \n{1}
+ERR_04300=The ObjectClass {0} can''t have itself as a superior, or a cycle has been detected while processing the superior''s tree, or this superior has already been added : \n{1}
 ERR_04301=Registering of {0}:{1} failed, it''s already present in the Registries
 ERR_04302=Unregistering of {0}:{1} failed, it''s not present in the Registries
 ERR_04303=Cannot find the SUPERIOR object {0} while building cross-references for the {1} AttributeType.
@@ -454,11 +465,11 @@ ERR_04325=Cannot register the SchemaObject {0}, there are some duplicate AT in M
 ERR_04326=Cannot register the SchemaObject {0}, the AT we want to add to MUST does not exist : {1}
 ERR_04327=Unknown objectClass type name ''{0}'': options are AUXILIARY, STRUCTURAL, ABSTRACT.
 ERR_04328=undefined modification type: {0}
-ERR_04329=Parser failure on subtree specification\:\n\t{0}\nAntlr exception trace\:\n{1}
+ERR_04329=Parser failure on subtree specification:\n\t{0}\nAntlr exception trace:\n{1}
 ERR_04330=A negative minimum base distance is undefined!
 ERR_04331=TriggerSpecification cannot be initialized with any NULL argument.
 ERR_04332=TriggerSpecification cannot be initialized with emtpy SPSPec list.
-ERR_04333=Parser failure on Trigger Specification\:\n\t{0}\nAntlr exception trace\:\n{1}
+ERR_04333=Parser failure on Trigger Specification:\n\t{0}\nAntlr exception trace:\n{1}
 ERR_04334=Overlapping partitions are not allowed
 ERR_04335=Invalid Character 0x{0}
 ERR_04336=Unregistered or previously used component: {0}
@@ -497,7 +508,7 @@ ERR_04368=Invalid Generalized Time, expected ''timezone'' as the last field.
 ERR_04369=Invalid Generalized Time, expected field ''timezone'' must contain 2 or 4 digits.
 ERR_04370=Invalid Generalized Time, expected ''timezone'' as the last field.
 ERR_04371=Generalized Time too short, doesn''t contain number for ''fraction''.
-ERR_04372=Generalized Time too short, doesn''t contain field 'second'.
+ERR_04372=Generalized Time too short, doesn''t contain field ''second''.
 ERR_04373=Invalid Generalized Time, field ''second'' is not numeric.
 ERR_04374=Generalized Time too short, doesn''t contain field ''minute''.
 ERR_04375=Invalid Generalized Time, field ''minute'' is not numeric.
@@ -523,7 +534,7 @@ ERR_04394=Clearing all values not supported for immutable attribute
 ERR_04395=Now why would you ever want to clone an immutable object?
 ERR_04396=Value alteration is not supported for immutable attribute
 ERR_04397=Iterator[] arg must not be null, empty or composed of less than two Iterators
-ERR_04398=A LdapUrl must start with "ldap\://" or "ldaps\://"
+ERR_04398=A LdapUrl must start with "ldap://" or "ldaps://"
 ERR_04399=The hostport is invalid
 ERR_04400=Bad character, position {0}, ''{1}'', ''/'' expected
 ERR_04401=The DN is invalid
@@ -557,7 +568,7 @@ ERR_04428={0} >= {1}
 ERR_04429=Regex was null
 ERR_04430=Ldap regex must have wild cards!
 ERR_04431=Expected string to start with a ''#'' character. Invalid hex encoded string for empty or null string.
-ERR_04432=Expected string to start with a ''\#'' character. Invalid hex encoded string\: {0} 
+ERR_04432=Expected string to start with a ''\#'' character. Invalid hex encoded string: {0} 
 ERR_04433=Expected string to be non-null with valid index.
 ERR_04434=Expected string to be non-empty with valid index.
 ERR_04435=The DN must contain valid escaped characters.
@@ -574,7 +585,7 @@ ERR_04445_NO_SYNTAX=There is no Syntax associated with this attributeType
 ERR_04446=Cannot use standard serialization for a ServerStringValue
 ERR_04447_CANNOT_NORMALIZE_VALUE=Cannot normalize the wrapped value {0}
 ERR_04448=I don''t know what to do if value is not a ServerStringValue
-ERR_04449=The value ''{0}'' can't be normalized, it hasn''t been added
+ERR_04449=The value ''{0}'' can''t be normalized, it hasn''t been added
 ERR_04450=The value ''{0}'' is incorrect, it hasn''t been added
 ERR_04451=The value must be a String, as its AttributeType is H/R
 ERR_04452=The value must be a byte[], as its AttributeType is not H/R
@@ -589,7 +600,7 @@ ERR_04460_ATTRIBUTE_TYPE_NULL_NOT_ALLOWED=The attributeType should not be null
 ERR_04461=Only String values supported for objectClass attribute
 ERR_04462=The EntryAttribute list should not contain null elements
 ERR_04463=The ''{0}'' id is not compatible with the ''{1}'' attribute type
-ERR_04464=Error while adding values into the ''{0}'' attribute. Error \: {1} 
+ERR_04464=Error while adding values into the ''{0}'' attribute. Error : {1} 
 ERR_04465=The removal of values for the missing ''{0}'' attribute is not possible
 ERR_04466=The removal of values for the bad ''{0}'' attribute is not possible
 ERR_04467=The AttributeType list should not contain null values
@@ -612,7 +623,7 @@ ERR_04483_COLLECTIVE_NOT_MULTI_VALUED=The Collective Attribute ({0}) cannot be s
 ERR_04484_COLLECTIVE_NOT_ALLOWED_IN_MUST=The Collective Attribute ({0}) cannot be added in the MUST list of the {1} ObjectClass
 ERR_04485_COLLECTIVE_NOT_ALLOWED_IN_MAY=The Collective Attribute ({0}) cannot be added in the MAY list of the {1} ObjectClass
 ERR_04486_VALUE_ALREADY_EXISTS=The value ''{0}'' already exists in the attribute ({1})
-ERR_04487_ATTRIBUTE_IS_SINGLE_VALUED=The attribute ''{0}'' is single valued, we can't add no more values into it
+ERR_04487_ATTRIBUTE_IS_SINGLE_VALUED=The attribute ''{0}'' is single valued, we can''t add no more values into it
 ERR_04488_NULL_ATTRIBUTE_TYPE=The AttributeType cannot be null
 ERR_04489_SYNTAX_INVALID=Syntax invalid for ''{0}''
 ERR_04490_BAD_END_TRANSACTION_COMMIT=The EndTransactionRequest Commit value {0} is invalid: {1}. It should be 0 or 255
@@ -623,7 +634,7 @@ ERR_05001_UNKNOWN_AUTHENT_LEVEL=Unknown AuthenticationLevel {0}
 
 # ldap-converter
 ERR_06001_EMPTY_OR_NULL_SCHEMA_OBJECT=The schemaObject is either null or is empty!
-ERR_06002_PARSER_FAILURE=Parser failure on\:\n\t{0}\nAntlr exception trace\:\n{1}
+ERR_06002_PARSER_FAILURE=Parser failure on:\n\t{0}\nAntlr exception trace:\n{1}
 ERR_06003_NO_NAME={0} the schema configuration element must specify a name.
 ERR_06004_CANNOT_GENERATE_SOURCES=Failed while generating sources for {0} : {1}
 ERR_06005_NULL_SCHEMA=Can''t generate a ldif for a null schema
@@ -716,13 +727,13 @@ ERR_12027_BAD_URL=Bad URL {0}, at line {1}
 ERR_12029_CONTROL_WITHOUT_OID=The control does not have an OID, at line {0}
 ERR_12031_INVALID_OID=The OID {0} is not valid, at line {1}
 ERR_12033_INVALID_CRITICALITY=The control must have a valid criticality, at line {0}
-ERR_12035_BAD_MODRDN_OPERATION=A modrdn operation must start with a "newrdn\:", at line {0}
-ERR_12038_NO_DELETEOLDRDN=A modrdn operation must contains a "deleteoldrdn\:", at line {0}
+ERR_12035_BAD_MODRDN_OPERATION=A modrdn operation must start with a "newrdn:", at line {0}
+ERR_12038_NO_DELETEOLDRDN=A modrdn operation must contains a "deleteoldrdn:", at line {0}
 ERR_12040_BAD_MODIFY_SEPARATOR=Bad state : we should have come from an ATTRVAL_SPEC, at line {0}
 ERR_12042_BAD_MODIFY_SEPARATOR_2=Bad state : we should have come from a MOD_SPEC or an ATTRVAL_SPEC, at line {0}
 ERR_12044=The modified attribute and the attribute value spec must be equal, at line {0}
 ERR_12045=Bad modify attribute
-ERR_12046=A moddn operation must contains a "newsuperior\:", at line {0}
+ERR_12046=A moddn operation must contains a "newsuperior:", at line {0}
 ERR_12047=Bad moddn operation, no newsuperior
 ERR_12048=Unknown operation, at line {0}
 ERR_12049=Bad operation
diff --git a/i18n/src/main/resources/org/apache/directory/api/i18n/messages.properties b/i18n/src/main/resources/org/apache/directory/api/i18n/messages.properties
index cb64564..d56829f 100644
--- a/i18n/src/main/resources/org/apache/directory/api/i18n/messages.properties
+++ b/i18n/src/main/resources/org/apache/directory/api/i18n/messages.properties
@@ -17,6 +17,56 @@
 #  under the License. 
 #  
 #
+# ldap-client
+MSG_03201_BIND_FAIL=bind failed: ''{0}''
+MSG_03202_BIND_SUCCESSFUL=bind successful: ''{0}''
+MSG_03203_BIND_REQUEST=bind request: {0}
+MSG_03204_NULL_REQUEST=Cannot process a null request
+MSG_03205_SENDING_REQUEST=Sending request \n{}
+MSG_03206_MISSING_PASSWORD=The password is missing
+MSG_03207_ADDING=Adding <{}, {}> 
+MSG_03208_ADD_FAILED=Add failed: {}
+MSG_03209_ADD_SUCCESSFUL=Add successful: {}
+MSG_03210_ANONYMOUS_BIND=Anonymous Bind request
+MSG_03211_ANONYMOUS_ASYNC_BIND=Anonymous asynchronous Bind request
+MSG_03212_ASYNC_BIND=Asynchronous Bind request
+MSG_03213_BIND=Bind request
+MSG_03214_COMPARE_FAILED=Compare failed: {}
+MSG_03215_COMPARE_SUCCESSFUL=Compare successful: {}
+MSG_03216_DELETE_FAILED=Delete failed: {}
+MSG_03217_DELETE_SUCCESSFUL=CDelete successful: {}
+MSG_03218_EXTENDED_FAILED=Extended failed: {}
+MSG_03219_EXTENDED_SUCCESSFUL=Extended successful: {}
+MSG_03220_GETTING=Getting <{}, {}>
+MSG_03221_INTERRUPTED_WAITING_FOR_CONNECTION=Interrupted while waiting for connection to establish with server {}:{}
+MSG_03222_LDAP_ALREADY_USING_START_TLS=LDAP session already using startTLS
+MSG_03223_MODIFY_FAILED=Modify failed: {}
+MSG_03224_MODIFY_SUCCESSFUL=Modify successful: {}
+MSG_03225_MODIFYDN_FAILED=ModifyDN failed: {}
+MSG_03226_MODIFYDN_SUCCESSFUL=ModifyDN successful: {}
+MSG_03227_REMOVING=Removing <{}, {}>
+MSG_03228_SASL_PLAIN_BIND=SASL PLAIN Bind request
+MSG_03229_SEARCH_ENTRY_FOUND=Search entry found: {}
+MSG_03230_SEARCH_FAILED=Search failed: {}
+MSG_03231_SEARCH_REFERENCE_FOUND=Search reference found: {}
+MSG_03232_SEARCH_SUCCESSFUL=Search successful: {}
+MSG_03233_SENDING_UNBIND=Sending Unbind request \n{}
+MSG_03234_UNBINDSUCCESSFUL=Unbind successful
+MSG_03235_CLOSING=Closing {}
+MSG_03236_KRB5_FILE_CREATED_=krb 5 config file created at {}
+MSG_03237_NOTIFYING_CLOSE_LISTENERS=Notifying the registered ConnectionClosedEventListeners..
+MSG_03238_NOD_RECEIVED=Received a NoD, closing everything
+MSG_03239_NULL_DN_SEARCH=Received a null dn for a search
+MSG_03240_NULL_DN_MODIFY=Received a null dn for modification
+MSG_03241_NULL_ENTRY_MODIFY=Received a null entry for modification
+MSG_03242_SENDING_CANCEL=Sending cancel signal to future
+MSG_03243_MESSAGE_RECEIVED=-------> {} Message received <-------
+MSG_03244_CONNECTION_RETRYING=------>>   Cannot get the connection... Retrying
+MSG_03245_CONNECTION_ERROR=------>> Connection error: {}
+
+
+
+
 
 # ldap model messages
 MSG_04490_SYNTAX_VALID=Syntax valid for ''{0}''
diff --git a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java
index ee38ad6..a7a8616 100644
--- a/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java
+++ b/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java
@@ -54,6 +54,7 @@ import javax.security.sasl.SaslClient;
 
 import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.util.Oid;
+import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.BinaryAttributeDetector;
 import org.apache.directory.api.ldap.codec.api.DefaultConfigurableBinaryAttributeDetector;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
@@ -237,11 +238,14 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
     /** The exception stored in the session if we've got one */
     private static final String EXCEPTION_KEY = "sessionException";
 
+    /** The krb5 configuration property */
+    private static final String KRB5_CONF = "java.security.krb5.conf";
+    
     // ~~~~~~~~~~~~~~~~~ common error messages ~~~~~~~~~~~~~~~~~~~~~~~~~~
     static final String TIME_OUT_ERROR = "TimeOut occurred";
 
     static final String NO_RESPONSE_ERROR = "The response queue has been emptied, no response was found.";
-
+    
    //------------------------- The constructors --------------------------//
     /**
      * Create a new instance of a LdapConnection on localhost,
@@ -563,7 +567,11 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
 
     private void addToFutureMap( int messageId, ResponseFuture<? extends Response> future )
     {
-        LOG.debug( "Adding <{}, {}>", messageId, future.getClass().getName()  );
+        if ( LOG.isDebugEnabled() )
+        {
+            LOG.debug( I18n.msg( I18n.MSG_03207_ADDING, messageId, future.getClass().getName() ) );
+        }
+        
         futureMap.put( messageId, future );
     }
 
@@ -572,9 +580,9 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
     {
         ResponseFuture<? extends Response> future = futureMap.remove( messageId );
 
-        if ( future != null )
+        if ( ( future != null ) && LOG.isDebugEnabled() )
         {
-            LOG.debug( "Removing <{}, {}>", messageId, future.getClass().getName() );
+            LOG.debug( I18n.msg( I18n.MSG_03227_REMOVING, messageId, future.getClass().getName() ) );
         }
 
         return future;
@@ -586,9 +594,9 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
         ResponseFuture<? extends Response> future = futureMap.get( messageId );
 
         // future can be null if there was a abandon operation on that messageId
-        if ( future != null )
+        if ( ( future != null ) && LOG.isDebugEnabled() )
         {
-            LOG.debug( "Getting <" + messageId + ", " + future.getClass().getName() + ">" );
+            LOG.debug( I18n.msg( I18n.MSG_03220_GETTING, messageId, future.getClass().getName() ) );
         }
 
         return future;
@@ -654,8 +662,9 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
         timeout = config.getTimeout();
         long maxRetry = System.currentTimeMillis() + timeout;
         ConnectFuture connectionFuture = null;
+        boolean interrupted = false;
         
-        while ( maxRetry > System.currentTimeMillis() )
+        while ( maxRetry > System.currentTimeMillis() && !interrupted )
         {
             connectionFuture = connector.connect( address );
 
@@ -670,9 +679,11 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
             {
                 connector.dispose();
                 connector = null;
-                LOG.debug( "Interrupted while waiting for connection to establish with server {}:{}",
+                LOG.debug( I18n.msg( I18n.MSG_03221_INTERRUPTED_WAITING_FOR_CONNECTION, 
                     config.getLdapHost(),
-                    config.getLdapPort(), e );
+                    config.getLdapPort() ), e );
+                interrupted = true;
+                
                 throw new LdapOtherException( e.getMessage(), e );
             }
             finally
@@ -690,12 +701,16 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
                         {
                             // No need to wait
                             // We know that there was a permanent error such as "connection refused".
-                            LOG.debug( "------>> Connection error: {}", connectionFuture.getException().getMessage() );
-                            
-                            // We can quit the loop
+                            if ( LOG.isDebugEnabled() )
+                            {
+                                LOG.debug( I18n.msg( I18n.MSG_03245_CONNECTION_ERROR, connectionFuture.getException().getMessage() ) );
+                            }
                         }
 
-                        LOG.debug( "------>>   Cannot get the connection... Retrying" );
+                        if ( LOG.isDebugEnabled() )
+                        {
+                            LOG.debug( I18n.msg( I18n.MSG_03244_CONNECTION_RETRYING ) );
+                        }
 
                         // Wait 500 ms and retry
                         try
@@ -705,16 +720,14 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
                         catch ( InterruptedException e )
                         {
                             connector = null;
-                            LOG.debug( "Interrupted while waiting for connection to establish with server {}:{}",
+                            LOG.debug( I18n.msg( I18n.MSG_03221_INTERRUPTED_WAITING_FOR_CONNECTION, 
                                 config.getLdapHost(),
-                                config.getLdapPort(), e );
+                                config.getLdapPort() ), e );
+                            interrupted = true;
+                            
                             throw new LdapOtherException( e.getMessage(), e );
                         }
                     }
-                    else
-                    {
-                        break;
-                    }
                 }
             }
         }
@@ -773,11 +786,11 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
             public void operationComplete( IoFuture future )
             {
                 // Process all the waiting operations and cancel them
-                LOG.debug( "received a NoD, closing everything" );
+                LOG.debug( I18n.msg( I18n.MSG_03238_NOD_RECEIVED ) );
 
                 for ( ResponseFuture<?> responseFuture : futureMap.values() )
                 {
-                    LOG.debug( "closing {}", responseFuture );
+                    LOG.debug( I18n.msg( I18n.MSG_03235_CLOSING, responseFuture ) );
 
                     responseFuture.cancel();
 
@@ -818,7 +831,7 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
                     }
                     catch ( InterruptedException e )
                     {
-                        LOG.error( "Error while processing the NoD for {}", responseFuture, e );
+                        LOG.error( I18n.err( I18n.ERR_03202_ERROR_PROCESSING_NOD, responseFuture ), e );
                     }
 
                     futureMap.remove( messageId.get() );
@@ -978,19 +991,29 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
             if ( addResponse == null )
             {
                 // We didn't received anything : this is an error
-                LOG.error( "Add failed : timeout occurred" );
+                if ( LOG.isErrorEnabled() )
+                {
+                    LOG.error( I18n.err( I18n.ERR_03203_OP_FAILED_TIMEOUT, "Add" ) );
+                }
+                
                 throw new LdapException( TIME_OUT_ERROR );
             }
 
             if ( addResponse.getLdapResult().getResultCode() == ResultCodeEnum.SUCCESS )
             {
                 // Everything is fine, return the response
-                LOG.debug( "Add successful : {}", addResponse );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03209_ADD_SUCCESSFUL, addResponse ) );
+                }
             }
             else
             {
                 // We have had an error
-                LOG.debug( "Add failed : {}", addResponse );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03208_ADD_FAILED, addResponse ) );
+                }
             }
 
             return addResponse;
@@ -1094,7 +1117,10 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
      */
     private void abandonInternal( AbandonRequest abandonRequest )
     {
-        LOG.debug( "Sending request \n{}", abandonRequest );
+        if ( LOG.isDebugEnabled() )
+        {
+            LOG.debug( I18n.msg( I18n.MSG_03205_SENDING_REQUEST, abandonRequest ) );
+        }
 
         int newId = messageId.incrementAndGet();
         abandonRequest.setMessageId( newId );
@@ -1112,7 +1138,11 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
         // this is a sync operation send cancel signal to the corresponding ResponseFuture
         if ( rf != null )
         {
-            LOG.debug( "sending cancel signal to future" );
+            if ( LOG.isDebugEnabled() )
+            {
+                LOG.debug( I18n.msg( I18n.MSG_03242_SENDING_CANCEL ) );
+            }
+            
             rf.cancel( true );
         }
         else
@@ -1132,7 +1162,10 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
     @Override
     public void bind() throws LdapException
     {
-        LOG.debug( "Bind request" );
+        if ( LOG.isDebugEnabled() )
+        {
+            LOG.debug( I18n.msg(  I18n.MSG_03213_BIND ) );
+        }
 
         // Create the BindRequest
         BindRequest bindRequest = createBindRequest( config.getName(), Strings.getBytesUtf8( config.getCredentials() ) );
@@ -1149,7 +1182,10 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
     @Override
     public void anonymousBind() throws LdapException
     {
-        LOG.debug( "Anonymous Bind request" );
+        if ( LOG.isDebugEnabled() )
+        { 
+            LOG.debug( I18n.msg( I18n.MSG_03210_ANONYMOUS_BIND ) );
+        }
 
         // Create the BindRequest
         BindRequest bindRequest = createBindRequest( StringConstants.EMPTY, Strings.EMPTY_BYTES );
@@ -1166,7 +1202,10 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
     @Override
     public BindFuture bindAsync() throws LdapException
     {
-        LOG.debug( "Asynchronous Bind request" );
+        if ( LOG.isDebugEnabled() )
+        {
+            LOG.debug( I18n.msg( I18n.MSG_03212_ASYNC_BIND ) );
+        }
 
         // Create the BindRequest
         BindRequest bindRequest = createBindRequest( config.getName(), Strings.getBytesUtf8( config.getCredentials() ) );
@@ -1181,7 +1220,10 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
     @Override
     public BindFuture anonymousBindAsync() throws LdapException
     {
-        LOG.debug( "Anonymous asynchronous Bind request" );
+        if ( LOG.isDebugEnabled() )
+        { 
+            LOG.debug( I18n.msg( I18n.MSG_03211_ANONYMOUS_ASYNC_BIND ) );
+        }
 
         // Create the BindRequest
         BindRequest bindRequest = createBindRequest( StringConstants.EMPTY, Strings.EMPTY_BYTES );
@@ -1200,7 +1242,10 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
      */
     public BindFuture bindAsync( String name ) throws LdapException
     {
-        LOG.debug( "Bind request : {}", name );
+        if ( LOG.isDebugEnabled() )
+        {
+            LOG.debug( I18n.msg( I18n.MSG_03203_BIND_REQUEST, name ) );
+        }
 
         // Create the BindRequest
         BindRequest bindRequest = createBindRequest( name, Strings.EMPTY_BYTES );
@@ -1215,13 +1260,20 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
     @Override
     public BindFuture bindAsync( String name, String credentials ) throws LdapException
     {
-        LOG.debug( "Bind request : {}", name );
+        if ( LOG.isDebugEnabled() )
+        {
+            LOG.debug( I18n.msg( I18n.MSG_03203_BIND_REQUEST, name ) );
+        }
 
         // The password must not be empty or null
         if ( Strings.isEmpty( credentials ) && Strings.isNotEmpty( name ) )
         {
-            LOG.debug( "The password is missing" );
-            throw new LdapAuthenticationException( "The password is missing" );
+            if ( LOG.isDebugEnabled() )
+            {
+                LOG.debug( I18n.msg( I18n.MSG_03206_MISSING_PASSWORD ) );
+            }
+            
+            throw new LdapAuthenticationException( I18n.msg( I18n.MSG_03206_MISSING_PASSWORD ) );
         }
 
         // Create the BindRequest
@@ -1241,7 +1293,10 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
      */
     public BindFuture bindAsync( Dn name ) throws LdapException
     {
-        LOG.debug( "Bind request : {}", name );
+        if ( LOG.isDebugEnabled() )
+        {
+            LOG.debug( I18n.msg( I18n.MSG_03203_BIND_REQUEST, name ) );
+        }
 
         // Create the BindRequest
         BindRequest bindRequest = createBindRequest( name, Strings.EMPTY_BYTES );
@@ -1256,13 +1311,20 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
     @Override
     public BindFuture bindAsync( Dn name, String credentials ) throws LdapException
     {
-        LOG.debug( "Bind request : {}", name );
+        if ( LOG.isDebugEnabled() )
+        {
+            LOG.debug( I18n.msg( I18n.MSG_03203_BIND_REQUEST, name ) );
+        }
 
         // The password must not be empty or null
         if ( Strings.isEmpty( credentials ) && ( !Dn.EMPTY_DN.equals( name ) ) )
         {
-            LOG.debug( "The password is missing" );
-            throw new LdapAuthenticationException( "The password is missing" );
+            if ( LOG.isDebugEnabled() )
+            {
+                LOG.debug( I18n.msg( I18n.MSG_03206_MISSING_PASSWORD ) );
+            }
+            
+            throw new LdapAuthenticationException( I18n.msg( I18n.MSG_03206_MISSING_PASSWORD ) );
         }
 
         // Create the BindRequest
@@ -1297,7 +1359,11 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
             if ( bindResponse == null )
             {
                 // We didn't received anything : this is an error
-                LOG.error( "Bind failed : timeout occurred" );
+                if ( LOG.isErrorEnabled() )
+                { 
+                    LOG.error( I18n.err( I18n.ERR_03203_OP_FAILED_TIMEOUT, "Bind" ) );
+                }
+                
                 throw new LdapException( TIME_OUT_ERROR );
             }
 
@@ -1306,12 +1372,18 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
                 authenticated.set( true );
 
                 // Everything is fine, return the response
-                LOG.debug( "Bind successful : {}", bindResponse );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03202_BIND_SUCCESSFUL, bindResponse ) );
+                }
             }
             else
             {
                 // We have had an error
-                LOG.debug( "Bind failed : {}", bindResponse );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03201_BIND_FAIL, bindResponse ) );
+                }
             }
 
             return bindResponse;
@@ -1375,7 +1447,10 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
         int newId = messageId.incrementAndGet();
         bindRequest.setMessageId( newId );
 
-        LOG.debug( "Sending request \n{}", bindRequest );
+        if ( LOG.isDebugEnabled() )
+        {
+            LOG.debug( I18n.msg( I18n.MSG_03205_SENDING_REQUEST, bindRequest ) );
+        }
 
         // Create a future for this Bind operation
         BindFuture bindFuture = new BindFuture( this, newId );
@@ -1414,7 +1489,10 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
      */
     public BindResponse bindSaslPlain( String authzid, String authcid, String credentials ) throws LdapException
     {
-        LOG.debug( "SASL PLAIN Bind request" );
+        if ( LOG.isDebugEnabled() )
+        {
+            LOG.debug( I18n.msg( I18n.MSG_03228_SASL_PLAIN_BIND ) );
+        }
 
         // Create the BindRequest
         SaslPlainRequest saslRequest = new SaslPlainRequest();
@@ -1434,7 +1512,11 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
             if ( bindResponse == null )
             {
                 // We didn't received anything : this is an error
-                LOG.error( "Bind failed : timeout occurred" );
+                if ( LOG.isErrorEnabled() )
+                { 
+                    LOG.error( I18n.err( I18n.ERR_03203_OP_FAILED_TIMEOUT, "Bind" ) );
+                }
+                
                 throw new LdapException( TIME_OUT_ERROR );
             }
 
@@ -1443,12 +1525,18 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
                 authenticated.set( true );
 
                 // Everything is fine, return the response
-                LOG.debug( "Bind successful : {}", bindResponse );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03202_BIND_SUCCESSFUL, bindResponse ) );
+                }
             }
             else
             {
                 // We have had an error
-                LOG.debug( "Bind failed : {}", bindResponse );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03201_BIND_FAIL, bindResponse ) );
+                }
             }
 
             return bindResponse;
@@ -1474,7 +1562,7 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
     {
         if ( request == null )
         {
-            String msg = "Cannot process a null request";
+            String msg = I18n.msg( I18n.MSG_03204_NULL_REQUEST );
             LOG.debug( msg );
             throw new IllegalArgumentException( msg );
         }
@@ -1492,7 +1580,11 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
             if ( bindResponse == null )
             {
                 // We didn't received anything : this is an error
-                LOG.error( "Bind failed : timeout occurred" );
+                if ( LOG.isErrorEnabled() )
+                { 
+                    LOG.error( I18n.err( I18n.ERR_03203_OP_FAILED_TIMEOUT, "Bind" ) );
+                }
+                
                 throw new LdapException( TIME_OUT_ERROR );
             }
 
@@ -1501,12 +1593,18 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
                 authenticated.set( true );
 
                 // Everything is fine, return the response
-                LOG.debug( "Bind successful : {}", bindResponse );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03202_BIND_SUCCESSFUL, bindResponse ) );
+                }
             }
             else
             {
                 // We have had an error
-                LOG.debug( "Bind failed : {}", bindResponse );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03201_BIND_FAIL, bindResponse ) );
+                }
             }
 
             return bindResponse;
@@ -1568,7 +1666,7 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
     {
         if ( request == null )
         {
-            String msg = "Cannot process a null request";
+            String msg = I18n.msg( I18n.MSG_03204_NULL_REQUEST );
             LOG.debug( msg );
             throw new IllegalArgumentException( msg );
         }
@@ -1585,7 +1683,11 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
             if ( bindResponse == null )
             {
                 // We didn't received anything : this is an error
-                LOG.error( "Bind failed : timeout occurred" );
+                if ( LOG.isErrorEnabled() )
+                { 
+                    LOG.error( I18n.err( I18n.ERR_03203_OP_FAILED_TIMEOUT, "Bind" ) );
+                }
+                
                 throw new LdapException( TIME_OUT_ERROR );
             }
 
@@ -1594,12 +1696,18 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
                 authenticated.set( true );
 
                 // Everything is fine, return the response
-                LOG.debug( "Bind successful : {}", bindResponse );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03202_BIND_SUCCESSFUL, bindResponse ) );
+                }
             }
             else
             {
                 // We have had an error
-                LOG.debug( "Bind failed : {}", bindResponse );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03201_BIND_FAIL, bindResponse ) );
+                }
             }
 
             return bindResponse;
@@ -1639,7 +1747,7 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
     {
         if ( request == null )
         {
-            String msg = "Cannot process a null request";
+            String msg = I18n.msg( I18n.MSG_03204_NULL_REQUEST );
             LOG.debug( msg );
             throw new IllegalArgumentException( msg );
         }
@@ -1656,7 +1764,11 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
             if ( bindResponse == null )
             {
                 // We didn't received anything : this is an error
-                LOG.error( "Bind failed : timeout occurred" );
+                if ( LOG.isErrorEnabled() )
+                { 
+                    LOG.error( I18n.err( I18n.ERR_03203_OP_FAILED_TIMEOUT, "Bind" ) );
+                }
+                
                 throw new LdapException( TIME_OUT_ERROR );
             }
 
@@ -1665,12 +1777,18 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
                 authenticated.set( true );
 
                 // Everything is fine, return the response
-                LOG.debug( "Bind successful : {}", bindResponse );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03202_BIND_SUCCESSFUL, bindResponse ) );
+                }
             }
             else
             {
                 // We have had an error
-                LOG.debug( "Bind failed : {}", bindResponse );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03201_BIND_FAIL, bindResponse ) );
+                }
             }
 
             return bindResponse;
@@ -1696,7 +1814,7 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
     {
         if ( request == null )
         {
-            String msg = "Cannot process a null request";
+            String msg = I18n.msg( I18n.MSG_03204_NULL_REQUEST );
             LOG.debug( msg );
             throw new IllegalArgumentException( msg );
         }
@@ -1713,7 +1831,11 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
             if ( bindResponse == null )
             {
                 // We didn't received anything : this is an error
-                LOG.error( "Bind failed : timeout occurred" );
+                if ( LOG.isErrorEnabled() )
+                { 
+                    LOG.error( I18n.err( I18n.ERR_03203_OP_FAILED_TIMEOUT, "Bind" ) );
+                }
+                
                 throw new LdapException( TIME_OUT_ERROR );
             }
 
@@ -1722,12 +1844,18 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
                 authenticated.set( true );
 
                 // Everything is fine, return the response
-                LOG.debug( "Bind successful : {}", bindResponse );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03202_BIND_SUCCESSFUL, bindResponse ) );
+                }
             }
             else
             {
                 // We have had an error
-                LOG.debug( "Bind failed : {}", bindResponse );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03201_BIND_FAIL, bindResponse ) );
+                }
             }
 
             return bindResponse;
@@ -1753,7 +1881,7 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
     {
         if ( request == null )
         {
-            String msg = "Cannot process a null request";
+            String msg = I18n.msg( I18n.MSG_03204_NULL_REQUEST );
             LOG.debug( msg );
             throw new IllegalArgumentException( msg );
         }
@@ -1770,7 +1898,11 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
             if ( bindResponse == null )
             {
                 // We didn't received anything : this is an error
-                LOG.error( "Bind failed : timeout occurred" );
+                if ( LOG.isErrorEnabled() )
+                { 
+                    LOG.error( I18n.err( I18n.ERR_03203_OP_FAILED_TIMEOUT, "Bind" ) );
+                }
+                
                 throw new LdapException( TIME_OUT_ERROR );
             }
 
@@ -1779,12 +1911,18 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
                 authenticated.set( true );
 
                 // Everything is fine, return the response
-                LOG.debug( "Bind successful : {}", bindResponse );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03202_BIND_SUCCESSFUL, bindResponse ) );
+                }
             }
             else
             {
                 // We have had an error
-                LOG.debug( "Bind failed : {}", bindResponse );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03201_BIND_FAIL, bindResponse ) );
+                }
             }
 
             return bindResponse;
@@ -1813,7 +1951,7 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
         if ( request.getKrb5ConfFilePath() != null )
         {
             // Using the krb5.conf file provided by the user
-            System.setProperty( "java.security.krb5.conf", request.getKrb5ConfFilePath() );
+            System.setProperty( KRB5_CONF, request.getKrb5ConfFilePath() );
         }
         else if ( ( request.getRealmName() != null ) && ( request.getKdcHost() != null )
             && ( request.getKdcPort() != 0 ) )
@@ -1823,7 +1961,7 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
                 // Using a custom krb5.conf we create from the settings provided by the user
                 String krb5ConfPath = createKrb5ConfFile( request.getRealmName(), request.getKdcHost(),
                     request.getKdcPort() );
-                System.setProperty( "java.security.krb5.conf", krb5ConfPath );
+                System.setProperty( KRB5_CONF, krb5ConfPath );
             }
             catch ( IOException ioe )
             {
@@ -1833,7 +1971,7 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
         else
         {
             // Using the system Kerberos configuration
-            System.clearProperty( "java.security.krb5.conf" );
+            System.clearProperty( KRB5_CONF );
         }
 
         // Login Module configuration
@@ -1881,7 +2019,11 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
     {
         if ( baseDn == null )
         {
-            LOG.debug( "received a null dn for a search" );
+            if ( LOG.isDebugEnabled() )
+            {
+                LOG.debug( I18n.msg( I18n.MSG_03239_NULL_DN_SEARCH ) );
+            }
+            
             throw new IllegalArgumentException( "The base Dn cannot be null" );
         }
 
@@ -1977,7 +2119,10 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
             searchRequest.addControl( new ManageDsaITImpl() );
         }
 
-        LOG.debug( "Sending request \n{}", searchRequest );
+        if ( LOG.isDebugEnabled() )
+        {
+            LOG.debug( I18n.msg( I18n.MSG_03205_SENDING_REQUEST, searchRequest ) );
+        }
 
         SearchFuture searchFuture = new SearchFuture( this, searchRequest.getMessageId() );
         addToFutureMap( searchRequest.getMessageId(), searchFuture );
@@ -2038,7 +2183,10 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
         UnbindRequest unbindRequest = new UnbindRequestImpl();
         unbindRequest.setMessageId( newId );
 
-        LOG.debug( "Sending Unbind request \n{}", unbindRequest );
+        if ( LOG.isDebugEnabled() )
+        {
+            LOG.debug( I18n.msg( I18n.MSG_03233_SENDING_UNBIND, unbindRequest ) );
+        }
 
         // Send the request to the server
         // Use this for logging instead: WriteFuture unbindFuture = ldapSession.write( unbindRequest )
@@ -2074,7 +2222,10 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
         messageId.set( 0 );
 
         // And get out
-        LOG.debug( "Unbind successful" );
+        if ( LOG.isDebugEnabled() )
+        {
+            LOG.debug( I18n.msg( I18n.MSG_03234_UNBINDSUCCESSFUL ) );
+        }
     }
 
 
@@ -2170,7 +2321,12 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
     {
         // Feed the response and store it into the session
         Message response = ( Message ) message;
-        LOG.debug( "-------> {} Message received <-------", response );
+
+        if ( LOG.isDebugEnabled() )
+        {
+            LOG.debug( I18n.msg( I18n.MSG_03243_MESSAGE_RECEIVED, response ) );
+        }
+        
         int messageId = response.getMessageId();
 
         // this check is necessary to prevent adding an abandoned operation's
@@ -2207,12 +2363,12 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
                     if ( addResponse.getLdapResult().getResultCode() == ResultCodeEnum.SUCCESS )
                     {
                         // Everything is fine, return the response
-                        LOG.debug( "Add successful : {}", addResponse );
+                        LOG.debug( I18n.msg( I18n.MSG_03209_ADD_SUCCESSFUL, addResponse ) );
                     }
                     else
                     {
                         // We have had an error
-                        LOG.debug( "Add failed : {}", addResponse );
+                        LOG.debug( I18n.msg( I18n.MSG_03208_ADD_FAILED, addResponse ) );
                     }
                 }
 
@@ -2236,12 +2392,18 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
                     authenticated.set( true );
 
                     // Everything is fine, return the response
-                    LOG.debug( "Bind successful : {}", bindResponse );
+                    if ( LOG.isDebugEnabled() )
+                    { 
+                        LOG.debug( I18n.msg( I18n.MSG_03202_BIND_SUCCESSFUL, bindResponse ) );
+                    }
                 }
                 else
                 {
                     // We have had an error
-                    LOG.debug( "Bind failed : {}", bindResponse );
+                    if ( LOG.isDebugEnabled() )
+                    { 
+                        LOG.debug( I18n.msg( I18n.MSG_03201_BIND_FAIL, bindResponse ) );
+                    }
                 }
 
                 // Store the response into the future
@@ -2264,12 +2426,12 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
                     if ( compareResponse.getLdapResult().getResultCode() == ResultCodeEnum.SUCCESS )
                     {
                         // Everything is fine, return the response
-                        LOG.debug( "Compare successful : {}", compareResponse );
+                        LOG.debug( I18n.msg( I18n.MSG_03215_COMPARE_SUCCESSFUL, compareResponse ) );
                     }
                     else
                     {
                         // We have had an error
-                        LOG.debug( "Compare failed : {}", compareResponse );
+                        LOG.debug( I18n.msg( I18n.MSG_03214_COMPARE_FAILED, compareResponse ) );
                     }
                 }
 
@@ -2292,12 +2454,12 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
                     if ( deleteResponse.getLdapResult().getResultCode() == ResultCodeEnum.SUCCESS )
                     {
                         // Everything is fine, return the response
-                        LOG.debug( "Delete successful : {}", deleteResponse );
+                        LOG.debug( I18n.msg( I18n.MSG_03217_DELETE_SUCCESSFUL, deleteResponse ) );
                     }
                     else
                     {
                         // We have had an error
-                        LOG.debug( "Delete failed : {}", deleteResponse );
+                        LOG.debug( I18n.msg( I18n.MSG_03216_DELETE_FAILED, deleteResponse ) );
                     }
                 }
 
@@ -2321,12 +2483,12 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
                     if ( extendedResponse.getLdapResult().getResultCode() == ResultCodeEnum.SUCCESS )
                     {
                         // Everything is fine, return the response
-                        LOG.debug( "Extended successful : {}", extendedResponse );
+                        LOG.debug( I18n.msg( I18n.MSG_03219_EXTENDED_SUCCESSFUL, extendedResponse ) );
                     }
                     else
                     {
                         // We have had an error
-                        LOG.debug( "Extended failed : {}", extendedResponse );
+                        LOG.debug( I18n.msg( I18n.MSG_03218_EXTENDED_FAILED, extendedResponse ) );
                     }
                 }
 
@@ -2376,12 +2538,18 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
                     if ( modifyResponse.getLdapResult().getResultCode() == ResultCodeEnum.SUCCESS )
                     {
                         // Everything is fine, return the response
-                        LOG.debug( "ModifyFuture successful : {}", modifyResponse );
+                        if ( LOG.isDebugEnabled() )
+                        { 
+                            LOG.debug( I18n.msg( I18n.MSG_03224_MODIFY_SUCCESSFUL, modifyResponse ) );
+                        }
                     }
                     else
                     {
                         // We have had an error
-                        LOG.debug( "ModifyFuture failed : {}", modifyResponse );
+                        if ( LOG.isDebugEnabled() )
+                        { 
+                            LOG.debug( I18n.msg( I18n.MSG_03223_MODIFY_FAILED, modifyResponse ) );
+                        }
                     }
                 }
 
@@ -2404,12 +2572,12 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
                     if ( modifyDnResponse.getLdapResult().getResultCode() == ResultCodeEnum.SUCCESS )
                     {
                         // Everything is fine, return the response
-                        LOG.debug( "ModifyDN successful : {}", modifyDnResponse );
+                        LOG.debug( I18n.msg( I18n.MSG_03226_MODIFYDN_SUCCESSFUL, modifyDnResponse ) );
                     }
                     else
                     {
                         // We have had an error
-                        LOG.debug( "ModifyDN failed : {}", modifyDnResponse );
+                        LOG.debug( I18n.msg( I18n.MSG_03225_MODIFYDN_FAILED, modifyDnResponse ) );
                     }
                 }
 
@@ -2432,12 +2600,12 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
                     if ( searchResultDone.getLdapResult().getResultCode() == ResultCodeEnum.SUCCESS )
                     {
                         // Everything is fine, return the response
-                        LOG.debug( "Search successful : {}", searchResultDone );
+                        LOG.debug( I18n.msg( I18n.MSG_03232_SEARCH_SUCCESSFUL, searchResultDone ) );
                     }
                     else
                     {
                         // We have had an error
-                        LOG.debug( "Search failed : {}", searchResultDone );
+                        LOG.debug( I18n.msg( I18n.MSG_03230_SEARCH_FAILED, searchResultDone ) );
                     }
                 }
 
@@ -2462,7 +2630,7 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
 
                 if ( LOG.isDebugEnabled() )
                 {
-                    LOG.debug( "Search entry found : {}", searchResultEntry );
+                    LOG.debug( I18n.msg( I18n.MSG_03229_SEARCH_ENTRY_FOUND, searchResultEntry ) );
                 }
 
                 // Store the response into the future
@@ -2478,7 +2646,7 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
 
                 if ( LOG.isDebugEnabled() )
                 {
-                    LOG.debug( "Search reference found : {}", searchResultReference );
+                    LOG.debug( I18n.msg( I18n.MSG_03231_SEARCH_REFERENCE_FOUND, searchResultReference ) );
                 }
 
                 // Store the response into the future
@@ -2500,7 +2668,11 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
     {
         if ( entry == null )
         {
-            LOG.debug( "received a null entry for modification" );
+            if ( LOG.isDebugEnabled() )
+            {
+                LOG.debug( I18n.msg( I18n.MSG_03241_NULL_ENTRY_MODIFY ) );
+            }
+            
             throw new IllegalArgumentException( "Entry to be modified cannot be null" );
         }
 
@@ -2528,7 +2700,11 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
     {
         if ( dn == null )
         {
-            LOG.debug( "received a null dn for modification" );
+            if ( LOG.isDebugEnabled() )
+            {
+                LOG.debug( I18n.msg( I18n.MSG_03240_NULL_DN_MODIFY ) );
+            }
+            
             throw new IllegalArgumentException( "The Dn to be modified cannot be null" );
         }
 
@@ -2588,14 +2764,21 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
             if ( modifyResponse == null )
             {
                 // We didn't received anything : this is an error
-                LOG.error( "Modify failed : timeout occurred" );
+                if ( LOG.isErrorEnabled() )
+                {
+                    LOG.error( I18n.err( I18n.ERR_03203_OP_FAILED_TIMEOUT, "Modify" ) );
+                }
+                
                 throw new LdapException( TIME_OUT_ERROR );
             }
 
             if ( modifyResponse.getLdapResult().getResultCode() == ResultCodeEnum.SUCCESS )
             {
                 // Everything is fine, return the response
-                LOG.debug( "Modify successful : {}", modifyResponse );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03224_MODIFY_SUCCESSFUL, modifyResponse ) );
+                }
             }
             else
             {
@@ -2606,7 +2789,10 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
                 }
 
                 // We have had an error
-                LOG.debug( "Modify failed : {}", modifyResponse );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03223_MODIFY_FAILED, modifyResponse ) );
+                }
             }
 
             return modifyResponse;
@@ -2919,19 +3105,29 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
             if ( modifyDnResponse == null )
             {
                 // We didn't received anything : this is an error
-                LOG.error( "ModifyDN failed : timeout occurred" );
+                if ( LOG.isErrorEnabled() )
+                {
+                    LOG.error( I18n.err( I18n.ERR_03203_OP_FAILED_TIMEOUT, "ModifyDn" ) );
+                }
+                
                 throw new LdapException( TIME_OUT_ERROR );
             }
 
             if ( modifyDnResponse.getLdapResult().getResultCode() == ResultCodeEnum.SUCCESS )
             {
                 // Everything is fine, return the response
-                LOG.debug( "ModifyDN successful : {}", modifyDnResponse );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03226_MODIFYDN_SUCCESSFUL, modifyDnResponse ) );
+                }
             }
             else
             {
                 // We have had an error
-                LOG.debug( "Modify failed : {}", modifyDnResponse );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03225_MODIFYDN_FAILED, modifyDnResponse ) );
+                }
             }
 
             return modifyDnResponse;
@@ -3115,19 +3311,29 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
             if ( delResponse == null )
             {
                 // We didn't received anything : this is an error
-                LOG.error( "Delete failed : timeout occurred" );
+                if ( LOG.isErrorEnabled() )
+                {
+                    LOG.error( I18n.err( I18n.ERR_03203_OP_FAILED_TIMEOUT, "Delete" ) );
+                }
+                
                 throw new LdapException( TIME_OUT_ERROR );
             }
 
             if ( delResponse.getLdapResult().getResultCode() == ResultCodeEnum.SUCCESS )
             {
                 // Everything is fine, return the response
-                LOG.debug( "Delete successful : {}", delResponse );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03217_DELETE_SUCCESSFUL, delResponse ) );
+                }
             }
             else
             {
                 // We have had an error
-                LOG.debug( "Delete failed : {}", delResponse );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03216_DELETE_FAILED, delResponse ) );
+                }
             }
 
             return delResponse;
@@ -3302,19 +3508,29 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
             if ( compareResponse == null )
             {
                 // We didn't received anything : this is an error
-                LOG.error( "Compare failed : timeout occurred" );
+                if ( LOG.isErrorEnabled() )
+                {
+                    LOG.error( I18n.err( I18n.ERR_03203_OP_FAILED_TIMEOUT, "Compare" ) );
+                }
+                
                 throw new LdapException( TIME_OUT_ERROR );
             }
 
             if ( compareResponse.getLdapResult().getResultCode() == ResultCodeEnum.SUCCESS )
             {
                 // Everything is fine, return the response
-                LOG.debug( "Compare successful : {}", compareResponse );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03215_COMPARE_SUCCESSFUL, compareResponse ) );
+                }
             }
             else
             {
                 // We have had an error
-                LOG.debug( "Compare failed : {}", compareResponse );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03214_COMPARE_FAILED, compareResponse ) );
+                }
             }
 
             return compareResponse;
@@ -3452,19 +3668,29 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
             if ( response == null )
             {
                 // We didn't received anything : this is an error
-                LOG.error( "Extended failed : timeout occurred" );
+                if ( LOG.isErrorEnabled() )
+                {
+                    LOG.error( I18n.err( I18n.ERR_03203_OP_FAILED_TIMEOUT, "Extended" ) );
+                }
+                
                 throw new LdapException( TIME_OUT_ERROR );
             }
 
             if ( response.getLdapResult().getResultCode() == ResultCodeEnum.SUCCESS )
             {
                 // Everything is fine, return the response
-                LOG.debug( "Extended successful : {}", response );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03219_EXTENDED_SUCCESSFUL, response ) );
+                }
             }
             else
             {
                 // We have had an error
-                LOG.debug( "Extended failed : {}", response );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03218_EXTENDED_FAILED, response ) );
+                }
             }
 
             // Get back the response. It's still an opaque response
@@ -3631,33 +3857,27 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
                 searchRequest.addAllControls( controls );
             }
 
-            Cursor<Response> cursor = search( searchRequest );
-
-            // Read the response
-            if ( cursor.next() )
-            {
-                // cursor will always hold SearchResultEntry objects cause there is no ManageDsaITControl passed with search request
-                entry = ( ( SearchResultEntry ) cursor.get() ).getEntry();
-            }
-
-            // Pass through the SaerchResultDone, or stop
-            // if we have other responses
-            cursor.next();
-
-            // And close the cursor
-            try
-            { 
-                cursor.close();
-            }
-            catch ( IOException ioe )
+            try ( Cursor<Response> cursor = search( searchRequest ) )
             {
-                throw new LdapException( ioe.getMessage(), ioe );
+                // Read the response
+                if ( cursor.next() )
+                {
+                    // cursor will always hold SearchResultEntry objects cause there is no ManageDsaITControl passed with search request
+                    entry = ( ( SearchResultEntry ) cursor.get() ).getEntry();
+                }
+    
+                // Pass through the SaerchResultDone, or stop
+                // if we have other responses
+                cursor.next();
             }
-
         }
         catch ( CursorException e )
         {
-            throw new LdapException( e );
+            throw new LdapException( e.getMessage(), e );
+        }
+        catch ( IOException ioe )
+        {
+            throw new LdapException( ioe.getMessage(), ioe );
         }
 
         return entry;
@@ -3772,8 +3992,13 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
 
             if ( !tmp.getErrors().isEmpty() && loader.isStrict() )
             {
-                String msg = "there are errors while loading the schema";
-                LOG.error( msg + " {}", tmp.getErrors() );
+                String msg = I18n.err( I18n.ERR_03204_ERROR_LOADING_SCHEMA );
+                
+                if ( LOG.isErrorEnabled() )
+                {
+                    LOG.error( "{} {}", msg, Strings.listToString( tmp.getErrors() ) );
+                }
+                
                 throw new LdapException( msg );
             }
 
@@ -3791,7 +4016,7 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
         }
         catch ( Exception e )
         {
-            LOG.error( "failed to load the schema", e );
+            LOG.error( I18n.err( I18n.ERR_03205_FAIL_LOAD_SCHEMA ), e );
             throw new LdapException( e );
         }
     }
@@ -3841,7 +4066,7 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
         }
         catch ( Exception e )
         {
-            LOG.error( "failed to load the schema from file {}", schemaFile.getAbsolutePath() );
+            LOG.error( I18n.err( I18n.ERR_03206_FAIL_LOAD_SCHEMA_FILE, schemaFile.getAbsolutePath() ) );
             throw new LdapException( e );
         }
     }
@@ -3921,7 +4146,7 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
                 }
                 catch ( Exception e )
                 {
-                    LOG.error( "Failed to close open cursor", e );
+                    LOG.error( I18n.err( I18n.ERR_03201_CURSOR_CLOSE_FAIL ), e );
                 }
             }
         }
@@ -4083,7 +4308,10 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
 
         if ( conCloseListeners != null )
         {
-            LOG.debug( "notifying the registered ConnectionClosedEventListeners.." );
+            if ( LOG.isDebugEnabled() )
+            {
+                LOG.debug( I18n.msg( I18n.MSG_03237_NOTIFYING_CLOSE_LISTENERS ) );
+            }
 
             for ( ConnectionClosedEventListener listener : conCloseListeners )
             {
@@ -4115,9 +4343,14 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
             checkSession();
 
             IoFilter sslFilter = ldapSession.getFilterChain().get( SSL_FILTER_KEY );
+
             if ( sslFilter != null )
             {
-                LOG.debug( "LDAP session already using startTLS" );
+                if ( LOG.isDebugEnabled() )
+                { 
+                    LOG.debug( I18n.msg( I18n.MSG_03222_LDAP_ALREADY_USING_START_TLS ) );
+                }
+                
                 return;
             }
 
@@ -4234,7 +4467,10 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
         int newId = messageId.incrementAndGet();
         bindRequest.setMessageId( newId );
 
-        LOG.debug( "Sending request \n{}", bindRequest );
+        if ( LOG.isDebugEnabled() )
+        {
+            LOG.debug( I18n.msg( I18n.MSG_03205_SENDING_REQUEST, bindRequest ) );
+        }
 
         // Create a future for this Bind operation
         BindFuture bindFuture = new BindFuture( this, newId );
@@ -4304,7 +4540,11 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
                 if ( bindResponse == null )
                 {
                     // We didn't received anything : this is an error
-                    LOG.error( "bind failed : timeout occurred" );
+                    if ( LOG.isErrorEnabled() )
+                    { 
+                        LOG.error( I18n.err( I18n.ERR_03203_OP_FAILED_TIMEOUT, "Bind" ) );
+                    }
+                    
                     throw new LdapException( TIME_OUT_ERROR );
                 }
 
@@ -4329,7 +4569,11 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
                 if ( bindResponse == null )
                 {
                     // We didn't received anything : this is an error
-                    LOG.error( "bind failed : timeout occurred" );
+                    if ( LOG.isErrorEnabled() )
+                    {
+                        LOG.error( I18n.err( I18n.ERR_03203_OP_FAILED_TIMEOUT, "Bind" ) );
+                    }
+                    
                     throw new LdapException( TIME_OUT_ERROR );
                 }
 
@@ -4363,7 +4607,11 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
                     if ( bindResponse == null )
                     {
                         // We didn't received anything : this is an error
-                        LOG.error( "bind failed : timeout occurred" );
+                        if ( LOG.isErrorEnabled() )
+                        {
+                            LOG.error( I18n.err( I18n.ERR_03203_OP_FAILED_TIMEOUT, "Bind" ) );
+                        }
+                        
                         throw new LdapException( TIME_OUT_ERROR );
                     }
 
@@ -4411,7 +4659,10 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
             if ( !ldapSession.isConnected() )
             {
                 // We didn't received anything : this is an error
-                LOG.error( "Message failed : something wrong has occurred" );
+                if ( LOG.isErrorEnabled() )
+                {
+                    LOG.error( I18n.err( I18n.ERR_03207_SOMETHING_WRONG_HAPPENED ) );
+                }
 
                 Exception exception = ( Exception ) ldapSession.removeAttribute( EXCEPTION_KEY );
 
@@ -4433,7 +4684,11 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
             localTimeout -= 100;
         }
 
-        LOG.error( "TimeOut has occurred" );
+        if ( LOG.isErrorEnabled() )
+        {
+            LOG.error( I18n.err( I18n.ERR_03208_TIMEOUT ) );
+        }
+        
         throw new LdapException( TIME_OUT_ERROR );
     }
 
@@ -4492,7 +4747,10 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
 
         String krb5ConfPath = krb5Conf.getAbsolutePath();
 
-        LOG.debug( "krb 5 config file created at {}", krb5ConfPath );
+        if ( LOG.isDebugEnabled() )
+        {
+            LOG.debug( I18n.msg( I18n.MSG_03236_KRB5_FILE_CREATED, krb5ConfPath ) );
+        }
 
         return krb5ConfPath;
     }

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