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 2012/05/01 14:53:35 UTC

svn commit: r1332635 - in /directory/shared/trunk/ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators: AddRequestDecorator.java BindRequestDecorator.java DeleteRequestDecorator.java SearchResultEntryDecorator.java

Author: elecharny
Date: Tue May  1 12:53:34 2012
New Revision: 1332635

URL: http://svn.apache.org/viewvc?rev=1332635&view=rev
Log:
Small improvements in the message codecs

Modified:
    directory/shared/trunk/ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators/AddRequestDecorator.java
    directory/shared/trunk/ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators/BindRequestDecorator.java
    directory/shared/trunk/ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators/DeleteRequestDecorator.java
    directory/shared/trunk/ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators/SearchResultEntryDecorator.java

Modified: directory/shared/trunk/ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators/AddRequestDecorator.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators/AddRequestDecorator.java?rev=1332635&r1=1332634&r2=1332635&view=diff
==============================================================================
--- directory/shared/trunk/ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators/AddRequestDecorator.java (original)
+++ directory/shared/trunk/ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators/AddRequestDecorator.java Tue May  1 12:53:34 2012
@@ -62,6 +62,9 @@ public final class AddRequestDecorator e
     /** The list of all attributes length */
     private List<Integer> attributesLength;
 
+    /** The list of all attributes Id bytes */
+    private List<byte[]> attributeIds;
+
     /** The list of all vals length */
     private List<Integer> valuesLength;
 
@@ -366,8 +369,9 @@ public final class AddRequestDecorator e
 
         if ( entry.size() != 0 )
         {
-            List<Integer> attributesLength = new LinkedList<Integer>();
-            List<Integer> valuesLength = new LinkedList<Integer>();
+            attributesLength = new LinkedList<Integer>();
+            attributeIds = new LinkedList<byte[]>();
+            valuesLength = new LinkedList<Integer>();
 
             // Compute the attributes length
             for ( Attribute attribute : entry )
@@ -376,7 +380,10 @@ public final class AddRequestDecorator e
                 int localValuesLength = 0;
 
                 // Get the type length
-                int idLength = attribute.getUpId().getBytes().length;
+                byte[] attributeIdBytes = Strings.getBytesUtf8( attribute.getUpId() );
+                attributeIds.add( attributeIdBytes );
+
+                int idLength = attributeIdBytes.length;
                 localAttributeLength = 1 + TLV.getNbBytes( idLength ) + idLength;
 
                 // The values
@@ -464,29 +471,22 @@ public final class AddRequestDecorator e
                 {
                     // The attributes list sequence
                     buffer.put( UniversalTag.SEQUENCE.getValue() );
-                    int localAttributeLength = getAttributesLength().get( attributeNumber );
+                    int localAttributeLength = attributesLength.get( attributeNumber );
                     buffer.put( TLV.getBytes( localAttributeLength ) );
 
                     // The attribute type
-                    BerValue.encode( buffer, attribute.getUpId() );
+                    BerValue.encode( buffer, attributeIds.get( attributeNumber ) );
 
                     // The values
                     buffer.put( UniversalTag.SET.getValue() );
-                    int localValuesLength = getValuesLength().get( attributeNumber );
+                    int localValuesLength = valuesLength.get( attributeNumber );
                     buffer.put( TLV.getBytes( localValuesLength ) );
 
                     if ( attribute.size() != 0 )
                     {
                         for ( Value<?> value : attribute )
                         {
-                            if ( value.isHumanReadable() )
-                            {
-                                BerValue.encode( buffer, value.getString() );
-                            }
-                            else
-                            {
-                                BerValue.encode( buffer, value.getBytes() );
-                            }
+                            BerValue.encode( buffer, value.getBytes() );
                         }
                     }
 

Modified: directory/shared/trunk/ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators/BindRequestDecorator.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators/BindRequestDecorator.java?rev=1332635&r1=1332634&r2=1332635&view=diff
==============================================================================
--- directory/shared/trunk/ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators/BindRequestDecorator.java (original)
+++ directory/shared/trunk/ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators/BindRequestDecorator.java Tue May  1 12:53:34 2012
@@ -6,16 +6,16 @@
  *  to you under the Apache License, Version 2.0 (the
  *  "License"); you may not use this file except in compliance
  *  with the License.  You may obtain a copy of the License at
- *  
+ * 
  *    http://www.apache.org/licenses/LICENSE-2.0
- *  
+ * 
  *  Unless required by applicable law or agreed to in writing,
  *  software distributed under the License is distributed on an
  *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  *  KIND, either express or implied.  See the License for the
  *  specific language governing permissions and limitations
- *  under the License. 
- *  
+ *  under the License.
+ * 
  */
 package org.apache.directory.shared.ldap.codec.decorators;
 
@@ -53,6 +53,15 @@ public class BindRequestDecorator extend
 
     /** The SASL credentials length */
     private int saslCredentialsLength;
+    
+    /** The bytes containing the Dn */
+    private byte[] dnBytes;
+    
+    /** The bytes containing the Name */
+    private byte[] nameBytes;
+    
+    /** The bytes containing the SaslMechanism */
+    private byte[] mechanismBytes;
 
 
     /**
@@ -318,19 +327,19 @@ public class BindRequestDecorator extend
     // The Decorator methods
     //-------------------------------------------------------------------------
     /**
-     * Compute the BindRequest length 
+     * Compute the BindRequest length
      * 
-     * BindRequest : 
+     * BindRequest :
      * <pre>
-     * 0x60 L1 
-     *   | 
-     *   +--> 0x02 0x01 (1..127) version 
-     *   +--> 0x04 L2 name 
-     *   +--> authentication 
-     *   
+     * 0x60 L1
+     *   |
+     *   +--> 0x02 0x01 (1..127) version
+     *   +--> 0x04 L2 name
+     *   +--> authentication
+     * 
      * L2 = Length(name)
-     * L3/4 = Length(authentication) 
-     * Length(BindRequest) = Length(0x60) + Length(L1) + L1 + Length(0x02) + 1 + 1 + 
+     * L3/4 = Length(authentication)
+     * Length(BindRequest) = Length(0x60) + Length(L1) + L1 + Length(0x02) + 1 + 1 +
      *      Length(0x04) + Length(L2) + L2 + Length(authentication)
      * </pre>
      */
@@ -343,14 +352,14 @@ public class BindRequestDecorator extend
         if ( !Dn.isNullOrEmpty( dn ) )
         {
             // A DN has been provided
+            dnBytes = Strings.getBytesUtf8( dn.getName() );
+            int dnLength = dnBytes.length;
 
-            bindRequestLength += 1 + TLV.getNbBytes( Dn.getNbBytes( dn ) )
-                + Dn.getNbBytes( dn );
+            bindRequestLength += 1 + TLV.getNbBytes( dnLength ) + dnLength;
         }
         else
         {
             // No DN has been provided, let's use the name as a string instead
-
             String name = getName();
 
             if ( Strings.isEmpty( name ) )
@@ -358,8 +367,10 @@ public class BindRequestDecorator extend
                 name = "";
             }
 
-            bindRequestLength += 1 + TLV.getNbBytes( name.getBytes().length )
-                + name.getBytes().length;
+            nameBytes = Strings.getBytesUtf8( name );
+            int nameLength = nameBytes.length;
+
+            bindRequestLength += 1 + TLV.getNbBytes( nameLength ) + nameLength;
         }
 
         byte[] credentials = getCredentials();
@@ -379,9 +390,8 @@ public class BindRequestDecorator extend
         }
         else
         {
-            byte[] mechanismBytes = Strings.getBytesUtf8( getSaslMechanism() );
-            int saslMechanismLength = 1 + TLV.getNbBytes( mechanismBytes.length ) + mechanismBytes.length;
-            int saslCredentialsLength = 0;
+            mechanismBytes = Strings.getBytesUtf8( getSaslMechanism() );
+            saslMechanismLength = 1 + TLV.getNbBytes( mechanismBytes.length ) + mechanismBytes.length;
 
             if ( credentials != null )
             {
@@ -392,10 +402,6 @@ public class BindRequestDecorator extend
                 + saslCredentialsLength;
 
             bindRequestLength += saslLength;
-
-            // Store the mechanism and credentials lengths
-            setSaslMechanismLength( saslMechanismLength );
-            setSaslCredentialsLength( saslCredentialsLength );
         }
 
         setBindRequestLength( bindRequestLength );
@@ -406,14 +412,14 @@ public class BindRequestDecorator extend
 
 
     /**
-     * Encode the BindRequest message to a PDU. 
+     * Encode the BindRequest message to a PDU.
      * 
-     * BindRequest : 
+     * BindRequest :
      * <pre>
-     * 0x60 LL 
-     *   0x02 LL version         0x80 LL simple 
-     *   0x04 LL name           /   
-     *   authentication.encode() 
+     * 0x60 LL
+     *   0x02 LL version         0x80 LL simple
+     *   0x04 LL name           /
+     *   authentication.encode()
      *                          \ 0x83 LL mechanism [0x04 LL credential]
      * </pre>
      * 
@@ -442,21 +448,12 @@ public class BindRequestDecorator extend
         if ( !Dn.isNullOrEmpty( dn ) )
         {
             // A DN has been provided
-
-            BerValue.encode( buffer, Dn.getBytes( dn ) );
+            BerValue.encode( buffer, dnBytes );
         }
         else
         {
             // No DN has been provided, let's use the name as a string instead
-
-            String name = getName();
-
-            if ( Strings.isEmpty( name ) )
-            {
-                name = "";
-            }
-
-            BerValue.encode( buffer, name.getBytes() );
+            BerValue.encode( buffer, nameBytes );
         }
 
         byte[] credentials = getCredentials();
@@ -498,10 +495,8 @@ public class BindRequestDecorator extend
                 // The saslAuthentication Tag
                 buffer.put( ( byte ) LdapConstants.BIND_REQUEST_SASL_TAG );
 
-                byte[] mechanismBytes = Strings.getBytesUtf8( getSaslMechanism() );
-
                 buffer.put( TLV
-                    .getBytes( getSaslMechanismLength() + getSaslCredentialsLength() ) );
+                    .getBytes( saslMechanismLength + saslCredentialsLength ) );
 
                 BerValue.encode( buffer, mechanismBytes );
 

Modified: directory/shared/trunk/ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators/DeleteRequestDecorator.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators/DeleteRequestDecorator.java?rev=1332635&r1=1332634&r2=1332635&view=diff
==============================================================================
--- directory/shared/trunk/ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators/DeleteRequestDecorator.java (original)
+++ directory/shared/trunk/ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators/DeleteRequestDecorator.java Tue May  1 12:53:34 2012
@@ -6,16 +6,16 @@
  *  to you under the Apache License, Version 2.0 (the
  *  "License"); you may not use this file except in compliance
  *  with the License.  You may obtain a copy of the License at
- *  
+ * 
  *    http://www.apache.org/licenses/LICENSE-2.0
- *  
+ * 
  *  Unless required by applicable law or agreed to in writing,
  *  software distributed under the License is distributed on an
  *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  *  KIND, either express or implied.  See the License for the
  *  specific language governing permissions and limitations
- *  under the License. 
- *  
+ *  under the License.
+ * 
  */
 package org.apache.directory.shared.ldap.codec.decorators;
 
@@ -33,6 +33,7 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.model.message.DeleteRequest;
 import org.apache.directory.shared.ldap.model.message.DeleteResponse;
 import org.apache.directory.shared.ldap.model.name.Dn;
+import org.apache.directory.shared.util.Strings;
 
 
 /**
@@ -43,6 +44,10 @@ import org.apache.directory.shared.ldap.
 public class DeleteRequestDecorator extends SingleReplyRequestDecorator<DeleteRequest, DeleteResponse>
     implements DeleteRequest
 {
+    
+    /** The bytes containing the Dn */
+    private byte[] dnBytes;
+
     /**
      * Makes a DeleteRequest a MessageDecorator.
      *
@@ -120,25 +125,28 @@ public class DeleteRequestDecorator exte
     // The Decorator methods
     //-------------------------------------------------------------------------
     /**
-     * Compute the DelRequest length 
+     * Compute the DelRequest length
      * 
-     * DelRequest : 
-     * 0x4A L1 entry 
+     * DelRequest :
+     * 0x4A L1 entry
      * 
-     * L1 = Length(entry) 
+     * L1 = Length(entry)
      * Length(DelRequest) = Length(0x4A) + Length(L1) + L1
      */
     public int computeLength()
     {
+        dnBytes = Strings.getBytesUtf8( getName().getName() );
+        int dnLength = dnBytes.length;
+        
         // The entry
-        return 1 + TLV.getNbBytes( Dn.getNbBytes( getName() ) ) + Dn.getNbBytes( getName() );
+        return 1 + TLV.getNbBytes( dnLength ) + dnLength;
     }
 
 
     /**
-     * Encode the DelRequest message to a PDU. 
+     * Encode the DelRequest message to a PDU.
      * 
-     * DelRequest : 
+     * DelRequest :
      * 0x4A LL entry
      * 
      * @param buffer The buffer where to put the PDU
@@ -151,8 +159,8 @@ public class DeleteRequestDecorator exte
             buffer.put( LdapConstants.DEL_REQUEST_TAG );
 
             // The entry
-            buffer.put( TLV.getBytes( Dn.getNbBytes( getName() ) ) );
-            buffer.put( Dn.getBytes( getName() ) );
+            buffer.put( TLV.getBytes( dnBytes.length ) );
+            buffer.put( dnBytes );
         }
         catch ( BufferOverflowException boe )
         {

Modified: directory/shared/trunk/ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators/SearchResultEntryDecorator.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators/SearchResultEntryDecorator.java?rev=1332635&r1=1332634&r2=1332635&view=diff
==============================================================================
--- directory/shared/trunk/ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators/SearchResultEntryDecorator.java (original)
+++ directory/shared/trunk/ldap/codec/core/src/main/java/org/apache/directory/shared/ldap/codec/decorators/SearchResultEntryDecorator.java Tue May  1 12:53:34 2012
@@ -36,6 +36,7 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.model.entry.DefaultAttribute;
 import org.apache.directory.shared.ldap.model.entry.Entry;
 import org.apache.directory.shared.ldap.model.entry.Attribute;
+import org.apache.directory.shared.ldap.model.entry.Value;
 import org.apache.directory.shared.ldap.model.exception.LdapException;
 import org.apache.directory.shared.ldap.model.message.SearchResultEntry;
 import org.apache.directory.shared.ldap.model.name.Dn;
@@ -64,8 +65,8 @@ public class SearchResultEntryDecorator 
     /** The list of all attributes Id bytes */
     private List<byte[]> attributeIds;
 
-    /** The list of all vals length */
-    private List<Integer> valsLength;
+    /** The list of all values length */
+    private List<Integer> valuesLength;
 
     /** The current attribute being processed */
     private Attribute currentAttribute;
@@ -165,7 +166,7 @@ public class SearchResultEntryDecorator 
      */
     public List<Integer> getValsLength()
     {
-        return valsLength;
+        return valuesLength;
     }
 
 
@@ -175,7 +176,7 @@ public class SearchResultEntryDecorator 
      */
     public void setValsLength( List<Integer> valsLength )
     {
-        this.valsLength = valsLength;
+        this.valuesLength = valsLength;
     }
 
 
@@ -317,13 +318,13 @@ public class SearchResultEntryDecorator 
 
         if ( ( entry != null ) && ( entry.size() != 0 ) )
         {
-            List<Integer> attributeLength = new LinkedList<Integer>();
+            attributeLength = new LinkedList<Integer>();
             attributeIds = new LinkedList<byte[]>();
-            List<Integer> valsLength = new LinkedList<Integer>();
+            valuesLength = new LinkedList<Integer>();
 
             // Store those lists in the object
             setAttributeLength( attributeLength );
-            setValsLength( valsLength );
+            setValsLength( valuesLength );
 
             // Compute the attributes length
             for ( Attribute attribute : entry )
@@ -332,9 +333,9 @@ public class SearchResultEntryDecorator 
                 int localValuesLength = 0;
 
                 // Get the type length
-                byte[] atrributeIdBytes = attribute.getUpId().getBytes();
-                attributeIds.add( atrributeIdBytes );
-                int idLength = atrributeIdBytes.length;
+                byte[] attributeIdBytes = Strings.getBytesUtf8( attribute.getUpId() );
+                attributeIds.add( attributeIdBytes );
+                int idLength = attributeIdBytes.length;
                 localAttributeLength = 1 + TLV.getNbBytes( idLength ) + idLength;
 
                 if ( attribute.size() != 0 )
@@ -373,7 +374,7 @@ public class SearchResultEntryDecorator 
 
                 // Store the lengths of the encoded attributes and values
                 attributeLength.add( localAttributeLength );
-                valsLength.add( localValuesLength );
+                valuesLength.add( localValuesLength );
             }
 
             // Store the lengths of the entry
@@ -443,7 +444,7 @@ public class SearchResultEntryDecorator 
                 {
                     // The partial attribute list sequence
                     buffer.put( UniversalTag.SEQUENCE.getValue() );
-                    int localAttributeLength = getAttributeLength().get( attributeNumber );
+                    int localAttributeLength = attributeLength.get( attributeNumber );
                     buffer.put( TLV.getBytes( localAttributeLength ) );
 
                     // The attribute type
@@ -451,12 +452,12 @@ public class SearchResultEntryDecorator 
 
                     // The values
                     buffer.put( UniversalTag.SET.getValue() );
-                    int localValuesLength = getValsLength().get( attributeNumber );
+                    int localValuesLength = valuesLength.get( attributeNumber );
                     buffer.put( TLV.getBytes( localValuesLength ) );
 
                     if ( attribute.size() > 0 )
                     {
-                        for ( org.apache.directory.shared.ldap.model.entry.Value<?> value : attribute )
+                        for ( Value<?> value : attribute )
                         {
                             BerValue.encode( buffer, value.getBytes() );
                         }