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/08/11 21:37:47 UTC

svn commit: r984552 - in /directory: clients/ldap/branches/ldap-client-codec-merge/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/ shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/ shared/...

Author: elecharny
Date: Wed Aug 11 19:37:46 2010
New Revision: 984552

URL: http://svn.apache.org/viewvc?rev=984552&view=rev
Log:
Removed the DeleteResponseCodec class

Removed:
    directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/del/DelResponseCodec.java
Modified:
    directory/clients/ldap/branches/ldap-client-codec-merge/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java
    directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageContainer.java
    directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageGrammar.java
    directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapProtocolEncoder.java
    directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapTransformer.java
    directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/DeleteResponseImpl.java
    directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/LdapResultImpl.java
    directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/internal/InternalDeleteResponse.java
    directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/internal/InternalLdapResult.java
    directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/codec/del/DelResponseTest.java
    directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/message/LdapResultImplTest.java

Modified: directory/clients/ldap/branches/ldap-client-codec-merge/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java
URL: http://svn.apache.org/viewvc/directory/clients/ldap/branches/ldap-client-codec-merge/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java?rev=984552&r1=984551&r2=984552&view=diff
==============================================================================
--- directory/clients/ldap/branches/ldap-client-codec-merge/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java (original)
+++ directory/clients/ldap/branches/ldap-client-codec-merge/ldap-client-api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java Wed Aug 11 19:37:46 2010
@@ -98,7 +98,6 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.codec.compare.CompareResponseCodec;
 import org.apache.directory.shared.ldap.codec.controls.ControlImpl;
 import org.apache.directory.shared.ldap.codec.del.DelRequestCodec;
-import org.apache.directory.shared.ldap.codec.del.DelResponseCodec;
 import org.apache.directory.shared.ldap.codec.extended.ExtendedRequestCodec;
 import org.apache.directory.shared.ldap.codec.extended.ExtendedResponseCodec;
 import org.apache.directory.shared.ldap.codec.intermediate.IntermediateResponseCodec;
@@ -129,6 +128,7 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.message.ResultCodeEnum;
 import org.apache.directory.shared.ldap.message.control.Control;
 import org.apache.directory.shared.ldap.message.internal.InternalBindResponse;
+import org.apache.directory.shared.ldap.message.internal.InternalDeleteResponse;
 import org.apache.directory.shared.ldap.message.internal.InternalLdapResult;
 import org.apache.directory.shared.ldap.message.internal.InternalMessage;
 import org.apache.directory.shared.ldap.name.DN;
@@ -1624,6 +1624,41 @@ public class LdapNetworkConnection exten
                     removeFromFutureMaps( messageId );
 
                     break;
+
+                case DEL_RESPONSE:
+                    // Transform the response
+                    DeleteResponse deleteResponse = convert( ( InternalDeleteResponse ) response );
+
+                    DeleteFuture deleteFuture = ( DeleteFuture ) responseFuture;
+
+                    if ( deleteFuture == null )
+                    {
+                        LOG.error( "DeleteFuture is null" );
+                        throw new LdapException( "DeleteFuture is null" );
+                    }
+
+                    if ( LOG.isDebugEnabled() )
+                    {
+                        if ( deleteResponse.getLdapResult().getResultCode() == ResultCodeEnum.SUCCESS )
+                        {
+                            // Everything is fine, return the response
+                            LOG.debug( "Delete successful : {}", deleteResponse );
+                        }
+                        else
+                        {
+                            // We have had an error
+                            LOG.debug( "Delete failed : {}", deleteResponse );
+                        }
+                    }
+
+                    // Store the response into the future
+                    deleteFuture.set( deleteResponse );
+
+                    // Remove the future from the map
+                    removeFromFutureMaps( messageId );
+
+                    break;
+
             }
         }
         else
@@ -1722,44 +1757,6 @@ public class LdapNetworkConnection exten
 
                     break;
 
-                case DEL_RESPONSE:
-                    // Transform the response
-                    DelResponseCodec delRespCodec = ( DelResponseCodec ) response;
-                    delRespCodec.addControls( response.getControls() );
-                    delRespCodec.setMessageId( messageId );
-
-                    DeleteResponse deleteResponse = convert( delRespCodec );
-
-                    DeleteFuture deleteFuture = ( DeleteFuture ) responseFuture;
-
-                    if ( deleteFuture == null )
-                    {
-                        LOG.error( "DeleteFuture is null" );
-                        throw new LdapException( "DeleteFuture is null" );
-                    }
-
-                    if ( LOG.isDebugEnabled() )
-                    {
-                        if ( deleteResponse.getLdapResult().getResultCode() == ResultCodeEnum.SUCCESS )
-                        {
-                            // Everything is fine, return the response
-                            LOG.debug( "Delete successful : {}", deleteResponse );
-                        }
-                        else
-                        {
-                            // We have had an error
-                            LOG.debug( "Delete failed : {}", deleteResponse );
-                        }
-                    }
-
-                    // Store the response into the future
-                    deleteFuture.set( deleteResponse );
-
-                    // Remove the future from the map
-                    removeFromFutureMaps( messageId );
-
-                    break;
-
                 case EXTENDED_RESPONSE:
                     // Transform the response
                     ExtendedResponseCodec extResCodec = ( ExtendedResponseCodec ) response;
@@ -2897,15 +2894,15 @@ public class LdapNetworkConnection exten
 
 
     /**
-     * converts the DeleteResponseCodec to DeleteResponse object.
+     * converts the InternalDeleteResponse to DeleteResponse object.
      */
-    private DeleteResponse convert( DelResponseCodec delRespCodec )
+    private DeleteResponse convert( InternalDeleteResponse internalDeleteResponse )
     {
         DeleteResponse response = new DeleteResponse();
 
-        response.setMessageId( delRespCodec.getMessageId() );
-        response.setLdapResult( convert( delRespCodec.getLdapResult() ) );
-        addControls( delRespCodec, response );
+        response.setMessageId( internalDeleteResponse.getMessageId() );
+        response.setLdapResult( convert( internalDeleteResponse.getLdapResult() ) );
+        addControls( internalDeleteResponse, response );
 
         return response;
     }

Modified: directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageContainer.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageContainer.java?rev=984552&r1=984551&r2=984552&view=diff
==============================================================================
--- directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageContainer.java (original)
+++ directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageContainer.java Wed Aug 11 19:37:46 2010
@@ -29,7 +29,6 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.codec.compare.CompareResponseCodec;
 import org.apache.directory.shared.ldap.codec.controls.AbstractControl;
 import org.apache.directory.shared.ldap.codec.del.DelRequestCodec;
-import org.apache.directory.shared.ldap.codec.del.DelResponseCodec;
 import org.apache.directory.shared.ldap.codec.extended.ExtendedRequestCodec;
 import org.apache.directory.shared.ldap.codec.extended.ExtendedResponseCodec;
 import org.apache.directory.shared.ldap.codec.intermediate.IntermediateResponseCodec;
@@ -48,6 +47,7 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.message.internal.InternalBindResponse;
 import org.apache.directory.shared.ldap.message.internal.InternalCompareRequest;
 import org.apache.directory.shared.ldap.message.internal.InternalDeleteRequest;
+import org.apache.directory.shared.ldap.message.internal.InternalDeleteResponse;
 import org.apache.directory.shared.ldap.message.internal.InternalMessage;
 import org.apache.directory.shared.ldap.message.internal.InternalUnbindRequest;
 import org.apache.directory.shared.ldap.message.spi.BinaryAttributeDetector;
@@ -265,9 +265,9 @@ public class LdapMessageContainer extend
     /**
      * @return Returns the DelResponse stored in the container
      */
-    public DelResponseCodec getDelResponse()
+    public InternalDeleteResponse getInternalDelResponse()
     {
-        return ( DelResponseCodec ) ldapMessage;
+        return ( InternalDeleteResponse ) internalMessage;
     }
 
 

Modified: directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageGrammar.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageGrammar.java?rev=984552&r1=984551&r2=984552&view=diff
==============================================================================
--- directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageGrammar.java (original)
+++ directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageGrammar.java Wed Aug 11 19:37:46 2010
@@ -74,7 +74,6 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.codec.compare.CompareResponseCodec;
 import org.apache.directory.shared.ldap.codec.controls.ControlEnum;
 import org.apache.directory.shared.ldap.codec.controls.ControlImpl;
-import org.apache.directory.shared.ldap.codec.del.DelResponseCodec;
 import org.apache.directory.shared.ldap.codec.extended.ExtendedRequestCodec;
 import org.apache.directory.shared.ldap.codec.extended.ExtendedResponseCodec;
 import org.apache.directory.shared.ldap.codec.intermediate.IntermediateResponseCodec;
@@ -112,6 +111,7 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.message.internal.InternalBindResponse;
 import org.apache.directory.shared.ldap.message.internal.InternalCompareRequest;
 import org.apache.directory.shared.ldap.message.internal.InternalDeleteRequest;
+import org.apache.directory.shared.ldap.message.internal.InternalDeleteResponse;
 import org.apache.directory.shared.ldap.message.internal.InternalMessage;
 import org.apache.directory.shared.ldap.message.internal.InternalUnbindRequest;
 import org.apache.directory.shared.ldap.name.DN;
@@ -2095,9 +2095,8 @@ public class LdapMessageGrammar extends 
                     LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
 
                     // Now, we can allocate the DelResponse Object
-                    DelResponseCodec delResponse = new DelResponseCodec();
-                    delResponse.setMessageId( ldapMessageContainer.getMessageId() );
-                    ldapMessageContainer.setLdapMessage( delResponse );
+                    InternalDeleteResponse delResponse = new DeleteResponseImpl( ldapMessageContainer.getMessageId() );
+                    ldapMessageContainer.setInternalMessage( delResponse );
 
                     log.debug( "Del response " );
                 }

Modified: directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapProtocolEncoder.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapProtocolEncoder.java?rev=984552&r1=984551&r2=984552&view=diff
==============================================================================
--- directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapProtocolEncoder.java (original)
+++ directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapProtocolEncoder.java Wed Aug 11 19:37:46 2010
@@ -32,8 +32,10 @@ import org.apache.directory.shared.asn1.
 import org.apache.directory.shared.i18n.I18n;
 import org.apache.directory.shared.ldap.codec.controls.CodecControl;
 import org.apache.directory.shared.ldap.message.BindResponseImpl;
+import org.apache.directory.shared.ldap.message.DeleteResponseImpl;
 import org.apache.directory.shared.ldap.message.control.Control;
 import org.apache.directory.shared.ldap.message.internal.InternalBindResponse;
+import org.apache.directory.shared.ldap.message.internal.InternalDeleteResponse;
 import org.apache.directory.shared.ldap.message.internal.InternalLdapResult;
 import org.apache.directory.shared.ldap.message.internal.InternalMessage;
 import org.apache.directory.shared.ldap.message.internal.InternalReferral;
@@ -97,7 +99,7 @@ public class LdapProtocolEncoder extends
         int length = computeMessageLength( message );
         ByteBuffer buffer = ByteBuffer.allocate( length );
 
-        if ( message instanceof InternalBindResponse )
+        if ( ( message instanceof InternalBindResponse ) || ( message instanceof InternalDeleteResponse ) )
         {
             try
             {
@@ -270,6 +272,7 @@ public class LdapProtocolEncoder extends
             byte[] matchedDNBytes = StringTools.getBytesUtf8( StringTools
                 .trimLeft( ldapResult.getMatchedDn().getName() ) );
             ldapResultLength += 1 + TLV.getNbBytes( matchedDNBytes.length ) + matchedDNBytes.length;
+            ldapResult.setMatchedDnBytes( matchedDNBytes );
         }
 
         // The errorMessage length
@@ -295,6 +298,8 @@ public class LdapProtocolEncoder extends
                     referral.addLdapUrlBytes( ldapUrlBytes );
                 }
 
+                ldapResult.setReferralsLength( referralsLength );
+
                 // The referrals
                 ldapResultLength += 1 + TLV.getNbBytes( referralsLength ) + referralsLength;
             }
@@ -340,20 +345,20 @@ public class LdapProtocolEncoder extends
 
         if ( referral != null )
         {
-            Collection<String> ldapUrls = referral.getLdapUrls();
+            Collection<byte[]> ldapUrlsBytes = referral.getLdapUrlsBytes();
 
-            if ( ( ldapUrls != null ) && ( ldapUrls.size() != 0 ) )
+            if ( ( ldapUrlsBytes != null ) && ( ldapUrlsBytes.size() != 0 ) )
             {
                 // Encode the referrals sequence
                 // The referrals length MUST have been computed before !
                 buffer.put( ( byte ) LdapConstants.LDAP_RESULT_REFERRAL_SEQUENCE_TAG );
-                //buffer.put( TLV.getBytes( referralsLength ) );
+                buffer.put( TLV.getBytes( ldapResult.getReferralsLength() ) );
 
                 // Each referral
-                for ( String ldapUrl : ldapUrls )
+                for ( byte[] ldapUrlBytes : ldapUrlsBytes )
                 {
                     // Encode the current referral
-                    //Value.encode( buffer, referral.getBytesReference() );
+                    Value.encode( buffer, ldapUrlBytes );
                 }
             }
         }
@@ -396,6 +401,29 @@ public class LdapProtocolEncoder extends
 
 
     /**
+     * Compute the DelResponse length 
+     * 
+     * DelResponse :
+     * 
+     * 0x6B L1
+     *  |
+     *  +--> LdapResult
+     * 
+     * L1 = Length(LdapResult)
+     * 
+     * Length(DelResponse) = Length(0x6B) + Length(L1) + L1
+     */
+    private int computeDeleteResponseLength( DeleteResponseImpl deleteResponse )
+    {
+        int deleteResponseLength = computeLdapResultLength( deleteResponse.getLdapResult() );
+
+        deleteResponse.setDeleteResponseLength( deleteResponseLength );
+
+        return 1 + TLV.getNbBytes( deleteResponseLength ) + deleteResponseLength;
+    }
+
+
+    /**
      * Encode the BindResponse message to a PDU.
      * 
      * BindResponse :
@@ -441,6 +469,29 @@ public class LdapProtocolEncoder extends
 
 
     /**
+     * Encode the DelResponse message to a PDU.
+     * 
+     * @param buffer The buffer where to put the PDU
+     */
+    private void encodeDeleteResponse( ByteBuffer buffer, DeleteResponseImpl deleteResponse ) throws EncoderException
+    {
+        try
+        {
+            // The BindResponse Tag
+            buffer.put( LdapConstants.DEL_RESPONSE_TAG );
+            buffer.put( TLV.getBytes( deleteResponse.getDeleteResponseLength() ) );
+
+            // The LdapResult
+            encodeLdapResult( buffer, deleteResponse.getLdapResult() );
+        }
+        catch ( BufferOverflowException boe )
+        {
+            throw new EncoderException( I18n.err( I18n.ERR_04005 ) );
+        }
+    }
+
+
+    /**
      * Compute the BindRequest length 
      * 
      * BindRequest : 
@@ -464,6 +515,9 @@ public class LdapProtocolEncoder extends
             case BIND_RESPONSE:
                 return computeBindResponseLength( ( BindResponseImpl ) message );
 
+            case DEL_RESPONSE:
+                return computeDeleteResponseLength( ( DeleteResponseImpl ) message );
+
             default:
                 return 0;
         }
@@ -476,6 +530,11 @@ public class LdapProtocolEncoder extends
         {
             case BIND_RESPONSE:
                 encodeBindResponse( bb, ( BindResponseImpl ) message );
+                break;
+
+            case DEL_RESPONSE:
+                encodeDeleteResponse( bb, ( DeleteResponseImpl ) message );
+                break;
         }
     }
 }

Modified: directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapTransformer.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapTransformer.java?rev=984552&r1=984551&r2=984552&view=diff
==============================================================================
--- directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapTransformer.java (original)
+++ directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapTransformer.java Wed Aug 11 19:37:46 2010
@@ -32,7 +32,6 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.codec.bind.SaslCredentials;
 import org.apache.directory.shared.ldap.codec.bind.SimpleAuthentication;
 import org.apache.directory.shared.ldap.codec.compare.CompareResponseCodec;
-import org.apache.directory.shared.ldap.codec.del.DelResponseCodec;
 import org.apache.directory.shared.ldap.codec.extended.ExtendedRequestCodec;
 import org.apache.directory.shared.ldap.codec.extended.ExtendedResponseCodec;
 import org.apache.directory.shared.ldap.codec.intermediate.IntermediateResponseCodec;
@@ -75,7 +74,6 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.message.AliasDerefMode;
 import org.apache.directory.shared.ldap.message.BindRequestImpl;
 import org.apache.directory.shared.ldap.message.CompareResponseImpl;
-import org.apache.directory.shared.ldap.message.DeleteResponseImpl;
 import org.apache.directory.shared.ldap.message.ExtendedRequestImpl;
 import org.apache.directory.shared.ldap.message.ExtendedResponseImpl;
 import org.apache.directory.shared.ldap.message.IntermediateResponseImpl;
@@ -751,25 +749,6 @@ public class LdapTransformer
 
 
     /**
-     * Transform a Internal DelResponse to a Codec DelResponse
-     * 
-     * @param internalMessage The incoming Internal DelResponse
-     * @return The DelResponseCodec instance
-     */
-    private static LdapMessageCodec transformDelResponse( InternalMessage internalMessage )
-    {
-        DeleteResponseImpl internalDelResponse = ( DeleteResponseImpl ) internalMessage;
-
-        DelResponseCodec delResponse = new DelResponseCodec();
-
-        // Transform the ldapResult
-        delResponse.setLdapResult( transformLdapResult( ( LdapResultImpl ) internalDelResponse.getLdapResult() ) );
-
-        return delResponse;
-    }
-
-
-    /**
      * Transform a Internal ExtendedResponse to a Codec ExtendedResponse
      * 
      * @param internalMessage The incoming Internal ExtendedResponse
@@ -997,10 +976,6 @@ public class LdapTransformer
                 codecMessage = transformCompareResponse( msg );
                 break;
 
-            case DEL_RESPONSE:
-                codecMessage = transformDelResponse( msg );
-                break;
-
             case MODIFY_RESPONSE:
                 codecMessage = transformModifyResponse( msg );
                 break;

Modified: directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/DeleteResponseImpl.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/DeleteResponseImpl.java?rev=984552&r1=984551&r2=984552&view=diff
==============================================================================
--- directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/DeleteResponseImpl.java (original)
+++ directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/DeleteResponseImpl.java Wed Aug 11 19:37:46 2010
@@ -19,6 +19,7 @@
  */
 package org.apache.directory.shared.ldap.message;
 
+
 import org.apache.directory.shared.ldap.message.internal.InternalAbstractResultResponse;
 import org.apache.directory.shared.ldap.message.internal.InternalDeleteResponse;
 
@@ -31,6 +32,9 @@ import org.apache.directory.shared.ldap.
 public class DeleteResponseImpl extends InternalAbstractResultResponse implements InternalDeleteResponse
 {
 
+    /** The encoded deleteResponse length */
+    private int deleteResponseLength;
+
     // ------------------------------------------------------------------------
     // Constructors
     // ------------------------------------------------------------------------
@@ -44,8 +48,26 @@ public class DeleteResponseImpl extends 
      * @param id
      *            the session unique message id
      */
-    public DeleteResponseImpl(final int id)
+    public DeleteResponseImpl( final int id )
     {
         super( id, TYPE );
     }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void setDeleteResponseLength( int deleteResponseLength )
+    {
+        this.deleteResponseLength = deleteResponseLength;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public int getDeleteResponseLength()
+    {
+        return deleteResponseLength;
+    }
 }

Modified: directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/LdapResultImpl.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/LdapResultImpl.java?rev=984552&r1=984551&r2=984552&view=diff
==============================================================================
--- directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/LdapResultImpl.java (original)
+++ directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/LdapResultImpl.java Wed Aug 11 19:37:46 2010
@@ -53,10 +53,30 @@ public class LdapResultImpl implements I
     /** Resultant operation error code - defaults to SUCCESS */
     private ResultCodeEnum resultCode = ResultCodeEnum.SUCCESS;
 
+    /** The length of all the referrals */
+    private int referralsLength;
+
 
     // ------------------------------------------------------------------------
     // LdapResult Interface Method Implementations
     // ------------------------------------------------------------------------
+    /**
+     * {@inheritDoc}
+     */
+    public int getReferralsLength()
+    {
+        return referralsLength;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void setReferralsLength( int referralsLength )
+    {
+        this.referralsLength = referralsLength;
+    }
+
 
     /**
      * Gets the descriptive error message associated with the error code. May be

Modified: directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/internal/InternalDeleteResponse.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/internal/InternalDeleteResponse.java?rev=984552&r1=984551&r2=984552&view=diff
==============================================================================
--- directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/internal/InternalDeleteResponse.java (original)
+++ directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/internal/InternalDeleteResponse.java Wed Aug 11 19:37:46 2010
@@ -19,6 +19,7 @@
  */
 package org.apache.directory.shared.ldap.message.internal;
 
+
 import org.apache.directory.shared.ldap.codec.MessageTypeEnum;
 
 
@@ -32,4 +33,17 @@ public interface InternalDeleteResponse 
 {
     /** Delete response message type enumeration value */
     MessageTypeEnum TYPE = MessageTypeEnum.DEL_RESPONSE;
+
+
+    /**
+     * Stores the encoded length for the DeleteResponse
+     * @param deleteResponseLength The encoded length
+     */
+    void setDeleteResponseLength( int deleteResponseLength );
+
+
+    /**
+     * @return The encoded DeleteResponse's length
+     */
+    int getDeleteResponseLength();
 }

Modified: directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/internal/InternalLdapResult.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/internal/InternalLdapResult.java?rev=984552&r1=984551&r2=984552&view=diff
==============================================================================
--- directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/internal/InternalLdapResult.java (original)
+++ directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/internal/InternalLdapResult.java Wed Aug 11 19:37:46 2010
@@ -161,4 +161,17 @@ public interface InternalLdapResult
      *            optional referral on REFERRAL errors.
      */
     void setReferral( InternalReferral referral );
+
+
+    /**
+     * @return The total length of the Referral's URL
+     */
+    int getReferralsLength();
+
+
+    /**
+     * Set the length of all the referral' URL
+     * @param referralsLength The total length of the Referral
+     */
+    void setReferralsLength( int referralsLength );
 }

Modified: directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/codec/del/DelResponseTest.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/codec/del/DelResponseTest.java?rev=984552&r1=984551&r2=984552&view=diff
==============================================================================
--- directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/codec/del/DelResponseTest.java (original)
+++ directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/codec/del/DelResponseTest.java Wed Aug 11 19:37:46 2010
@@ -25,7 +25,7 @@ import static org.junit.Assert.assertTru
 import static org.junit.Assert.fail;
 
 import java.nio.ByteBuffer;
-import java.util.List;
+import java.util.Map;
 
 import org.apache.directory.junit.tools.Concurrent;
 import org.apache.directory.junit.tools.ConcurrentJunitRunner;
@@ -34,8 +34,10 @@ import org.apache.directory.shared.asn1.
 import org.apache.directory.shared.asn1.codec.DecoderException;
 import org.apache.directory.shared.asn1.codec.EncoderException;
 import org.apache.directory.shared.ldap.codec.LdapMessageContainer;
+import org.apache.directory.shared.ldap.codec.LdapProtocolEncoder;
 import org.apache.directory.shared.ldap.message.ResultCodeEnum;
 import org.apache.directory.shared.ldap.message.control.Control;
+import org.apache.directory.shared.ldap.message.internal.InternalDeleteResponse;
 import org.apache.directory.shared.ldap.util.StringTools;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -50,6 +52,10 @@ import org.junit.runner.RunWith;
 @Concurrent()
 public class DelResponseTest
 {
+    /** The encoder instance */
+    LdapProtocolEncoder encoder = new LdapProtocolEncoder();
+
+
     /**
      * Test the decoding of a DelResponse
      */
@@ -61,18 +67,24 @@ public class DelResponseTest
         ByteBuffer stream = ByteBuffer.allocate( 0x2D );
 
         stream.put( new byte[]
-            { 0x30, 0x2B, // LDAPMessage ::=SEQUENCE {
-                0x02, 0x01, 0x01, // messageID MessageID
-                0x6B, 0x26, // CHOICE { ..., delResponse DelResponse, ...
+            { 0x30,
+                0x2B, // LDAPMessage ::=SEQUENCE {
+                0x02, 0x01,
+                0x01, // messageID MessageID
+                0x6B,
+                0x26, // CHOICE { ..., delResponse DelResponse, ...
                 // DelResponse ::= [APPLICATION 11] LDAPResult
-                0x0A, 0x01, 0x21, // LDAPResult ::= SEQUENCE {
+                0x0A,
+                0x01,
+                0x21, // LDAPResult ::= SEQUENCE {
                 // resultCode ENUMERATED {
                 // success (0), ...
                 // },
-                0x04, 0x1F, // matchedDN LDAPDN,
+                0x04,
+                0x1F, // matchedDN LDAPDN,
                 'u', 'i', 'd', '=', 'a', 'k', 'a', 'r', 'a', 's', 'u', 'l', 'u', ',', 'd', 'c', '=', 'e', 'x', 'a',
                 'm', 'p', 'l', 'e', ',', 'd', 'c', '=', 'c', 'o', 'm', 0x04, 0x00 // errorMessage
-                                                                                    // LDAPString,
+            // LDAPString,
             // referral [3] Referral OPTIONAL }
             // }
             } );
@@ -95,20 +107,20 @@ public class DelResponseTest
         }
 
         // Check the decoded DelResponse PDU
-        DelResponseCodec delResponse = ( ( LdapMessageContainer ) ldapMessageContainer ).getDelResponse();
+        InternalDeleteResponse delResponse = ( ( LdapMessageContainer ) ldapMessageContainer ).getInternalDelResponse();
 
         assertEquals( 1, delResponse.getMessageId() );
         assertEquals( ResultCodeEnum.ALIAS_PROBLEM, delResponse.getLdapResult().getResultCode() );
-        assertEquals( "uid=akarasulu,dc=example,dc=com", delResponse.getLdapResult().getMatchedDN() );
+        assertEquals( "uid=akarasulu,dc=example,dc=com", delResponse.getLdapResult().getMatchedDn().getName() );
         assertEquals( "", delResponse.getLdapResult().getErrorMessage() );
 
-        // Check the length
-        assertEquals( 0x2D, delResponse.computeLength() );
-
         // Check the encoding
         try
         {
-            ByteBuffer bb = delResponse.encode();
+            ByteBuffer bb = encoder.encodeMessage( delResponse );
+
+            // Check the length
+            assertEquals( 0x02D, bb.limit() );
 
             String encodedPdu = StringTools.dumpBytes( bb.array() );
 
@@ -169,21 +181,33 @@ public class DelResponseTest
         ByteBuffer stream = ByteBuffer.allocate( 0x4A );
 
         stream.put( new byte[]
-            { 0x30, 0x48, // LDAPMessage ::=SEQUENCE {
-                0x02, 0x01, 0x01, // messageID MessageID
-                0x6B, 0x26, // CHOICE { ..., delResponse DelResponse, ...
+            {
+                0x30,
+                0x48, // LDAPMessage ::=SEQUENCE {
+                0x02,
+                0x01,
+                0x01, // messageID MessageID
+                0x6B,
+                0x26, // CHOICE { ..., delResponse DelResponse, ...
                 // DelResponse ::= [APPLICATION 11] LDAPResult
-                0x0A, 0x01, 0x21, // LDAPResult ::= SEQUENCE {
+                0x0A,
+                0x01,
+                0x21, // LDAPResult ::= SEQUENCE {
                 // resultCode ENUMERATED {
                 // success (0), ...
                 // },
-                0x04, 0x1F, // matchedDN LDAPDN,
+                0x04,
+                0x1F, // matchedDN LDAPDN,
                 'u', 'i', 'd', '=', 'a', 'k', 'a', 'r', 'a', 's', 'u', 'l', 'u', ',', 'd', 'c', '=', 'e', 'x', 'a',
-                'm', 'p', 'l', 'e', ',', 'd', 'c', '=', 'c', 'o', 'm', 0x04, 0x00, // errorMessage
-                                                                                    // LDAPString,
+                'm', 'p', 'l', 'e', ',', 'd', 'c', '=', 'c', 'o',
+                'm',
+                0x04,
+                0x00, // errorMessage
+                // LDAPString,
                 // referral [3] Referral OPTIONAL }
                 // }
-                ( byte ) 0xA0, 0x1B, // A control
+                ( byte ) 0xA0,
+                0x1B, // A control
                 0x30, 0x19, 0x04, 0x17, 0x32, 0x2E, 0x31, 0x36, 0x2E, 0x38, 0x34, 0x30, 0x2E, 0x31, 0x2E, 0x31, 0x31,
                 0x33, 0x37, 0x33, 0x30, 0x2E, 0x33, 0x2E, 0x34, 0x2E, 0x32
 
@@ -207,29 +231,29 @@ public class DelResponseTest
         }
 
         // Check the decoded DelResponse PDU
-        DelResponseCodec delResponse = ( ( LdapMessageContainer ) ldapMessageContainer ).getDelResponse();
+        InternalDeleteResponse delResponse = ( ( LdapMessageContainer ) ldapMessageContainer ).getInternalDelResponse();
 
         assertEquals( 1, delResponse.getMessageId() );
         assertEquals( ResultCodeEnum.ALIAS_PROBLEM, delResponse.getLdapResult().getResultCode() );
-        assertEquals( "uid=akarasulu,dc=example,dc=com", delResponse.getLdapResult().getMatchedDN() );
+        assertEquals( "uid=akarasulu,dc=example,dc=com", delResponse.getLdapResult().getMatchedDn().getName() );
         assertEquals( "", delResponse.getLdapResult().getErrorMessage() );
 
-        // Check the length
-        assertEquals( 0x4A, delResponse.computeLength() );
-
         // Check the Control
-        List<Control> controls = delResponse.getControls();
+        Map<String, Control> controls = delResponse.getControls();
 
         assertEquals( 1, controls.size() );
 
-        Control control = delResponse.getControls( 0 );
+        Control control = controls.get( "2.16.840.1.113730.3.4.2" );
         assertEquals( "2.16.840.1.113730.3.4.2", control.getOid() );
         assertEquals( "", StringTools.dumpBytes( ( byte[] ) control.getValue() ) );
 
         // Check the encoding
         try
         {
-            ByteBuffer bb = delResponse.encode();
+            ByteBuffer bb = encoder.encodeMessage( delResponse );
+
+            // Check the length
+            assertEquals( 0x4A, bb.limit() );
 
             String encodedPdu = StringTools.dumpBytes( bb.array() );
 

Modified: directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/message/LdapResultImplTest.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/message/LdapResultImplTest.java?rev=984552&r1=984551&r2=984552&view=diff
==============================================================================
--- directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/message/LdapResultImplTest.java (original)
+++ directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/message/LdapResultImplTest.java Wed Aug 11 19:37:46 2010
@@ -163,6 +163,17 @@ public class LdapResultImplTest
             public void setErrorMessageBytes( byte[] errorMessageBytes )
             {
             }
+
+
+            public int getReferralsLength()
+            {
+                return 0;
+            }
+
+
+            public void setReferralsLength( int referralsLength )
+            {
+            }
         };
 
         assertTrue( "r0 equals should see other impl r1 as equal", r0.equals( r1 ) );