identifier.substring(oaiIDPrefix.length()),
identifier.substring(OAI_ID_PREFIX.length()),
    public Vector getSchemaLocations(String identifier)        throws OAIInternalServerError, IdDoesNotExistException, NoMetadataFormatsException    {        log.info(LogManager.getHeader(null,            "oai_request",            "verb=getSchemaLocations,identifier=" + (identifier == null ? "null" : identifier)));        HarvestedItemInfo itemInfo = null;        Context context = null;        // Get the item from the DB        try        {            context = new Context();            // Valid identifiers all have prefix "oai:hostname:"                        if (identifier.startsWith(oaiIDPrefix))            {                itemInfo = Harvest.getSingle(context,                    identifier.substring(oaiIDPrefix.length()), // Strip prefix to get raw handle                    false);            }        }        catch (SQLException se)        {            // Log the error            log.warn(LogManager.getHeader(context,                "database_error",                ""), se);            throw new OAIInternalServerError(se.toString());        }        finally        {            if (context != null)            {                context.abort();            }        }        if (itemInfo == null)        {            throw new IdDoesNotExistException(identifier);        }        else        {            if (itemInfo.withdrawn)            {                throw new NoMetadataFormatsException();            }            else            {                return getRecordFactory().getSchemaLocations(itemInfo);            }        }    }