Author: dain
Date: Sat Sep 15 15:27:13 2007
New Revision: 575993
URL: http://svn.apache.org/viewvc?rev=575993&view=rev
Log:
Process annotations and env.properties for web apps
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EnvEntriesPropertiesDeployer.java
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?rev=575993&r1=575992&r2=575993&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
Sat Sep 15 15:27:13 2007
@@ -63,6 +63,10 @@
import org.apache.openejb.jee.SecurityRoleRef;
import org.apache.openejb.jee.TimerConsumer;
import org.apache.openejb.jee.SessionType;
+import org.apache.openejb.jee.WebApp;
+import org.apache.openejb.jee.Servlet;
+import org.apache.openejb.jee.Filter;
+import org.apache.openejb.jee.Listener;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
import org.apache.xbean.finder.ClassFinder;
@@ -123,6 +127,7 @@
import java.util.TreeSet;
import java.util.Properties;
import java.util.HashMap;
+import java.util.HashSet;
/**
* @version $Rev$ $Date$
@@ -178,6 +183,12 @@
for (ClientModule clientModule : appModule.getClientModules()) {
deploy(clientModule);
}
+ for (ResourceModule resourceModule :
appModule.getResourceModules()) {
+ deploy(resourceModule);
+ }
+ for (WebModule webModule : appModule.getWebModules()) {
+ deploy(webModule);
+ }
return appModule;
}
@@ -185,6 +196,14 @@
return clientModule;
}
+ public ResourceModule deploy(ResourceModule resourceModule) throws
OpenEJBException {
+ return resourceModule;
+ }
+
+ public WebModule deploy(WebModule webModule) throws OpenEJBException {
+ return webModule;
+ }
+
public EjbModule deploy(EjbModule ejbModule) throws OpenEJBException {
if (ejbModule.getEjbJar() != null &&
ejbModule.getEjbJar().isMetadataComplete()) return ejbModule;
@@ -313,6 +332,12 @@
for (ClientModule clientModule : appModule.getClientModules()) {
deploy(clientModule);
}
+ for (ResourceModule resourceModule :
appModule.getResourceModules()) {
+ deploy(resourceModule);
+ }
+ for (WebModule webModule : appModule.getWebModules()) {
+ deploy(webModule);
+ }
return appModule;
}
@@ -333,6 +358,57 @@
return clientModule;
}
+ public ResourceModule deploy(ResourceModule resourceModule) throws
OpenEJBException {
+ // resource modules currently don't have any annotations
+ return resourceModule;
+ }
+
+ public WebModule deploy(WebModule webModule) throws OpenEJBException {
+ WebApp webApp = webModule.getWebApp();
+ if (webApp != null && webApp.isMetadataComplete()) return
webModule;
+
+ Set<Class<?>> classes = new HashSet<Class<?>>();
+ for (Servlet servlet : webApp.getServlet()) {
+ String servletClass = servlet.getServletClass();
+ if (servletClass != null) {
+ try {
+ Class clazz =
webModule.getClassLoader().loadClass(servletClass);
+ classes.add(clazz);
+ } catch (ClassNotFoundException e) {
+ throw new OpenEJBException("Unable to load servlet
class: " + servletClass, e);
+ }
+ }
+ }
+ for (Filter filter : webApp.getFilter()) {
+ String filterClass = filter.getFilterClass();
+ if (filterClass != null) {
+ try {
+ Class clazz =
webModule.getClassLoader().loadClass(filterClass);
+ classes.add(clazz);
+ } catch (ClassNotFoundException e) {
+ throw new OpenEJBException("Unable to load servlet
filter class: " + filterClass, e);
+ }
+ }
+ }
+ for (Listener listener : webApp.getListener()) {
+ String listenerClass = listener.getListenerClass();
+ if (listenerClass != null) {
+ try {
+ Class clazz =
webModule.getClassLoader().loadClass(listenerClass);
+ classes.add(clazz);
+ } catch (ClassNotFoundException e) {
+ throw new OpenEJBException("Unable to load servlet
listener class: " + listenerClass, e);
+ }
+ }
+ }
+ ClassFinder inheritedClassFinder =
createInheritedClassFinder(classes.toArray(new Class<?>[0]));
+
+ // Currently we only process the JNDI annotations for web
applications
+ buildAnnotatedRefs(webApp, inheritedClassFinder);
+
+ return webModule;
+ }
+
public EjbModule deploy(EjbModule ejbModule) throws OpenEJBException {
if (ejbModule.getEjbJar() != null &&
ejbModule.getEjbJar().isMetadataComplete()) return ejbModule;
@@ -780,12 +856,14 @@
return ejbModule;
}
- private ClassFinder createInheritedClassFinder(Class<?> clazz) {
+ private ClassFinder createInheritedClassFinder(Class<?>... classes) {
List<Class> parents = new ArrayList<Class>();
- parents.add(clazz);
- Class parent = clazz;
- while ((parent = parent.getSuperclass()) != null) {
- parents.add(parent);
+ for (Class<?> clazz : classes) {
+ parents.add(clazz);
+ Class parent = clazz;
+ while ((parent = parent.getSuperclass()) != null) {
+ parents.add(parent);
+ }
}
return new ClassFinder(parents);
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java?rev=575993&r1=575992&r2=575993&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
Sat Sep 15 15:27:13 2007
@@ -63,6 +63,12 @@
for (ClientModule module : clientModules) {
if (module.getValidation().hasWarnings()) return true;
}
+ for (ResourceModule module : resourceModules) {
+ if (module.getValidation().hasWarnings()) return true;
+ }
+ for (WebModule module : webModules) {
+ if (module.getValidation().hasWarnings()) return true;
+ }
return false;
}
@@ -74,6 +80,12 @@
for (ClientModule module : clientModules) {
if (module.getValidation().hasFailures()) return true;
}
+ for (ResourceModule module : resourceModules) {
+ if (module.getValidation().hasFailures()) return true;
+ }
+ for (WebModule module : webModules) {
+ if (module.getValidation().hasFailures()) return true;
+ }
return false;
}
@@ -83,6 +95,12 @@
if (module.getValidation().hasErrors()) return true;
}
for (ClientModule module : clientModules) {
+ if (module.getValidation().hasErrors()) return true;
+ }
+ for (ResourceModule module : resourceModules) {
+ if (module.getValidation().hasErrors()) return true;
+ }
+ for (WebModule module : webModules) {
if (module.getValidation().hasErrors()) return true;
}
return false;
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EnvEntriesPropertiesDeployer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EnvEntriesPropertiesDeployer.java?rev=575993&r1=575992&r2=575993&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EnvEntriesPropertiesDeployer.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EnvEntriesPropertiesDeployer.java
Sat Sep 15 15:27:13 2007
@@ -52,6 +52,16 @@
}
}
+ // WebModule META-INF/env-entries.properties
+ for (WebModule webModule : appModule.getWebModules()) {
+ for (Map.Entry<String, String> entry :
getEnvEntries(webModule).entrySet()) {
+ EnvEntry envEntry = new EnvEntry(entry.getKey(),
"java.lang.String", entry.getValue());
+ apply(webModule.getWebApp(), envEntry, "WebApp");
+ }
+ }
+
+ // Resource Adapters do not have an ENC
+
// EjbJar META-INF/env-entries.properties
for (EjbModule module : appModule.getEjbModules()) {
for (Map.Entry<String, String> entry :
getEnvEntries(module).entrySet()) {
@@ -100,9 +110,10 @@
entries.add(newEntry);
}
+ @SuppressWarnings({"unchecked"})
private Map<String, String> getEnvEntries(DeploymentModule module) {
URL propsUrl = (URL) module.getAltDDs().get("env-entries.properties");
- if (propsUrl == null) return Collections.EMPTY_MAP;
+ if (propsUrl == null) return Collections.emptyMap();
try {
InputStream in = propsUrl.openStream();
@@ -112,7 +123,7 @@
return new HashMap(envEntriesProps);
} catch (IOException e) {
log.error("envprops.notLoaded", e, module.getModuleId(),
propsUrl.toExternalForm());
- return Collections.EMPTY_MAP;
+ return Collections.emptyMap();
}
}
}