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 2006/10/03 15:49:46 UTC

svn commit: r452497 [3/9] - in /directory/trunks/shared/ldap/src: main/java/org/apache/directory/shared/ldap/codec/ main/java/org/apache/directory/shared/ldap/codec/abandon/ main/java/org/apache/directory/shared/ldap/codec/add/ main/java/org/apache/dir...

Modified: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapResponse.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapResponse.java?view=diff&rev=452497&r1=452496&r2=452497
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapResponse.java (original)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapResponse.java Tue Oct  3 06:49:43 2006
@@ -71,8 +71,7 @@
     /**
      * Set the ldap result
      * 
-     * @param ldapResult
-     *            The ldapResult to set.
+     * @param ldapResult The ldapResult to set.
      */
     public void setLdapResult( LdapResult ldapResult )
     {
@@ -103,8 +102,7 @@
     /**
      * Encode the AddResponse message to a PDU.
      * 
-     * @param buffer
-     *            The buffer where to put the PDU
+     * @param buffer The buffer where to put the PDU
      * @return The PDU.
      */
     public ByteBuffer encode( ByteBuffer buffer ) throws EncoderException

Modified: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapResult.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapResult.java?view=diff&rev=452497&r1=452496&r2=452497
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapResult.java (original)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapResult.java Tue Oct  3 06:49:43 2006
@@ -21,14 +21,14 @@
 
 
 import org.apache.directory.shared.asn1.Asn1Object;
-import org.apache.directory.shared.asn1.ber.tlv.Length;
+import org.apache.directory.shared.asn1.ber.tlv.TLV;
 import org.apache.directory.shared.asn1.ber.tlv.UniversalTag;
 import org.apache.directory.shared.asn1.ber.tlv.Value;
 import org.apache.directory.shared.asn1.codec.EncoderException;
 import org.apache.directory.shared.ldap.codec.util.LdapResultEnum;
-import org.apache.directory.shared.ldap.codec.util.LdapString;
 import org.apache.directory.shared.ldap.codec.util.LdapURL;
 import org.apache.directory.shared.ldap.name.LdapDN;
+import org.apache.directory.shared.ldap.util.StringTools;
 
 import java.nio.BufferOverflowException;
 import java.nio.ByteBuffer;
@@ -47,25 +47,55 @@
     // ----------------------------------------------------------------------------
 
     /**
-     * The result code. The different values are : success (0), operationsError
-     * (1), protocolError (2), timeLimitExceeded (3), sizeLimitExceeded (4),
-     * compareFalse (5), compareTrue (6), authMethodNotSupported (7),
-     * strongAuthRequired (8), -- 9 reserved -- referral (10), -- new
-     * adminLimitExceeded (11), -- new unavailableCriticalExtension (12), -- new
-     * confidentialityRequired (13), -- new saslBindInProgress (14), -- new
-     * noSuchAttribute (16), undefinedAttributeType (17), inappropriateMatching
-     * (18), constraintViolation (19), attributeOrValueExists (20),
-     * invalidAttributeSyntax (21), -- 22-31 unused -- noSuchObject (32),
-     * aliasProblem (33), invalidDNSyntax (34), -- 35 reserved for undefined
-     * isLeaf -- aliasDereferencingProblem (36), -- 37-47 unused --
-     * inappropriateAuthentication (48), invalidCredentials (49),
-     * insufficientAccessRights (50), busy (51), unavailable (52),
-     * unwillingToPerform (53), loopDetect (54), -- 55-63 unused --
-     * namingViolation (64), objectClassViolation (65), notAllowedOnNonLeaf
-     * (66), notAllowedOnRDN (67), entryAlreadyExists (68),
-     * objectClassModsProhibited (69), -- 70 reserved for CLDAP --
-     * affectsMultipleDSAs (71), -- new -- 72-79 unused -- other (80) }, --
-     * 81-90 reserved for APIs --
+     * The result code. The different values are : 
+     * 
+     * success                                  (0), 
+     * operationsError                          (1), 
+     * protocolError                            (2), 
+     * timeLimitExceeded                        (3), 
+     * sizeLimitExceeded                        (4),
+     * compareFalse                             (5), 
+     * compareTrue                              (6), 
+     * authMethodNotSupported                   (7),
+     * strongAuthRequired                       (8), 
+     *                                          -- 9 reserved -- 
+     * referral                                 (10), -- new 
+     * adminLimitExceeded                       (11), -- new 
+     * unavailableCriticalExtension             (12), -- new 
+     * confidentialityRequired                  (13), -- new 
+     * saslBindInProgress                       (14), -- new
+     * noSuchAttribute                          (16), 
+     * undefinedAttributeType                   (17), 
+     * inappropriateMatching                    (18), 
+     * constraintViolation                      (19), 
+     * attributeOrValueExists                   (20),
+     * invalidAttributeSyntax                   (21), 
+     *                                          -- 22-31 unused -- 
+     * noSuchObject                             (32),
+     * aliasProblem                             (33), 
+     * invalidDNSyntax                          (34), 
+     *                                          -- 35 reserved for undefined isLeaf -- 
+     * aliasDereferencingProblem                (36), 
+     *                                          -- 37-47 unused --
+     * inappropriateAuthentication              (48), 
+     * invalidCredentials                       (49),
+     * insufficientAccessRights                 (50), 
+     * busy                                     (51), 
+     * unavailable                              (52),
+     * unwillingToPerform                       (53), 
+     * loopDetect                               (54), 
+     *                                          -- 55-63 unused --
+     * namingViolation                          (64), 
+     * objectClassViolation                     (65), 
+     * notAllowedOnNonLeaf                      (66), 
+     * notAllowedOnRDN                          (67), 
+     * entryAlreadyExists                       (68),
+     * objectClassModsProhibited                (69), 
+     *                                          -- 70 reserved for CLDAP --
+     * affectsMultipleDSAs                      (71), -- new 
+     *                                          -- 72-79 unused -- 
+     * other                                    (80) 
+     * }                                        -- 81-90 reserved for APIs --
      */
     private int resultCode;
 
@@ -73,7 +103,10 @@
     private LdapDN matchedDN;
 
     /** The error message */
-    private LdapString errorMessage;
+    private String errorMessage;
+    
+    /** Temporary storage for message bytes */
+    private transient byte[] errorMessageBytes;
 
     /** The referrals, if any. This is an optional element */
     private ArrayList referrals;
@@ -90,7 +123,6 @@
      */
     public LdapResult()
     {
-        referrals = new ArrayList();
     }
 
 
@@ -98,23 +130,30 @@
     // ------------------------------------------------------------------------------------
 
     /**
+     * Initialize the referrals list
+     */
+    public void initReferrals()
+    {
+        referrals = new ArrayList();
+    }
+    
+    /**
      * Get the error message
      * 
      * @return Returns the errorMessage.
      */
     public String getErrorMessage()
     {
-        return ( ( errorMessage == null ) ? null : errorMessage.getString() );
+        return errorMessage;
     }
 
 
     /**
      * Set the error message
      * 
-     * @param errorMessage
-     *            The errorMessage to set.
+     * @param errorMessage The errorMessage to set.
      */
-    public void setErrorMessage( LdapString errorMessage )
+    public void setErrorMessage( String errorMessage )
     {
         this.errorMessage = errorMessage;
     }
@@ -134,8 +173,7 @@
     /**
      * Set the Matched DN
      * 
-     * @param matchedDN
-     *            The matchedDN to set.
+     * @param matchedDN The matchedDN to set.
      */
     public void setMatchedDN( LdapDN matchedDN )
     {
@@ -157,8 +195,7 @@
     /**
      * Add a referral
      * 
-     * @param referral
-     *            The referral to add.
+     * @param referral The referral to add.
      */
     public void addReferral( LdapURL referral )
     {
@@ -180,8 +217,7 @@
     /**
      * Set the result code
      * 
-     * @param resultCode
-     *            The resultCode to set.
+     * @param resultCode The resultCode to set.
      */
     public void setResultCode( int resultCode )
     {
@@ -190,15 +226,28 @@
 
 
     /**
-     * Compute the LdapResult length LdapResult : 0x0A 01 resultCode (0..80)
-     * 0x04 L1 matchedDN (L1 = Length(matchedDN)) 0x04 L2 errorMessage (L2 =
-     * Length(errorMessage)) [0x83 L3] referrals | +--> 0x04 L4 referral +-->
-     * 0x04 L5 referral +--> ... +--> 0x04 Li referral +--> ... +--> 0x04 Ln
-     * referral L1 = Length(matchedDN) L2 = Length(errorMessage) L3 =
-     * n*Length(0x04) + sum(Length(L4) .. Length(Ln)) + sum(L4..Ln) L4..n =
-     * Length(0x04) + Length(Li) + Li Length(LdapResult) = Length(0x0x0A) +
-     * Length(0x01) + 1 + Length(0x04) + Length(L1) + L1 + Length(0x04) +
-     * Length(L2) + L2 + Length(0x83) + Length(L3) + L3
+     * Compute the LdapResult length 
+     * 
+     * LdapResult : 
+     * 0x0A 01 resultCode (0..80)
+     *   0x04 L1 matchedDN (L1 = Length(matchedDN)) 
+     *   0x04 L2 errorMessage (L2 = Length(errorMessage)) 
+     *   [0x83 L3] referrals 
+     *     | 
+     *     +--> 0x04 L4 referral 
+     *     +--> 0x04 L5 referral 
+     *     +--> ... 
+     *     +--> 0x04 Li referral 
+     *     +--> ... 
+     *     +--> 0x04 Ln referral 
+     *     
+     * L1 = Length(matchedDN) 
+     * L2 = Length(errorMessage) 
+     * L3 = n*Length(0x04) + sum(Length(L4) .. Length(Ln)) + sum(L4..Ln) 
+     * L4..n = Length(0x04) + Length(Li) + Li 
+     * Length(LdapResult) = Length(0x0x0A) +
+     *      Length(0x01) + 1 + Length(0x04) + Length(L1) + L1 + Length(0x04) +
+     *      Length(L2) + L2 + Length(0x83) + Length(L3) + L3
      */
     public int computeLength()
     {
@@ -214,11 +263,12 @@
         }
         else
         {
-            ldapResultLength += 1 + Length.getNbBytes( LdapDN.getNbBytes( matchedDN ) ) + LdapDN.getNbBytes( matchedDN );
+            ldapResultLength += 1 + TLV.getNbBytes( LdapDN.getNbBytes( matchedDN ) ) + LdapDN.getNbBytes( matchedDN );
         }
 
         // The errorMessage length
-        ldapResultLength += 1 + Length.getNbBytes( errorMessage.getNbBytes() ) + errorMessage.getNbBytes();
+        errorMessageBytes = StringTools.getBytesUtf8( errorMessage ); 
+        ldapResultLength += 1 + TLV.getNbBytes( errorMessageBytes.length ) + errorMessageBytes.length;
 
         if ( ( referrals != null ) && ( referrals.size() != 0 ) )
         {
@@ -231,11 +281,11 @@
             {
                 LdapURL referral = ( LdapURL ) referralIterator.next();
 
-                referralsLength += 1 + Length.getNbBytes( referral.getNbBytes() ) + referral.getNbBytes();
+                referralsLength += 1 + TLV.getNbBytes( referral.getNbBytes() ) + referral.getNbBytes();
             }
 
             // The referrals
-            ldapResultLength += 1 + Length.getNbBytes( referralsLength ) + referralsLength;
+            ldapResultLength += 1 + TLV.getNbBytes( referralsLength ) + referralsLength;
         }
 
         return ldapResultLength;
@@ -245,8 +295,7 @@
     /**
      * Encode the LdapResult message to a PDU.
      * 
-     * @param buffer
-     *            The buffer where to put the PDU
+     * @param buffer The buffer where to put the PDU
      * @return The PDU.
      */
     public ByteBuffer encode( ByteBuffer buffer ) throws EncoderException
@@ -272,7 +321,7 @@
         Value.encode( buffer, LdapDN.getBytes( matchedDN ) );
 
         // The error message
-        Value.encode( buffer, errorMessage.getBytes() );
+        Value.encode( buffer, errorMessageBytes );
 
         // The referrals, if any
         if ( ( referrals != null ) && ( referrals.size() != 0 ) )
@@ -280,7 +329,7 @@
             // Encode the referrals sequence
             // The referrals length MUST have been computed before !
             buffer.put( ( byte ) LdapConstants.LDAP_RESULT_REFERRAL_SEQUENCE_TAG );
-            buffer.put( Length.getBytes( referralsLength ) );
+            buffer.put( TLV.getBytes( referralsLength ) );
 
             // Each referral
             Iterator referralIterator = referrals.iterator();
@@ -549,8 +598,8 @@
                 sb.append( "Unknown error code : " ).append( resultCode );
         }
 
-        sb.append( "            Matched DN : '" ).append( matchedDN.toString() ).append( "'\n" );
-        sb.append( "            Error message : '" ).append( errorMessage.toString() ).append( "'\n" );
+        sb.append( "            Matched DN : '" ).append( matchedDN == null ? "": matchedDN.toString() ).append( "'\n" );
+        sb.append( "            Error message : '" ).append( errorMessage == null ? "" : errorMessage.toString() ).append( "'\n" );
 
         if ( referrals.size() != 0 )
         {
@@ -561,7 +610,7 @@
 
                 LdapURL referral = ( LdapURL ) referrals.get( i );
 
-                sb.append( "                Referral[" ).append( i ).append( "] :" ).append( referral.toString() )
+                sb.append( "                Referral[" ).append( i ).append( "] :" ).append( referral == null ? "" : referral.toString() )
                     .append( '\n' );
             }
         }