protected PersistenceUnitsDescriptor readPersistenceDeploymentDescriptor(Archivist main,
ReadableArchive subArchive, String puRoot, RootDeploymentDescriptor descriptor)
throws IOException, SAXParseException {
final String subArchiveURI = subArchive.getURI().getSchemeSpecificPart();
if (logger.isLoggable(Level.FINE)) {
logger.logp(Level.FINE, "Archivist",
"readPersistenceDeploymentDescriptor",
"PURoot = [{0}] subArchive = {1}",
new Object[]{puRoot, subArchiveURI});
}
if (descriptor.getExtensionsDescriptors(PersistenceUnitsDescriptor.class, puRoot) != null) {
if (logger.isLoggable(Level.FINE)) {
logger.logp(Level.FINE, "Archivist",
"readPersistenceDeploymentDescriptor",
"PU has been already read for = {0}",
subArchiveURI);
}
return null;
}
PersistenceUnitsDescriptor persistenceUnitsDescriptor =
PersistenceUnitsDescriptor.class.cast(super.open(main, subArchive, descriptor));
if (persistenceUnitsDescriptor!=null) {
persistenceUnitsDescriptor.setParent(descriptor);
persistenceUnitsDescriptor.setPuRoot(puRoot);
descriptor.addExtensionDescriptor(PersistenceUnitsDescriptor.class,persistenceUnitsDescriptor, puRoot);
}
return persistenceUnitsDescriptor;
}