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 2010/10/07 12:49:46 UTC

svn commit: r1005405 - in /directory/shared/trunk: ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/ ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/future/ ldap/src/main/java/org/apache/directory/shared/ldap/messag...

Author: elecharny
Date: Thu Oct  7 10:49:45 2010
New Revision: 1005405

URL: http://svn.apache.org/viewvc?rev=1005405&view=rev
Log:
Added handling of the missing NoD for each response type

Added:
    directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/
    directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/AddNoDResponse.java
    directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/BindNoDResponse.java
    directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/CompareNoDResponse.java
    directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/DeleteNoDResponse.java
    directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/ExtendedNoDResponse.java
    directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/ModifyDnNoDResponse.java
    directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/ModifyNoDResponse.java
      - copied, changed from r1005346, directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/ModifyNoDResponse.java
    directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/SearchNoDResponse.java
Removed:
    directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/ModifyNoDResponse.java
Modified:
    directory/shared/trunk/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java
    directory/shared/trunk/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/future/ResponseFuture.java

Modified: directory/shared/trunk/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java?rev=1005405&r1=1005404&r2=1005405&view=diff
==============================================================================
--- directory/shared/trunk/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java (original)
+++ directory/shared/trunk/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java Thu Oct  7 10:49:45 2010
@@ -114,8 +114,15 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.message.UnbindRequest;
 import org.apache.directory.shared.ldap.message.UnbindRequestImpl;
 import org.apache.directory.shared.ldap.message.control.Control;
-import org.apache.directory.shared.ldap.message.extended.ModifyNoDResponse;
 import org.apache.directory.shared.ldap.message.extended.NoticeOfDisconnect;
+import org.apache.directory.shared.ldap.message.extended.nod.AddNoDResponse;
+import org.apache.directory.shared.ldap.message.extended.nod.BindNoDResponse;
+import org.apache.directory.shared.ldap.message.extended.nod.CompareNoDResponse;
+import org.apache.directory.shared.ldap.message.extended.nod.DeleteNoDResponse;
+import org.apache.directory.shared.ldap.message.extended.nod.ExtendedNoDResponse;
+import org.apache.directory.shared.ldap.message.extended.nod.ModifyDnNoDResponse;
+import org.apache.directory.shared.ldap.message.extended.nod.ModifyNoDResponse;
+import org.apache.directory.shared.ldap.message.extended.nod.SearchNoDResponse;
 import org.apache.directory.shared.ldap.name.DN;
 import org.apache.directory.shared.ldap.name.RDN;
 import org.apache.directory.shared.ldap.schema.AttributeType;
@@ -523,25 +530,54 @@ public class LdapNetworkConnection exten
         {
             public void operationComplete( IoFuture future )
             {
-                // Nothing to do here
-                //System.out.println( "received a NoD, closing everything" );
+                // Process all the waiting operations and cancel them
+                LOG.debug( "received a NoD, closing everything" );
 
                 for ( int messageId : futureMap.keySet() )
                 {
                     ResponseFuture<?> responseFuture = futureMap.get( messageId );
-                    //System.out.println( "closing " + responseFuture );
+                    LOG.debug( "closing {}", responseFuture );
+
+                    responseFuture.cancel();
 
                     try
                     {
-                        if ( responseFuture instanceof ModifyFuture )
+                        if ( responseFuture instanceof AddFuture )
+                        {
+                            ( ( AddFuture ) responseFuture ).set( AddNoDResponse.PROTOCOLERROR );
+                        }
+                        else if ( responseFuture instanceof BindFuture )
+                        {
+                            ( ( BindFuture ) responseFuture ).set( BindNoDResponse.PROTOCOLERROR );
+                        }
+                        else if ( responseFuture instanceof CompareFuture )
+                        {
+                            ( ( CompareFuture ) responseFuture ).set( CompareNoDResponse.PROTOCOLERROR );
+                        }
+                        else if ( responseFuture instanceof DeleteFuture )
+                        {
+                            ( ( DeleteFuture ) responseFuture ).set( DeleteNoDResponse.PROTOCOLERROR );
+                        }
+                        else if ( responseFuture instanceof ExtendedFuture )
+                        {
+                            ( ( ExtendedFuture ) responseFuture ).set( ExtendedNoDResponse.PROTOCOLERROR );
+                        }
+                        else if ( responseFuture instanceof ModifyFuture )
                         {
-                            responseFuture.cancel();
                             ( ( ModifyFuture ) responseFuture ).set( ModifyNoDResponse.PROTOCOLERROR );
                         }
+                        else if ( responseFuture instanceof ModifyDnFuture )
+                        {
+                            ( ( ModifyDnFuture ) responseFuture ).set( ModifyDnNoDResponse.PROTOCOLERROR );
+                        }
+                        else if ( responseFuture instanceof SearchFuture )
+                        {
+                            ( ( SearchFuture ) responseFuture ).set( SearchNoDResponse.PROTOCOLERROR );
+                        }
                     }
                     catch ( Exception e )
                     {
-
+                        LOG.error( "Error while processing the NoD for {}", responseFuture );
                     }
 
                     futureMap.remove( messageId );

Modified: directory/shared/trunk/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/future/ResponseFuture.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/future/ResponseFuture.java?rev=1005405&r1=1005404&r2=1005405&view=diff
==============================================================================
--- directory/shared/trunk/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/future/ResponseFuture.java (original)
+++ directory/shared/trunk/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/future/ResponseFuture.java Thu Oct  7 10:49:45 2010
@@ -163,6 +163,7 @@ public class ResponseFuture<R extends Re
 
 
     /**
+     * Associate a cause to the ResponseFuture
      * @param cause the cause to set
      */
     public void setCause( Throwable cause )
@@ -171,6 +172,10 @@ public class ResponseFuture<R extends Re
     }
 
 
+    /**
+     * Cancel the Future
+     *
+     */
     public void cancel()
     {
         // set the cancel flag first
@@ -178,7 +183,9 @@ public class ResponseFuture<R extends Re
     }
 
 
-    @Override
+    /**
+     * {@inheritDoc}
+     */
     public String toString()
     {
         StringBuilder sb = new StringBuilder();

Added: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/AddNoDResponse.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/AddNoDResponse.java?rev=1005405&view=auto
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/AddNoDResponse.java (added)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/AddNoDResponse.java Thu Oct  7 10:49:45 2010
@@ -0,0 +1,106 @@
+/*
+ *  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.shared.ldap.message.extended.nod;
+
+
+import org.apache.directory.shared.i18n.I18n;
+import org.apache.directory.shared.ldap.message.AddResponseImpl;
+import org.apache.directory.shared.ldap.message.ResultCodeEnum;
+import org.apache.directory.shared.ldap.message.extended.NoticeOfDisconnect;
+
+
+/**
+ * An extended operation intended for notifying clients of upcoming
+ * disconnection for the Add response. 
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class AddNoDResponse extends AddResponseImpl
+{
+    /** The OID of the NotiveOfDisconnect extended operation. */
+    public static final String EXTENSION_OID = NoticeOfDisconnect.EXTENSION_OID;
+
+    /** The empty response */
+    private static final byte[] EMPTY_RESPONSE = new byte[0];
+
+    /** The single instance with unavailable result code. */
+    public static final AddNoDResponse UNAVAILABLE = new AddNoDResponse( ResultCodeEnum.UNAVAILABLE );
+
+    /** The single instance with protocolError result code. */
+    public static final AddNoDResponse PROTOCOLERROR = new AddNoDResponse( ResultCodeEnum.PROTOCOL_ERROR );
+
+    /** The single instance with strongAuthRequired result code. */
+    public static final AddNoDResponse STRONGAUTHREQUIRED = new AddNoDResponse(
+        ResultCodeEnum.STRONG_AUTH_REQUIRED );
+
+
+    /**
+     * Creates a new instance of NoticeOfDisconnect.
+     */
+    private AddNoDResponse( ResultCodeEnum rcode )
+    {
+        super();
+
+        switch ( rcode )
+        {
+            case UNAVAILABLE:
+                break;
+
+            case PROTOCOL_ERROR:
+                break;
+
+            case STRONG_AUTH_REQUIRED:
+                break;
+
+            default:
+                throw new IllegalArgumentException( I18n.err( I18n.ERR_04166, ResultCodeEnum.UNAVAILABLE,
+                    ResultCodeEnum.PROTOCOL_ERROR, ResultCodeEnum.STRONG_AUTH_REQUIRED ) );
+        }
+
+        super.getLdapResult().setErrorMessage( rcode.toString() + ": The server will disconnect!" );
+        super.getLdapResult().setMatchedDn( null );
+        super.getLdapResult().setResultCode( rcode );
+    }
+
+
+    // ------------------------------------------------------------------------
+    // ExtendedResponse Interface Method Implementations
+    // ------------------------------------------------------------------------
+    /**
+     * Gets the reponse OID specific encoded response values.
+     * 
+     * @return the response specific encoded response values.
+     */
+    public byte[] getResponse()
+    {
+        return EMPTY_RESPONSE;
+    }
+
+
+    /**
+     * Gets the OID uniquely identifying this extended response (a.k.a. its
+     * name).
+     * 
+     * @return the OID of the extended response type.
+     */
+    public String getResponseName()
+    {
+        return EXTENSION_OID;
+    }
+}

Added: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/BindNoDResponse.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/BindNoDResponse.java?rev=1005405&view=auto
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/BindNoDResponse.java (added)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/BindNoDResponse.java Thu Oct  7 10:49:45 2010
@@ -0,0 +1,106 @@
+/*
+ *  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.shared.ldap.message.extended.nod;
+
+
+import org.apache.directory.shared.i18n.I18n;
+import org.apache.directory.shared.ldap.message.BindResponseImpl;
+import org.apache.directory.shared.ldap.message.ResultCodeEnum;
+import org.apache.directory.shared.ldap.message.extended.NoticeOfDisconnect;
+
+
+/**
+ * An extended operation intended for notifying clients of upcoming
+ * disconnection for the Bind response. 
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class BindNoDResponse extends BindResponseImpl
+{
+    /** The OID of the NotiveOfDisconnect extended operation. */
+    public static final String EXTENSION_OID = NoticeOfDisconnect.EXTENSION_OID;
+
+    /** The empty response */
+    private static final byte[] EMPTY_RESPONSE = new byte[0];
+
+    /** The single instance with unavailable result code. */
+    public static final BindNoDResponse UNAVAILABLE = new BindNoDResponse( ResultCodeEnum.UNAVAILABLE );
+
+    /** The single instance with protocolError result code. */
+    public static final BindNoDResponse PROTOCOLERROR = new BindNoDResponse( ResultCodeEnum.PROTOCOL_ERROR );
+
+    /** The single instance with strongAuthRequired result code. */
+    public static final BindNoDResponse STRONGAUTHREQUIRED = new BindNoDResponse(
+        ResultCodeEnum.STRONG_AUTH_REQUIRED );
+
+
+    /**
+     * Creates a new instance of NoticeOfDisconnect.
+     */
+    private BindNoDResponse( ResultCodeEnum rcode )
+    {
+        super();
+
+        switch ( rcode )
+        {
+            case UNAVAILABLE:
+                break;
+
+            case PROTOCOL_ERROR:
+                break;
+
+            case STRONG_AUTH_REQUIRED:
+                break;
+
+            default:
+                throw new IllegalArgumentException( I18n.err( I18n.ERR_04166, ResultCodeEnum.UNAVAILABLE,
+                    ResultCodeEnum.PROTOCOL_ERROR, ResultCodeEnum.STRONG_AUTH_REQUIRED ) );
+        }
+
+        super.getLdapResult().setErrorMessage( rcode.toString() + ": The server will disconnect!" );
+        super.getLdapResult().setMatchedDn( null );
+        super.getLdapResult().setResultCode( rcode );
+    }
+
+
+    // ------------------------------------------------------------------------
+    // ExtendedResponse Interface Method Implementations
+    // ------------------------------------------------------------------------
+    /**
+     * Gets the reponse OID specific encoded response values.
+     * 
+     * @return the response specific encoded response values.
+     */
+    public byte[] getResponse()
+    {
+        return EMPTY_RESPONSE;
+    }
+
+
+    /**
+     * Gets the OID uniquely identifying this extended response (a.k.a. its
+     * name).
+     * 
+     * @return the OID of the extended response type.
+     */
+    public String getResponseName()
+    {
+        return EXTENSION_OID;
+    }
+}

Added: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/CompareNoDResponse.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/CompareNoDResponse.java?rev=1005405&view=auto
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/CompareNoDResponse.java (added)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/CompareNoDResponse.java Thu Oct  7 10:49:45 2010
@@ -0,0 +1,106 @@
+/*
+ *  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.shared.ldap.message.extended.nod;
+
+
+import org.apache.directory.shared.i18n.I18n;
+import org.apache.directory.shared.ldap.message.CompareResponseImpl;
+import org.apache.directory.shared.ldap.message.ResultCodeEnum;
+import org.apache.directory.shared.ldap.message.extended.NoticeOfDisconnect;
+
+
+/**
+ * An extended operation intended for notifying clients of upcoming
+ * disconnection for the Compare response. 
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class CompareNoDResponse extends CompareResponseImpl
+{
+    /** The OID of the NotiveOfDisconnect extended operation. */
+    public static final String EXTENSION_OID = NoticeOfDisconnect.EXTENSION_OID;
+
+    /** The empty response */
+    private static final byte[] EMPTY_RESPONSE = new byte[0];
+
+    /** The single instance with unavailable result code. */
+    public static final CompareNoDResponse UNAVAILABLE = new CompareNoDResponse( ResultCodeEnum.UNAVAILABLE );
+
+    /** The single instance with protocolError result code. */
+    public static final CompareNoDResponse PROTOCOLERROR = new CompareNoDResponse( ResultCodeEnum.PROTOCOL_ERROR );
+
+    /** The single instance with strongAuthRequired result code. */
+    public static final CompareNoDResponse STRONGAUTHREQUIRED = new CompareNoDResponse(
+        ResultCodeEnum.STRONG_AUTH_REQUIRED );
+
+
+    /**
+     * Creates a new instance of NoticeOfDisconnect.
+     */
+    private CompareNoDResponse( ResultCodeEnum rcode )
+    {
+        super();
+
+        switch ( rcode )
+        {
+            case UNAVAILABLE:
+                break;
+
+            case PROTOCOL_ERROR:
+                break;
+
+            case STRONG_AUTH_REQUIRED:
+                break;
+
+            default:
+                throw new IllegalArgumentException( I18n.err( I18n.ERR_04166, ResultCodeEnum.UNAVAILABLE,
+                    ResultCodeEnum.PROTOCOL_ERROR, ResultCodeEnum.STRONG_AUTH_REQUIRED ) );
+        }
+
+        super.getLdapResult().setErrorMessage( rcode.toString() + ": The server will disconnect!" );
+        super.getLdapResult().setMatchedDn( null );
+        super.getLdapResult().setResultCode( rcode );
+    }
+
+
+    // ------------------------------------------------------------------------
+    // ExtendedResponse Interface Method Implementations
+    // ------------------------------------------------------------------------
+    /**
+     * Gets the reponse OID specific encoded response values.
+     * 
+     * @return the response specific encoded response values.
+     */
+    public byte[] getResponse()
+    {
+        return EMPTY_RESPONSE;
+    }
+
+
+    /**
+     * Gets the OID uniquely identifying this extended response (a.k.a. its
+     * name).
+     * 
+     * @return the OID of the extended response type.
+     */
+    public String getResponseName()
+    {
+        return EXTENSION_OID;
+    }
+}

Added: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/DeleteNoDResponse.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/DeleteNoDResponse.java?rev=1005405&view=auto
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/DeleteNoDResponse.java (added)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/DeleteNoDResponse.java Thu Oct  7 10:49:45 2010
@@ -0,0 +1,106 @@
+/*
+ *  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.shared.ldap.message.extended.nod;
+
+
+import org.apache.directory.shared.i18n.I18n;
+import org.apache.directory.shared.ldap.message.DeleteResponseImpl;
+import org.apache.directory.shared.ldap.message.ResultCodeEnum;
+import org.apache.directory.shared.ldap.message.extended.NoticeOfDisconnect;
+
+
+/**
+ * An extended operation intended for notifying clients of upcoming
+ * disconnection for the Delete response. 
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class DeleteNoDResponse extends DeleteResponseImpl
+{
+    /** The OID of the NotiveOfDisconnect extended operation. */
+    public static final String EXTENSION_OID = NoticeOfDisconnect.EXTENSION_OID;
+
+    /** The empty response */
+    private static final byte[] EMPTY_RESPONSE = new byte[0];
+
+    /** The single instance with unavailable result code. */
+    public static final DeleteNoDResponse UNAVAILABLE = new DeleteNoDResponse( ResultCodeEnum.UNAVAILABLE );
+
+    /** The single instance with protocolError result code. */
+    public static final DeleteNoDResponse PROTOCOLERROR = new DeleteNoDResponse( ResultCodeEnum.PROTOCOL_ERROR );
+
+    /** The single instance with strongAuthRequired result code. */
+    public static final DeleteNoDResponse STRONGAUTHREQUIRED = new DeleteNoDResponse(
+        ResultCodeEnum.STRONG_AUTH_REQUIRED );
+
+
+    /**
+     * Creates a new instance of NoticeOfDisconnect.
+     */
+    private DeleteNoDResponse( ResultCodeEnum rcode )
+    {
+        super();
+
+        switch ( rcode )
+        {
+            case UNAVAILABLE:
+                break;
+
+            case PROTOCOL_ERROR:
+                break;
+
+            case STRONG_AUTH_REQUIRED:
+                break;
+
+            default:
+                throw new IllegalArgumentException( I18n.err( I18n.ERR_04166, ResultCodeEnum.UNAVAILABLE,
+                    ResultCodeEnum.PROTOCOL_ERROR, ResultCodeEnum.STRONG_AUTH_REQUIRED ) );
+        }
+
+        super.getLdapResult().setErrorMessage( rcode.toString() + ": The server will disconnect!" );
+        super.getLdapResult().setMatchedDn( null );
+        super.getLdapResult().setResultCode( rcode );
+    }
+
+
+    // ------------------------------------------------------------------------
+    // ExtendedResponse Interface Method Implementations
+    // ------------------------------------------------------------------------
+    /**
+     * Gets the reponse OID specific encoded response values.
+     * 
+     * @return the response specific encoded response values.
+     */
+    public byte[] getResponse()
+    {
+        return EMPTY_RESPONSE;
+    }
+
+
+    /**
+     * Gets the OID uniquely identifying this extended response (a.k.a. its
+     * name).
+     * 
+     * @return the OID of the extended response type.
+     */
+    public String getResponseName()
+    {
+        return EXTENSION_OID;
+    }
+}

Added: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/ExtendedNoDResponse.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/ExtendedNoDResponse.java?rev=1005405&view=auto
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/ExtendedNoDResponse.java (added)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/ExtendedNoDResponse.java Thu Oct  7 10:49:45 2010
@@ -0,0 +1,109 @@
+/*
+ *  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.shared.ldap.message.extended.nod;
+
+
+import org.apache.directory.shared.i18n.I18n;
+import org.apache.directory.shared.ldap.message.ExtendedResponseImpl;
+import org.apache.directory.shared.ldap.message.ResultCodeEnum;
+import org.apache.directory.shared.ldap.message.extended.NoticeOfDisconnect;
+
+
+/**
+ * An extended operation intended for notifying clients of upcoming
+ * disconnection for the Extended response. 
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class ExtendedNoDResponse extends ExtendedResponseImpl
+{
+    /** The serial version UID */
+    static final long serialVersionUID = 2L;
+
+    /** The OID of the NotiveOfDisconnect extended operation. */
+    public static final String EXTENSION_OID = NoticeOfDisconnect.EXTENSION_OID;
+
+    /** The empty response */
+    private static final byte[] EMPTY_RESPONSE = new byte[0];
+
+    /** The single instance with unavailable result code. */
+    public static final ExtendedNoDResponse UNAVAILABLE = new ExtendedNoDResponse( ResultCodeEnum.UNAVAILABLE );
+
+    /** The single instance with protocolError result code. */
+    public static final ExtendedNoDResponse PROTOCOLERROR = new ExtendedNoDResponse( ResultCodeEnum.PROTOCOL_ERROR );
+
+    /** The single instance with strongAuthRequired result code. */
+    public static final ExtendedNoDResponse STRONGAUTHREQUIRED = new ExtendedNoDResponse(
+        ResultCodeEnum.STRONG_AUTH_REQUIRED );
+
+
+    /**
+     * Creates a new instance of NoticeOfDisconnect.
+     */
+    private ExtendedNoDResponse( ResultCodeEnum rcode )
+    {
+        super( EXTENSION_OID );
+
+        switch ( rcode )
+        {
+            case UNAVAILABLE:
+                break;
+
+            case PROTOCOL_ERROR:
+                break;
+
+            case STRONG_AUTH_REQUIRED:
+                break;
+
+            default:
+                throw new IllegalArgumentException( I18n.err( I18n.ERR_04166, ResultCodeEnum.UNAVAILABLE,
+                    ResultCodeEnum.PROTOCOL_ERROR, ResultCodeEnum.STRONG_AUTH_REQUIRED ) );
+        }
+
+        super.getLdapResult().setErrorMessage( rcode.toString() + ": The server will disconnect!" );
+        super.getLdapResult().setMatchedDn( null );
+        super.getLdapResult().setResultCode( rcode );
+    }
+
+
+    // ------------------------------------------------------------------------
+    // ExtendedResponse Interface Method Implementations
+    // ------------------------------------------------------------------------
+    /**
+     * Gets the reponse OID specific encoded response values.
+     * 
+     * @return the response specific encoded response values.
+     */
+    public byte[] getResponse()
+    {
+        return EMPTY_RESPONSE;
+    }
+
+
+    /**
+     * Gets the OID uniquely identifying this extended response (a.k.a. its
+     * name).
+     * 
+     * @return the OID of the extended response type.
+     */
+    public String getResponseName()
+    {
+        return EXTENSION_OID;
+    }
+}

Added: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/ModifyDnNoDResponse.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/ModifyDnNoDResponse.java?rev=1005405&view=auto
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/ModifyDnNoDResponse.java (added)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/ModifyDnNoDResponse.java Thu Oct  7 10:49:45 2010
@@ -0,0 +1,106 @@
+/*
+ *  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.shared.ldap.message.extended.nod;
+
+
+import org.apache.directory.shared.i18n.I18n;
+import org.apache.directory.shared.ldap.message.ModifyDnResponseImpl;
+import org.apache.directory.shared.ldap.message.ResultCodeEnum;
+import org.apache.directory.shared.ldap.message.extended.NoticeOfDisconnect;
+
+
+/**
+ * An extended operation intended for notifying clients of upcoming
+ * disconnection for the ModifyDn response. 
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class ModifyDnNoDResponse extends ModifyDnResponseImpl
+{
+    /** The OID of the NotiveOfDisconnect extended operation. */
+    public static final String EXTENSION_OID = NoticeOfDisconnect.EXTENSION_OID;
+
+    /** The empty response */
+    private static final byte[] EMPTY_RESPONSE = new byte[0];
+
+    /** The single instance with unavailable result code. */
+    public static final ModifyDnNoDResponse UNAVAILABLE = new ModifyDnNoDResponse( ResultCodeEnum.UNAVAILABLE );
+
+    /** The single instance with protocolError result code. */
+    public static final ModifyDnNoDResponse PROTOCOLERROR = new ModifyDnNoDResponse( ResultCodeEnum.PROTOCOL_ERROR );
+
+    /** The single instance with strongAuthRequired result code. */
+    public static final ModifyDnNoDResponse STRONGAUTHREQUIRED = new ModifyDnNoDResponse(
+        ResultCodeEnum.STRONG_AUTH_REQUIRED );
+
+
+    /**
+     * Creates a new instance of NoticeOfDisconnect.
+     */
+    private ModifyDnNoDResponse( ResultCodeEnum rcode )
+    {
+        super();
+
+        switch ( rcode )
+        {
+            case UNAVAILABLE:
+                break;
+
+            case PROTOCOL_ERROR:
+                break;
+
+            case STRONG_AUTH_REQUIRED:
+                break;
+
+            default:
+                throw new IllegalArgumentException( I18n.err( I18n.ERR_04166, ResultCodeEnum.UNAVAILABLE,
+                    ResultCodeEnum.PROTOCOL_ERROR, ResultCodeEnum.STRONG_AUTH_REQUIRED ) );
+        }
+
+        super.getLdapResult().setErrorMessage( rcode.toString() + ": The server will disconnect!" );
+        super.getLdapResult().setMatchedDn( null );
+        super.getLdapResult().setResultCode( rcode );
+    }
+
+
+    // ------------------------------------------------------------------------
+    // ExtendedResponse Interface Method Implementations
+    // ------------------------------------------------------------------------
+    /**
+     * Gets the reponse OID specific encoded response values.
+     * 
+     * @return the response specific encoded response values.
+     */
+    public byte[] getResponse()
+    {
+        return EMPTY_RESPONSE;
+    }
+
+
+    /**
+     * Gets the OID uniquely identifying this extended response (a.k.a. its
+     * name).
+     * 
+     * @return the OID of the extended response type.
+     */
+    public String getResponseName()
+    {
+        return EXTENSION_OID;
+    }
+}

Copied: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/ModifyNoDResponse.java (from r1005346, directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/ModifyNoDResponse.java)
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/ModifyNoDResponse.java?p2=directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/ModifyNoDResponse.java&p1=directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/ModifyNoDResponse.java&r1=1005346&r2=1005405&rev=1005405&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/ModifyNoDResponse.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/ModifyNoDResponse.java Thu Oct  7 10:49:45 2010
@@ -17,22 +17,24 @@
  *  under the License. 
  *  
  */
-package org.apache.directory.shared.ldap.message.extended;
+package org.apache.directory.shared.ldap.message.extended.nod;
 
 
 import org.apache.directory.shared.i18n.I18n;
 import org.apache.directory.shared.ldap.message.ModifyResponseImpl;
 import org.apache.directory.shared.ldap.message.ResultCodeEnum;
+import org.apache.directory.shared.ldap.message.extended.NoticeOfDisconnect;
 
 
 /**
  * An extended operation intended for notifying clients of upcoming
- * disconnection. * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * disconnection for the Modify response. 
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
 public class ModifyNoDResponse extends ModifyResponseImpl
 {
     /** The OID of the NotiveOfDisconnect extended operation. */
-    public static final String EXTENSION_OID = "1.3.6.1.4.1.1466.20036";
+    public static final String EXTENSION_OID = NoticeOfDisconnect.EXTENSION_OID;
 
     /** The empty response */
     private static final byte[] EMPTY_RESPONSE = new byte[0];
@@ -101,38 +103,4 @@ public class ModifyNoDResponse extends M
     {
         return EXTENSION_OID;
     }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public int hashCode()
-    {
-        int hash = 37;
-        // Seems simple but look at the equals() method ...
-        hash = hash * 17 + getClass().getName().hashCode();
-
-        return hash;
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public boolean equals( Object obj )
-    {
-        if ( obj == this )
-        {
-            return true;
-        }
-
-        if ( obj instanceof ModifyNoDResponse )
-        {
-            return true;
-        }
-
-        return false;
-    }
 }

Added: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/SearchNoDResponse.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/SearchNoDResponse.java?rev=1005405&view=auto
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/SearchNoDResponse.java (added)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/message/extended/nod/SearchNoDResponse.java Thu Oct  7 10:49:45 2010
@@ -0,0 +1,106 @@
+/*
+ *  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.shared.ldap.message.extended.nod;
+
+
+import org.apache.directory.shared.i18n.I18n;
+import org.apache.directory.shared.ldap.message.ResultCodeEnum;
+import org.apache.directory.shared.ldap.message.SearchResultDoneImpl;
+import org.apache.directory.shared.ldap.message.extended.NoticeOfDisconnect;
+
+
+/**
+ * An extended operation intended for notifying clients of upcoming
+ * disconnection for the Search response. 
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class SearchNoDResponse extends SearchResultDoneImpl
+{
+    /** The OID of the NotiveOfDisconnect extended operation. */
+    public static final String EXTENSION_OID = NoticeOfDisconnect.EXTENSION_OID;
+
+    /** The empty response */
+    private static final byte[] EMPTY_RESPONSE = new byte[0];
+
+    /** The single instance with unavailable result code. */
+    public static final SearchNoDResponse UNAVAILABLE = new SearchNoDResponse( ResultCodeEnum.UNAVAILABLE );
+
+    /** The single instance with protocolError result code. */
+    public static final SearchNoDResponse PROTOCOLERROR = new SearchNoDResponse( ResultCodeEnum.PROTOCOL_ERROR );
+
+    /** The single instance with strongAuthRequired result code. */
+    public static final SearchNoDResponse STRONGAUTHREQUIRED = new SearchNoDResponse(
+        ResultCodeEnum.STRONG_AUTH_REQUIRED );
+
+
+    /**
+     * Creates a new instance of NoticeOfDisconnect.
+     */
+    private SearchNoDResponse( ResultCodeEnum rcode )
+    {
+        super();
+
+        switch ( rcode )
+        {
+            case UNAVAILABLE:
+                break;
+
+            case PROTOCOL_ERROR:
+                break;
+
+            case STRONG_AUTH_REQUIRED:
+                break;
+
+            default:
+                throw new IllegalArgumentException( I18n.err( I18n.ERR_04166, ResultCodeEnum.UNAVAILABLE,
+                    ResultCodeEnum.PROTOCOL_ERROR, ResultCodeEnum.STRONG_AUTH_REQUIRED ) );
+        }
+
+        super.getLdapResult().setErrorMessage( rcode.toString() + ": The server will disconnect!" );
+        super.getLdapResult().setMatchedDn( null );
+        super.getLdapResult().setResultCode( rcode );
+    }
+
+
+    // ------------------------------------------------------------------------
+    // ExtendedResponse Interface Method Implementations
+    // ------------------------------------------------------------------------
+    /**
+     * Gets the reponse OID specific encoded response values.
+     * 
+     * @return the response specific encoded response values.
+     */
+    public byte[] getResponse()
+    {
+        return EMPTY_RESPONSE;
+    }
+
+
+    /**
+     * Gets the OID uniquely identifying this extended response (a.k.a. its
+     * name).
+     * 
+     * @return the OID of the extended response type.
+     */
+    public String getResponseName()
+    {
+        return EXTENSION_OID;
+    }
+}