CannotDisseminateFormatException, NoItemsMatchException
CannotDisseminateFormatException, NoItemsMatchException, BadArgumentException
    public Map listRecords(String from, String until, String set, String metadataPrefix)        throws OAIInternalServerError, NoSetHierarchyException,            CannotDisseminateFormatException, NoItemsMatchException    {        log.info(LogManager.getHeader(null,            "oai_request",            "verb=listRecords,from=" + (from == null ? "null" : from) +            ",until=" + (until == null ? "null" : until) +            ",set=" + (set == null ? "null" : set) +            ",metadataPrefix=" + (metadataPrefix == null ? "null" : metadataPrefix)));        Map m = doRecordHarvest(from, until, set, metadataPrefix, 0);        // Null means bad metadata prefix was bad        if (m == null)        {            log.info(LogManager.getHeader(null,                "oai_error",                "cannot_disseminate_format"));            throw new CannotDisseminateFormatException(metadataPrefix);        }        // If there were zero results, return the appropriate error        Iterator i = (Iterator) m.get("records");        if (i == null || !i.hasNext())        {            log.info(LogManager.getHeader(null,                "oai_error",                "no_items_match"));            throw new NoItemsMatchException();        }        return m;    }