newDn.add( new Rdn( registry.lookup( rdn.getType() ).getName(), rdn.getAtav().getValue() ) );
newDn.add( new Rdn( registry.lookup( rdn.getType() ).getName(), (String)rdn.getAtav().getValue() ) );
    public LdapDN denormalizeTypes( LdapDN dn ) throws NamingException    {        LdapDN newDn = new LdapDN();                for ( int ii = 0; ii < dn.size(); ii++ )        {            Rdn rdn = dn.getRdn( ii );            if ( rdn.size() == 0 )            {                newDn.add( new Rdn() );                continue;            }            else if ( rdn.size() == 1 )            {                newDn.add( new Rdn( registry.lookup( rdn.getType() ).getName(), rdn.getAtav().getValue() ) );                continue;            }            // below we only process multi-valued rdns            StringBuffer buf = new StringBuffer();            for ( Iterator jj = rdn.iterator(); jj.hasNext(); /**/ )            {                AttributeTypeAndValue atav = ( AttributeTypeAndValue ) jj.next();                String type = registry.lookup( rdn.getType() ).getName();                buf.append( type ).append( '=' ).append( atav.getValue() );                if ( jj.hasNext() )                {                    buf.append( '+' );                }            }            newDn.add( new Rdn(buf.toString()) );        }                return newDn;    }