/** * Take the primitive archive and run it through the list of discriminators to convert it to the * correct specialized type; after after conversion, tell the archive to initalize itself if * necessary. */ protected Archive openSpecificArchive(Archive anArchive, ArchiveTypeDiscriminator disc) throws OpenFailureException { if (!disc.canImport(anArchive)) { anArchive.close(); throw new OpenFailureException(disc.getUnableToOpenMessage()); } Archive specificArchive = disc.openArchive(anArchive); specificArchive.initializeAfterOpen(); return specificArchive; }