Author: rmannibucau
Date: Thu Aug 29 11:43:20 2013
New Revision: 1518607

URL: http://svn.apache.org/r1518607
Log:
TOMEE-1023 merging app env-entry with ejbs

Modified:
    
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
    
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/CleanEnvEntries.java

Modified: 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java?rev=1518607&r1=1518606&r2=1518607&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
 (original)
+++ 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
 Thu Aug 29 11:43:20 2013
@@ -236,8 +236,6 @@ class AppInfoBuilder {
                 // Get the ejb-jar.xml object
                 final EnterpriseBean enterpriseBean = 
beanData.get(beanInfo.ejbName);
 
-                setApplicationEnvEntries(appModule.getApplication(), 
enterpriseBean);
-
                 // Build the JNDI info tree for the EJB
                 jndiEncInfoBuilder.build(enterpriseBean, beanInfo.ejbName, 
ejbJar.moduleName, ejbModule.getModuleUri(), ejbJar.moduleJndiEnc, 
beanInfo.jndiEnc);
 
@@ -307,14 +305,6 @@ class AppInfoBuilder {
 
     }
 
-    private void setApplicationEnvEntries(final Application app, final 
EnterpriseBean enterpriseBean) {
-        if (app == null || enterpriseBean == null) {
-            return;
-        }
-
-        enterpriseBean.getEnvEntry().addAll(app.getEnvEntry());
-    }
-
     private void buildPojoConfiguration(final AppModule appModule, final 
AppInfo appInfo) {
         for (final Map.Entry<String, PojoConfiguration> config : 
appModule.getPojoConfigurations().entrySet()) {
             final IdPropertiesInfo info = new IdPropertiesInfo();

Modified: 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/CleanEnvEntries.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/CleanEnvEntries.java?rev=1518607&r1=1518606&r2=1518607&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/CleanEnvEntries.java
 (original)
+++ 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/CleanEnvEntries.java
 Thu Aug 29 11:43:20 2013
@@ -26,8 +26,10 @@ import org.apache.openejb.jee.JndiConsum
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Map;
 import java.util.Set;
 
 /**
@@ -48,63 +50,77 @@ public class CleanEnvEntries implements 
         return appModule;
     }
 
-    public AppModule removeUnsetEnvEntries(AppModule appModule) throws 
OpenEJBException {
+    public AppModule removeUnsetEnvEntries(final AppModule appModule) throws 
OpenEJBException {
+        final Map<String, EnvEntry> appEnvEntryMap = 
getAppEnvEntryMap(appModule);
 
-        for (ClientModule module : appModule.getClientModules()) {
+        for (final ClientModule module : appModule.getClientModules()) {
             final JndiConsumer consumer = module.getApplicationClient();
             if (consumer == null) continue;
 
-            removeUnsetEnvEntries(consumer);
+            removeUnsetEnvEntries(appEnvEntryMap, consumer);
         }
 
-        for (WebModule module : appModule.getWebModules()) {
+        for (final WebModule module : appModule.getWebModules()) {
             final JndiConsumer consumer = module.getWebApp();
             if (consumer == null) continue;
 
-            removeUnsetEnvEntries(consumer);
+            removeUnsetEnvEntries(appEnvEntryMap, consumer);
         }
 
-        for (EjbModule module : appModule.getEjbModules()) {
+        for (final EjbModule module : appModule.getEjbModules()) {
             final EjbJar ejbJar = module.getEjbJar();
             if (ejbJar == null) continue;
 
-            for (EnterpriseBean consumer : ejbJar.getEnterpriseBeans()) {
-                removeUnsetEnvEntries(consumer);
+            for (final EnterpriseBean consumer : ejbJar.getEnterpriseBeans()) {
+                removeUnsetEnvEntries(appEnvEntryMap, consumer);
             }
         }
 
         return appModule;
     }
 
-    private void removeUnsetEnvEntries(JndiConsumer consumer) {
+    private static Map<String, EnvEntry> getAppEnvEntryMap(final AppModule 
appModule) {
+        if (appModule.getApplication() != null && 
appModule.getApplication().getEnvEntry() != null) {
+            return appModule.getApplication().getEnvEntryMap();
+        }
+        return Collections.emptyMap();
+    }
+
+    private void removeUnsetEnvEntries(final Map<String,EnvEntry> appEntries, 
final JndiConsumer consumer) {
         final Iterator<EnvEntry> entries = consumer.getEnvEntry().iterator();
         while (entries.hasNext()) {
             final EnvEntry entry = entries.next();
-            if (entry.getEnvEntryValue() != null) continue;
-            if (entry.getLookupName() != null) continue;
+            if (entry.getEnvEntryValue() != null || entry.getLookupName() != 
null) {
+                continue;
+            }
 
-            entries.remove();
+            final EnvEntry appEntry = appEntries.get(entry.getName());
+            if (appEntry != null && appEntry.getEnvEntryValue() != null) {
+                entry.setEnvEntryValue(appEntry.getEnvEntryValue());
+            } else {
+                entries.remove();
+            }
         }
     }
 
 
-    public AppModule fillInMissingType(AppModule appModule) throws 
OpenEJBException {
+    public AppModule fillInMissingType(final AppModule appModule) throws 
OpenEJBException {
 
-        for (ClientModule module : appModule.getClientModules()) {
+        for (final ClientModule module : appModule.getClientModules()) {
             final JndiConsumer consumer = module.getApplicationClient();
             if (consumer == null) continue;
 
             fillInMissingType(consumer, module);
         }
 
-        for (WebModule module : appModule.getWebModules()) {
+        for (final WebModule module : appModule.getWebModules()) {
             final JndiConsumer consumer = module.getWebApp();
             if (consumer == null) continue;
 
             fillInMissingType(consumer, module);
         }
 
-        for (EjbModule module : appModule.getEjbModules()) {
+        for (final EjbModule module : appModule.getEjbModules()) {
             final EjbJar ejbJar = module.getEjbJar();
             if (ejbJar == null) continue;
 
@@ -116,16 +132,16 @@ public class CleanEnvEntries implements 
         return appModule;
     }
 
-    private void fillInMissingType(JndiConsumer consumer, DeploymentModule 
module) {
+    private void fillInMissingType(final JndiConsumer consumer, final 
DeploymentModule module) {
         final ClassLoader loader = module.getClassLoader();
 
-        for (EnvEntry entry : consumer.getEnvEntry()) {
+        for (final EnvEntry entry : consumer.getEnvEntry()) {
             fillInMissingType(loader, entry);
         }
 
     }
 
-    private void fillInMissingType(ClassLoader loader, EnvEntry entry) {
+    private void fillInMissingType(final ClassLoader loader, final EnvEntry 
entry) {
         if (entry.getType() != null) return;
 
         // If it has the lookup supplied we don't care if there is no type
@@ -136,7 +152,7 @@ public class CleanEnvEntries implements 
 
         final Set<Class> types = new HashSet<Class>();
 
-        for (InjectionTarget target : entry.getInjectionTarget()) {
+        for (final InjectionTarget target : entry.getInjectionTarget()) {
             if (target.getInjectionTargetClass() == null) continue;
             if (target.getInjectionTargetName() == null) continue;
 
@@ -150,7 +166,7 @@ public class CleanEnvEntries implements 
         entry.setType(type.getName());
     }
 
-    private void normalize(Set<Class> types) {
+    private void normalize(final Set<Class> types) {
         types.remove(Object.class);
 
         if (types.contains(int.class)) {


Reply via email to