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/10/09 15:51:27 UTC

svn commit: r307431 [1/2] - /directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/

Author: elecharny
Date: Sun Oct  9 06:51:08 2005
New Revision: 307431

URL: http://svn.apache.org/viewcvs?rev=307431&view=rev
Log:
- suppressed the warning messages produced by the unused logger
- added some logs in each method
- fixed some doco
- fixed the code accordingly to the primitives and asn1 modifications

Modified:
    directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/AbandonRequestGrammar.java
    directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/AddRequestGrammar.java
    directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/AddResponseGrammar.java
    directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/BindRequestGrammar.java
    directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/BindResponseGrammar.java
    directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/CompareRequestGrammar.java
    directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/CompareResponseGrammar.java
    directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/DelRequestGrammar.java
    directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/DelResponseGrammar.java
    directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/ExtendedRequestGrammar.java
    directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/ExtendedResponseGrammar.java
    directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/FilterGrammar.java
    directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/LdapControlGrammar.java
    directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/LdapMessageGrammar.java
    directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/LdapResultGrammar.java
    directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/ModifyDNRequestGrammar.java
    directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/ModifyDNResponseGrammar.java
    directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/ModifyRequestGrammar.java
    directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/ModifyResponseGrammar.java
    directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/SearchRequestGrammar.java
    directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/SearchResultDoneGrammar.java
    directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/SearchResultEntryGrammar.java
    directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/SearchResultReferenceGrammar.java
    directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/UnBindRequestGrammar.java

Modified: directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/AbandonRequestGrammar.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/AbandonRequestGrammar.java?rev=307431&r1=307430&r2=307431&view=diff
==============================================================================
--- directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/AbandonRequestGrammar.java (original)
+++ directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/AbandonRequestGrammar.java Sun Oct  9 06:51:08 2005
@@ -25,6 +25,8 @@
 import org.apache.asn1new.ber.tlv.TLV;
 import org.apache.asn1new.ber.tlv.Value;
 import org.apache.asn1new.util.IntegerDecoder;
+import org.apache.asn1new.util.IntegerDecoderException;
+import org.apache.asn1new.util.StringUtils;
 import org.apache.asn1new.ldap.codec.LdapConstants;
 import org.apache.asn1new.ldap.codec.LdapMessageContainer;
 import org.apache.asn1new.ldap.pojo.AbandonRequest;
@@ -63,7 +65,7 @@
 
         statesEnum = LdapStatesEnum.getInstance();
 
-        // The transitions table
+        // Create the transitions table
         super.transitions = new GrammarTransition[LdapStatesEnum.LAST_ABANDON_REQUEST_STATE][256];
 
         //--------------------------------------------------------------------------------------------
@@ -99,16 +101,10 @@
 
                         Value value     = tlv.getValue();
 
-                        int   abandonnedMessageId = IntegerDecoder.parse( value, 0, Integer.MAX_VALUE );
-
-                        if ( ( abandonnedMessageId < 0 ) || ( abandonnedMessageId > Integer.MAX_VALUE ) )
-                        {
-                            throw new DecoderException(
-                                "The message ID must be between (0 .. 2 147 483 647)" );
-                        }
-                        else
+                        try
                         {
-
+                            int   abandonnedMessageId = IntegerDecoder.parse( value, 0, Integer.MAX_VALUE );
+    
                             // Ok, the Message ID is correct. We have to store it
                             // in the AbandonRequest object
                             // Object in the LDAPMessage
@@ -116,11 +112,22 @@
                             abandonRequest.setAbandonedMessageId( abandonnedMessageId );
                             ldapMessage.setProtocolOP( abandonRequest );
 
+                            if ( log.isDebugEnabled() )
+                            {
+                                log.debug( "AbandonMessage Id has been decoded : " + abandonnedMessageId );
+                            }
+
                             return;
                         }
+                        catch ( IntegerDecoderException ide )
+                        {
+                            log.error("The Abandonned Message Id " + StringUtils.dumpBytes( value.getData() ) + 
+                                        " is invalid : " + ide.getMessage() + ". The message ID must be between (0 .. 2 147 483 647)" );
+                            
+                            throw new DecoderException( ide.getMessage() );
+                        }
                     }
                 } );
-
     }
 
     //~ Methods ------------------------------------------------------------------------------------

Modified: directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/AddRequestGrammar.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/AddRequestGrammar.java?rev=307431&r1=307430&r2=307431&view=diff
==============================================================================
--- directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/AddRequestGrammar.java (original)
+++ directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/AddRequestGrammar.java Sun Oct  9 06:51:08 2005
@@ -16,6 +16,8 @@
  */
 package org.apache.asn1new.ldap.codec.grammar;
 
+import javax.naming.InvalidNameException;
+
 import org.apache.asn1.codec.DecoderException;
 import org.apache.asn1new.ber.containers.IAsn1Container;
 import org.apache.asn1new.ber.grammar.AbstractGrammar;
@@ -25,10 +27,12 @@
 import org.apache.asn1new.ber.tlv.TLV;
 import org.apache.asn1new.ber.tlv.UniversalTag;
 import org.apache.asn1new.primitives.OctetString;
+import org.apache.asn1new.util.StringUtils;
 import org.apache.asn1new.ldap.codec.LdapConstants;
 import org.apache.asn1new.ldap.codec.LdapMessageContainer;
 import org.apache.asn1new.ldap.codec.primitives.LdapDN;
 import org.apache.asn1new.ldap.codec.primitives.LdapString;
+import org.apache.asn1new.ldap.codec.primitives.LdapStringEncodingException;
 import org.apache.asn1new.ldap.pojo.AddRequest;
 import org.apache.asn1new.ldap.pojo.LdapMessage;
 import org.slf4j.Logger;
@@ -61,7 +65,7 @@
         name       = AddRequestGrammar.class.getName();
         statesEnum = LdapStatesEnum.getInstance();
 
-        // Intitialisation
+        // Create the transitions table
         super.transitions = new GrammarTransition[LdapStatesEnum.LAST_ADD_REQUEST_STATE][256];
 
         //============================================================================================
@@ -129,8 +133,21 @@
                         }
                         else
                         {
-                            addRequest.setEntry( new LdapDN(
-                                    tlv.getValue().getData() ) );
+                            try
+                            {
+                                addRequest.setEntry( new LdapDN(
+                                        tlv.getValue().getData() ) );
+                            }
+                            catch ( InvalidNameException ine )
+                            {
+                                log.error( "The DN is invalid : " + StringUtils.dumpBytes(tlv.getValue().getData()) + " : " + ine.getMessage() );
+                                throw new DecoderException( "Incorrect DN given : " + ine.getMessage() );
+                            }
+                        }
+                        
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "Adding an entry with DN : " + addRequest.getEntry() );
                         }
                     }
                 } );
@@ -224,14 +241,31 @@
                         AddRequest           addRequest           = ldapMessage.getAddRequest();
 
                         // Store the type. It can't be null.
+                        LdapString type = null;
+                        
                         if ( tlv.getLength().getLength() == 0 )
                         {
+                            log.error( "Null types are not allowed" );
                             throw new DecoderException( "The type can't be null" );
                         }
                         else
                         {
-                            addRequest.addAttributeType( new LdapString(
-                                    tlv.getValue().getData() ) );
+                            try
+                            {
+                                type = new LdapString( tlv.getValue().getData() );
+                                
+                                addRequest.addAttributeType( type );
+                            }
+                            catch ( LdapStringEncodingException lsee )
+                            {
+                                log.error( "The type is invalid : " + StringUtils.dumpBytes( tlv.getValue().getData() ) + " : " + lsee.getMessage() );
+                                throw new DecoderException( "Invalid attribute type : " + lsee.getMessage() );
+                            }
+                        }
+                        
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "Adding type " + type );
                         }
                     }
                 } );
@@ -296,14 +330,21 @@
                             ldapMessageContainer.getCurrentTLV();
 
                         // Store the value. It can't be null
+                        OctetString value = OctetString.EMPTY_STRING;
+                        
                         if ( tlv.getLength().getLength() == 0 )
                         {
-                            addRequest.addAttributeValue( OctetString.EMPTY_STRING );
+                            addRequest.addAttributeValue( value );
                         }
                         else
                         {
-                            addRequest.addAttributeValue( new OctetString(
-                                    tlv.getValue().getData() ) );
+                            value = new OctetString( tlv.getValue().getData() );
+                            addRequest.addAttributeValue( value );
+                        }
+                        
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "Adding value " + value );
                         }
                     }
                 } );

Modified: directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/AddResponseGrammar.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/AddResponseGrammar.java?rev=307431&r1=307430&r2=307431&view=diff
==============================================================================
--- directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/AddResponseGrammar.java (original)
+++ directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/AddResponseGrammar.java Sun Oct  9 06:51:08 2005
@@ -58,7 +58,7 @@
         name = AddResponseGrammar.class.getName();
         statesEnum = LdapStatesEnum.getInstance();
 
-        // Intitialisation
+        // Create the transitions table
         super.transitions = new GrammarTransition[LdapStatesEnum.LAST_ADD_RESPONSE_STATE][256];
 
         //============================================================================================
@@ -98,6 +98,11 @@
 
                         // And we associate it to the ldapMessage Object
                         ldapMessage.setProtocolOP( addResponse );
+                        
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "Add Response" );
+                        }
                     }
                 } );
 

Modified: directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/BindRequestGrammar.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/BindRequestGrammar.java?rev=307431&r1=307430&r2=307431&view=diff
==============================================================================
--- directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/BindRequestGrammar.java (original)
+++ directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/BindRequestGrammar.java Sun Oct  9 06:51:08 2005
@@ -16,6 +16,8 @@
  */
 package org.apache.asn1new.ldap.codec.grammar;
 
+import javax.naming.InvalidNameException;
+
 import org.apache.asn1.codec.DecoderException;
 import org.apache.asn1new.ber.containers.IAsn1Container;
 import org.apache.asn1new.ber.grammar.AbstractGrammar;
@@ -26,11 +28,14 @@
 import org.apache.asn1new.ber.tlv.UniversalTag;
 import org.apache.asn1new.ber.tlv.Value;
 import org.apache.asn1new.util.IntegerDecoder;
+import org.apache.asn1new.util.IntegerDecoderException;
+import org.apache.asn1new.util.StringUtils;
 import org.apache.asn1new.primitives.OctetString;
 import org.apache.asn1new.ldap.codec.LdapConstants;
 import org.apache.asn1new.ldap.codec.LdapMessageContainer;
 import org.apache.asn1new.ldap.codec.primitives.LdapDN;
 import org.apache.asn1new.ldap.codec.primitives.LdapString;
+import org.apache.asn1new.ldap.codec.primitives.LdapStringEncodingException;
 import org.apache.asn1new.ldap.pojo.BindRequest;
 import org.apache.asn1new.ldap.pojo.LdapMessage;
 import org.apache.asn1new.ldap.pojo.SaslCredentials;
@@ -81,7 +86,7 @@
         
         statesEnum = LdapStatesEnum.getInstance();
 
-        // We have 17 differents states, so 16 transitions between states.
+        // Create the transitions table
         super.transitions = new GrammarTransition[LdapStatesEnum.LAST_BIND_REQUEST_STATE][256];
 
         //============================================================================================
@@ -138,9 +143,31 @@
 
                         Value value   = tlv.getValue();
 
-                        int   version = IntegerDecoder.parse( value, 1, 127 );
-
-                        bindRequestMessage.setVersion( version );
+                        try
+                        {
+                            int   version = IntegerDecoder.parse( value, 1, 127 );
+    
+                            if ( version != 3 )
+                            {
+                                log.error("The version " + version + " is invalid : it must be 3" );
+                            
+                                throw new DecoderException( "Ldap Version " + version + " is not supported" );
+                            }
+                            
+                            if ( log.isDebugEnabled() )
+                            {
+                                log.debug( "Ldap version " + version );
+                            }
+                            
+                            bindRequestMessage.setVersion( version );
+                        }
+                        catch ( IntegerDecoderException ide )
+                        {
+                            log.error("The version " + StringUtils.dumpBytes( value.getData() ) + 
+                                    " is invalid : " + ide.getMessage() + ". The version must be between (0 .. 127)" );
+                        
+                            throw new DecoderException( ide.getMessage() );
+                        }
 
                         return;
                     }
@@ -174,13 +201,26 @@
                         // We have to handle the special case of a 0 length name
                         if (tlv.getLength().getLength() == 0)
                         {
-                            bindRequestMessage.setName( LdapDN.EMPTY_STRING );
+                            bindRequestMessage.setName( LdapDN.EMPTY_LDAPDN );
                         }
                         else
                         {
-                            bindRequestMessage.setName( new LdapDN( tlv.getValue().getData() ) );
+                            try
+                            {
+                                bindRequestMessage.setName( new LdapDN( tlv.getValue().getData() ) );
+                            }
+                            catch ( InvalidNameException ine )
+                            {
+                                log.error( "Incorrect DN given : " + StringUtils.dumpBytes( tlv.getValue().getData() ) + " : " + ine.getMessage() );
+                                throw new DecoderException( "Incorrect DN given : " + ine.getMessage() );
+                            }
                         }
                         
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( " The Bind name is " + bindRequestMessage.getName() );
+                        }
+
                         return;
                     }
                 } );
@@ -233,6 +273,11 @@
                         {
                             authentication.setSimple( new OctetString( tlv.getValue().getData() ) );
                         }
+
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "The simple authentication is : " + authentication.getSimple() );
+                        }
                     }
                 } );
 
@@ -288,7 +333,20 @@
                         }
                         else
                         {
-                            authentication.setMechanism( new LdapString(tlv.getValue().getData() ) );
+                            try
+                            {
+                                authentication.setMechanism( new LdapString(tlv.getValue().getData() ) );
+                            }
+                            catch ( LdapStringEncodingException lsee )
+                            {
+                                log.error( "Invalid mechanism : " + StringUtils.dumpBytes( tlv.getValue().getData() ) + " : " + lsee.getMessage() );
+                                throw new DecoderException( lsee.getMessage() );
+                            }
+                        }
+
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "The mechanism is : " + authentication.getMechanism() );
                         }
 
                         return;
@@ -354,6 +412,11 @@
                         else
                         {
                             credentials.setCredentials( new OctetString( tlv.getValue().getData() ) );
+                        }
+
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "The credentials are : " + credentials.getCredentials() );
                         }
 
                         return;

Modified: directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/BindResponseGrammar.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/BindResponseGrammar.java?rev=307431&r1=307430&r2=307431&view=diff
==============================================================================
--- directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/BindResponseGrammar.java (original)
+++ directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/BindResponseGrammar.java Sun Oct  9 06:51:08 2005
@@ -61,7 +61,7 @@
         name       = BindResponseGrammar.class.getName();
         statesEnum = LdapStatesEnum.getInstance();
 
-        // Initialisation of the transitions table
+        // Create the transitions table
         super.transitions = new GrammarTransition[LdapStatesEnum.LAST_BIND_RESPONSE_STATE][256];
 
         //============================================================================================
@@ -163,6 +163,11 @@
                         else
                         {
                             bindResponseMessage.setServerSaslCreds( new OctetString( tlv.getValue().getData() ) );
+                        }
+                        
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "The SASL credentials value is : " + bindResponseMessage.getServerSaslCreds().toString() );
                         }
                         
                         return;

Modified: directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/CompareRequestGrammar.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/CompareRequestGrammar.java?rev=307431&r1=307430&r2=307431&view=diff
==============================================================================
--- directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/CompareRequestGrammar.java (original)
+++ directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/CompareRequestGrammar.java Sun Oct  9 06:51:08 2005
@@ -16,6 +16,8 @@
  */
 package org.apache.asn1new.ldap.codec.grammar;
 
+import javax.naming.InvalidNameException;
+
 import org.apache.asn1.codec.DecoderException;
 import org.apache.asn1new.ber.containers.IAsn1Container;
 import org.apache.asn1new.ber.grammar.AbstractGrammar;
@@ -25,10 +27,12 @@
 import org.apache.asn1new.ber.tlv.TLV;
 import org.apache.asn1new.ber.tlv.UniversalTag;
 import org.apache.asn1new.primitives.OctetString;
+import org.apache.asn1new.util.StringUtils;
 import org.apache.asn1new.ldap.codec.LdapConstants;
 import org.apache.asn1new.ldap.codec.LdapMessageContainer;
 import org.apache.asn1new.ldap.codec.primitives.LdapDN;
 import org.apache.asn1new.ldap.codec.primitives.LdapString;
+import org.apache.asn1new.ldap.codec.primitives.LdapStringEncodingException;
 import org.apache.asn1new.ldap.pojo.CompareRequest;
 import org.apache.asn1new.ldap.pojo.LdapMessage;
 import org.slf4j.Logger;
@@ -63,6 +67,7 @@
         name              = CompareRequestGrammar.class.getName();
         statesEnum        = LdapStatesEnum.getInstance();
 
+        // Create the transitions table
         super.transitions = new GrammarTransition[LdapStatesEnum.LAST_COMPARE_REQUEST_STATE][256];
 
         //============================================================================================
@@ -122,6 +127,7 @@
 
                         // Get the Value and store it in the CompareRequest
                         TLV tlv = ldapMessageContainer.getCurrentTLV();
+                        LdapDN entry = null;
 
                         // We have to handle the special case of a 0 length matched DN
                         if ( tlv.getLength().getLength() == 0 )
@@ -130,7 +136,21 @@
                         }
                         else
                         {
-                            compareRequest.setEntry( new LdapDN( tlv.getValue().getData() ) );
+                            try
+                            {
+                                entry = new LdapDN( tlv.getValue().getData() );
+                                compareRequest.setEntry( entry );
+                            }
+                            catch ( InvalidNameException ine )
+                            {
+                                log.error( "The DN to compare  (" + StringUtils.dumpBytes( tlv.getValue().getData() ) + ") is invalid" );
+                                throw new DecoderException( "Invalid DN " + StringUtils.dumpBytes( tlv.getValue().getData() ) + ", : " + ine.getMessage() );
+                            }
+                        }
+
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "Comparing DN " + entry );
                         }
                     }
                 } );
@@ -190,7 +210,21 @@
                         }
                         else
                         {
-                            compareRequest.setAttributeDesc( new LdapString( tlv.getValue().getData() ) );
+                            try
+                            {
+                                compareRequest.setAttributeDesc( new LdapString( tlv.getValue().getData() ) );
+                            }
+                            catch ( LdapStringEncodingException lsee )
+                            {
+                                log.error( "The attribute description (" + StringUtils.dumpBytes( tlv.getValue().getData() ) + ") is invalid" );
+                                throw new DecoderException( "Invalid attribute description " + StringUtils.dumpBytes( tlv.getValue().getData() ) + ", : " + lsee.getMessage() );
+                                
+                            }
+                        }
+
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "Comparing attribute description " + compareRequest.getAttributeDesc() );
                         }
                     }
                 } );
@@ -234,6 +268,11 @@
                         else
                         {
                             compareRequest.setAssertionValue( new OctetString( tlv.getValue().getData() ) );
+                        }
+                        
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "Comparing attribute value " + compareRequest.getAssertionValue() );
                         }
                     }
                 } );

Modified: directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/CompareResponseGrammar.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/CompareResponseGrammar.java?rev=307431&r1=307430&r2=307431&view=diff
==============================================================================
--- directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/CompareResponseGrammar.java (original)
+++ directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/CompareResponseGrammar.java Sun Oct  9 06:51:08 2005
@@ -57,7 +57,7 @@
         name = CompareResponseGrammar.class.getName();
         statesEnum = LdapStatesEnum.getInstance();
 
-        // Intitialisation
+        // Create the transitions table
         super.transitions = new GrammarTransition[LdapStatesEnum.LAST_COMPARE_RESPONSE_STATE][256];
 
         //============================================================================================
@@ -88,6 +88,11 @@
                         // Now, we can allocate the CompareResponse Object
                         // And we associate it to the ldapMessage Object
                         ldapMessage.setProtocolOP( new CompareResponse() );
+
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "Compare response " );
+                        }
                     }
                 } );
 

Modified: directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/DelRequestGrammar.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/DelRequestGrammar.java?rev=307431&r1=307430&r2=307431&view=diff
==============================================================================
--- directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/DelRequestGrammar.java (original)
+++ directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/DelRequestGrammar.java Sun Oct  9 06:51:08 2005
@@ -16,6 +16,8 @@
  */
 package org.apache.asn1new.ldap.codec.grammar;
 
+import javax.naming.InvalidNameException;
+
 import org.apache.asn1.codec.DecoderException;
 import org.apache.asn1new.ber.containers.IAsn1Container;
 import org.apache.asn1new.ber.grammar.AbstractGrammar;
@@ -28,6 +30,7 @@
 import org.apache.asn1new.ldap.codec.primitives.LdapDN;
 import org.apache.asn1new.ldap.pojo.DelRequest;
 import org.apache.asn1new.ldap.pojo.LdapMessage;
+import org.apache.asn1new.util.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -60,6 +63,7 @@
         name              = DelRequestGrammar.class.getName();
         statesEnum        = LdapStatesEnum.getInstance();
 
+        // Create the transitions table
         super.transitions = new GrammarTransition[LdapStatesEnum.LAST_DEL_REQUEST_STATE][256];
 
         //============================================================================================
@@ -93,17 +97,33 @@
                         TLV tlv = ldapMessageContainer.getCurrentTLV();
 
                         // We have to handle the special case of a 0 length matched DN
+                        LdapDN entry = null;
+                        
                         if ( tlv.getLength().getLength() == 0 )
                         {
                             throw new DecoderException( "The entry must not be null" );
                         }
                         else
                         {
-                            delRequest.setEntry( new LdapDN( tlv.getValue().getData() ) );
+                            try
+                            {
+                                entry = new LdapDN( tlv.getValue().getData() );
+                                delRequest.setEntry( entry );
+                            }
+                            catch ( InvalidNameException ine )
+                            {
+                                log.error( "The DN to delete  (" + StringUtils.dumpBytes( tlv.getValue().getData() ) + ") is invalid" );
+                                throw new DecoderException( "Invalid DN " + StringUtils.dumpBytes( tlv.getValue().getData() ) + ", : " + ine.getMessage() );
+                            }
                         }
 
                         // then we associate it to the ldapMessage Object
                         ldapMessage.setProtocolOP( delRequest );
+                        
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "Deleting DN " + entry );
+                        }
                     }
                 } );
 

Modified: directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/DelResponseGrammar.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/DelResponseGrammar.java?rev=307431&r1=307430&r2=307431&view=diff
==============================================================================
--- directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/DelResponseGrammar.java (original)
+++ directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/DelResponseGrammar.java Sun Oct  9 06:51:08 2005
@@ -57,7 +57,7 @@
         name = DelResponseGrammar.class.getName();
         statesEnum = LdapStatesEnum.getInstance();
 
-        // Intitialisation
+        // Create the transitions table
         super.transitions = new GrammarTransition[LdapStatesEnum.LAST_DEL_RESPONSE_STATE][256];
 
         //============================================================================================
@@ -89,6 +89,11 @@
 
                         // And we associate it to the ldapMessage Object
                         ldapMessage.setProtocolOP( new DelResponse() );
+                        
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "Del response " );
+                        }
                     }
                 } );
 

Modified: directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/ExtendedRequestGrammar.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/ExtendedRequestGrammar.java?rev=307431&r1=307430&r2=307431&view=diff
==============================================================================
--- directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/ExtendedRequestGrammar.java (original)
+++ directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/ExtendedRequestGrammar.java Sun Oct  9 06:51:08 2005
@@ -62,6 +62,7 @@
         name              = ExtendedRequestGrammar.class.getName();
         statesEnum        = LdapStatesEnum.getInstance();
 
+        // Create the transitions table
         super.transitions = new GrammarTransition[LdapStatesEnum.LAST_EXTENDED_REQUEST_STATE][256];
 
         //============================================================================================
@@ -125,12 +126,18 @@
                         // We have to handle the special case of a 0 length matched OID
                         if ( tlv.getLength().getLength() == 0 )
                         {
+                            log.error( "The name must not be null");
                             throw new DecoderException( "The name must not be null" );
                         }
                         else
                         {
                             extendedRequest.setRequestName( new OID( tlv.getValue().getData() ) );
                         }
+
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "OID read : " + extendedRequest.getRequestName() );
+                        }
                     }
                 } );
 
@@ -173,9 +180,13 @@
                         {
                             extendedRequest.setRequestValue( new OctetString( tlv.getValue().getData() ) );
                         }
+
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "Extended value : " + extendedRequest.getRequestValue() );
+                        }
                     }
                 } );
-
     }
 
     //~ Methods ------------------------------------------------------------------------------------

Modified: directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/ExtendedResponseGrammar.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/ExtendedResponseGrammar.java?rev=307431&r1=307430&r2=307431&view=diff
==============================================================================
--- directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/ExtendedResponseGrammar.java (original)
+++ directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/ExtendedResponseGrammar.java Sun Oct  9 06:51:08 2005
@@ -62,6 +62,7 @@
         name              = ExtendedResponseGrammar.class.getName();
         statesEnum        = LdapStatesEnum.getInstance();
 
+        // Create the transitions table
         super.transitions = new GrammarTransition[LdapStatesEnum.LAST_EXTENDED_RESPONSE_STATE][256];
 
         //============================================================================================
@@ -136,12 +137,18 @@
 			                // We have to handle the special case of a 0 length matched OID
 			                if ( tlv.getLength().getLength() == 0 )
 			                {
+                                log.error( "The name must not be null" );
 			                    throw new DecoderException( "The name must not be null" );
 			                }
 			                else
 			                {
 			                    extendedResponse.setResponseName( new OID( tlv.getValue().getData() ) );
 			                }
+                            
+                            if ( log.isDebugEnabled() )
+                            {
+                                log.debug( "OID read : " + extendedResponse.getResponseName() );
+                            }
 			            }
 			        } );
 
@@ -183,6 +190,11 @@
                         else
                         {
                             extendedResponse.setResponse( new OctetString( tlv.getValue().getData() ) );
+                        }
+                        
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "Extended value : " + extendedResponse.getResponse() );
                         }
                     }
                 } );

Modified: directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/FilterGrammar.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/FilterGrammar.java?rev=307431&r1=307430&r2=307431&view=diff
==============================================================================
--- directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/FilterGrammar.java (original)
+++ directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/FilterGrammar.java Sun Oct  9 06:51:08 2005
@@ -26,11 +26,12 @@
 import org.apache.asn1new.ber.tlv.UniversalTag;
 import org.apache.asn1new.ber.tlv.Value;
 import org.apache.asn1new.util.BooleanDecoder;
-import org.apache.asn1new.util.IntegerDecoder;
+import org.apache.asn1new.util.StringUtils;
 import org.apache.asn1new.primitives.OctetString;
 import org.apache.asn1new.ldap.codec.LdapConstants;
 import org.apache.asn1new.ldap.codec.LdapMessageContainer;
 import org.apache.asn1new.ldap.codec.primitives.LdapString;
+import org.apache.asn1new.ldap.codec.primitives.LdapStringEncodingException;
 import org.apache.asn1new.ldap.pojo.AttributeValueAssertion;
 import org.apache.asn1new.ldap.pojo.LdapMessage;
 import org.apache.asn1new.ldap.pojo.SearchRequest;
@@ -75,6 +76,7 @@
         name              = FilterGrammar.class.getName();
         statesEnum        = LdapStatesEnum.getInstance();
 
+        // Create the transitions table
         super.transitions = new GrammarTransition[LdapStatesEnum.LAST_FILTER_STATE][256];
 
         //============================================================================================
@@ -237,8 +239,6 @@
                             ldapMessageContainer.getLdapMessage();
                         SearchRequest searchRequest = ldapMessage.getSearchRequest();
 
-                        TLV tlv            = ldapMessageContainer.getCurrentTLV();
-
                         // We can allocate the SearchRequest
                         Filter andFilter = new AndFilter();
                         
@@ -281,8 +281,6 @@
                             ldapMessageContainer.getLdapMessage();
                         SearchRequest searchRequest = ldapMessage.getSearchRequest();
 
-                        TLV tlv            = ldapMessageContainer.getCurrentTLV();
-
                         // We can allocate the SearchRequest
                         Filter orFilter = new OrFilter();
                         
@@ -325,8 +323,6 @@
                             ldapMessageContainer.getLdapMessage();
                         SearchRequest searchRequest = ldapMessage.getSearchRequest();
 
-                        TLV tlv            = ldapMessageContainer.getCurrentTLV();
-
                         // We can allocate the SearchRequest
                         Filter notFilter = new NotFilter();
                         
@@ -441,10 +437,18 @@
                         SearchRequest searchRequest = ldapMessage.getSearchRequest();
 
                         TLV tlv            = ldapMessageContainer.getCurrentTLV();
-                        LdapString attributeDesc = new LdapString(tlv.getValue().getData());
                         
                         AttributeValueAssertion assertion = new AttributeValueAssertion();
-                        assertion.setAttributeDesc(attributeDesc);
+                        
+                        try
+                        {
+                            assertion.setAttributeDesc( new LdapString( tlv.getValue().getData() ) );
+                        }
+                        catch ( LdapStringEncodingException lsee )
+                        {
+                            log.error( "The assertion description (" + StringUtils.dumpBytes( tlv.getValue().getData() ) + ") is invalid" );
+                            throw new DecoderException( "Invalid assertion description " + StringUtils.dumpBytes( tlv.getValue().getData() ) + ", : " + lsee.getMessage() );
+                        }
                         
                         AttributeValueAssertionFilter currentFilter = (AttributeValueAssertionFilter)searchRequest.getCurrentFilter();
                         currentFilter.setAssertion(assertion);
@@ -508,10 +512,18 @@
                         SearchRequest searchRequest = ldapMessage.getSearchRequest();
 
                         TLV tlv            = ldapMessageContainer.getCurrentTLV();
-                        LdapString attributeDesc = new LdapString(tlv.getValue().getData());
                         
                         AttributeValueAssertion assertion = new AttributeValueAssertion();
-                        assertion.setAttributeDesc(attributeDesc);
+                        
+                        try
+                        {
+                            assertion.setAttributeDesc( new LdapString( tlv.getValue().getData() ) );
+                        }
+                        catch ( LdapStringEncodingException lsee )
+                        {
+                            log.error( "The assertion value (" + StringUtils.dumpBytes( tlv.getValue().getData() ) + ") is invalid" );
+                            throw new DecoderException( "Invalid assertion value " + StringUtils.dumpBytes( tlv.getValue().getData() ) + ", : " + lsee.getMessage() );
+                        }
                         
                         AttributeValueAssertionFilter currentFilter = (AttributeValueAssertionFilter)searchRequest.getCurrentFilter();
                         currentFilter.setAssertion(assertion);
@@ -561,12 +573,19 @@
                             // No parent. This Filter will become the root.
                             //searchRequest.setCurrentFilter(presentFilter);
                             presentFilter.setParent( searchRequest );
-                            searchRequest.setFilter(presentFilter);
+                            searchRequest.setFilter( presentFilter );
                         }
 
                         // Store the value.
-                        presentFilter.setAttributeDescription(new LdapString(tlv.getValue().getData()));
-                        //searchRequest.setCurrentFilter(presentFilter);
+                        try
+                        {
+                            presentFilter.setAttributeDescription( new LdapString( tlv.getValue().getData() ) );
+                        }
+                        catch ( LdapStringEncodingException lsee )
+                        {
+                            log.error( "Present filter attribute description (" + StringUtils.dumpBytes( tlv.getValue().getData() ) + ") is invalid" );
+                            throw new DecoderException( "Invalid present filter attribute description " + StringUtils.dumpBytes( tlv.getValue().getData() ) + ", : " + lsee.getMessage() );
+                        }
                         
                         // We now have to get back to the nearest filter which is not terminal.
                         unstackFilters( container );
@@ -656,7 +675,16 @@
 
                         // Store the value.
                         SubstringFilter substringFilter = (SubstringFilter)searchRequest.getCurrentFilter();
-                        substringFilter.setType(new LdapString(tlv.getValue().getData()));
+                        
+                        try
+                        {
+                            substringFilter.setType(new LdapString(tlv.getValue().getData()));
+                        }
+                        catch ( LdapStringEncodingException lsee )
+                        {
+                            log.error( "The substring filter type (" + StringUtils.dumpBytes( tlv.getValue().getData() ) + ") is invalid" );
+                            throw new DecoderException( "Invalid substring filter type " + StringUtils.dumpBytes( tlv.getValue().getData() ) + ", : " + lsee.getMessage() );
+                        }
 
                         // We now have to get back to the nearest filter which is not terminal.
                         unstackFilters( container );
@@ -715,7 +743,16 @@
 
                         // Store the value.
                         SubstringFilter substringFilter = (SubstringFilter)searchRequest.getCurrentFilter();
-                        substringFilter.setInitialSubstrings(new LdapString(tlv.getValue().getData()));
+                        
+                        try
+                        {
+                            substringFilter.setInitialSubstrings(new LdapString(tlv.getValue().getData()));
+                        }
+                        catch ( LdapStringEncodingException lsee )
+                        {
+                            log.error( "The substring filter initial (" + StringUtils.dumpBytes( tlv.getValue().getData() ) + ") is invalid" );
+                            throw new DecoderException( "Invalid substring filter initial " + StringUtils.dumpBytes( tlv.getValue().getData() ) + ", : " + lsee.getMessage() );
+                        }
 
                         // We now have to get back to the nearest filter which is not terminal.
                         unstackFilters( container );
@@ -768,7 +805,16 @@
 
                         // Store the value.
                         SubstringFilter substringFilter = (SubstringFilter)searchRequest.getCurrentFilter();
-                        substringFilter.addAnySubstrings(new LdapString(tlv.getValue().getData()));
+                        
+                        try
+                        {
+                            substringFilter.addAnySubstrings(new LdapString(tlv.getValue().getData()));
+                        }
+                        catch ( LdapStringEncodingException lsee )
+                        {
+                            log.error( "The substring any filter (" + StringUtils.dumpBytes( tlv.getValue().getData() ) + ") is invalid" );
+                            throw new DecoderException( "Invalid substring any filter " + StringUtils.dumpBytes( tlv.getValue().getData() ) + ", : " + lsee.getMessage() );
+                        }
 
                         // We now have to get back to the nearest filter which is not terminal.
                         unstackFilters( container );
@@ -834,7 +880,16 @@
 
                         // Store the value.
                         SubstringFilter substringFilter = (SubstringFilter)searchRequest.getCurrentFilter();
-                        substringFilter.setFinalSubstrings(new LdapString(tlv.getValue().getData()));
+                        
+                        try
+                        {
+                            substringFilter.setFinalSubstrings(new LdapString(tlv.getValue().getData()));
+                        }
+                        catch ( LdapStringEncodingException lsee )
+                        {
+                            log.error( "The substring final filter (" + StringUtils.dumpBytes( tlv.getValue().getData() ) + ") is invalid" );
+                            throw new DecoderException( "Invalid substring final filter " + StringUtils.dumpBytes( tlv.getValue().getData() ) + ", : " + lsee.getMessage() );
+                        }
 
                         // We now have to get back to the nearest filter which is not terminal.
                         unstackFilters( container );
@@ -976,8 +1031,6 @@
                             ldapMessageContainer.getLdapMessage();
                         SearchRequest searchRequest = ldapMessage.getSearchRequest();
 
-                        TLV tlv            = ldapMessageContainer.getCurrentTLV();
-
                         // We can allocate the ExtensibleMatch Filter
                         Filter extensibleMatchFilter = new ExtensibleMatchFilter();
                         
@@ -1046,7 +1099,16 @@
 
                         // Store the value.
                         ExtensibleMatchFilter extensibleMatchFilter = (ExtensibleMatchFilter)searchRequest.getCurrentFilter();
-                        extensibleMatchFilter.setMatchingRule(new LdapString(tlv.getValue().getData()));
+                        
+                        try
+                        {
+                            extensibleMatchFilter.setMatchingRule(new LdapString(tlv.getValue().getData()));
+                        }
+                        catch ( LdapStringEncodingException lsee )
+                        {
+                            log.error( "The matching rule (" + StringUtils.dumpBytes( tlv.getValue().getData() ) + ") is invalid" );
+                            throw new DecoderException( "Invalid matching rule " + StringUtils.dumpBytes( tlv.getValue().getData() ) + ", : " + lsee.getMessage() );
+                        }
                     }
                 });
                 
@@ -1087,7 +1149,16 @@
 
                         // Store the value.
                         ExtensibleMatchFilter extensibleMatchFilter = (ExtensibleMatchFilter)searchRequest.getCurrentFilter();
-                        extensibleMatchFilter.setType(new LdapString(tlv.getValue().getData()));
+                        
+                        try
+                        {
+                            extensibleMatchFilter.setType(new LdapString(tlv.getValue().getData()));
+                        }
+                        catch ( LdapStringEncodingException lsee )
+                        {
+                            log.error( "The match filter (" + StringUtils.dumpBytes( tlv.getValue().getData() ) + ") is invalid" );
+                            throw new DecoderException( "Invalid match filter " + StringUtils.dumpBytes( tlv.getValue().getData() ) + ", : " + lsee.getMessage() );
+                        }
                     }
                 });
                 
@@ -1234,8 +1305,6 @@
         LdapMessage      ldapMessage          =
             ldapMessageContainer.getLdapMessage();
         SearchRequest searchRequest = ldapMessage.getSearchRequest();
-
-        TLV tlv            = ldapMessageContainer.getCurrentTLV();
 
         // We can allocate the Attribute Value Assertion
         Filter filter = new AttributeValueAssertionFilter( filterType );

Modified: directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/LdapControlGrammar.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/LdapControlGrammar.java?rev=307431&r1=307430&r2=307431&view=diff
==============================================================================
--- directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/LdapControlGrammar.java (original)
+++ directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/LdapControlGrammar.java Sun Oct  9 06:51:08 2005
@@ -26,7 +26,7 @@
 import org.apache.asn1new.ber.tlv.UniversalTag;
 import org.apache.asn1new.ber.tlv.Value;
 import org.apache.asn1new.util.BooleanDecoder;
-import org.apache.asn1new.util.IntegerDecoder;
+import org.apache.asn1new.util.StringUtils;
 import org.apache.asn1new.primitives.OID;
 import org.apache.asn1new.primitives.OctetString;
 import org.apache.asn1new.ldap.codec.LdapConstants;
@@ -74,6 +74,7 @@
         name = LdapControlGrammar.class.getName();
         statesEnum = LdapStatesEnum.getInstance();
 
+        // Create the transitions table
         super.transitions = new GrammarTransition[LdapStatesEnum.LAST_CONTROL_STATE][256];
 
         //============================================================================================
@@ -183,12 +184,18 @@
                         // We have to handle the special case of a 0 length OID
                         if ( tlv.getLength().getLength() == 0 )
                         {
+                            log.error( "The name must not be null" );
                             throw new DecoderException( "The name must not be null" );
                         }
                         else
                         {
                             control.setControlType( new OID( tlv.getValue().getData() ) );
                         }
+                        
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "Control OID : " + control.getControlType() );
+                        }
                     }
                 });
 
@@ -232,6 +239,11 @@
                         Value value        = tlv.getValue();
 
                         control.setCriticality( BooleanDecoder.parse( value) );
+                        
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "Control criticality : " + control.getCriticality() );
+                        }
                     }
                 });
 
@@ -281,6 +293,11 @@
                         else
                         {
                             control.setControlValue( new OctetString( value.getData() ) );
+                        }
+                        
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "Control value : " + StringUtils.dumpBytes( control.getControlValue() ) );
                         }
                     }
                 });

Modified: directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/LdapMessageGrammar.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/LdapMessageGrammar.java?rev=307431&r1=307430&r2=307431&view=diff
==============================================================================
--- directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/LdapMessageGrammar.java (original)
+++ directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/LdapMessageGrammar.java Sun Oct  9 06:51:08 2005
@@ -26,6 +26,8 @@
 import org.apache.asn1new.ber.tlv.UniversalTag;
 import org.apache.asn1new.ber.tlv.Value;
 import org.apache.asn1new.util.IntegerDecoder;
+import org.apache.asn1new.util.IntegerDecoderException;
+import org.apache.asn1new.util.StringUtils;
 import org.apache.asn1new.ldap.codec.LdapConstants;
 import org.apache.asn1new.ldap.codec.LdapMessageContainer;
 import org.apache.asn1new.ldap.pojo.LdapMessage;
@@ -62,7 +64,7 @@
         name       = LdapMessageGrammar.class.getName();
         statesEnum = LdapStatesEnum.getInstance();
 
-        // We have 9 differents states, so 8 transitions between states.
+        // Create the transitions table
         super.transitions = new GrammarTransition[LdapStatesEnum.LAST_LDAP_MESSAGE_STATE][256];
 
         //============================================================================================
@@ -124,9 +126,24 @@
 
                         Value value     = tlv.getValue();
 
-                        int   messageId = IntegerDecoder.parse( value, 0, Integer.MAX_VALUE );
-
-                        ldapMessage.setMessageId( messageId );
+                        try
+                        {
+                            int   messageId = IntegerDecoder.parse( value, 0, Integer.MAX_VALUE );
+                            
+                            ldapMessage.setMessageId( messageId );
+
+                            if ( log.isDebugEnabled() )
+                            {
+                                log.debug( "Ldap Message Id has been decoded : " + messageId );
+                            }
+                        }
+                        catch ( IntegerDecoderException ide )
+                        {
+                            log.error("The Message Id " + StringUtils.dumpBytes( value.getData() ) + 
+                                    " is invalid : " + ide.getMessage() + ". The message ID must be between (0 .. 2 147 483 647)" );
+                        
+                            throw new DecoderException( ide.getMessage() );
+                        }
 
                         return;
                     }

Modified: directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/LdapResultGrammar.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/LdapResultGrammar.java?rev=307431&r1=307430&r2=307431&view=diff
==============================================================================
--- directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/LdapResultGrammar.java (original)
+++ directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/LdapResultGrammar.java Sun Oct  9 06:51:08 2005
@@ -16,6 +16,10 @@
  */
 package org.apache.asn1new.ldap.codec.grammar;
 
+import java.util.Iterator;
+
+import javax.naming.InvalidNameException;
+
 import org.apache.asn1.codec.DecoderException;
 import org.apache.asn1new.ber.containers.IAsn1Container;
 import org.apache.asn1new.ber.grammar.AbstractGrammar;
@@ -25,16 +29,20 @@
 import org.apache.asn1new.ber.tlv.TLV;
 import org.apache.asn1new.ber.tlv.UniversalTag;
 import org.apache.asn1new.ber.tlv.Value;
-import org.apache.asn1new.util.IntegerDecoder;
 import org.apache.asn1new.ldap.codec.LdapConstants;
 import org.apache.asn1new.ldap.codec.LdapMessageContainer;
 import org.apache.asn1new.ldap.codec.primitives.LdapDN;
 import org.apache.asn1new.ldap.codec.primitives.LdapString;
+import org.apache.asn1new.ldap.codec.primitives.LdapStringEncodingException;
 import org.apache.asn1new.ldap.codec.primitives.LdapURL;
+import org.apache.asn1new.ldap.codec.primitives.LdapURLEncodingException;
 import org.apache.asn1new.ldap.codec.utils.LdapResultEnum;
 import org.apache.asn1new.ldap.pojo.LdapMessage;
 import org.apache.asn1new.ldap.pojo.LdapResponse;
 import org.apache.asn1new.ldap.pojo.LdapResult;
+import org.apache.asn1new.util.IntegerDecoder;
+import org.apache.asn1new.util.IntegerDecoderException;
+import org.apache.asn1new.util.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -67,6 +75,7 @@
         name              = LdapResultGrammar.class.getName();
         statesEnum        = LdapStatesEnum.getInstance();
 
+        // Create the transitions table
         super.transitions = new GrammarTransition[LdapStatesEnum.LAST_LDAP_RESULT_STATE][256];
 
         //============================================================================================
@@ -152,13 +161,23 @@
                         TLV   tlv        = ldapMessageContainer.getCurrentTLV();
 
                         Value value      = tlv.getValue();
-
-                        int   resultCode = IntegerDecoder.parse( value, 0, 90 );
+                        int   resultCode  = 0;
+                        
+                        try
+                        {
+                            resultCode = IntegerDecoder.parse( value, 0, 90 );
+                        }
+                        catch ( IntegerDecoderException ide )
+                        {
+                            log.error("The result code " + StringUtils.dumpBytes( value.getData() ) + 
+                                    " is invalid : " + ide.getMessage() + ". The result code must be between (0 .. 90)" );
+                        
+                            throw new DecoderException( ide.getMessage() );
+                        }
 
                         // Treat the 'normal' cases !
                         switch ( resultCode )
                         {
-
                             case LdapResultEnum.SUCCESS :
                             case LdapResultEnum.OPERATIONS_ERROR :
                             case LdapResultEnum.PROTOCOL_ERROR :
@@ -200,9 +219,13 @@
                                 break;
 
                             default :
-                                throw new DecoderException(
-                                    "Error <" + LdapResultEnum.errorCode( resultCode ) +
-                                    "> not allowed" );
+                                log.warn( "The resultCode " + resultCode + " is unknown." );
+                                ldapResult.setResultCode( LdapResultEnum.OTHER );
+                        }
+                        
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "The result code is set to " + LdapResultEnum.errorCode( resultCode ) );
                         }
                     }
                 } );
@@ -242,11 +265,39 @@
                         // We have to handle the special case of a 0 length matched DN
                         if ( tlv.getLength().getLength() == 0 )
                         {
-                            ldapResult.setMatchedDN( LdapDN.EMPTY_STRING );
+                            ldapResult.setMatchedDN( LdapDN.EMPTY_LDAPDN );
                         }
                         else
                         {
-                            ldapResult.setMatchedDN( new LdapDN( tlv.getValue().getData() ) );
+                            // A not null matchedDN is valid for resultCodes
+                            // NoSuchObject, AliasProblem, InvalidDNSyntax and 
+                            // AliasDreferencingProblem.
+                            
+                            if ( ( ldapResult.getResultCode() == LdapResultEnum.NO_SUCH_OBJECT ) ||
+                                 ( ldapResult.getResultCode() == LdapResultEnum.ALIAS_PROBLEM ) ||
+                                 ( ldapResult.getResultCode() == LdapResultEnum.INVALID_DN_SYNTAX ) ||
+                                 ( ldapResult.getResultCode() == LdapResultEnum.ALIAS_DEREFERENCING_PROBLEM ) )
+                            {
+                                try
+                                {
+                                    ldapResult.setMatchedDN( new LdapDN( tlv.getValue().getData() ) );
+                                }
+                                catch ( InvalidNameException ine )
+                                {
+                                    log.error( "Incorrect DN given : " + StringUtils.dumpBytes( tlv.getValue().getData() ) );
+                                    throw new DecoderException( "Incorrect DN given : " + ine.getMessage() );
+                                }
+                            }
+                            else
+                            {
+                                log.warn( "The matched DN should not be set when the result code is one of NoSuchObject, AliasProblem, InvalidDNSyntax or AliasDreferencingProblem" );
+                                ldapResult.setMatchedDN( LdapDN.EMPTY_LDAPDN );
+                            }
+                        }
+                        
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "The matchedDN is " + ldapResult.getMatchedDN() );
                         }
 
                         return;
@@ -291,10 +342,23 @@
                         }
                         else
                         {
-                            ldapResult.setErrorMessage( new LdapString(
-                                    tlv.getValue().getData() ) );
+                            try
+                            {
+                                ldapResult.setErrorMessage( new LdapString(
+                                        tlv.getValue().getData() ) );
+                            }
+                            catch ( LdapStringEncodingException lsee )
+                            {
+                                log.error( "The Error Message is invalid : " +StringUtils.dumpBytes( tlv.getValue().getData() ) );
+                                ldapResult.setErrorMessage( LdapString.EMPTY_STRING );
+                            }
                         }
 
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "The error message is : " + ldapResult.getErrorMessage() );
+                        }
+                        
                         return;
                     }
                 } );
@@ -331,9 +395,12 @@
                 LdapStatesEnum.LDAP_RESULT_REFERRAL_VALUE, null );
 
         // Referral ::= SEQUENCE OF LDAPURL (Length)
-        // We may have other referrals, but wa may also have finished to read the LdapResult.
+        // We may have other referrals, but we may also have finished to read the LdapResult.
         // To handle those different cases, we have to transit to a special state, which
         // will do this brancing.
+        //
+        // The referral message exists only if the resultCode is REFERRAL.
+        //
         // Here, we store the referral in the ldapResult.
         super.transitions[LdapStatesEnum.LDAP_RESULT_REFERRAL_VALUE][UniversalTag.OCTET_STRING_TAG] =
             new GrammarTransition(
@@ -356,11 +423,52 @@
 
                         if ( tlv.getLength().getLength() == 0 )
                         {
-                            ldapResult.addReferral( LdapURL.EMPTY_STRING );
+                            ldapResult.addReferral( LdapURL.EMPTY_URL );
                         }
                         else
                         {
-                            ldapResult.addReferral( new LdapURL( tlv.getValue().getData() ) );
+                            if ( ldapResult.getResultCode() == LdapResultEnum.REFERRAL )
+                            {
+                                try
+                                {
+                                    ldapResult.addReferral( new LdapURL( tlv.getValue().getData() ) );
+                                }
+                                catch ( LdapURLEncodingException luee )
+                                {
+                                    String badUrl = new String( tlv.getValue().getData() );
+                                    log.error( "The URL " + badUrl + " is not valid : " + luee.getMessage() );
+                                    throw new DecoderException( "Invalid URL : " + luee.getMessage() );
+                                }
+                            }
+                            else
+                            {
+                                log.warn( "The Referral error message is not allowed when havind an error code no equals to REFERRAL" );
+                                ldapResult.addReferral( LdapURL.EMPTY_URL );
+                            }
+                        }
+                        
+                        if ( log.isDebugEnabled() )
+                        {
+                            Iterator urls = ldapResult.getReferrals().iterator();
+                            
+                            StringBuffer sb = new StringBuffer();
+                            boolean isFirst = true;
+                            
+                            while ( urls.hasNext() )
+                            {
+                                if ( isFirst )
+                                {
+                                    isFirst = false;
+                                }
+                                else
+                                {
+                                    sb.append( ", " );
+                                }
+                                
+                                sb.append( urls.next() );
+                            }
+                            
+                            log.debug( "The referral error message is set to " + sb.toString() );
                         }
                     }
                 } );

Modified: directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/ModifyDNRequestGrammar.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/ModifyDNRequestGrammar.java?rev=307431&r1=307430&r2=307431&view=diff
==============================================================================
--- directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/ModifyDNRequestGrammar.java (original)
+++ directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/ModifyDNRequestGrammar.java Sun Oct  9 06:51:08 2005
@@ -16,6 +16,8 @@
  */
 package org.apache.asn1new.ldap.codec.grammar;
 
+import javax.naming.InvalidNameException;
+
 import org.apache.asn1.codec.DecoderException;
 import org.apache.asn1new.ber.containers.IAsn1Container;
 import org.apache.asn1new.ber.grammar.AbstractGrammar;
@@ -26,10 +28,12 @@
 import org.apache.asn1new.ber.tlv.UniversalTag;
 import org.apache.asn1new.ber.tlv.Value;
 import org.apache.asn1new.util.IntegerDecoder;
+import org.apache.asn1new.util.IntegerDecoderException;
+import org.apache.asn1new.util.StringUtils;
 import org.apache.asn1new.ldap.codec.LdapConstants;
 import org.apache.asn1new.ldap.codec.LdapMessageContainer;
 import org.apache.asn1new.ldap.codec.primitives.LdapDN;
-import org.apache.asn1new.ldap.codec.primitives.RelativeLdapDN;
+import org.apache.asn1new.ldap.codec.primitives.LdapRDN;
 import org.apache.asn1new.ldap.pojo.LdapMessage;
 import org.apache.asn1new.ldap.pojo.ModifyDNRequest;
 import org.slf4j.Logger;
@@ -64,6 +68,7 @@
         name              = ModifyDNRequestGrammar.class.getName();
         statesEnum        = LdapStatesEnum.getInstance();
 
+        // Create the transitions table
         super.transitions = new GrammarTransition[LdapStatesEnum.LAST_MODIFY_DN_REQUEST_STATE][256];
 
         //============================================================================================
@@ -129,13 +134,29 @@
                         TLV tlv = ldapMessageContainer.getCurrentTLV();
 
                         // We have to handle the special case of a 0 length matched DN
+                        LdapDN entry = null;
+
                         if ( tlv.getLength().getLength() == 0 )
                         {
                             throw new DecoderException( "The entry must nut be null" );
                         }
                         else
                         {
-                            modifyDNRequest.setEntry( new LdapDN( tlv.getValue().getData() ) );
+                            try
+                            {
+                                entry = new LdapDN( tlv.getValue().getData() );
+                                modifyDNRequest.setEntry( entry );
+                            }
+                            catch ( InvalidNameException ine )
+                            {
+                                log.error( "The DN to modify  (" + StringUtils.dumpBytes( tlv.getValue().getData() ) + ") is invalid" );
+                                throw new DecoderException( "Invalid DN " + StringUtils.dumpBytes( tlv.getValue().getData() ) + ", : " + ine.getMessage() );
+                            }
+                        }
+
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "Modifying DN " + entry );
                         }
 
                         return;
@@ -178,14 +199,29 @@
                         TLV tlv = ldapMessageContainer.getCurrentTLV();
 
                         // We have to handle the special case of a 0 length matched newDN
+                        LdapRDN newRdn = null;
+                        
                         if ( tlv.getLength().getLength() == 0 )
                         {
                             throw new DecoderException( "The newrdn must nut be null" );
                         }
                         else
                         {
-                            modifyDNRequest.setNewRDN( new RelativeLdapDN(
-                                    tlv.getValue().getData() ) );
+                            try
+                            {
+                                newRdn = new LdapRDN( tlv.getValue().getData() );
+                                modifyDNRequest.setNewRDN( newRdn );
+                            }
+                            catch ( InvalidNameException ine )
+                            {
+                                log.error( "The new RDN (" + StringUtils.dumpBytes( tlv.getValue().getData() ) + ") is invalid" );
+                                throw new DecoderException( "Invalid RDN " + StringUtils.dumpBytes( tlv.getValue().getData() ) + ", : " + ine.getMessage() );
+                            }
+                        }
+
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "Modifying with new RDN " + newRdn );
                         }
                     }
                 } );
@@ -228,8 +264,19 @@
                         // which is not 0, it will be interpreted as TRUE, but we
                         // will generate a warning.
                         Value value        = tlv.getValue();
+                        int   deleteOldRDN = 0;
 
-                        int   deleteOldRDN = IntegerDecoder.parse( value, 0, 255 );
+                        try
+                        {
+                            deleteOldRDN = IntegerDecoder.parse( value, 0, 255 );
+                        }
+                        catch ( IntegerDecoderException ide )
+                        {
+                            log.error("The oldRDN flag " + StringUtils.dumpBytes( value.getData() ) + 
+                                    " is invalid : " + ide.getMessage() + ". It should be 0 or 255" );
+                        
+                            throw new DecoderException( ide.getMessage() );
+                        }
 
                         modifyDNRequest.setDeleteOldRDN( deleteOldRDN != 0 );
 
@@ -238,6 +285,17 @@
                             log.warn( "A boolean must be encoded with a 0x00 or a 0xFF value" );
                         }
 
+                        if ( log.isDebugEnabled() )
+                        {
+                            if ( deleteOldRDN == 0 )
+                            {
+                                log.debug( " Old RDN attributes will be deleted" );
+                            }
+                            else
+                            {
+                                log.debug( " Old RDN attributes will be retained" );
+                            }
+                        }
                     }
                 } );
 
@@ -276,6 +334,8 @@
                         TLV tlv = ldapMessageContainer.getCurrentTLV();
 
                         // We have to handle the special case of a 0 length matched DN
+                        LdapDN newSuperior = LdapDN.EMPTY_LDAPDN;
+
                         if ( tlv.getLength().getLength() == 0 )
                         {
 
@@ -290,14 +350,27 @@
                                     "The new superior is null, so we will change the entry" );
                             }
 
-                            modifyDNRequest.setNewSuperior( LdapDN.EMPTY_STRING );
+                            modifyDNRequest.setNewSuperior( newSuperior );
                         }
                         else
                         {
-                            modifyDNRequest.setNewSuperior( new LdapDN(
-                                    tlv.getValue().getData() ) );
+                            try
+                            {
+                                newSuperior = new LdapDN( tlv.getValue().getData() );
+                                modifyDNRequest.setNewSuperior( newSuperior );
+                            }
+                            catch ( InvalidNameException ine )
+                            {
+                                log.error( "The new superior DN (" + StringUtils.dumpBytes( tlv.getValue().getData() ) + ") is invalid" );
+                                throw new DecoderException( "Invalid DN " + StringUtils.dumpBytes( tlv.getValue().getData() ) + ", : " + ine.getMessage() );
+                            }
                         }
 
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "New superior DN " + newSuperior );
+                        }
+                        
                         return;
                     }
                 } );

Modified: directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/ModifyDNResponseGrammar.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/ModifyDNResponseGrammar.java?rev=307431&r1=307430&r2=307431&view=diff
==============================================================================
--- directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/ModifyDNResponseGrammar.java (original)
+++ directory/shared/ldap/trunk/apache2-provider/src/java/main/org/apache/asn1new/ldap/codec/grammar/ModifyDNResponseGrammar.java Sun Oct  9 06:51:08 2005
@@ -57,7 +57,7 @@
         name = ModifyDNResponseGrammar.class.getName();
         statesEnum = LdapStatesEnum.getInstance();
 
-        // Intitialisation
+        // Create the transitions table
         super.transitions = new GrammarTransition[LdapStatesEnum.LAST_MODIFY_DN_RESPONSE_STATE][256];
 
         //============================================================================================
@@ -87,6 +87,11 @@
 
                         // And we associate it to the ldapMessage Object
                         ldapMessage.setProtocolOP( new ModifyDNResponse() );
+
+                        if ( log.isDebugEnabled() )
+                        {
+                            log.debug( "Modify DN response " );
+                        }
                     }
                 } );