@Override
public Object open(Archivist main, ReadableArchive earArchive, final RootDeploymentDescriptor descriptor) throws IOException, SAXParseException {
if(logger.isLoggable(Level.FINE)) {
logger.logp(Level.FINE, "EarArchivist",
"readPersistenceDeploymentDescriptors", "archive = {0}",
earArchive.getURI());
}
Map<String, ReadableArchive> probablePersitenceArchives = new HashMap<String, ReadableArchive>();
try {
final Application app = Application.class.cast(descriptor);
EARBasedPersistenceHelper.addLibraryAndTopLevelCandidates(earArchive, app, true ,
probablePersitenceArchives);
for(Map.Entry<String, ReadableArchive> pathToArchiveEntry : probablePersitenceArchives.entrySet()) {
readPersistenceDeploymentDescriptor(main, pathToArchiveEntry.getValue(), pathToArchiveEntry.getKey(), descriptor);
}
} finally {
for(Archive subArchive : probablePersitenceArchives.values()) {
subArchive.close();
}
}
return null;
}