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/09/24 07:39:07 UTC

[directory-ldap-api] branch master updated: o Removed unused abstract classes o Renamed some abstract classes to be prefixed by Abstract

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 2e0a68d  o Removed unused abstract classes o Renamed some abstract classes to be prefixed by Abstract
2e0a68d is described below

commit 2e0a68d077790f46095eb86bdbcd7f1dd36e11b7
Author: Emmanuel Lécharny <el...@symas.com>
AuthorDate: Mon Sep 24 09:35:55 2018 +0200

    o Removed unused abstract classes
    o Renamed some abstract classes to be prefixed by Abstract
---
 .../ldap/client/api/LdapNetworkConnection.java     | 12 +--
 .../api/ldap/codec/LdapMessageGrammar.java         | 10 +--
 .../api/ldap/codec/actions/AllowGrammarEnd.java    |  6 +-
 .../api/ldap/codec/actions/CheckLengthNotNull.java |  6 +-
 .../ldap/codec/actions/controls/AddControl.java    |  6 +-
 .../ldap/codec/actions/controls/InitControls.java  |  6 +-
 .../actions/controls/StoreControlCriticality.java  |  8 +-
 .../codec/actions/controls/StoreControlValue.java  |  8 +-
 .../codec/actions/ldapMessage/InitLdapMessage.java |  6 +-
 .../codec/actions/ldapMessage/StoreMessageId.java  |  6 +-
 .../ldap/codec/actions/ldapResult/AddReferral.java |  6 +-
 .../codec/actions/ldapResult/InitReferrals.java    |  6 +-
 .../actions/ldapResult/StoreErrorMessage.java      |  6 +-
 .../codec/actions/ldapResult/StoreMatchedDN.java   |  6 +-
 .../codec/actions/ldapResult/StoreResultCode.java  |  6 +-
 ...ecorator.java => AbstractMessageDecorator.java} | 12 +--
 .../directory/api/ldap/codec/api/LdapDecoder.java  |  2 +-
 .../directory/api/ldap/codec/api/LdapEncoder.java  |  4 +-
 .../api/ldap/codec/api/LdapMessageContainer.java   |  2 +-
 .../codec/decorators/AbandonRequestDecorator.java  |  2 +-
 .../decorators/AbandonableRequestDecorator.java    | 92 ----------------------
 .../AbandonableResultResponseRequestDecorator.java | 68 ----------------
 ...ecorator.java => AbstractRequestDecorator.java} |  6 +-
 ...corator.java => AbstractResponseDecorator.java} |  6 +-
 ...=> AbstractResultResponseRequestDecorator.java} |  6 +-
 ...va => AbstractSingleReplyRequestDecorator.java} |  6 +-
 .../ldap/codec/decorators/AddRequestDecorator.java |  2 +-
 .../codec/decorators/AddResponseDecorator.java     |  2 +-
 .../codec/decorators/BindRequestDecorator.java     |  2 +-
 .../codec/decorators/BindResponseDecorator.java    |  2 +-
 .../codec/decorators/CompareRequestDecorator.java  |  2 +-
 .../codec/decorators/CompareResponseDecorator.java |  2 +-
 .../codec/decorators/DeleteRequestDecorator.java   |  2 +-
 .../codec/decorators/DeleteResponseDecorator.java  |  2 +-
 .../codec/decorators/ExtendedRequestDecorator.java |  2 +-
 .../decorators/ExtendedResponseDecorator.java      |  2 +-
 .../decorators/IntermediateResponseDecorator.java  |  2 +-
 .../codec/decorators/ModifyDnRequestDecorator.java |  2 +-
 .../decorators/ModifyDnResponseDecorator.java      |  2 +-
 .../codec/decorators/ModifyRequestDecorator.java   |  2 +-
 .../codec/decorators/ModifyResponseDecorator.java  |  2 +-
 .../codec/decorators/SearchRequestDecorator.java   |  8 +-
 .../decorators/SearchResultDoneDecorator.java      |  2 +-
 .../decorators/SearchResultEntryDecorator.java     |  4 +-
 .../decorators/SearchResultReferenceDecorator.java |  4 +-
 .../codec/decorators/UnbindRequestDecorator.java   |  2 +-
 .../ldap/codec/osgi/DefaultLdapCodecService.java   |  4 +-
 .../directory/api/ldap/codec/LdapControlTest.java  |  8 +-
 .../directory/api/ldap/codec/LdapDecoderTest.java  | 22 +++---
 .../directory/api/ldap/codec/LdapMessageTest.java  | 12 +--
 .../directory/api/ldap/codec/LdapResultTest.java   | 16 ++--
 .../api/ldap/codec/abandon/AbandonRequestTest.java | 10 +--
 .../api/ldap/codec/add/AddRequestTest.java         | 18 ++---
 .../api/ldap/codec/add/AddResponseTest.java        |  4 +-
 .../api/ldap/codec/bind/BindRequestTest.java       |  8 +-
 .../api/ldap/codec/bind/BindResponseTest.java      |  4 +-
 .../model/message/AbstractAbandonableRequest.java  | 29 +++----
 .../codec/protocol/mina/LdapProtocolDecoder.java   |  8 +-
 58 files changed, 172 insertions(+), 331 deletions(-)

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 b05651a..36c250b 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
@@ -55,13 +55,13 @@ 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.AbstractMessageDecorator;
 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;
 import org.apache.directory.api.ldap.codec.api.LdapApiServiceFactory;
 import org.apache.directory.api.ldap.codec.api.LdapDecoder;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
 import org.apache.directory.api.ldap.codec.api.MessageEncoderException;
 import org.apache.directory.api.ldap.codec.api.SchemaBinaryAttributeDetector;
 import org.apache.directory.api.ldap.codec.decorators.AbandonRequestDecorator;
@@ -894,8 +894,8 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
 
         // Store the container into the session if we don't have one
         @SuppressWarnings("unchecked")
-        LdapMessageContainer<MessageDecorator<? extends Message>> container =
-            ( LdapMessageContainer<MessageDecorator<? extends Message>> ) ldapSession
+        LdapMessageContainer<AbstractMessageDecorator<? extends Message>> container =
+            ( LdapMessageContainer<AbstractMessageDecorator<? extends Message>> ) ldapSession
                 .getAttribute( LdapDecoder.MESSAGE_CONTAINER_ATTR );
 
         if ( container != null )
@@ -915,7 +915,7 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
             }
 
             ldapSession.setAttribute( LdapDecoder.MESSAGE_CONTAINER_ATTR,
-                new LdapMessageContainer<MessageDecorator<? extends Message>>( codec, atDetector ) );
+                new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec, atDetector ) );
         }
 
         // Initialize the MessageId
@@ -4279,7 +4279,7 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
 
             // Change the container's BinaryDetector
             ldapSession.setAttribute( LdapDecoder.MESSAGE_CONTAINER_ATTR,
-                new LdapMessageContainer<MessageDecorator<? extends Message>>( codec,
+                new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec,
                     new SchemaBinaryAttributeDetector( schemaManager ) ) );
 
         }
@@ -4541,7 +4541,7 @@ public class LdapNetworkConnection extends AbstractLdapConnection implements Lda
     public void sessionCreated( IoSession session ) throws Exception
     {
         // Last, store the message container
-        LdapMessageContainer<? extends MessageDecorator<Message>> ldapMessageContainer =
+        LdapMessageContainer<? extends AbstractMessageDecorator<Message>> ldapMessageContainer =
             new LdapMessageContainer<>(
                 codec, config.getBinaryAttributeDetector() );
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/LdapMessageGrammar.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/LdapMessageGrammar.java
index e2952f2..02cecb9 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/LdapMessageGrammar.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/LdapMessageGrammar.java
@@ -130,7 +130,7 @@ import org.apache.directory.api.ldap.codec.actions.response.search.reference.Ini
 import org.apache.directory.api.ldap.codec.actions.response.search.reference.StoreReference;
 import org.apache.directory.api.ldap.codec.api.LdapCodecConstants;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.codec.decorators.SearchRequestDecorator;
 import org.apache.directory.api.ldap.codec.search.ExtensibleMatchFilter;
 import org.apache.directory.api.ldap.model.message.Message;
@@ -147,13 +147,13 @@ import org.slf4j.LoggerFactory;
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
 public final class LdapMessageGrammar extends
-    AbstractGrammar<LdapMessageContainer<MessageDecorator<? extends Message>>>
+    AbstractGrammar<LdapMessageContainer<AbstractMessageDecorator<? extends Message>>>
 {
     /** The logger */
     static final Logger LOG = LoggerFactory.getLogger( LdapMessageGrammar.class );
 
     /** The instance of grammar. LdapMessageGrammar is a singleton */
-    private static Grammar<LdapMessageContainer<MessageDecorator<? extends Message>>> instance =
+    private static Grammar<LdapMessageContainer<AbstractMessageDecorator<? extends Message>>> instance =
         new LdapMessageGrammar();
 
 
@@ -182,7 +182,7 @@ public final class LdapMessageGrammar extends
         //
         // We will just check that the length is not null
         super.transitions[LdapStatesEnum.START_STATE.ordinal()][SEQUENCE.getValue()] =
-            new GrammarTransition<LdapMessageContainer<MessageDecorator<? extends Message>>>(
+            new GrammarTransition<LdapMessageContainer<AbstractMessageDecorator<? extends Message>>>(
                 LdapStatesEnum.START_STATE,
                 LdapStatesEnum.LDAP_MESSAGE_STATE,
                 SEQUENCE,
@@ -202,7 +202,7 @@ public final class LdapMessageGrammar extends
         // The message ID will be temporarily stored in the container, because we can't store it
         // into an object.
         super.transitions[LdapStatesEnum.LDAP_MESSAGE_STATE.ordinal()][INTEGER.getValue()] =
-            new GrammarTransition<LdapMessageContainer<MessageDecorator<? extends Message>>>(
+            new GrammarTransition<LdapMessageContainer<AbstractMessageDecorator<? extends Message>>>(
                 LdapStatesEnum.LDAP_MESSAGE_STATE,
                 LdapStatesEnum.MESSAGE_ID_STATE,
                 INTEGER,
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/AllowGrammarEnd.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/AllowGrammarEnd.java
index 7debb4c..ecf29f5 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/AllowGrammarEnd.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/AllowGrammarEnd.java
@@ -22,7 +22,7 @@ package org.apache.directory.api.ldap.codec.actions;
 
 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.model.message.Message;
 
 
@@ -31,7 +31,7 @@ import org.apache.directory.api.ldap.model.message.Message;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class AllowGrammarEnd extends GrammarAction<LdapMessageContainer<MessageDecorator<? extends Message>>>
+public class AllowGrammarEnd extends GrammarAction<LdapMessageContainer<AbstractMessageDecorator<? extends Message>>>
 {
     /**
      * Instantiates a new value action.
@@ -45,7 +45,7 @@ public class AllowGrammarEnd extends GrammarAction<LdapMessageContainer<MessageD
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainer<MessageDecorator<? extends Message>> container )
+    public void action( LdapMessageContainer<AbstractMessageDecorator<? extends Message>> container )
     {
         container.setGrammarEndAllowed( true );
     }
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/CheckLengthNotNull.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/CheckLengthNotNull.java
index 4dd90ba..579f9f8 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/CheckLengthNotNull.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/CheckLengthNotNull.java
@@ -25,7 +25,7 @@ import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.model.message.Message;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -36,7 +36,7 @@ import org.slf4j.LoggerFactory;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class CheckLengthNotNull extends GrammarAction<LdapMessageContainer<MessageDecorator<? extends Message>>>
+public class CheckLengthNotNull extends GrammarAction<LdapMessageContainer<AbstractMessageDecorator<? extends Message>>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( CheckLengthNotNull.class );
@@ -54,7 +54,7 @@ public class CheckLengthNotNull extends GrammarAction<LdapMessageContainer<Messa
     /**
      * {@inheritDoc}
      */
-    public void action( LdapMessageContainer<MessageDecorator<? extends Message>> container ) throws DecoderException
+    public void action( LdapMessageContainer<AbstractMessageDecorator<? extends Message>> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
         int expectedLength = tlv.getLength();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/AddControl.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/AddControl.java
index 1c4092e..b88b2ab 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/AddControl.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/AddControl.java
@@ -26,7 +26,7 @@ import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.asn1.util.Oid;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.Message;
 import org.apache.directory.api.util.Strings;
@@ -44,7 +44,7 @@ import org.slf4j.LoggerFactory;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class AddControl extends GrammarAction<LdapMessageContainer<MessageDecorator<? extends Message>>>
+public class AddControl extends GrammarAction<LdapMessageContainer<AbstractMessageDecorator<? extends Message>>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( AddControl.class );
@@ -62,7 +62,7 @@ public class AddControl extends GrammarAction<LdapMessageContainer<MessageDecora
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainer<MessageDecorator<? extends Message>> container ) throws DecoderException
+    public void action( LdapMessageContainer<AbstractMessageDecorator<? extends Message>> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/InitControls.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/InitControls.java
index 7b156f8..2342901 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/InitControls.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/InitControls.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.model.message.Message;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -41,7 +41,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitControls extends GrammarAction<LdapMessageContainer<MessageDecorator<? extends Message>>>
+public class InitControls extends GrammarAction<LdapMessageContainer<AbstractMessageDecorator<? extends Message>>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitControls.class );
@@ -59,7 +59,7 @@ public class InitControls extends GrammarAction<LdapMessageContainer<MessageDeco
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainer<MessageDecorator<? extends Message>> container )
+    public void action( LdapMessageContainer<AbstractMessageDecorator<? extends Message>> container )
     {
         TLV tlv = container.getCurrentTLV();
         int expectedLength = tlv.getLength();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/StoreControlCriticality.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/StoreControlCriticality.java
index 3268aae..e0e4f21 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/StoreControlCriticality.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/StoreControlCriticality.java
@@ -28,7 +28,7 @@ import org.apache.directory.api.asn1.ber.tlv.BooleanDecoderException;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.Message;
 import org.apache.directory.api.util.Strings;
@@ -47,7 +47,7 @@ import org.slf4j.LoggerFactory;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreControlCriticality extends GrammarAction<LdapMessageContainer<MessageDecorator<? extends Message>>>
+public class StoreControlCriticality extends GrammarAction<LdapMessageContainer<AbstractMessageDecorator<? extends Message>>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreControlCriticality.class );
@@ -65,12 +65,12 @@ public class StoreControlCriticality extends GrammarAction<LdapMessageContainer<
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainer<MessageDecorator<? extends Message>> container ) throws DecoderException
+    public void action( LdapMessageContainer<AbstractMessageDecorator<? extends Message>> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
 
         // Get the current control
-        MessageDecorator<? extends Message> message = container.getMessage();
+        AbstractMessageDecorator<? extends Message> message = container.getMessage();
         Control control = message.getCurrentControl();
 
         // Store the criticality
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/StoreControlValue.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/StoreControlValue.java
index 79438b2..29d9c72 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/StoreControlValue.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/controls/StoreControlValue.java
@@ -27,7 +27,7 @@ import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.CodecControl;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.Message;
 import org.apache.directory.api.util.Strings;
@@ -47,7 +47,7 @@ import org.slf4j.LoggerFactory;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreControlValue extends GrammarAction<LdapMessageContainer<MessageDecorator<? extends Message>>>
+public class StoreControlValue extends GrammarAction<LdapMessageContainer<AbstractMessageDecorator<? extends Message>>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreControlValue.class );
@@ -66,11 +66,11 @@ public class StoreControlValue extends GrammarAction<LdapMessageContainer<Messag
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainer<MessageDecorator<? extends Message>> container ) throws DecoderException
+    public void action( LdapMessageContainer<AbstractMessageDecorator<? extends Message>> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
 
-        MessageDecorator<?> message = container.getMessage();
+        AbstractMessageDecorator<?> message = container.getMessage();
         CodecControl<? extends Control> control = message.getCurrentControl();
 
         // Get the current control
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapMessage/InitLdapMessage.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapMessage/InitLdapMessage.java
index 4ebec9f..681adde 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapMessage/InitLdapMessage.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapMessage/InitLdapMessage.java
@@ -25,7 +25,7 @@ import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.model.message.Message;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -42,7 +42,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitLdapMessage extends GrammarAction<LdapMessageContainer<MessageDecorator<? extends Message>>>
+public class InitLdapMessage extends GrammarAction<LdapMessageContainer<AbstractMessageDecorator<? extends Message>>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitLdapMessage.class );
@@ -61,7 +61,7 @@ public class InitLdapMessage extends GrammarAction<LdapMessageContainer<MessageD
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainer<MessageDecorator<? extends Message>> container ) throws DecoderException
+    public void action( LdapMessageContainer<AbstractMessageDecorator<? extends Message>> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapMessage/StoreMessageId.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapMessage/StoreMessageId.java
index 2802f7e..7933baa 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapMessage/StoreMessageId.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapMessage/StoreMessageId.java
@@ -28,7 +28,7 @@ import org.apache.directory.api.asn1.ber.tlv.IntegerDecoderException;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.model.message.Message;
 import org.apache.directory.api.util.Strings;
 import org.slf4j.Logger;
@@ -51,7 +51,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreMessageId extends GrammarAction<LdapMessageContainer<MessageDecorator<? extends Message>>>
+public class StoreMessageId extends GrammarAction<LdapMessageContainer<AbstractMessageDecorator<? extends Message>>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreMessageId.class );
@@ -70,7 +70,7 @@ public class StoreMessageId extends GrammarAction<LdapMessageContainer<MessageDe
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainer<MessageDecorator<? extends Message>> container ) throws DecoderException
+    public void action( LdapMessageContainer<AbstractMessageDecorator<? extends Message>> container ) throws DecoderException
     {
         // The current TLV should be a integer
         // We get it and store it in MessageId
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/AddReferral.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/AddReferral.java
index 7f4e4ba..5e7fb73 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/AddReferral.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/AddReferral.java
@@ -25,7 +25,7 @@ import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.model.exception.LdapURLEncodingException;
 import org.apache.directory.api.ldap.model.message.LdapResult;
 import org.apache.directory.api.ldap.model.message.Message;
@@ -46,7 +46,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class AddReferral extends GrammarAction<LdapMessageContainer<MessageDecorator<? extends Message>>>
+public class AddReferral extends GrammarAction<LdapMessageContainer<AbstractMessageDecorator<? extends Message>>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( AddReferral.class );
@@ -65,7 +65,7 @@ public class AddReferral extends GrammarAction<LdapMessageContainer<MessageDecor
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainer<MessageDecorator<? extends Message>> container ) throws DecoderException
+    public void action( LdapMessageContainer<AbstractMessageDecorator<? extends Message>> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/InitReferrals.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/InitReferrals.java
index e67c431..d11aff5 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/InitReferrals.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/InitReferrals.java
@@ -25,7 +25,7 @@ import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.model.message.LdapResult;
 import org.apache.directory.api.ldap.model.message.Message;
 import org.apache.directory.api.ldap.model.message.Referral;
@@ -44,7 +44,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class InitReferrals extends GrammarAction<LdapMessageContainer<MessageDecorator<? extends Message>>>
+public class InitReferrals extends GrammarAction<LdapMessageContainer<AbstractMessageDecorator<? extends Message>>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( InitReferrals.class );
@@ -62,7 +62,7 @@ public class InitReferrals extends GrammarAction<LdapMessageContainer<MessageDec
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainer<MessageDecorator<? extends Message>> container ) throws DecoderException
+    public void action( LdapMessageContainer<AbstractMessageDecorator<? extends Message>> container ) throws DecoderException
     {
         TLV tlv = container.getCurrentTLV();
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/StoreErrorMessage.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/StoreErrorMessage.java
index 1770a53..59aa30b 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/StoreErrorMessage.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/StoreErrorMessage.java
@@ -24,7 +24,7 @@ import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.model.message.LdapResult;
 import org.apache.directory.api.ldap.model.message.Message;
 import org.apache.directory.api.ldap.model.message.ResultResponse;
@@ -44,7 +44,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreErrorMessage extends GrammarAction<LdapMessageContainer<MessageDecorator<? extends Message>>>
+public class StoreErrorMessage extends GrammarAction<LdapMessageContainer<AbstractMessageDecorator<? extends Message>>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreErrorMessage.class );
@@ -62,7 +62,7 @@ public class StoreErrorMessage extends GrammarAction<LdapMessageContainer<Messag
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainer<MessageDecorator<? extends Message>> container )
+    public void action( LdapMessageContainer<AbstractMessageDecorator<? extends Message>> container )
     {
         // Get the Value and store it in the BindResponse
         TLV tlv = container.getCurrentTLV();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/StoreMatchedDN.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/StoreMatchedDN.java
index ca6fe6e..1c9f00b 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/StoreMatchedDN.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/StoreMatchedDN.java
@@ -25,7 +25,7 @@ import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException;
 import org.apache.directory.api.ldap.model.message.LdapResult;
 import org.apache.directory.api.ldap.model.message.Message;
@@ -48,7 +48,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreMatchedDN extends GrammarAction<LdapMessageContainer<MessageDecorator<? extends Message>>>
+public class StoreMatchedDN extends GrammarAction<LdapMessageContainer<AbstractMessageDecorator<? extends Message>>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreMatchedDN.class );
@@ -66,7 +66,7 @@ public class StoreMatchedDN extends GrammarAction<LdapMessageContainer<MessageDe
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainer<MessageDecorator<? extends Message>> container ) throws DecoderException
+    public void action( LdapMessageContainer<AbstractMessageDecorator<? extends Message>> container ) throws DecoderException
     {
         // Get the Value and store it in the BindResponse
         TLV tlv = container.getCurrentTLV();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/StoreResultCode.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/StoreResultCode.java
index 8d9793c..260b7c7 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/StoreResultCode.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/actions/ldapResult/StoreResultCode.java
@@ -28,7 +28,7 @@ import org.apache.directory.api.asn1.ber.tlv.IntegerDecoderException;
 import org.apache.directory.api.asn1.ber.tlv.TLV;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.model.message.LdapResult;
 import org.apache.directory.api.ldap.model.message.Message;
 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
@@ -47,7 +47,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class StoreResultCode extends GrammarAction<LdapMessageContainer<MessageDecorator<? extends Message>>>
+public class StoreResultCode extends GrammarAction<LdapMessageContainer<AbstractMessageDecorator<? extends Message>>>
 {
     /** The logger */
     private static final Logger LOG = LoggerFactory.getLogger( StoreResultCode.class );
@@ -65,7 +65,7 @@ public class StoreResultCode extends GrammarAction<LdapMessageContainer<MessageD
      * {@inheritDoc}
      */
     @Override
-    public void action( LdapMessageContainer<MessageDecorator<? extends Message>> container ) throws DecoderException
+    public void action( LdapMessageContainer<AbstractMessageDecorator<? extends Message>> container ) throws DecoderException
     {
         // The current TLV should be a integer
         // We get it and store it in MessageId
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/MessageDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/AbstractMessageDecorator.java
similarity index 96%
rename from ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/MessageDecorator.java
rename to ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/AbstractMessageDecorator.java
index 032f1b3..214234b 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/MessageDecorator.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/AbstractMessageDecorator.java
@@ -75,7 +75,7 @@ import org.apache.directory.api.ldap.model.message.UnbindRequest;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public abstract class MessageDecorator<E extends Message> implements Message, Decorator<E>
+public abstract class AbstractMessageDecorator<E extends Message> implements Message, Decorator<E>
 {
     /** The decorated Message */
     private final E decoratedMessage;
@@ -102,7 +102,7 @@ public abstract class MessageDecorator<E extends Message> implements Message, De
      * @param codec The LDAP Service instance to use
      * @param decoratedMessage The message to decorate
      */
-    protected MessageDecorator( LdapApiService codec, E decoratedMessage )
+    protected AbstractMessageDecorator( LdapApiService codec, E decoratedMessage )
     {
         this.codec = codec;
         this.decoratedMessage = decoratedMessage;
@@ -127,14 +127,14 @@ public abstract class MessageDecorator<E extends Message> implements Message, De
      * @param decoratedMessage The message to decorate
      * @return The decorator instance
      */
-    public static MessageDecorator<? extends Message> getDecorator( LdapApiService codec, Message decoratedMessage )
+    public static AbstractMessageDecorator<? extends Message> getDecorator( LdapApiService codec, Message decoratedMessage )
     {
-        if ( decoratedMessage instanceof MessageDecorator )
+        if ( decoratedMessage instanceof AbstractMessageDecorator )
         {
-            return ( MessageDecorator<?> ) decoratedMessage;
+            return ( AbstractMessageDecorator<?> ) decoratedMessage;
         }
 
-        MessageDecorator<?> decorator;
+        AbstractMessageDecorator<?> decorator;
 
         switch ( decoratedMessage.getType() )
         {
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapDecoder.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapDecoder.java
index a4194d3..3c4dde8 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapDecoder.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapDecoder.java
@@ -70,7 +70,7 @@ public class LdapDecoder
      * @return return The decoded message
      * @throws DecoderException If the decoding failed
      */
-    public Message decode( InputStream in, LdapMessageContainer<MessageDecorator<? extends Message>> container )
+    public Message decode( InputStream in, LdapMessageContainer<AbstractMessageDecorator<? extends Message>> container )
         throws DecoderException
     {
         try
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapEncoder.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapEncoder.java
index a53d64f..be7db9b 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapEncoder.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapEncoder.java
@@ -164,7 +164,7 @@ public class LdapEncoder
      */
     public ByteBuffer encodeMessage( Message message ) throws EncoderException
     {
-        MessageDecorator<? extends Message> decorator = MessageDecorator.getDecorator( codec, message );
+        AbstractMessageDecorator<? extends Message> decorator = AbstractMessageDecorator.getDecorator( codec, message );
         int length = computeMessageLength( decorator );
         ByteBuffer buffer = ByteBuffer.allocate( length );
 
@@ -245,7 +245,7 @@ public class LdapEncoder
      * @param messageDecorator the decorated Message who's length is to be encoded
      * @return The message length
      */
-    private int computeMessageLength( MessageDecorator<? extends Message> messageDecorator )
+    private int computeMessageLength( AbstractMessageDecorator<? extends Message> messageDecorator )
     {
         // The length of the MessageId. It's the sum of
         // - the tag (0x02), 1 byte
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapMessageContainer.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapMessageContainer.java
index e1034ee..1b01753 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapMessageContainer.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/api/LdapMessageContainer.java
@@ -36,7 +36,7 @@ import org.apache.directory.api.ldap.model.message.Message;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class LdapMessageContainer<E extends MessageDecorator<? extends Message>> extends AbstractContainer
+public class LdapMessageContainer<E extends AbstractMessageDecorator<? extends Message>> extends AbstractContainer
 {
     /** The Message decorator to store various temporary values */
     private E messageDecorator;
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AbandonRequestDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AbandonRequestDecorator.java
index 927ec79..18f7113 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AbandonRequestDecorator.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AbandonRequestDecorator.java
@@ -37,7 +37,7 @@ import org.apache.directory.api.ldap.model.message.Control;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public final class AbandonRequestDecorator extends RequestDecorator<AbandonRequest> implements AbandonRequest
+public final class AbandonRequestDecorator extends AbstractRequestDecorator<AbandonRequest> implements AbandonRequest
 {
     /**
      * Makes a AddRequest a MessageDecorator.
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AbandonableRequestDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AbandonableRequestDecorator.java
deleted file mode 100644
index 21f6194..0000000
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AbandonableRequestDecorator.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *  
- *    http://www.apache.org/licenses/LICENSE-2.0
- *  
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License. 
- *  
- */
-package org.apache.directory.api.ldap.codec.decorators;
-
-
-import org.apache.directory.api.ldap.codec.api.LdapApiService;
-import org.apache.directory.api.ldap.model.message.AbandonListener;
-import org.apache.directory.api.ldap.model.message.AbandonableRequest;
-
-
-/**
- * A decorator for the LdapResultResponse message
- * 
- * @param <M> The Request to decorate
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
-public abstract class AbandonableRequestDecorator<M extends AbandonableResultResponseRequest>
-    extends ResultResponseRequestDecorator<M>
-    implements AbandonableRequest
-{
-    /**
-     * Makes Request a MessageDecorator.
-     *
-     * @param codec The LDAP service instance
-     * @param decoratedMessage the decorated message
-     */
-    public AbandonableRequestDecorator( LdapApiService codec, M decoratedMessage )
-    {
-        super( codec, decoratedMessage );
-    }
-
-
-    /**
-     * Gets the decorated AbandonableRequest.
-     *
-     * @return The decorated {@link AbandonableRequest}
-     */
-    public AbandonableRequest getAbandonableRequest()
-    {
-        return getDecorated();
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void abandon()
-    {
-        getAbandonableRequest().abandon();
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public boolean isAbandoned()
-    {
-        return getAbandonableRequest().isAbandoned();
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public AbandonableRequest addAbandonListener( AbandonListener listener )
-    {
-        getAbandonableRequest().addAbandonListener( listener );
-
-        return this;
-    }
-}
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AbandonableResultResponseRequestDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AbandonableResultResponseRequestDecorator.java
deleted file mode 100644
index 6dbe8c1..0000000
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AbandonableResultResponseRequestDecorator.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *  
- *    http://www.apache.org/licenses/LICENSE-2.0
- *  
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License. 
- *  
- */
-package org.apache.directory.api.ldap.codec.decorators;
-
-
-import org.apache.directory.api.ldap.codec.api.LdapApiService;
-import org.apache.directory.api.ldap.model.message.ResultResponse;
-import org.apache.directory.api.ldap.model.message.ResultResponseRequest;
-
-
-/**
- * A decorator for the LdapResultResponse message
- * 
- * @param <M> The message response to decorate
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
-public abstract class AbandonableResultResponseRequestDecorator<M extends AbandonableResultResponseRequest>
-    extends AbandonableRequestDecorator<M> implements ResultResponseRequest
-{
-    /**
-     * Makes Request a MessageDecorator.
-     *
-     * @param codec The LDAP service instance
-     * @param decoratedMessage the decorated message
-     */
-    public AbandonableResultResponseRequestDecorator( LdapApiService codec, M decoratedMessage )
-    {
-        super( codec, decoratedMessage );
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public boolean hasResponse()
-    {
-        return getDecorated().hasResponse();
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public ResultResponse getResultResponse()
-    {
-        return getDecorated().getResultResponse();
-    }
-}
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/RequestDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AbstractRequestDecorator.java
similarity index 85%
rename from ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/RequestDecorator.java
rename to ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AbstractRequestDecorator.java
index 1711096..08c9079 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/RequestDecorator.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AbstractRequestDecorator.java
@@ -21,7 +21,7 @@ package org.apache.directory.api.ldap.codec.decorators;
 
 
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.model.message.Request;
 
 
@@ -32,7 +32,7 @@ import org.apache.directory.api.ldap.model.message.Request;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public abstract class RequestDecorator<M extends Request> extends MessageDecorator<M> implements Request
+public abstract class AbstractRequestDecorator<M extends Request> extends AbstractMessageDecorator<M> implements Request
 {
     /**
      * Makes Request a MessageDecorator.
@@ -40,7 +40,7 @@ public abstract class RequestDecorator<M extends Request> extends MessageDecorat
      * @param codec The LDAP service instance
      * @param decoratedMessage the decorated message
      */
-    public RequestDecorator( LdapApiService codec, M decoratedMessage )
+    public AbstractRequestDecorator( LdapApiService codec, M decoratedMessage )
     {
         super( codec, decoratedMessage );
     }
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ResponseDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AbstractResponseDecorator.java
similarity index 87%
rename from ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ResponseDecorator.java
rename to ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AbstractResponseDecorator.java
index 007d606..724d3e8 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ResponseDecorator.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AbstractResponseDecorator.java
@@ -21,7 +21,7 @@ package org.apache.directory.api.ldap.codec.decorators;
 
 
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.model.message.LdapResult;
 import org.apache.directory.api.ldap.model.message.ResultResponse;
 
@@ -33,7 +33,7 @@ import org.apache.directory.api.ldap.model.message.ResultResponse;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public abstract class ResponseDecorator<M extends ResultResponse> extends MessageDecorator<M> implements ResultResponse
+public abstract class AbstractResponseDecorator<M extends ResultResponse> extends AbstractMessageDecorator<M> implements ResultResponse
 {
     /** The LdapResult decorator */
     private LdapResultDecorator ldapResultDecorator;
@@ -45,7 +45,7 @@ public abstract class ResponseDecorator<M extends ResultResponse> extends Messag
      * @param codec The LDAP service instance
      * @param decoratedMessage the decorated AddRequest
      */
-    public ResponseDecorator( LdapApiService codec, M decoratedMessage )
+    public AbstractResponseDecorator( LdapApiService codec, M decoratedMessage )
     {
         super( codec, decoratedMessage );
 
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ResultResponseRequestDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AbstractResultResponseRequestDecorator.java
similarity index 87%
rename from ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ResultResponseRequestDecorator.java
rename to ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AbstractResultResponseRequestDecorator.java
index 1bf397d..f9450fd 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ResultResponseRequestDecorator.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AbstractResultResponseRequestDecorator.java
@@ -32,8 +32,8 @@ import org.apache.directory.api.ldap.model.message.ResultResponseRequest;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public abstract class ResultResponseRequestDecorator<M extends ResultResponseRequest>
-    extends RequestDecorator<M> implements ResultResponseRequest
+public abstract class AbstractResultResponseRequestDecorator<M extends ResultResponseRequest>
+    extends AbstractRequestDecorator<M> implements ResultResponseRequest
 {
     /**
      * Makes Request a MessageDecorator.
@@ -41,7 +41,7 @@ public abstract class ResultResponseRequestDecorator<M extends ResultResponseReq
      * @param codec The LDAP service instance
      * @param decoratedMessage the decorated message
      */
-    public ResultResponseRequestDecorator( LdapApiService codec, M decoratedMessage )
+    public AbstractResultResponseRequestDecorator( LdapApiService codec, M decoratedMessage )
     {
         super( codec, decoratedMessage );
     }
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/SingleReplyRequestDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AbstractSingleReplyRequestDecorator.java
similarity index 89%
rename from ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/SingleReplyRequestDecorator.java
rename to ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AbstractSingleReplyRequestDecorator.java
index 3ffd109..e6bf7d4 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/SingleReplyRequestDecorator.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AbstractSingleReplyRequestDecorator.java
@@ -34,8 +34,8 @@ import org.apache.directory.api.ldap.model.message.SingleReplyRequest;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public abstract class SingleReplyRequestDecorator<M extends SingleReplyRequest>
-    extends ResultResponseRequestDecorator<M> implements SingleReplyRequest, AbandonableRequest
+public abstract class AbstractSingleReplyRequestDecorator<M extends SingleReplyRequest>
+    extends AbstractResultResponseRequestDecorator<M> implements SingleReplyRequest, AbandonableRequest
 {
     /**
      * Makes Request a MessageDecorator.
@@ -43,7 +43,7 @@ public abstract class SingleReplyRequestDecorator<M extends SingleReplyRequest>
      * @param codec The LDAP service instance
      * @param decoratedMessage the decorated message
      */
-    public SingleReplyRequestDecorator( LdapApiService codec, M decoratedMessage )
+    public AbstractSingleReplyRequestDecorator( LdapApiService codec, M decoratedMessage )
     {
         super( codec, decoratedMessage );
     }
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AddRequestDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AddRequestDecorator.java
index 22cba9e..4912634 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AddRequestDecorator.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AddRequestDecorator.java
@@ -48,7 +48,7 @@ import org.apache.directory.api.util.Strings;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public final class AddRequestDecorator extends SingleReplyRequestDecorator<AddRequest> implements
+public final class AddRequestDecorator extends AbstractSingleReplyRequestDecorator<AddRequest> implements
     AddRequest
 {
     /** The add request length */
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AddResponseDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AddResponseDecorator.java
index de3ec5e..a572f89 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AddResponseDecorator.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/AddResponseDecorator.java
@@ -36,7 +36,7 @@ import org.apache.directory.api.ldap.model.message.AddResponse;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class AddResponseDecorator extends ResponseDecorator<AddResponse> implements AddResponse
+public class AddResponseDecorator extends AbstractResponseDecorator<AddResponse> implements AddResponse
 {
     /** The encoded addResponse length */
     private int addResponseLength;
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/BindRequestDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/BindRequestDecorator.java
index 6324299..1104976 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/BindRequestDecorator.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/BindRequestDecorator.java
@@ -40,7 +40,7 @@ import org.apache.directory.api.util.Strings;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class BindRequestDecorator extends SingleReplyRequestDecorator<BindRequest> implements BindRequest
+public class BindRequestDecorator extends AbstractSingleReplyRequestDecorator<BindRequest> implements BindRequest
 {
     /** The bind request length */
     private int bindRequestLength;
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/BindResponseDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/BindResponseDecorator.java
index 278dc94..a6f2129 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/BindResponseDecorator.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/BindResponseDecorator.java
@@ -36,7 +36,7 @@ import org.apache.directory.api.ldap.model.message.BindResponse;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class BindResponseDecorator extends ResponseDecorator<BindResponse> implements BindResponse
+public class BindResponseDecorator extends AbstractResponseDecorator<BindResponse> implements BindResponse
 {
     /** The encoded bindResponse length */
     private int bindResponseLength;
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/CompareRequestDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/CompareRequestDecorator.java
index 323253f..f2adafe 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/CompareRequestDecorator.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/CompareRequestDecorator.java
@@ -42,7 +42,7 @@ import org.apache.directory.api.util.Strings;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class CompareRequestDecorator extends SingleReplyRequestDecorator<CompareRequest>
+public class CompareRequestDecorator extends AbstractSingleReplyRequestDecorator<CompareRequest>
     implements CompareRequest
 {
     /** The bytes of the attribute id used in the comparison */
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/CompareResponseDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/CompareResponseDecorator.java
index 1c095be..95bbf13 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/CompareResponseDecorator.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/CompareResponseDecorator.java
@@ -36,7 +36,7 @@ import org.apache.directory.api.ldap.model.message.CompareResponse;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class CompareResponseDecorator extends ResponseDecorator<CompareResponse>
+public class CompareResponseDecorator extends AbstractResponseDecorator<CompareResponse>
     implements CompareResponse
 {
     /** The encoded compareResponse length */
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/DeleteRequestDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/DeleteRequestDecorator.java
index e1f9bac..c59b769 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/DeleteRequestDecorator.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/DeleteRequestDecorator.java
@@ -39,7 +39,7 @@ import org.apache.directory.api.util.Strings;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class DeleteRequestDecorator extends SingleReplyRequestDecorator<DeleteRequest>
+public class DeleteRequestDecorator extends AbstractSingleReplyRequestDecorator<DeleteRequest>
     implements DeleteRequest
 {
     /** The bytes containing the Dn */
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/DeleteResponseDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/DeleteResponseDecorator.java
index a1f03f0..1de5277 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/DeleteResponseDecorator.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/DeleteResponseDecorator.java
@@ -36,7 +36,7 @@ import org.apache.directory.api.ldap.model.message.DeleteResponse;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class DeleteResponseDecorator extends ResponseDecorator<DeleteResponse>
+public class DeleteResponseDecorator extends AbstractResponseDecorator<DeleteResponse>
     implements DeleteResponse
 {
     /** The encoded deleteResponse length */
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ExtendedRequestDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ExtendedRequestDecorator.java
index 2c76968..8382cb3 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ExtendedRequestDecorator.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ExtendedRequestDecorator.java
@@ -41,7 +41,7 @@ import org.apache.directory.api.util.Strings;
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
 public class ExtendedRequestDecorator<Q extends ExtendedRequest>
-    extends SingleReplyRequestDecorator<Q> implements ExtendedRequest
+    extends AbstractSingleReplyRequestDecorator<Q> implements ExtendedRequest
 {
     /** The extended request length */
     private int extendedRequestLength;
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ExtendedResponseDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ExtendedResponseDecorator.java
index 81b0aee..9bedd78 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ExtendedResponseDecorator.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ExtendedResponseDecorator.java
@@ -39,7 +39,7 @@ import org.apache.directory.api.util.Strings;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class ExtendedResponseDecorator<R extends ExtendedResponse> extends ResponseDecorator<R>
+public class ExtendedResponseDecorator<R extends ExtendedResponse> extends AbstractResponseDecorator<R>
     implements ExtendedResponse
 {
     /** The response name (OID) as a byte[] */
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/IntermediateResponseDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/IntermediateResponseDecorator.java
index 33f852b..2428ae7 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/IntermediateResponseDecorator.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/IntermediateResponseDecorator.java
@@ -37,7 +37,7 @@ import org.apache.directory.api.util.Strings;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class IntermediateResponseDecorator<I extends IntermediateResponse> extends ResponseDecorator<I>
+public class IntermediateResponseDecorator<I extends IntermediateResponse> extends AbstractResponseDecorator<I>
     implements IntermediateResponse
 {
     /** The response name as a byte[] */
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ModifyDnRequestDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ModifyDnRequestDecorator.java
index e88e3f6..6d608e0 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ModifyDnRequestDecorator.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ModifyDnRequestDecorator.java
@@ -41,7 +41,7 @@ import org.apache.directory.api.util.Strings;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class ModifyDnRequestDecorator extends SingleReplyRequestDecorator<ModifyDnRequest>
+public class ModifyDnRequestDecorator extends AbstractSingleReplyRequestDecorator<ModifyDnRequest>
     implements ModifyDnRequest
 {
     /** The modify Dn request length */
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ModifyDnResponseDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ModifyDnResponseDecorator.java
index cb80479..d0a9cff 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ModifyDnResponseDecorator.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ModifyDnResponseDecorator.java
@@ -36,7 +36,7 @@ import org.apache.directory.api.ldap.model.message.ModifyDnResponse;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class ModifyDnResponseDecorator extends ResponseDecorator<ModifyDnResponse>
+public class ModifyDnResponseDecorator extends AbstractResponseDecorator<ModifyDnResponse>
     implements ModifyDnResponse
 {
     /** The encoded modifyDnResponse length */
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ModifyRequestDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ModifyRequestDecorator.java
index deb42d7..d5acaa9 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ModifyRequestDecorator.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ModifyRequestDecorator.java
@@ -51,7 +51,7 @@ import org.apache.directory.api.util.Strings;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class ModifyRequestDecorator extends SingleReplyRequestDecorator<ModifyRequest>
+public class ModifyRequestDecorator extends AbstractSingleReplyRequestDecorator<ModifyRequest>
     implements ModifyRequest
 {
     /** The modify request length */
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ModifyResponseDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ModifyResponseDecorator.java
index a7ed73c..ff58a3e 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ModifyResponseDecorator.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/ModifyResponseDecorator.java
@@ -36,7 +36,7 @@ import org.apache.directory.api.ldap.model.message.ModifyResponse;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class ModifyResponseDecorator extends ResponseDecorator<ModifyResponse>
+public class ModifyResponseDecorator extends AbstractResponseDecorator<ModifyResponse>
     implements ModifyResponse
 {
     /** The encoded modifyResponse length */
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/SearchRequestDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/SearchRequestDecorator.java
index b9352ef..66dd278 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/SearchRequestDecorator.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/SearchRequestDecorator.java
@@ -36,7 +36,7 @@ import org.apache.directory.api.ldap.codec.AttributeValueAssertion;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.codec.api.LdapCodecConstants;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.codec.search.AndFilter;
 import org.apache.directory.api.ldap.codec.search.AttributeValueAssertionFilter;
 import org.apache.directory.api.ldap.codec.search.ConnectorFilter;
@@ -81,7 +81,7 @@ import org.apache.directory.api.util.Strings;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class SearchRequestDecorator extends MessageDecorator<SearchRequest> implements SearchRequest
+public class SearchRequestDecorator extends AbstractMessageDecorator<SearchRequest> implements SearchRequest
 {
     /** The searchRequest length */
     private int searchRequestLength;
@@ -268,8 +268,8 @@ public class SearchRequestDecorator extends MessageDecorator<SearchRequest> impl
     @SuppressWarnings("unchecked")
     public void unstackFilters( Asn1Container container )
     {
-        LdapMessageContainer<MessageDecorator<Message>> ldapMessageContainer =
-            ( LdapMessageContainer<MessageDecorator<Message>> ) container;
+        LdapMessageContainer<AbstractMessageDecorator<Message>> ldapMessageContainer =
+            ( LdapMessageContainer<AbstractMessageDecorator<Message>> ) container;
 
         TLV tlv = ldapMessageContainer.getCurrentTLV();
         TLV localParent = tlv.getParent();
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/SearchResultDoneDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/SearchResultDoneDecorator.java
index c3dcac4..d45657f 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/SearchResultDoneDecorator.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/SearchResultDoneDecorator.java
@@ -36,7 +36,7 @@ import org.apache.directory.api.ldap.model.message.SearchResultDone;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class SearchResultDoneDecorator extends ResponseDecorator<SearchResultDone> implements SearchResultDone
+public class SearchResultDoneDecorator extends AbstractResponseDecorator<SearchResultDone> implements SearchResultDone
 {
     /** The encoded searchResultDone length */
     private int searchResultDoneLength;
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/SearchResultEntryDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/SearchResultEntryDecorator.java
index 97af95c..a1656a1 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/SearchResultEntryDecorator.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/SearchResultEntryDecorator.java
@@ -32,7 +32,7 @@ import org.apache.directory.api.asn1.ber.tlv.UniversalTag;
 import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.codec.api.LdapCodecConstants;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.model.entry.Attribute;
 import org.apache.directory.api.ldap.model.entry.DefaultAttribute;
 import org.apache.directory.api.ldap.model.entry.Entry;
@@ -48,7 +48,7 @@ import org.apache.directory.api.util.Strings;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class SearchResultEntryDecorator extends MessageDecorator<SearchResultEntry> implements SearchResultEntry
+public class SearchResultEntryDecorator extends AbstractMessageDecorator<SearchResultEntry> implements SearchResultEntry
 {
     /** A temporary storage for the byte[] representing the objectName */
     private byte[] objectNameBytes;
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/SearchResultReferenceDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/SearchResultReferenceDecorator.java
index d29cd95..cada439 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/SearchResultReferenceDecorator.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/SearchResultReferenceDecorator.java
@@ -30,7 +30,7 @@ import org.apache.directory.api.i18n.I18n;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.codec.api.LdapCodecConstants;
 import org.apache.directory.api.ldap.codec.api.LdapEncoder;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.model.message.Referral;
 import org.apache.directory.api.ldap.model.message.SearchResultReference;
 
@@ -40,7 +40,7 @@ import org.apache.directory.api.ldap.model.message.SearchResultReference;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class SearchResultReferenceDecorator extends MessageDecorator<SearchResultReference>
+public class SearchResultReferenceDecorator extends AbstractMessageDecorator<SearchResultReference>
     implements SearchResultReference
 {
     /** The search result reference length */
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/UnbindRequestDecorator.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/UnbindRequestDecorator.java
index 8017e49..82aafab 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/UnbindRequestDecorator.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/decorators/UnbindRequestDecorator.java
@@ -36,7 +36,7 @@ import org.apache.directory.api.ldap.model.message.UnbindRequest;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class UnbindRequestDecorator extends RequestDecorator<UnbindRequest> implements UnbindRequest
+public class UnbindRequestDecorator extends AbstractRequestDecorator<UnbindRequest> implements UnbindRequest
 {
     /**
      * Makes Request a MessageDecorator.
diff --git a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/osgi/DefaultLdapCodecService.java b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/osgi/DefaultLdapCodecService.java
index c68f0df..ec01fa4 100644
--- a/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/osgi/DefaultLdapCodecService.java
+++ b/ldap/codec/core/src/main/java/org/apache/directory/api/ldap/codec/osgi/DefaultLdapCodecService.java
@@ -40,7 +40,7 @@ import org.apache.directory.api.ldap.codec.api.ExtendedOperationFactory;
 import org.apache.directory.api.ldap.codec.api.IntermediateResponseFactory;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.codec.controls.cascade.CascadeFactory;
 import org.apache.directory.api.ldap.codec.controls.manageDsaIT.ManageDsaITFactory;
 import org.apache.directory.api.ldap.codec.controls.proxiedauthz.ProxiedAuthzFactory;
@@ -393,7 +393,7 @@ public class DefaultLdapCodecService implements LdapApiService
     @Override
     public Asn1Container newMessageContainer()
     {
-        return new LdapMessageContainer<MessageDecorator<? extends Message>>( this );
+        return new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( this );
     }
 
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapControlTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapControlTest.java
index 0ca43f8..968b224 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapControlTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapControlTest.java
@@ -34,7 +34,7 @@ import org.apache.directory.api.asn1.ber.Asn1Container;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.ldap.codec.api.CodecControl;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.codec.decorators.AbandonRequestDecorator;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.AbandonRequest;
@@ -288,7 +288,7 @@ public class LdapControlTest extends AbstractCodecServiceTest
 
         // Allocate a LdapMessageContainer Container
         Asn1Container ldapMessageContainer =
-            new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+            new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode the PDU
         try
@@ -334,7 +334,7 @@ public class LdapControlTest extends AbstractCodecServiceTest
 
         // Allocate a LdapMessageContainer Container
         Asn1Container ldapMessageContainer =
-            new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+            new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode the PDU
         try
@@ -379,7 +379,7 @@ public class LdapControlTest extends AbstractCodecServiceTest
 
         // Allocate a LdapMessageContainer Container
         Asn1Container ldapMessageContainer =
-            new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+            new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode the PDU
         try
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapDecoderTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapDecoderTest.java
index 9093384..9d5546f 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapDecoderTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapDecoderTest.java
@@ -34,7 +34,7 @@ import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.ber.tlv.TLVStateEnum;
 import org.apache.directory.api.ldap.codec.api.LdapDecoder;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.codec.api.ResponseCarryingException;
 import org.apache.directory.api.ldap.codec.decorators.BindRequestDecorator;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
@@ -83,7 +83,7 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
      * @param decodedMessages The list of decoded messages
      * @throws Exception If the decoding failed
      */
-    private void decode( ByteBuffer buffer, LdapMessageContainer<MessageDecorator<? extends Message>> messageContainer,
+    private void decode( ByteBuffer buffer, LdapMessageContainer<AbstractMessageDecorator<? extends Message>> messageContainer,
         List<Message> decodedMessages ) throws DecoderException
     {
         buffer.mark();
@@ -133,8 +133,8 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
     public void testDecodeFull()
     {
         Asn1Decoder ldapDecoder = new Asn1Decoder();
-        LdapMessageContainer<MessageDecorator<? extends Message>> container =
-            new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        LdapMessageContainer<AbstractMessageDecorator<? extends Message>> container =
+            new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         ByteBuffer stream = ByteBuffer.allocate( 0x35 );
         stream.put( new byte[]
@@ -229,8 +229,8 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
     @Test
     public void testDecode2Messages() throws Exception
     {
-        LdapMessageContainer<MessageDecorator<? extends Message>> container =
-            new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        LdapMessageContainer<AbstractMessageDecorator<? extends Message>> container =
+            new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         IoSession dummySession = new DummySession();
         dummySession.setAttribute( LdapDecoder.MESSAGE_CONTAINER_ATTR, container );
@@ -608,8 +608,8 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainer<MessageDecorator<? extends Message>> ldapMessageContainer =
-            new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        LdapMessageContainer<AbstractMessageDecorator<? extends Message>> ldapMessageContainer =
+            new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode a BindRequest PDU
         try
@@ -701,7 +701,7 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
 
         // Allocate a LdapMessage Container
         Asn1Container ldapMessageContainer =
-            new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+            new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode a BindRequest PDU
         try
@@ -793,7 +793,7 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        Asn1Container ldapMessageContainer = new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        Asn1Container ldapMessageContainer = new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode a BindRequest PDU
         try
@@ -831,7 +831,7 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        Asn1Container ldapMessageContainer = new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        Asn1Container ldapMessageContainer = new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode a BindRequest PDU first block of data
         try
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapMessageTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapMessageTest.java
index ade1b5a..2e40318 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapMessageTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapMessageTest.java
@@ -31,7 +31,7 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.ber.Asn1Container;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.codec.decorators.UnbindRequestDecorator;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.Message;
@@ -72,7 +72,7 @@ public class LdapMessageTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        Asn1Container ldapMessageContainer = new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        Asn1Container ldapMessageContainer = new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode a BindRequest PDU
         try
@@ -108,7 +108,7 @@ public class LdapMessageTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        Asn1Container ldapMessageContainer = new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        Asn1Container ldapMessageContainer = new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode a BindRequest PDU
         try
@@ -144,7 +144,7 @@ public class LdapMessageTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        Asn1Container ldapMessageContainer = new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        Asn1Container ldapMessageContainer = new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode a BindRequest PDU
         try
@@ -181,7 +181,7 @@ public class LdapMessageTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        Asn1Container ldapMessageContainer = new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        Asn1Container ldapMessageContainer = new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode a BindRequest PDU
         try
@@ -222,7 +222,7 @@ public class LdapMessageTest extends AbstractCodecServiceTest
             stream.flip();
 
             // Allocate a LdapMessage Container
-            Asn1Container ldapMessageContainer = new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+            Asn1Container ldapMessageContainer = new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
             // Decode a BindRequest PDU
             try
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapResultTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapResultTest.java
index 9865cc4..bd85073 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapResultTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapResultTest.java
@@ -33,7 +33,7 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.ber.Asn1Container;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.codec.decorators.AddResponseDecorator;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.AddResponse;
@@ -82,7 +82,7 @@ public class LdapResultTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        Asn1Container ldapMessageContainer = new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        Asn1Container ldapMessageContainer = new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode a AddResponse message
         try
@@ -125,7 +125,7 @@ public class LdapResultTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        Asn1Container ldapMessageContainer = new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        Asn1Container ldapMessageContainer = new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode a AddResponse message
         try
@@ -175,7 +175,7 @@ public class LdapResultTest extends AbstractCodecServiceTest
             stream.flip();
 
             // Allocate a LdapMessage Container
-            Asn1Container ldapMessageContainer = new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+            Asn1Container ldapMessageContainer = new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
             // Decode a AddResponse PDU
             try
@@ -219,7 +219,7 @@ public class LdapResultTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        Asn1Container ldapMessageContainer = new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        Asn1Container ldapMessageContainer = new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode a AddResponse message
         try
@@ -263,7 +263,7 @@ public class LdapResultTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        Asn1Container ldapMessageContainer = new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        Asn1Container ldapMessageContainer = new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode a AddResponse message
         try
@@ -678,8 +678,8 @@ public class LdapResultTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainer<MessageDecorator<? extends Message>> container =
-            new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        LdapMessageContainer<AbstractMessageDecorator<? extends Message>> container =
+            new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode the AddResponse PDU
         try
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/abandon/AbandonRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/abandon/AbandonRequestTest.java
index 732189c..f7d75c0 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/abandon/AbandonRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/abandon/AbandonRequestTest.java
@@ -33,7 +33,7 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.ldap.codec.api.CodecControl;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.codec.decorators.AbandonRequestDecorator;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.AbandonRequest;
@@ -266,8 +266,8 @@ public class AbandonRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessageContainer Container
-        LdapMessageContainer<MessageDecorator<? extends Message>> ldapMessageContainer =
-            new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        LdapMessageContainer<AbstractMessageDecorator<? extends Message>> ldapMessageContainer =
+            new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode the PDU
         try
@@ -304,8 +304,8 @@ public class AbandonRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessageContainer Container
-        LdapMessageContainer<MessageDecorator<? extends Message>> ldapMessageContainer =
-            new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        LdapMessageContainer<AbstractMessageDecorator<? extends Message>> ldapMessageContainer =
+            new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode the PDU
         try
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddRequestTest.java
index d8513f6..67ad120 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddRequestTest.java
@@ -38,7 +38,7 @@ import org.apache.directory.api.asn1.ber.Asn1Container;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.ldap.codec.api.CodecControl;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.codec.api.ResponseCarryingException;
 import org.apache.directory.api.ldap.codec.decorators.AddRequestDecorator;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
@@ -301,7 +301,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        Asn1Container ldapMessageContainer = new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        Asn1Container ldapMessageContainer = new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode a AddRequest message
         try
@@ -398,7 +398,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        Asn1Container ldapMessageContainer = new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        Asn1Container ldapMessageContainer = new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode a AddRequest message
         try
@@ -532,7 +532,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        Asn1Container ldapMessageContainer = new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        Asn1Container ldapMessageContainer = new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode a AddRequest message
         try
@@ -615,7 +615,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        Asn1Container ldapMessageContainer = new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        Asn1Container ldapMessageContainer = new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode a AddRequest message
         try
@@ -696,7 +696,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        Asn1Container ldapMessageContainer = new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        Asn1Container ldapMessageContainer = new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode a AddRequest message
         try
@@ -779,7 +779,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        Asn1Container ldapMessageContainer = new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        Asn1Container ldapMessageContainer = new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode a AddRequest message
         try
@@ -867,7 +867,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        Asn1Container ldapMessageContainer = new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        Asn1Container ldapMessageContainer = new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode a AddRequest message
         try
@@ -952,7 +952,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        Asn1Container ldapMessageContainer = new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        Asn1Container ldapMessageContainer = new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode a AddRequest message
         try
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddResponseTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddResponseTest.java
index 36e0633..50cb025 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddResponseTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddResponseTest.java
@@ -33,7 +33,7 @@ import org.apache.directory.api.asn1.ber.Asn1Container;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.ldap.codec.api.CodecControl;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.codec.decorators.AddResponseDecorator;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.AddResponse;
@@ -153,7 +153,7 @@ public class AddResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        Asn1Container ldapMessageContainer = new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        Asn1Container ldapMessageContainer = new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode a AddResponse message
         try
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindRequestTest.java
index 9a78fa8..b1ba11c 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindRequestTest.java
@@ -38,7 +38,7 @@ import org.apache.directory.api.asn1.ber.Asn1Container;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.ldap.codec.api.CodecControl;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.codec.api.ResponseCarryingException;
 import org.apache.directory.api.ldap.codec.decorators.BindRequestDecorator;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
@@ -343,8 +343,8 @@ public class BindRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        LdapMessageContainer<MessageDecorator<? extends Message>> container =
-            new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        LdapMessageContainer<AbstractMessageDecorator<? extends Message>> container =
+            new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode the BindRequest PDU
         try
@@ -404,7 +404,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        Asn1Container container = new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        Asn1Container container = new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode the BindRequest PDU
         try
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindResponseTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindResponseTest.java
index b3a9cea..f55e5bf 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindResponseTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindResponseTest.java
@@ -34,7 +34,7 @@ import org.apache.directory.api.asn1.ber.Asn1Container;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.ldap.codec.api.CodecControl;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.codec.controls.search.pagedSearch.PagedResultsDecorator;
 import org.apache.directory.api.ldap.codec.decorators.BindResponseDecorator;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
@@ -581,7 +581,7 @@ public class BindResponseTest extends AbstractCodecServiceTest
         stream.flip();
 
         // Allocate a LdapMessage Container
-        Asn1Container container = new LdapMessageContainer<MessageDecorator<? extends Message>>( codec );
+        Asn1Container container = new LdapMessageContainer<AbstractMessageDecorator<? extends Message>>( codec );
 
         // Decode a BindResponse message
         try
diff --git a/ldap/model/src/main/java/org/apache/directory/api/ldap/model/message/AbstractAbandonableRequest.java b/ldap/model/src/main/java/org/apache/directory/api/ldap/model/message/AbstractAbandonableRequest.java
index c8cc66b..7fb5a21 100644
--- a/ldap/model/src/main/java/org/apache/directory/api/ldap/model/message/AbstractAbandonableRequest.java
+++ b/ldap/model/src/main/java/org/apache/directory/api/ldap/model/message/AbstractAbandonableRequest.java
@@ -30,23 +30,22 @@ import java.util.Observer;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public class AbstractAbandonableRequest extends AbstractRequest implements AbandonableRequest
+public abstract class AbstractAbandonableRequest extends AbstractRequest implements AbandonableRequest
 {
     static final long serialVersionUID = -4511116249089399040L;
 
     /** Flag indicating whether or not this request returns a response. */
     private boolean abandoned = false;
 
-    private RequestObservable o;
+    /** A filed used to check if the request has been abandonned */
+    private RequestObservable observable;
 
 
     /**
      * Subclasses must provide these parameters via a super constructor call.
      * 
-     * @param id
-     *            the sequential message identifier
-     * @param type
-     *            the request type enum
+     * @param id the sequential message identifier
+     * @param type the request type enum
      */
     protected AbstractAbandonableRequest( final int id, final MessageTypeEnum type )
     {
@@ -66,13 +65,15 @@ public class AbstractAbandonableRequest extends AbstractRequest implements Aband
         }
 
         abandoned = true;
-        if ( o == null )
+        
+        if ( observable == null )
         {
-            o = new RequestObservable();
+            observable = new RequestObservable();
         }
-        o.setChanged();
-        o.notifyObservers();
-        o.deleteObservers();
+        
+        observable.setChanged();
+        observable.notifyObservers();
+        observable.deleteObservers();
     }
 
 
@@ -92,12 +93,12 @@ public class AbstractAbandonableRequest extends AbstractRequest implements Aband
     @Override
     public AbandonableRequest addAbandonListener( final AbandonListener listener )
     {
-        if ( o == null )
+        if ( observable == null )
         {
-            o = new RequestObservable();
+            observable = new RequestObservable();
         }
 
-        o.addObserver( new Observer()
+        observable.addObserver( new Observer()
         {
             @Override
             public void update( Observable o, Object arg )
diff --git a/ldap/net/mina/src/main/java/org/apache/directory/api/ldap/codec/protocol/mina/LdapProtocolDecoder.java b/ldap/net/mina/src/main/java/org/apache/directory/api/ldap/codec/protocol/mina/LdapProtocolDecoder.java
index 95891d3..8eb13dd 100644
--- a/ldap/net/mina/src/main/java/org/apache/directory/api/ldap/codec/protocol/mina/LdapProtocolDecoder.java
+++ b/ldap/net/mina/src/main/java/org/apache/directory/api/ldap/codec/protocol/mina/LdapProtocolDecoder.java
@@ -28,9 +28,9 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.api.asn1.ber.tlv.TLVStateEnum;
 import org.apache.directory.api.i18n.I18n;
+import org.apache.directory.api.ldap.codec.api.AbstractMessageDecorator;
 import org.apache.directory.api.ldap.codec.api.LdapDecoder;
 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
-import org.apache.directory.api.ldap.codec.api.MessageDecorator;
 import org.apache.directory.api.ldap.codec.api.ResponseCarryingException;
 import org.apache.directory.api.ldap.model.constants.Loggers;
 import org.apache.directory.api.ldap.model.exception.ResponseCarryingMessageException;
@@ -74,8 +74,8 @@ public class LdapProtocolDecoder implements ProtocolDecoder
     public void decode( IoSession session, IoBuffer in, ProtocolDecoderOutput out ) throws Exception
     {
         @SuppressWarnings("unchecked")
-        LdapMessageContainer<MessageDecorator<? extends Message>> messageContainer =
-            ( LdapMessageContainer<MessageDecorator<? extends Message>> )
+        LdapMessageContainer<AbstractMessageDecorator<? extends Message>> messageContainer =
+            ( LdapMessageContainer<AbstractMessageDecorator<? extends Message>> )
             session.getAttribute( LdapDecoder.MESSAGE_CONTAINER_ATTR );
 
         if ( session.containsAttribute( LdapDecoder.MAX_PDU_SIZE_ATTR ) )
@@ -108,7 +108,7 @@ public class LdapProtocolDecoder implements ProtocolDecoder
      * @param decodedMessages The list of decoded messages
      * @throws DecoderException If the decoding failed
      */
-    private void decode( ByteBuffer buffer, LdapMessageContainer<MessageDecorator<? extends Message>> messageContainer,
+    private void decode( ByteBuffer buffer, LdapMessageContainer<AbstractMessageDecorator<? extends Message>> messageContainer,
         List<Message> decodedMessages ) throws DecoderException
     {
         buffer.mark();