e.setClassLoader(tempClassLoader);
appModule.getEjbModules().add(e);
}
final EjbJar ejbJar;
final Node ejbJarXml = archive.get(prefix.concat(EJB_JAR_XML));
if (ejbJarXml != null) {
try {
ejbJar = ReadDescriptors.readEjbJar(ejbJarXml.getAsset().openStream());
} catch (OpenEJBException e) {
throw new OpenEJBRuntimeException(e);
}
} else {
ejbJar = new EjbJar();
}
if (ejbJar.getModuleName() == null) {
final String name = archive.getName();
if (name.endsWith("ar") && name.length() > 4) {
ejbJar.setModuleName(name.substring(0, name.length() - ".jar".length()));
} else {
ejbJar.setModuleName(name);
}
}
final EjbModule ejbModule = new EjbModule(ejbJar);
ejbModule.setClassLoader(tempClassLoader);
Node beansXml = archive.get(prefix.concat(BEANS_XML));
if (beansXml == null && WEB_INF.equals(prefix)) {
beansXml = archive.get(WEB_INF_CLASSES.concat(META_INF).concat(BEANS_XML));
}
if (beansXml != null) {
ejbModule.getAltDDs().put(BEANS_XML, new AssetSource(beansXml.getAsset()));
}
final org.apache.xbean.finder.archive.Archive finderArchive = finderArchive(beansXml, archive, tempClassLoader, additionalPaths);
ejbModule.setFinder(new FinderFactory.ModuleLimitedFinder(new AnnotationFinder(finderArchive)));
if (appModule.isWebapp()) { // war
appModule.getWebModules().iterator().next().setFinder(ejbModule.getFinder());
}
appModule.getEjbModules().add(ejbModule);
{
Node persistenceXml = archive.get(prefix.concat(PERSISTENCE_XML));
if (persistenceXml == null && WEB_INF.equals(prefix)) {
persistenceXml = archive.get(WEB_INF_CLASSES.concat(META_INF).concat(PERSISTENCE_XML));
}
if (persistenceXml != null) {
final Asset asset = persistenceXml.getAsset();
if (UrlAsset.class.isInstance(asset)) {
appModule.getAltDDs().put(PERSISTENCE_XML, Arrays.asList(get(URL.class, "url", asset)));
} else if (FileAsset.class.isInstance(asset)) {
try {
appModule.getAltDDs().put(PERSISTENCE_XML, Arrays.asList(get(File.class, "file", asset).toURI().toURL()));
} catch (MalformedURLException e) {
appModule.getAltDDs().put(PERSISTENCE_XML, Arrays.asList(new AssetSource(persistenceXml.getAsset())));
}
} else if (ClassLoaderAsset.class.isInstance(asset)) {
final URL url = get(ClassLoader.class, "classLoader", asset).getResource(get(String.class, "resourceName", asset));
if (url != null) {
appModule.getAltDDs().put(PERSISTENCE_XML, Arrays.asList(url));
} else {
appModule.getAltDDs().put(PERSISTENCE_XML, Arrays.asList(new AssetSource(persistenceXml.getAsset())));
}
} else {
appModule.getAltDDs().put(PERSISTENCE_XML, Arrays.asList(new AssetSource(persistenceXml.getAsset())));
}
}
}
{
final Node openejbJarXml = archive.get(prefix.concat(OPENEJB_JAR_XML));
if (openejbJarXml != null) {
ejbModule.getAltDDs().put(OPENEJB_JAR_XML, new AssetSource(openejbJarXml.getAsset()));
}
}
{
final Node validationXml = archive.get(prefix.concat(VALIDATION_XML));
if (validationXml != null) {
ejbModule.getAltDDs().put(VALIDATION_XML, new AssetSource(validationXml.getAsset()));
}
}
{
final Node envEntriesProperties = archive.get(prefix.concat(ENV_ENTRIES_PROPERTIES));
if (envEntriesProperties != null) {
InputStream is = null;
final Properties properties = new Properties();
try {
is = envEntriesProperties.getAsset().openStream();
properties.load(is);
ejbModule.getAltDDs().put(ENV_ENTRIES_PROPERTIES, properties);
// do it for test class too
appModule.getEjbModules().iterator().next().getAltDDs().put(ENV_ENTRIES_PROPERTIES, properties);