Index: modules/jndi/src/test/java/org/apache/harmony/jndi/tests/javax/naming/ldap/RdnTest.java =================================================================== --- modules/jndi/src/test/java/org/apache/harmony/jndi/tests/javax/naming/ldap/RdnTest.java (revision 548571) +++ modules/jndi/src/test/java/org/apache/harmony/jndi/tests/javax/naming/ldap/RdnTest.java (working copy) @@ -544,6 +544,15 @@ } catch (InvalidNameException e) {} } + public void testRdnString027() { + try { + Rdn rdn1 = new Rdn("t", "test"); + Rdn rdn2 = new Rdn("t = test + t = test"); + assertFalse(rdn1.equals(rdn2)); + assertEquals(rdn1.toAttributes(), rdn2.toAttributes()); + } catch (InvalidNameException e) {} + } + /** *

* Test method for 'javax.naming.ldap.Rdn.Rdn(Rdn)' Index: modules/jndi/src/main/java/javax/naming/ldap/Rdn.java =================================================================== --- modules/jndi/src/main/java/javax/naming/ldap/Rdn.java (revision 548571) +++ modules/jndi/src/main/java/javax/naming/ldap/Rdn.java (working copy) @@ -31,10 +31,12 @@ import javax.naming.NamingException; import javax.naming.directory.Attribute; import javax.naming.directory.Attributes; +import javax.naming.directory.BasicAttribute; import javax.naming.directory.BasicAttributes; import org.apache.harmony.jndi.internal.nls.Messages; import org.apache.harmony.jndi.internal.parser.LdapRdnParser; +import org.apache.harmony.jndi.internal.parser.LdapTypeAndValueList; /** * @@ -182,13 +184,18 @@ } private List convertToAttributeArrayList(Attributes attrList) { - List myList = new ArrayList(); + LdapTypeAndValueList myList = new LdapTypeAndValueList(); NamingEnumeration ne = attrList.getAll(); - while (ne.hasMoreElements()) { - myList.add((Attribute)ne.nextElement().clone()); + try { + while (ne.hasMoreElements()) { + Attribute attr = ne.nextElement(); + myList.put(attr.getID(), attr.get()); + } + } catch (NamingException e){ + } - return myList; + return myList.toAttributeList(); } /** @@ -309,11 +316,21 @@ * @ar.org.fitc.spec_ref */ public Attributes toAttributes() { - BasicAttributes ba = new BasicAttributes(true); + BasicAttributes bas = new BasicAttributes(true); for (Iterator iter = list.iterator(); iter.hasNext();) { - ba.put((Attribute) iter.next().clone()); + Attribute attr = iter.next(); + BasicAttribute ba = new BasicAttribute(attr.getID(), false); + try { + NamingEnumeration nameEnum = attr.getAll(); + while (nameEnum.hasMore()) { + ba.add(nameEnum.next()); + } + } catch (NamingException ne) { + + } + bas.put(ba); } - return ba; + return bas; } /**