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/09 12:17:42 UTC

svn commit: r983573 [1/2] - in /directory/shared/branches/shared-codec-merge/ldap/src: main/java/org/apache/directory/shared/ldap/codec/ test/java/org/apache/directory/shared/ldap/codec/ test/java/org/apache/directory/shared/ldap/codec/bind/

Author: elecharny
Date: Mon Aug  9 10:17:41 2010
New Revision: 983573

URL: http://svn.apache.org/viewvc?rev=983573&view=rev
Log:
Migrated the BindRequest message

Modified:
    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/LdapTransformer.java
    directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/codec/LdapDecoderTest.java
    directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/codec/bind/BindRequestPerfTest.java
    directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/codec/bind/BindRequestTest.java

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=983573&r1=983572&r2=983573&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 Mon Aug  9 10:17:41 2010
@@ -45,6 +45,7 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.codec.unbind.UnBindRequestCodec;
 import org.apache.directory.shared.ldap.message.internal.InternalAbandonRequest;
 import org.apache.directory.shared.ldap.message.internal.InternalAddRequest;
+import org.apache.directory.shared.ldap.message.internal.InternalBindRequest;
 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.InternalMessage;
@@ -199,6 +200,15 @@ public class LdapMessageContainer extend
 
 
     /**
+     * @return Returns the BindRequest stored in the container
+     */
+    public InternalBindRequest getInternalBindRequest()
+    {
+        return ( InternalBindRequest ) internalMessage;
+    }
+
+
+    /**
      * @return Returns the BindResponse stored in the container
      */
     public BindResponseCodec getBindResponse()

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=983573&r1=983572&r2=983573&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 Mon Aug  9 10:17:41 2010
@@ -71,10 +71,7 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.codec.actions.StoreTypeMatchingRuleAction;
 import org.apache.directory.shared.ldap.codec.actions.ValueAction;
 import org.apache.directory.shared.ldap.codec.add.AddResponseCodec;
-import org.apache.directory.shared.ldap.codec.bind.BindRequestCodec;
 import org.apache.directory.shared.ldap.codec.bind.BindResponseCodec;
-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.controls.ControlEnum;
 import org.apache.directory.shared.ldap.codec.controls.ControlImpl;
@@ -98,6 +95,7 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.message.AbandonRequestImpl;
 import org.apache.directory.shared.ldap.message.AddRequestImpl;
 import org.apache.directory.shared.ldap.message.AddResponseImpl;
+import org.apache.directory.shared.ldap.message.BindRequestImpl;
 import org.apache.directory.shared.ldap.message.BindResponseImpl;
 import org.apache.directory.shared.ldap.message.CompareRequestImpl;
 import org.apache.directory.shared.ldap.message.CompareResponseImpl;
@@ -111,6 +109,7 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.message.control.Control;
 import org.apache.directory.shared.ldap.message.internal.InternalAbandonRequest;
 import org.apache.directory.shared.ldap.message.internal.InternalAddRequest;
+import org.apache.directory.shared.ldap.message.internal.InternalBindRequest;
 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.InternalMessage;
@@ -487,9 +486,8 @@ public class LdapMessageGrammar extends 
                     LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
 
                     // Create the BindRequest LdapMessage instance and store it in the container
-                    BindRequestCodec bindRequest = new BindRequestCodec();
-                    bindRequest.setMessageId( ldapMessageContainer.getMessageId() );
-                    ldapMessageContainer.setLdapMessage( bindRequest );
+                    InternalBindRequest bindRequest = new BindRequestImpl( ldapMessageContainer.getMessageId() );
+                    ldapMessageContainer.setInternalMessage( bindRequest );
 
                     // We will check that the request is not null
                     TLV tlv = ldapMessageContainer.getCurrentTLV();
@@ -519,9 +517,8 @@ public class LdapMessageGrammar extends 
             {
                 public void action( IAsn1Container container ) throws DecoderException
                 {
-
                     LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
-                    BindRequestCodec bindRequestMessage = ldapMessageContainer.getBindRequest();
+                    InternalBindRequest bindRequestMessage = ldapMessageContainer.getInternalBindRequest();
 
                     // The current TLV should be a integer between 1 and 127
                     // We get it and store it in Version
@@ -538,7 +535,7 @@ public class LdapMessageGrammar extends 
                             log.debug( "Ldap version ", Integer.valueOf( version ) );
                         }
 
-                        bindRequestMessage.setVersion( version );
+                        bindRequestMessage.setVersion3( version == 3 );
                     }
                     catch ( IntegerDecoderException ide )
                     {
@@ -567,7 +564,7 @@ public class LdapMessageGrammar extends 
                 public void action( IAsn1Container container ) throws DecoderException
                 {
                     LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
-                    BindRequestCodec bindRequestMessage = ldapMessageContainer.getBindRequest();
+                    InternalBindRequest bindRequestMessage = ldapMessageContainer.getInternalBindRequest();
 
                     // Get the Value and store it in the BindRequest
                     TLV tlv = ldapMessageContainer.getCurrentTLV();
@@ -627,26 +624,20 @@ public class LdapMessageGrammar extends 
                 {
                     LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
 
-                    BindRequestCodec bindRequestMessage = ldapMessageContainer.getBindRequest();
+                    InternalBindRequest bindRequestMessage = ldapMessageContainer.getInternalBindRequest();
                     TLV tlv = ldapMessageContainer.getCurrentTLV();
 
                     // Allocate the Authentication Object
-                    SimpleAuthentication authentication = null;
-
-                    authentication = new SimpleAuthentication();
-
-                    authentication.setParent( bindRequestMessage );
-
-                    bindRequestMessage.setAuthentication( authentication );
+                    bindRequestMessage.setSimple( true );
 
                     // We have to handle the special case of a 0 length simple
                     if ( tlv.getLength() == 0 )
                     {
-                        authentication.setSimple( StringTools.EMPTY_BYTES );
+                        bindRequestMessage.setCredentials( StringTools.EMPTY_BYTES );
                     }
                     else
                     {
-                        authentication.setSimple( tlv.getValue().getData() );
+                        bindRequestMessage.setCredentials( tlv.getValue().getData() );
                     }
 
                     // We can have an END transition
@@ -654,7 +645,8 @@ public class LdapMessageGrammar extends 
 
                     if ( IS_DEBUG )
                     {
-                        log.debug( "The simple authentication is : {}", authentication.getSimple() );
+                        log.debug( "The simple authentication is : {}", StringTools.dumpBytes( bindRequestMessage
+                            .getCredentials() ) );
                     }
                 }
             } );
@@ -690,7 +682,7 @@ public class LdapMessageGrammar extends 
                 public void action( IAsn1Container container ) throws DecoderException
                 {
                     LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
-                    BindRequestCodec bindRequestMessage = ldapMessageContainer.getBindRequest();
+                    InternalBindRequest bindRequestMessage = ldapMessageContainer.getInternalBindRequest();
                     TLV tlv = ldapMessageContainer.getCurrentTLV();
 
                     // We will check that the sasl is not null
@@ -705,12 +697,7 @@ public class LdapMessageGrammar extends 
                             bindRequestMessage.getName(), null );
                     }
 
-                    // Create the SaslCredentials Object
-                    SaslCredentials authentication = new SaslCredentials();
-
-                    authentication.setParent( bindRequestMessage );
-
-                    bindRequestMessage.setAuthentication( authentication );
+                    bindRequestMessage.setSimple( false );
 
                     if ( IS_DEBUG )
                     {
@@ -734,21 +721,18 @@ public class LdapMessageGrammar extends 
                 public void action( IAsn1Container container ) throws DecoderException
                 {
                     LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
-                    BindRequestCodec bindRequestMessage = ldapMessageContainer.getBindRequest();
+                    InternalBindRequest bindRequestMessage = ldapMessageContainer.getInternalBindRequest();
                     TLV tlv = ldapMessageContainer.getCurrentTLV();
 
-                    // Get the SaslCredentials Object
-                    SaslCredentials authentication = bindRequestMessage.getSaslAuthentication();
-
                     // We have to handle the special case of a 0 length
                     // mechanism
                     if ( tlv.getLength() == 0 )
                     {
-                        authentication.setMechanism( "" );
+                        bindRequestMessage.setSaslMechanism( "" );
                     }
                     else
                     {
-                        authentication.setMechanism( StringTools.utf8ToString( tlv.getValue().getData() ) );
+                        bindRequestMessage.setSaslMechanism( StringTools.utf8ToString( tlv.getValue().getData() ) );
                     }
 
                     // We can have an END transition
@@ -756,7 +740,7 @@ public class LdapMessageGrammar extends 
 
                     if ( IS_DEBUG )
                     {
-                        log.debug( "The mechanism is : {}", authentication.getMechanism() );
+                        log.debug( "The mechanism is : {}", bindRequestMessage.getSaslMechanism() );
                     }
                 }
             } );
@@ -777,29 +761,29 @@ public class LdapMessageGrammar extends 
                 {
                     LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
 
-                    BindRequestCodec bindRequestMessage = ldapMessageContainer.getBindRequest();
+                    InternalBindRequest bindRequestMessage = ldapMessageContainer.getInternalBindRequest();
 
                     // Get the Value and store it in the BindRequest
                     TLV tlv = ldapMessageContainer.getCurrentTLV();
 
-                    SaslCredentials credentials = bindRequestMessage.getSaslAuthentication();
-
                     // We have to handle the special case of a 0 length
                     // credentials
                     if ( tlv.getLength() == 0 )
                     {
-                        credentials.setCredentials( StringTools.EMPTY_BYTES );
+                        bindRequestMessage.setCredentials( StringTools.EMPTY_BYTES );
                     }
                     else
                     {
-                        credentials.setCredentials( tlv.getValue().getData() );
+                        bindRequestMessage.setCredentials( tlv.getValue().getData() );
                     }
 
                     // We can have an END transition
                     ldapMessageContainer.grammarEndAllowed( true );
+
                     if ( IS_DEBUG )
                     {
-                        log.debug( "The credentials are : {}", credentials.getCredentials() );
+                        log.debug( "The credentials are : {}", StringTools.dumpBytes( bindRequestMessage
+                            .getCredentials() ) );
                     }
                 }
             } );

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=983573&r1=983572&r2=983573&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 Mon Aug  9 10:17:41 2010
@@ -24,17 +24,14 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import org.apache.directory.shared.asn1.Asn1Object;
 import org.apache.directory.shared.asn1.codec.DecoderException;
 import org.apache.directory.shared.asn1.primitives.OID;
 import org.apache.directory.shared.i18n.I18n;
-import org.apache.directory.shared.ldap.codec.abandon.AbandonRequestCodec;
 import org.apache.directory.shared.ldap.codec.add.AddResponseCodec;
 import org.apache.directory.shared.ldap.codec.bind.BindRequestCodec;
 import org.apache.directory.shared.ldap.codec.bind.BindResponseCodec;
 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.CompareRequestCodec;
 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;
@@ -76,12 +73,10 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.filter.PresenceNode;
 import org.apache.directory.shared.ldap.filter.SimpleNode;
 import org.apache.directory.shared.ldap.filter.SubstringNode;
-import org.apache.directory.shared.ldap.message.AbandonRequestImpl;
 import org.apache.directory.shared.ldap.message.AddResponseImpl;
 import org.apache.directory.shared.ldap.message.AliasDerefMode;
 import org.apache.directory.shared.ldap.message.BindRequestImpl;
 import org.apache.directory.shared.ldap.message.BindResponseImpl;
-import org.apache.directory.shared.ldap.message.CompareRequestImpl;
 import org.apache.directory.shared.ldap.message.CompareResponseImpl;
 import org.apache.directory.shared.ldap.message.DeleteResponseImpl;
 import org.apache.directory.shared.ldap.message.ExtendedRequestImpl;
@@ -97,7 +92,6 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.message.SearchResponseDoneImpl;
 import org.apache.directory.shared.ldap.message.SearchResponseEntryImpl;
 import org.apache.directory.shared.ldap.message.SearchResponseReferenceImpl;
-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.GracefulShutdownRequest;
 import org.apache.directory.shared.ldap.message.internal.InternalLdapResult;
@@ -126,64 +120,6 @@ public class LdapTransformer
 
 
     /**
-     * Transform an AbandonRequest message from a codec Message to an
-     * InternalMessage
-     * 
-     * @param codecMessage The message to transform
-     * @param messageId The message Id
-     * @return An internal AbandonRequest message
-     */
-    private static InternalMessage transformAbandonRequest( AbandonRequestCodec abandonRequest, int messageId )
-    {
-        AbandonRequestImpl internalMessage = new AbandonRequestImpl( messageId );
-
-        // Codec : int abandonnedMessageId -> Internal : int abandonId
-        internalMessage.setAbandoned( abandonRequest.getAbandonedMessageId() );
-
-        return internalMessage;
-    }
-
-
-    /**
-     * Transform a BindRequest message from a CodecMessage to a InternalMessage
-     * 
-     * @param bindRequest The message to transform
-     * @param messageId The message Id
-     * @return A Internal BindRequestImpl
-     */
-    private static InternalMessage transformBindRequest( BindRequestCodec bindRequest, int messageId )
-    {
-        BindRequestImpl internalMessage = new BindRequestImpl( messageId );
-
-        // Codec : int version -> Internal : boolean isVersion3
-        internalMessage.setVersion3( bindRequest.isLdapV3() );
-
-        // Codec : DN name -> Internal : DN name
-        internalMessage.setName( bindRequest.getName() );
-
-        // Codec : Asn1Object authentication instanceOf SimpleAuthentication ->
-        // Internal : boolean isSimple
-        // Codec : SimpleAuthentication OctetString simple -> Internal : byte []
-        // credentials
-        Asn1Object authentication = bindRequest.getAuthentication();
-
-        if ( authentication instanceof SimpleAuthentication )
-        {
-            internalMessage.setSimple( true );
-            internalMessage.setCredentials( ( ( SimpleAuthentication ) authentication ).getSimple() );
-        }
-        else
-        {
-            internalMessage.setSimple( false );
-            internalMessage.setCredentials( ( ( SaslCredentials ) authentication ).getCredentials() );
-            internalMessage.setSaslMechanism( ( ( SaslCredentials ) authentication ).getMechanism() );
-        }
-
-        return internalMessage;
-    }
-
-
-    /**
      * Transform a BindResponse message from a CodecMessage to a 
      * InternalMessage.  This is used by clients which are receiving a 
      * BindResponse PDU and must decode it to return the Internal 
@@ -244,38 +180,6 @@ public class LdapTransformer
 
 
     /**
-     * Transform a CompareRequest message from a CodecMessage to a
-     * InternalMessage
-     * 
-     * @param compareRequest The message to transform
-     * @param messageId The message Id
-     * @return A Internal CompareRequestImpl
-     */
-    private static InternalMessage transformCompareRequest( CompareRequestCodec compareRequest, int messageId )
-    {
-        CompareRequestImpl internalMessage = new CompareRequestImpl( messageId );
-
-        // Codec : DN entry -> Internal : private DN
-        internalMessage.setName( compareRequest.getEntry() );
-
-        // Codec : LdapString attributeDesc -> Internal : String attrId
-        internalMessage.setAttributeId( compareRequest.getAttributeDesc() );
-
-        // Codec : OctetString assertionValue -> Internal : byte[] attrVal
-        if ( compareRequest.getAssertionValue() instanceof String )
-        {
-            internalMessage.setAssertionValue( ( String ) compareRequest.getAssertionValue() );
-        }
-        else
-        {
-            internalMessage.setAssertionValue( ( byte[] ) compareRequest.getAssertionValue() );
-        }
-
-        return internalMessage;
-    }
-
-
-    /**
      * Transform an ExtendedRequest message from a CodecMessage to a
      * InternalMessage
      * 
@@ -724,19 +628,6 @@ public class LdapTransformer
 
 
     /**
-     * Transform an UnBindRequest message from a CodecMessage to a
-     * InternalMessage
-     * 
-     * @param messageId The message Id
-     * @return A Internal UnBindRequestImpl
-     */
-    private static InternalMessage transformUnBindRequest( int messageId )
-    {
-        return new UnbindRequestImpl( messageId );
-    }
-
-
-    /**
      * Transform the Codec message to a internal message.
      * 
      * @param obj the object to transform
@@ -759,10 +650,6 @@ public class LdapTransformer
 
         switch ( messageType )
         {
-            case BIND_REQUEST:
-                internalMessage = transformBindRequest( ( BindRequestCodec ) codecMessage, messageId );
-                break;
-
             case SEARCH_REQUEST:
                 internalMessage = transformSearchRequest( ( SearchRequestCodec ) codecMessage, messageId );
                 break;

Modified: directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/codec/LdapDecoderTest.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/codec/LdapDecoderTest.java?rev=983573&r1=983572&r2=983573&view=diff
==============================================================================
--- directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/codec/LdapDecoderTest.java (original)
+++ directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/codec/LdapDecoderTest.java Mon Aug  9 10:17:41 2010
@@ -21,6 +21,7 @@ package org.apache.directory.shared.ldap
 
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import java.nio.ByteBuffer;
@@ -31,8 +32,7 @@ import org.apache.directory.shared.asn1.
 import org.apache.directory.shared.asn1.ber.IAsn1Container;
 import org.apache.directory.shared.asn1.ber.tlv.TLVStateEnum;
 import org.apache.directory.shared.asn1.codec.DecoderException;
-import org.apache.directory.shared.ldap.codec.bind.BindRequestCodec;
-import org.apache.directory.shared.ldap.codec.bind.SimpleAuthentication;
+import org.apache.directory.shared.ldap.message.internal.InternalBindRequest;
 import org.apache.directory.shared.ldap.util.StringTools;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -61,15 +61,20 @@ public class LdapDecoderTest
 
         ByteBuffer stream = ByteBuffer.allocate( 0x35 );
         stream.put( new byte[]
-            { 0x30, 0x33, // LDAPMessage ::=SEQUENCE {
-                0x02, 0x01, 0x01, // messageID MessageID
-                0x60, 0x2E, // CHOICE { ..., bindRequest BindRequest, ...
+            { 0x30,
+                0x33, // LDAPMessage ::=SEQUENCE {
+                0x02, 0x01,
+                0x01, // messageID MessageID
+                0x60,
+                0x2E, // CHOICE { ..., bindRequest BindRequest, ...
                 // BindRequest ::= APPLICATION[0] SEQUENCE {
-                0x02, 0x01, 0x03, // version INTEGER (1..127),
-                0x04, 0x1F, // name LDAPDN,
+                0x02, 0x01,
+                0x03, // version INTEGER (1..127),
+                0x04,
+                0x1F, // name 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', ( byte ) 0x80, 0x08, // authentication
-                                                                                            // AuthenticationChoice
+                // AuthenticationChoice
                 // AuthenticationChoice ::= CHOICE { simple [0] OCTET STRING,
                 // ...
                 'p', 'a', 's', 's', 'w', 'o', 'r', 'd' } );
@@ -91,14 +96,13 @@ public class LdapDecoderTest
         }
 
         // Check the decoded PDU
-        BindRequestCodec bindRequest = ( ( LdapMessageContainer ) ldapMessageContainer ).getBindRequest();
+        InternalBindRequest bindRequest = ( ( LdapMessageContainer ) ldapMessageContainer ).getInternalBindRequest();
 
         assertEquals( 1, bindRequest.getMessageId() );
-        assertEquals( 3, bindRequest.getVersion() );
+        assertTrue( bindRequest.isVersion3() );
         assertEquals( "uid=akarasulu,dc=example,dc=com", bindRequest.getName().toString() );
-        assertEquals( true, ( bindRequest.getAuthentication() instanceof SimpleAuthentication ) );
-        assertEquals( "password", StringTools.utf8ToString( ( ( SimpleAuthentication ) bindRequest.getAuthentication() )
-            .getSimple() ) );
+        assertTrue( bindRequest.isSimple() );
+        assertEquals( "password", StringTools.utf8ToString( bindRequest.getCredentials() ) );
     }
 
 
@@ -140,12 +144,12 @@ public class LdapDecoderTest
         assertEquals( TLVStateEnum.VALUE_STATE_PENDING, ldapMessageContainer.getState() );
 
         // Check the decoded PDU
-        BindRequestCodec bindRequest = ( ( LdapMessageContainer ) ldapMessageContainer ).getBindRequest();
+        InternalBindRequest bindRequest = ( ( LdapMessageContainer ) ldapMessageContainer ).getInternalBindRequest();
 
         assertEquals( 1, bindRequest.getMessageId() );
-        assertEquals( 3, bindRequest.getVersion() );
+        assertTrue( bindRequest.isVersion3() );
         assertEquals( null, bindRequest.getName() );
-        assertEquals( false, ( bindRequest.getAuthentication() instanceof SimpleAuthentication ) );
+        assertTrue( bindRequest.isSimple() );
     }
 
 
@@ -191,7 +195,7 @@ public class LdapDecoderTest
         stream.put( new byte[]
             { 'a', 'k', 'a', 'r', 'a', 's', 'u', 'l', 'u', ',', 'd', 'c', '=', 'e', 'x', 'a', 'm', 'p', 'l', 'e', ',',
                 'd', 'c', '=', 'c', 'o', 'm', ( byte ) 0x80, 0x08, // authentication
-                                                                    // AuthenticationChoice
+                // AuthenticationChoice
                 // AuthenticationChoice ::= CHOICE { simple [0] OCTET STRING,
                 // ...
                 'p', 'a', 's', 's', 'w', 'o', 'r', 'd' } );
@@ -212,14 +216,13 @@ public class LdapDecoderTest
         assertEquals( ldapMessageContainer.getState(), TLVStateEnum.PDU_DECODED );
 
         // Check the decoded PDU
-        BindRequestCodec bindRequest = ( ( LdapMessageContainer ) ldapMessageContainer ).getBindRequest();
+        InternalBindRequest bindRequest = ( ( LdapMessageContainer ) ldapMessageContainer ).getInternalBindRequest();
 
         assertEquals( 1, bindRequest.getMessageId() );
-        assertEquals( 3, bindRequest.getVersion() );
+        assertTrue( bindRequest.isVersion3() );
         assertEquals( "uid=akarasulu,dc=example,dc=com", bindRequest.getName().toString() );
-        assertEquals( true, ( bindRequest.getAuthentication() instanceof SimpleAuthentication ) );
-        assertEquals( "password", StringTools.utf8ToString( ( ( SimpleAuthentication ) bindRequest.getAuthentication() )
-            .getSimple() ) );
+        assertTrue( bindRequest.isSimple() );
+        assertEquals( "password", StringTools.utf8ToString( bindRequest.getCredentials() ) );
     }
 
 
@@ -236,16 +239,21 @@ public class LdapDecoderTest
         ByteBuffer stream = ByteBuffer.allocate( 0x35 );
         stream.put( new byte[]
             {
-            // Length should be 0x33...
-                0x30, 0x32, // LDAPMessage ::=SEQUENCE {
-                0x02, 0x01, 0x01, // messageID MessageID
-                0x60, 0x2E, // CHOICE { ..., bindRequest BindRequest, ...
+                // Length should be 0x33...
+                0x30,
+                0x32, // LDAPMessage ::=SEQUENCE {
+                0x02, 0x01,
+                0x01, // messageID MessageID
+                0x60,
+                0x2E, // CHOICE { ..., bindRequest BindRequest, ...
                 // BindRequest ::= APPLICATION[0] SEQUENCE {
-                0x02, 0x01, 0x03, // version INTEGER (1..127),
-                0x04, 0x1F, // name LDAPDN,
+                0x02, 0x01,
+                0x03, // version INTEGER (1..127),
+                0x04,
+                0x1F, // name 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', ( byte ) 0x80, 0x08, // authentication
-                                                                                            // AuthenticationChoice
+                // AuthenticationChoice
                 // AuthenticationChoice ::= CHOICE { simple [0] OCTET STRING,
                 // ...
                 'p', 'a', 's', 's', 'w', 'o', 'r', 'd' } );
@@ -282,20 +290,23 @@ public class LdapDecoderTest
 
         ByteBuffer stream = ByteBuffer.allocate( 0x35 );
         stream.put( new byte[]
-            { 
-            0x30, 0x33,                 // LDAPMessage ::=SEQUENCE {
-                                        // Length should be 0x01...
-              0x02, 0x02, 0x01,         // messageID MessageID
-              0x60, 0x2E,               // CHOICE { ..., bindRequest BindRequest, ...
-                                        // BindRequest ::= APPLICATION[0] SEQUENCE {
-                0x02, 0x01, 0x03,       // version INTEGER (1..127),
-                0x04, 0x1F,             // name 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', 
-                ( byte ) 0x80, 0x08,    // authentication AuthenticationChoice
-                                        // AuthenticationChoice ::= CHOICE { simple [0] OCTET STRING,
-                                        // ...
-                  'p', 'a', 's', 's', 'w', 'o', 'r' } );
+            { 0x30,
+                0x33, // LDAPMessage ::=SEQUENCE {
+                // Length should be 0x01...
+                0x02, 0x02,
+                0x01, // messageID MessageID
+                0x60,
+                0x2E, // CHOICE { ..., bindRequest BindRequest, ...
+                // BindRequest ::= APPLICATION[0] SEQUENCE {
+                0x02, 0x01,
+                0x03, // version INTEGER (1..127),
+                0x04,
+                0x1F, // name 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', ( byte ) 0x80, 0x08, // authentication AuthenticationChoice
+                // AuthenticationChoice ::= CHOICE { simple [0] OCTET STRING,
+                // ...
+                'p', 'a', 's', 's', 'w', 'o', 'r' } );
 
         stream.flip();
 
@@ -329,16 +340,21 @@ public class LdapDecoderTest
 
         ByteBuffer stream = ByteBuffer.allocate( 0x35 );
         stream.put( new byte[]
-            { 0x30, 0x33, // LDAPMessage ::=SEQUENCE {
+            { 0x30,
+                0x33, // LDAPMessage ::=SEQUENCE {
                 // Length should be 0x01...
-                0x02, 0x01, 0x01, // messageID MessageID
-                0x2D, 0x2D, // CHOICE { ..., bindRequest BindRequest, ...
+                0x02, 0x01,
+                0x01, // messageID MessageID
+                0x2D,
+                0x2D, // CHOICE { ..., bindRequest BindRequest, ...
                 // BindRequest ::= APPLICATION[0] SEQUENCE {
-                0x02, 0x01, 0x03, // version INTEGER (1..127),
-                0x04, 0x1F, // name LDAPDN,
+                0x02, 0x01,
+                0x03, // version INTEGER (1..127),
+                0x04,
+                0x1F, // name 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', ( byte ) 0x80, 0x08, // authentication
-                                                                                            // AuthenticationChoice
+                // AuthenticationChoice
                 // AuthenticationChoice ::= CHOICE { simple [0] OCTET STRING,
                 // ...
                 'p', 'a', 's', 's', 'w', 'o', 'r', 'd' } );
@@ -362,6 +378,7 @@ public class LdapDecoderTest
         fail( "Should never reach this point." );
     }
 
+
     /**
      * Test the decoding of a splitted Length.
      * 
@@ -376,8 +393,7 @@ public class LdapDecoderTest
 
         ByteBuffer stream = ByteBuffer.allocate( 3 );
         stream.put( new byte[]
-            { 
-            0x30, (byte)0x82, 0x01,// LDAPMessage ::=SEQUENCE {
+            { 0x30, ( byte ) 0x82, 0x01,// LDAPMessage ::=SEQUENCE {
             } );
 
         stream.flip();
@@ -401,8 +417,7 @@ public class LdapDecoderTest
         // Second block of data
         stream = ByteBuffer.allocate( 1 );
         stream.put( new byte[]
-            { 
-                (byte)0x80 // End of the length
+            { ( byte ) 0x80 // End of the length
             } );
 
         stream.flip();

Modified: directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/codec/bind/BindRequestPerfTest.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/codec/bind/BindRequestPerfTest.java?rev=983573&r1=983572&r2=983573&view=diff
==============================================================================
--- directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/codec/bind/BindRequestPerfTest.java (original)
+++ directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/codec/bind/BindRequestPerfTest.java Mon Aug  9 10:17:41 2010
@@ -21,10 +21,11 @@ package org.apache.directory.shared.ldap
 
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 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;
@@ -35,6 +36,7 @@ import org.apache.directory.shared.asn1.
 import org.apache.directory.shared.ldap.codec.LdapMessageContainer;
 import org.apache.directory.shared.ldap.codec.controls.ControlImpl;
 import org.apache.directory.shared.ldap.message.control.Control;
+import org.apache.directory.shared.ldap.message.internal.InternalBindRequest;
 import org.apache.directory.shared.ldap.name.DN;
 import org.apache.directory.shared.ldap.util.StringTools;
 import org.junit.Test;
@@ -59,25 +61,30 @@ public class BindRequestPerfTest
 
         ByteBuffer stream = ByteBuffer.allocate( 0x52 );
         stream.put( new byte[]
-             { 
-             0x30, 0x50,                 // LDAPMessage ::=SEQUENCE {
-               0x02, 0x01, 0x01,         // messageID MessageID
-               0x60, 0x2E,               // CHOICE { ..., bindRequest BindRequest, ...
-                                         // BindRequest ::= APPLICATION[0] SEQUENCE {
-                 0x02, 0x01, 0x03,       // version INTEGER (1..127),
-                 0x04, 0x1F,             // name 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', 
-                 ( byte ) 0x80, 0x08,    // authentication AuthenticationChoice
-                                         // AuthenticationChoice ::= CHOICE { simple [0] OCTET STRING,
-                                         // ...
-                   'p', 'a', 's', 's', 'w', 'o', 'r', 'd', 
-               ( 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 
-             } );
+            {
+                0x30,
+                0x50, // LDAPMessage ::=SEQUENCE {
+                0x02,
+                0x01,
+                0x01, // messageID MessageID
+                0x60,
+                0x2E, // CHOICE { ..., bindRequest BindRequest, ...
+                // BindRequest ::= APPLICATION[0] SEQUENCE {
+                0x02,
+                0x01,
+                0x03, // version INTEGER (1..127),
+                0x04,
+                0x1F, // name 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',
+                ( byte ) 0x80,
+                0x08, // authentication AuthenticationChoice
+                // AuthenticationChoice ::= CHOICE { simple [0] OCTET STRING,
+                // ...
+                'p', 'a', 's', 's', 'w', 'o', 'r', 'd', ( 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 } );
 
         String decodedPdu = StringTools.dumpBytes( stream.array() );
         stream.flip();
@@ -90,17 +97,17 @@ public class BindRequestPerfTest
         {
             int nbLoops = 1;
             //long t0 = System.currentTimeMillis();
-            
+
             for ( int i = 0; i < nbLoops; i++ )
             {
                 ldapDecoder.decode( stream, ldapMessageContainer );
-                ( ( LdapMessageContainer ) ldapMessageContainer).clean();
+                ( ( LdapMessageContainer ) ldapMessageContainer ).clean();
                 stream.flip();
             }
-            
+
             //long t1 = System.currentTimeMillis();
             //System.out.println( "testDecodeBindRequestSimpleNoControlsPerf, " + nbLoops + " loops, Delta = " + ( t1 - t0 ) );
-            
+
             ldapDecoder.decode( stream, ldapMessageContainer );
         }
         catch ( DecoderException de )
@@ -110,31 +117,40 @@ public class BindRequestPerfTest
         }
 
         // Check the decoded BindRequest
-        BindRequestCodec bindRequest = ( ( LdapMessageContainer ) ldapMessageContainer ).getBindRequest();
+        InternalBindRequest bindRequest = ( ( LdapMessageContainer ) ldapMessageContainer ).getInternalBindRequest();
 
         assertEquals( 1, bindRequest.getMessageId() );
-        assertEquals( 3, bindRequest.getVersion() );
+        assertTrue( bindRequest.isVersion3() );
         assertEquals( "uid=akarasulu,dc=example,dc=com", bindRequest.getName().toString() );
-        assertEquals( true, ( bindRequest.getAuthentication() instanceof SimpleAuthentication ) );
-        assertEquals( "password", StringTools.utf8ToString( ( ( SimpleAuthentication ) bindRequest.getAuthentication() )
-            .getSimple() ) );
+        assertTrue( bindRequest.isSimple() );
+        assertEquals( "password", StringTools.utf8ToString( bindRequest.getCredentials() ) );
 
         // Check the Control
-        List<Control> controls = bindRequest.getControls();
+        Map<String, Control> controls = bindRequest.getControls();
 
         assertEquals( 1, controls.size() );
 
-        Control control = bindRequest.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 length
-        assertEquals( 0x52, bindRequest.computeLength() );
+        BindRequestCodec bindRequestCodec = new BindRequestCodec();
+        bindRequestCodec.setMessageId( bindRequest.getMessageId() );
+        bindRequestCodec.setName( bindRequest.getName() );
+        bindRequestCodec.setVersion( bindRequest.getVersion3() ? 3 : 2 );
+        bindRequestCodec.addControl( control );
+
+        SimpleAuthentication simple = new SimpleAuthentication();
+        simple.setSimple( bindRequest.getCredentials() );
+        bindRequestCodec.setAuthentication( simple );
+
+        assertEquals( 0x52, bindRequestCodec.computeLength() );
 
         // Check the encoding
         try
         {
-            ByteBuffer bb = bindRequest.encode();
+            ByteBuffer bb = bindRequestCodec.encode();
 
             String encodedPdu = StringTools.dumpBytes( bb.array() );
 
@@ -147,6 +163,7 @@ public class BindRequestPerfTest
         }
     }
 
+
     /**
      * Test the decoding of a BindRequest with Simple authentication and no
      * controls
@@ -157,23 +174,23 @@ public class BindRequestPerfTest
         DN name = new DN( "uid=akarasulu,dc=example,dc=com" );
         int nbLoops = 1;
         long t0 = System.currentTimeMillis();
-        
-        for ( int i = 0; i< nbLoops; i++)
+
+        for ( int i = 0; i < nbLoops; i++ )
         {
             // Check the decoded BindRequest
             BindRequestCodec bindRequest = new BindRequestCodec();
             bindRequest.setMessageId( 1 );
-            
+
             bindRequest.setName( name );
-            
+
             Control control = new ControlImpl( "2.16.840.1.113730.3.4.2" );
 
             LdapAuthentication authentication = new SimpleAuthentication();
-            ((SimpleAuthentication)authentication).setSimple( StringTools.getBytesUtf8( "password" ) );
+            ( ( SimpleAuthentication ) authentication ).setSimple( StringTools.getBytesUtf8( "password" ) );
 
             bindRequest.addControl( control );
             bindRequest.setAuthentication( authentication );
-    
+
             // Check the encoding
             try
             {