Author: rmannibucau
Date: Sun Oct  7 21:51:00 2012
New Revision: 1395389

URL: http://svn.apache.org/viewvc?rev=1395389&view=rev
Log:
TOMEE-452 ignoring resources from context.xml in AutoConfig

Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
    
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java?rev=1395389&r1=1395388&r2=1395389&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
 Sun Oct  7 21:51:00 2012
@@ -110,6 +110,9 @@ public class AutoConfig implements Dynam
     private static Set<String> ignoredReferenceTypes = new TreeSet<String>();
     public static final String AUTOCREATE_JTA_DATASOURCE_FROM_NON_JTA_ONE_KEY 
= "openejb.autocreate.jta-datasource-from-non-jta-one";
 
+    public static final ThreadLocal<Collection<String>> PROVIDED_RESOURCES = 
new ThreadLocal<Collection<String>>();
+    public static final ThreadLocal<String> PROVIDED_RESOURCES_PREFIX = new 
ThreadLocal<String>();
+
     static{
         // Context objects are automatically handled
         ignoredReferenceTypes.add("javax.ejb.SessionContext");
@@ -182,20 +185,25 @@ public class AutoConfig implements Dynam
 
         resolvePersistenceRefs(appModule);
 
-        for (EjbModule ejbModule : appModule.getEjbModules()) {
-            deploy(ejbModule, appResources);
-        }
-        for (ClientModule clientModule : appModule.getClientModules()) {
-            deploy(clientModule, appResources);
-        }
-        for (ConnectorModule connectorModule : 
appModule.getConnectorModules()) {
-            deploy(connectorModule);
-        }
-        for (WebModule webModule : appModule.getWebModules()) {
-            deploy(webModule, appResources);
-        }
-        for (PersistenceModule persistenceModule : 
appModule.getPersistenceModules()) {
-            deploy(appModule, persistenceModule);
+        try {
+            for (EjbModule ejbModule : appModule.getEjbModules()) {
+                deploy(ejbModule, appResources);
+            }
+            for (ClientModule clientModule : appModule.getClientModules()) {
+                deploy(clientModule, appResources);
+            }
+            for (ConnectorModule connectorModule : 
appModule.getConnectorModules()) {
+                deploy(connectorModule);
+            }
+            for (WebModule webModule : appModule.getWebModules()) {
+                deploy(webModule, appResources);
+            }
+            for (PersistenceModule persistenceModule : 
appModule.getPersistenceModules()) {
+                deploy(appModule, persistenceModule);
+            }
+        } finally {
+            PROVIDED_RESOURCES.remove();
+            PROVIDED_RESOURCES_PREFIX.remove();
         }
         return appModule;
     }
@@ -703,6 +711,12 @@ public class AutoConfig implements Dynam
     }
 
     private void processJndiRefs(String moduleId, JndiConsumer jndiConsumer, 
AppResources appResources, ClassLoader classLoader) throws OpenEJBException {
+        final Collection<String> ignoredResources = PROVIDED_RESOURCES.get();
+        String ignoredResourcesPrefix = PROVIDED_RESOURCES_PREFIX.get();
+        if (ignoredResourcesPrefix == null) {
+            ignoredResourcesPrefix = "";
+        }
+
         // Resource reference
         for (ResourceRef ref : jndiConsumer.getResourceRef()) {
             // skip destinations with lookup name
@@ -724,16 +738,21 @@ public class AutoConfig implements Dynam
             }
 
             String destinationId = (mappedName.length() == 0) ? ref.getName() 
: mappedName;
-            try {
-                destinationId = getResourceId(moduleId, destinationId, 
refType, appResources);
-            } catch (OpenEJBException ex) {
-                if (!(ref instanceof ContextRef)) {
-                    throw ex;
-                } else { // let jaxrs provider manage it
-                    continue;
+            if (ignoredResources != null && 
ignoredResources.contains(destinationId)) {
+                ref.setLookupName(ignoredResourcesPrefix + destinationId);
+                ref.setName("openejb/" + moduleId + "/" + destinationId);
+            } else {
+                try {
+                    destinationId = getResourceId(moduleId, destinationId, 
refType, appResources);
+                } catch (OpenEJBException ex) {
+                    if (!(ref instanceof ContextRef)) {
+                        throw ex;
+                    } else { // let jaxrs provider manage it
+                        continue;
+                    }
                 }
+                ref.setMappedName(destinationId);
             }
-            ref.setMappedName(destinationId);
         }
 
         // Resource env reference

Modified: 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java?rev=1395389&r1=1395388&r2=1395389&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
 Sun Oct  7 21:51:00 2012
@@ -38,7 +38,9 @@ import org.apache.catalina.core.Standard
 import org.apache.catalina.deploy.ApplicationParameter;
 import org.apache.catalina.deploy.ContextEnvironment;
 import org.apache.catalina.deploy.ContextResource;
+import org.apache.catalina.deploy.ContextResourceEnvRef;
 import org.apache.catalina.deploy.ContextResourceLink;
+import org.apache.catalina.deploy.ContextService;
 import org.apache.catalina.deploy.ContextTransaction;
 import org.apache.catalina.deploy.NamingResources;
 import org.apache.catalina.ha.CatalinaCluster;
@@ -69,6 +71,7 @@ import org.apache.openejb.assembler.clas
 import org.apache.openejb.assembler.classic.WebAppInfo;
 import org.apache.openejb.cdi.CdiBuilder;
 import org.apache.openejb.config.AppModule;
+import org.apache.openejb.config.AutoConfig;
 import org.apache.openejb.config.ConfigurationFactory;
 import org.apache.openejb.config.DeploymentLoader;
 import org.apache.openejb.config.WebModule;
@@ -836,6 +839,10 @@ public class TomcatWebAppBuilder impleme
         ContextInfo contextInfo = getContextInfo(standardContext);
         final ClassLoader classLoader = 
standardContext.getLoader().getClassLoader();
         if (contextInfo == null) {
+            final Collection<String> tomcatResources = 
getResourcesNames(standardContext.getNamingResources());
+            AutoConfig.PROVIDED_RESOURCES.set(tomcatResources);
+            AutoConfig.PROVIDED_RESOURCES_PREFIX.set("java:/comp/env/");
+
             final AppModule appModule = loadApplication(standardContext);
             if (appModule != null) {
                 try {
@@ -966,6 +973,41 @@ public class TomcatWebAppBuilder impleme
         }
     }
 
+    private Collection<String> getResourcesNames(final NamingResources 
namingResources) {
+        final Collection<String> names = new ArrayList<String>();
+        for (ContextResource resource : namingResources.findResources()) {
+            final String name = resource.getName();
+            if (name != null) {
+                names.add(resource.getName());
+            }
+        }
+        for (ContextEnvironment resource : namingResources.findEnvironments()) 
{
+            final String name = resource.getName();
+            if (name != null) {
+                names.add(resource.getName());
+            }
+        }
+        for (ContextResourceLink resource : 
namingResources.findResourceLinks()) {
+            final String name = resource.getName();
+            if (name != null) {
+                names.add(resource.getName());
+            }
+        }
+        for (ContextService resource : namingResources.findServices()) {
+            final String name = resource.getName();
+            if (name != null) {
+                names.add(resource.getName());
+            }
+        }
+        for (ContextResourceEnvRef resource : 
namingResources.findResourceEnvRefs()) {
+            final String name = resource.getName();
+            if (name != null) {
+                names.add(resource.getName());
+            }
+        }
+        return names;
+    }
+
     private static void updateInjections(final Collection<Injection> 
injections, final ClassLoader classLoader, final boolean keepInjection) {
         final Iterator<Injection> it = injections.iterator();
         final List<Injection> newOnes = new ArrayList<Injection>();


Reply via email to