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/08/29 07:29:07 UTC

svn commit: r264071 - /directory/shared/ldap/branches/new-codec-integration/apache2-provider/src/java/main/org/apache/asn1new/ldap/pojo/SearchResultEntry.java

Author: elecharny
Date: Sun Aug 28 22:29:02 2005
New Revision: 264071

URL: http://svn.apache.org/viewcvs?rev=264071&view=rev
Log:
- switched from ArrayList to Attributes for attributes
- dealt with attribute's values (which may not be OctetString, but String or byte[])
- minor cleaning

Modified:
    directory/shared/ldap/branches/new-codec-integration/apache2-provider/src/java/main/org/apache/asn1new/ldap/pojo/SearchResultEntry.java

Modified: directory/shared/ldap/branches/new-codec-integration/apache2-provider/src/java/main/org/apache/asn1new/ldap/pojo/SearchResultEntry.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/branches/new-codec-integration/apache2-provider/src/java/main/org/apache/asn1new/ldap/pojo/SearchResultEntry.java?rev=264071&r1=264070&r2=264071&view=diff
==============================================================================
--- directory/shared/ldap/branches/new-codec-integration/apache2-provider/src/java/main/org/apache/asn1new/ldap/pojo/SearchResultEntry.java (original)
+++ directory/shared/ldap/branches/new-codec-integration/apache2-provider/src/java/main/org/apache/asn1new/ldap/pojo/SearchResultEntry.java Sun Aug 28 22:29:02 2005
@@ -21,21 +21,22 @@
 import org.apache.asn1new.ber.tlv.UniversalTag;
 import org.apache.asn1new.ber.tlv.Value;
 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.primitives.LdapDN;
 import org.apache.asn1new.ldap.codec.primitives.LdapString;
 
 import java.nio.BufferOverflowException;
 import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 
 import javax.naming.NamingEnumeration;
 import javax.naming.NamingException;
 import javax.naming.directory.Attribute;
+import javax.naming.directory.Attributes;
 import javax.naming.directory.BasicAttribute;
+import javax.naming.directory.BasicAttributes;
 
 
 /**
@@ -66,10 +67,7 @@
     private LdapDN objectName;
 
     /** The attributes list. It contains javax.naming.directory.Attribute */
-    private ArrayList partialAttributeList;
-
-    /** The attributes list expected length */
-    //private transient int partialAttributesListExpectedLength;
+    private Attributes partialAttributeList;
 
     /** The current attribute being decoded */
     private transient Attribute currentAttributeValue;
@@ -133,12 +131,22 @@
      *
      * @return Returns the partialAttributeList.
      */
-    public ArrayList getPartialAttributeList()
+    public Attributes getPartialAttributeList()
     {
         return partialAttributeList;
     }
 
     /**
+     * Initialize the partial Attribute list.
+     *
+     */
+    public void setPartialAttributeList(Attributes partialAttributeList)
+    {
+
+        this.partialAttributeList = (Attributes)partialAttributeList;
+    }
+
+    /**
      * Initialize the partial Attribute list if needed, otherwise add the current
      * Attribute Value to the list.
      *
@@ -148,31 +156,11 @@
 
         if ( currentAttributeValue == null )
         {
-            partialAttributeList = new ArrayList();
+            partialAttributeList = new BasicAttributes( true );
         }
     }
 
     /**
-     * Get the partial attributes list length
-     *
-     * @return Returns the partialAttributesListExpectedLength.
-     */
-    //public int getPartialAttributesListExpectedLength()
-    //{
-    //    return partialAttributesListExpectedLength;
-    //}
-
-    /**
-     * Set the partial attributes list length
-     *
-     * @param partialAttributesListExpectedLength The partialAttributesListExpectedLength to set.
-     */
-    //public void setPartialAttributesListExpectedLength( int partialAttributesListExpectedLength )
-    //{
-    //    this.partialAttributesListExpectedLength = partialAttributesListExpectedLength;
-    //}
-
-    /**
      * Create a new attributeValue
      * @param type The attribute's name
      */
@@ -180,7 +168,7 @@
     {
         currentAttributeValue = new BasicAttribute( type.toString().toLowerCase() );
 
-        partialAttributeList.add( currentAttributeValue );
+        partialAttributeList.put( currentAttributeValue );
     }
 
     /**
@@ -242,14 +230,14 @@
         
         if ( ( partialAttributeList != null ) && ( partialAttributeList.size() != 0 ) )
         {
-            Iterator attributeIterator = partialAttributeList.iterator();
+            NamingEnumeration attributes = partialAttributeList.getAll();
             attributeLength = new LinkedList();
             valsLength = new LinkedList();
             
             // Compute the attributes length
-            while ( attributeIterator.hasNext() )
+            while ( attributes.hasMoreElements() )
             {
-                Attribute attribute = (Attribute)attributeIterator.next();
+                Attribute attribute = (Attribute)attributes.nextElement();
                 int localAttributeLength = 0;
                 int localValuesLength = 0;
                 
@@ -268,9 +256,24 @@
 	                    
 		                while ( values.hasMoreElements() )
 		                {
-		                    OctetString value = (OctetString)values.next();
+		                    Object value = (Object)values.next();
+		                    
+		                    if ( value instanceof String )
+		                    {
+		                    	String stringValue = (String)value;
+	                            localValuesLength += 1 + Length.getNbBytes( stringValue.length() ) + stringValue.getBytes().length;
+		                    }
+		                    else if ( value instanceof OctetString )
+		                    {
+		                    	OctetString octetStringValue = (OctetString)value;
+	                            localValuesLength += 1 + Length.getNbBytes( octetStringValue.getValue().length ) + octetStringValue.getLength();
+		                    }
+		                    else
+		                    {
+		                    	byte[] binaryValue = (byte[])value;
+	                            localValuesLength += 1 + Length.getNbBytes( binaryValue.length ) + binaryValue.length;
+		                    }
 		                    
-                            localValuesLength += 1 + Length.getNbBytes( value.getLength() ) + value.getLength();
 		                }
 
                         localAttributeLength += 1 + Length.getNbBytes( localValuesLength ) + localValuesLength; 
@@ -344,13 +347,13 @@
             // The partial attribute list
             if ( ( partialAttributeList != null ) && ( partialAttributeList.size() != 0 ) )
             {
-                Iterator attributeIterator = partialAttributeList.iterator();
+                NamingEnumeration attributes = partialAttributeList.getAll();
                 int attributeNumber = 0;
                 
                 // Compute the attributes length
-                while ( attributeIterator.hasNext() )
+                while ( attributes.hasMoreElements() )
                 {
-                    Attribute attribute = (Attribute)attributeIterator.next();
+                    Attribute attribute = (Attribute)attributes.nextElement();
                     
                     // The partial attribute list sequence
                     buffer.put( UniversalTag.SEQUENCE_TAG );
@@ -373,9 +376,20 @@
                         {
                             while ( values.hasMoreElements() )
                             {
-                                OctetString value = (OctetString)values.next();
+                                Object value = values.next();
                                 
-                                Value.encode( buffer, value );
+                                if ( value instanceof String )
+                                {
+                                	Value.encode( buffer, (String)value );
+                                }
+                                else if ( value instanceof OctetString )
+                                {
+                                	Value.encode( buffer, (OctetString)value );
+                                }
+                                else
+                                {
+                                	Value.encode( buffer, (byte[])value );
+                                }
                             }
                         }
                         
@@ -419,12 +433,12 @@
         else
         {
 
-            Iterator attributesIter = partialAttributeList.iterator();
+            NamingEnumeration attributes = partialAttributeList.getAll();
 
-            while ( attributesIter.hasNext() )
+            while ( attributes.hasMoreElements() )
             {
 
-                Attribute attribute = ( Attribute ) attributesIter.next();
+                Attribute attribute = ( Attribute ) attributes.nextElement();
 
                 sb.append( "            Name : '" ).append( attribute.getID() ).append( "'\n" );
 
@@ -439,11 +453,19 @@
 
                         while ( values.hasMore() )
                         {
+                        	Object value = values.nextElement();
+                        	sb.append( "                '" );
+                        	
+                        	if ( value instanceof String )
+                        	{
+                        		sb.append( value );
+                        	}
+                        	else
+                        	{
+                        		sb.append( StringUtils.dumpBytes( (byte[])value ) );
+                        	}
 
-                            OctetString value = ( OctetString ) values.next();
-
-                            sb.append( "                '" ).append( value.toString() ).append(
-                                "'\n" );
+                            sb.append("'\n" );
                         }
                     }
                     else