Author: dblevins
Date: Thu Jul 21 01:35:17 2011
New Revision: 1149003
URL: http://svn.apache.org/viewvc?rev=1149003&view=rev
Log:
GERONIMO-6089: Support for CDI beans in ear lib directory
Modified:
geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder.java
Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder.java?rev=1149003&r1=1149002&r2=1149003&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder.java
(original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder.java
Thu Jul 21 01:35:17 2011
@@ -1026,6 +1026,8 @@ public class EARConfigBuilder implements
applicationInfo.getModules().add(module);
}
}
+
+ discoverWebBeans(earFile, application,environment, applicationInfo, idBuilder,
altVendorDDs);
}
//all the modules in the geronimo plan should have been found by now.
@@ -1144,6 +1146,42 @@ public class EARConfigBuilder implements
}
}
+ private void discoverWebBeans(JarFile earFile, Application application, Environment environment,
Module applicationInfo, ModuleIDBuilder idBuilder, Map<String, Object> altVendorDDs)
throws DeploymentException {
+ Enumeration<JarEntry> entries = earFile.entries();
+ while (entries.hasMoreElements()) {
+ ZipEntry entry = entries.nextElement();
+ if (entry.getName().endsWith(".jar") && isLibraryEntry(application, entry))
{
+ try {
+ NestedJarFile moduleFile = new NestedJarFile(earFile, entry.getName());
+
+ if (moduleFile.getEntry("META-INF/beans.xml") == null) continue;
+
+ //ask the ejb builder if its an ejb module
+ ModuleBuilder builder = getEjbConfigBuilder();
+ if (builder == null) {
+ continue;
+ }
+
+ Module module = builder.createModule(altVendorDDs.get(entry.getName()),
+ moduleFile,
+ entry.getName(),
+ null,
+ environment,
+ null,
+ applicationInfo,
+ naming, idBuilder);
+
+ if (module != null) {
+ applicationInfo.getModuleLocations().add(entry.getName());
+ applicationInfo.getModules().add(module);
+ }
+ } catch (IOException e) {
+ throw new DeploymentException("Invalid moduleFile: " + entry.getName(),
e);
+ }
+ }
+ }
+ }
+
private ArtifactResolver getArtifactResolver() throws DeploymentException {
if (artifactResolvers == null || artifactResolvers.isEmpty()) {
throw new DeploymentException("No artifact resolver supplied to resolve external
module");
|