question: 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 ( ) ; }
target:  qdescrs         = qdescr / ( whsp "(" qdescrlist ")" whsp ) qdescrlist      = [ qdescr *( qdescr ) ] qdescr          = whsp "'" descr "'" whsp descr           = keystring