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 2005/05/31 00:18:11 UTC

svn commit: r179161 - /directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/ldap/codec/grammars/BindResponseGrammar.java

Author: elecharny
Date: Mon May 30 15:18:09 2005
New Revision: 179161

URL: http://svn.apache.org/viewcvs?rev=179161&view=rev
Log:
- Fixed the grammar to deal correctly with the LdapResult sub-grammar ending.
- Some javadoc refactoring.

Modified:
    directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/ldap/codec/grammars/BindResponseGrammar.java

Modified: directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/ldap/codec/grammars/BindResponseGrammar.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/ldap/codec/grammars/BindResponseGrammar.java?rev=179161&r1=179160&r2=179161&view=diff
==============================================================================
--- directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/ldap/codec/grammars/BindResponseGrammar.java (original)
+++ directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/ldap/codec/grammars/BindResponseGrammar.java Mon May 30 15:18:09 2005
@@ -58,11 +58,11 @@
      */
     private BindResponseGrammar()
     {
-        name = BindResponseGrammar.class.getName();
+        name       = BindResponseGrammar.class.getName();
         statesEnum = LdapStatesEnum.getInstance();
 
-        // We have 17 differents states, so 16 transitions between states.
-        super.transitions = new GrammarTransition[LdapStatesEnum.LAST_LDAP_STATE][256];
+        // Initialisation of the transitions table
+        super.transitions = new GrammarTransition[LdapStatesEnum.LAST_BIND_RESPONSE_STATE][256];
 
         //============================================================================================
         // BindResponse Message
@@ -109,15 +109,29 @@
 
         // LdapMessage ::= ... BindResponse ...
         // BindResponse ::= [APPLICATION 1] SEQUENCE { ... (Value)
-        // The first Tag will be the LDAPResult Tag (0x0A). So we have to switch the grammar.
+        // We won't have a value. The next Tag will be the LDAPResult Tag (0x0A)
         super.transitions[LdapStatesEnum.BIND_RESPONSE_VALUE][0x61] = new GrammarTransition(
-                LdapStatesEnum.BIND_RESPONSE_VALUE, LdapStatesEnum.BIND_RESPONSE_LDAP_RESULT, null );
+                LdapStatesEnum.BIND_RESPONSE_VALUE, LdapStatesEnum.BIND_RESPONSE_LDAP_RESULT,
+                null );
 
         // LdapMessage ::= ... BindResponse ...
         // BindResponse ::= [APPLICATION 1] SEQUENCE { ... (Value)
-        // The first Tag will be the LDAPResult Tag (0x0A). So we have to switch the grammar.
+        //    COMPONENTS OF LDAPResult, ...
+        // The Tag will be the LDAPResult Tag (0x0A). So we have to switch the grammar.
+        // The current state will be stored.
         super.transitions[LdapStatesEnum.BIND_RESPONSE_LDAP_RESULT][0x0A] = new GrammarTransition(
-                LdapStatesEnum.BIND_RESPONSE_LDAP_RESULT, LdapStatesEnum.LDAP_RESULT_GRAMMAR_SWITCH, null );
+                LdapStatesEnum.BIND_RESPONSE_LDAP_RESULT, LdapStatesEnum.LDAP_RESULT_GRAMMAR_SWITCH,
+                null );
+
+        // LdapMessage ::= ... BindResponse ...
+        // BindResponse ::= [APPLICATION 1] SEQUENCE {
+        //       COMPONENTS OF LDAPResult,
+        //    serverSaslCreds    [7] OCTET STRING OPTIONAL }
+        // If there is a sasl credential, we will decode it here. We must control that we had a LdapResult
+        //
+        super.transitions[LdapStatesEnum.BIND_RESPONSE_LDAP_RESULT][0x87] = new GrammarTransition(
+                LdapStatesEnum.BIND_RESPONSE_LDAP_RESULT,
+                LdapStatesEnum.BIND_RESPONSE_SERVER_SASL_CREDS_LENGTH, null );
 
         // BindResponse ::= APPLICATION 1] SEQUENCE {
         //     ...
@@ -126,12 +140,7 @@
         // Otherwise, if the tag is 0x80, it's a control
         super.transitions[LdapStatesEnum.BIND_RESPONSE_SERVER_SASL_CREDS_TAG][0x87] =
             new GrammarTransition( LdapStatesEnum.BIND_RESPONSE_SERVER_SASL_CREDS_TAG,
-                    LdapStatesEnum.BIND_RESPONSE_SERVER_SASL_CREDS_LENGTH, null );
-
-        // It's a control if it's 0x80. We have to quit this grammar.
-        super.transitions[LdapStatesEnum.BIND_RESPONSE_SERVER_SASL_CREDS_TAG][( 0x80 & 0x00FF )] =
-            new GrammarTransition( LdapStatesEnum.BIND_RESPONSE_SERVER_SASL_CREDS_TAG,
-                    LdapStatesEnum.GRAMMAR_END, null );
+                LdapStatesEnum.BIND_RESPONSE_SERVER_SASL_CREDS_LENGTH, null );
 
         // BindResponse ::= APPLICATION 1] SEQUENCE {
         //     ...
@@ -148,7 +157,7 @@
                         LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer )
                             container;
 
-                        BindResponsePOJO     bindResponseMessage = 
+                        BindResponsePOJO     bindResponseMessage =
                             ldapMessageContainer.getLdapMessage().getBindResponse();
 
                         TLV                  tlv = ldapMessageContainer.getCurrentTLV();
@@ -186,7 +195,7 @@
                         LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer )
                             container;
 
-                        BindResponsePOJO     bindResponseMessage = 
+                        BindResponsePOJO     bindResponseMessage =
                             ldapMessageContainer.getLdapMessage().getBindResponse();
 
                         // Get the Value and store it in the BindRequest