private final String writeQDescrs(Attribute attr) throws NamingException {
switch (attr.size()) {
case 0:
    throw new InvalidAttributeValueException(attr.getID() + "has no values");
case 1:
  return writeQDString(attr);
}
StringBuffer qdList=new StringBuffer(attr.getID());
qdList.append(WHSP);
qdList.append(OID_LIST_BEGIN);
NamingEnumeration<?> values=attr.getAll();
while (values.hasMore()) {
qdList.append(WHSP);
qdList.append(SINGLE_QUOTE);
qdList.append((String)values.next());
qdList.append(SINGLE_QUOTE);
qdList.append(WHSP);
}
qdList.append(OID_LIST_END);
qdList.append(WHSP);
return qdList.toString();
}

private final String writeQDescrs ( Attribute attr ) throws NamingException { switch ( attr . size ( ) ) { case 0 : throw new InvalidAttributeValueException ( attr . getID ( ) + "has no values" ) ; case 1 : return writeQDString ( attr ) ; } StringBuffer qdList = new StringBuffer ( attr . getID ( ) ) ; qdList . append ( WHSP ) ; qdList . append ( OID_LIST_BEGIN ) ; NamingEnumeration < ? > values = attr . getAll ( ) ; while ( values . hasMore ( ) ) { qdList . append ( WHSP ) ; qdList . append ( SINGLE_QUOTE ) ; qdList . append ( ( String ) values . next ( ) ) ; qdList . append ( SINGLE_QUOTE ) ; qdList . append ( WHSP ) ; } qdList . append ( OID_LIST_END ) ; qdList . append ( WHSP ) ; return qdList . toString ( ) ; }
qdescrs = qdescr / ( whsp " ( " qdescrlist " ) " whsp ) qdescrlist = [ qdescr * ( qdescr ) ] qdescr = whsp " ' " descr " ' " whsp descr = keystring
