Author: rmannibucau
Date: Thu Nov 22 13:32:00 2012
New Revision: 1412548

URL: http://svn.apache.org/viewvc?rev=1412548&view=rev
Log:
reverting OPENEJB-1939 the fixed was not elegant and it broke TCKs. There are 
other solution so waiting for user feedback before going further on this topic.

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/TomcatJndiBuilder.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=1412548&r1=1412547&r2=1412548&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
 Thu Nov 22 13:32:00 2012
@@ -112,9 +112,6 @@ 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");
@@ -187,25 +184,20 @@ public class AutoConfig implements Dynam
 
         resolvePersistenceRefs(appModule);
 
-        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();
+        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);
         }
         return appModule;
     }
@@ -713,12 +705,6 @@ 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
@@ -740,21 +726,16 @@ public class AutoConfig implements Dynam
             }
 
             String destinationId = (mappedName.length() == 0) ? ref.getName() 
: mappedName;
-            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;
-                    }
+            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
@@ -1044,20 +1025,6 @@ public class AutoConfig implements Dynam
         }
     }
 
-    private void set(Properties properties, String key, String value) {
-        if (value == null || value.length() == 0) return;
-        properties.put(key, value);
-    }
-
-    private void set(Properties properties, String key, int value) {
-        set(properties, key, value, 0);
-    }
-
-    private void set(Properties properties, String key, int value, int min) {
-        if (value < min) return;
-        properties.put(key, value);
-    }
-
     private String createContainer(Class<? extends ContainerInfo> 
containerInfoType, EjbDeployment ejbDeployment, EnterpriseBean bean) throws 
OpenEJBException {
         if (!autoCreateContainers) {
             throw new OpenEJBException("A container of type " + getType(bean) 
+ " must be declared in the configuration file for bean: " + bean.getEjbName());
@@ -1085,12 +1052,6 @@ public class AutoConfig implements Dynam
                                     EjbDeployment ejbDeployment, 
                                     AppResources appResources,
                                     EjbModule ejbModule) throws 
OpenEJBException {
-        final Collection<String> ignoredResources = PROVIDED_RESOURCES.get();
-        String ignoredResourcesPrefix = PROVIDED_RESOURCES_PREFIX.get();
-        if (ignoredResourcesPrefix == null) {
-            ignoredResourcesPrefix = "";
-        }
-
         // skip destinations with lookup name
         if (ref.getLookupName() != null) {
             return;
@@ -1122,13 +1083,6 @@ public class AutoConfig implements Dynam
             ResourceLink link = ejbDeployment.getResourceLink(refName);
             if (link == null) {
                 String id = (mappedName.length() == 0) ? ref.getName() : 
mappedName;
-                if (ignoredResources != null && (ignoredResources.contains(id) 
|| ignoredResources.contains(correctedId(ignoredResourcesPrefix, id)))) {
-                    final String correctedId = ignoredResourcesPrefix + 
correctedId(ignoredResourcesPrefix, id);
-                    ref.setLookupName(correctedId);
-                    ref.setName(correctedId);
-                    return;
-                }
-
                 if (id.startsWith("java:")) {
                     id = id.substring("java:".length());
                 }
@@ -1151,25 +1105,6 @@ public class AutoConfig implements Dynam
         }
     }
 
-    private static String correctedId(final String ignoredResourcesPrefix, 
final String id) {
-        String newId = id;
-        String ignoredId = ignoredResourcesPrefix;
-
-        // first unify beginning of the jndi name (we can get this / after 
java:)
-        if (newId.startsWith("java:/")) {
-            newId = "java:" + newId.substring("java:/".length());
-        }
-        if (ignoredResourcesPrefix.startsWith("java:/")) {
-            ignoredId = "java:" + 
ignoredResourcesPrefix.substring("java:/".length());
-        }
-
-        // remove prefix if necessary
-        if (newId.startsWith(ignoredId)) {
-            return newId.substring(ignoredId.length());
-        }
-        return newId;
-    }
-
     private void processResourceEnvRef(JndiReference ref, 
                                        EjbDeployment ejbDeployment, 
                                        AppResources appResources, 

Modified: 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java?rev=1412548&r1=1412547&r2=1412548&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
 Thu Nov 22 13:32:00 2012
@@ -70,6 +70,7 @@ import javax.ejb.spi.HandleDelegate;
 import javax.naming.Binding;
 import javax.naming.Context;
 import javax.naming.LinkRef;
+import javax.naming.NameNotFoundException;
 import javax.naming.NamingException;
 import javax.naming.RefAddr;
 import javax.persistence.EntityManager;
@@ -132,7 +133,7 @@ public class TomcatJndiBuilder {
         this.useCrossClassLoaderRef = useCrossClassLoaderRef;
     }
 
-    public void mergeJndi(final Collection<String> tomcatResources) throws 
OpenEJBException {
+    public void mergeJndi() throws OpenEJBException {
 
         NamingResources naming = standardContext.getNamingResources();
 
@@ -159,17 +160,6 @@ public class TomcatJndiBuilder {
             mergeRef(naming, ref, moduleUri);
         }
         for (ResourceReferenceInfo ref : webAppInfo.jndiEnc.resourceRefs) {
-            String id = ref.referenceName;
-            if (id == null) {
-                id = ref.resourceID;
-            }
-            if (id != null && id.startsWith("comp/env/")) {
-                id = id.substring("comp/env/".length());
-            }
-            if (id != null && tomcatResources != null && 
tomcatResources.contains(id)) {
-                continue;
-            }
-
             mergeRef(naming, ref);
         }
         for (ResourceEnvReferenceInfo ref : 
webAppInfo.jndiEnc.resourceEnvRefs) {
@@ -232,8 +222,16 @@ public class TomcatJndiBuilder {
                     }
 
                     Object value = normalize(entry.getValue());
-                    if (ignoreNames.contains(removeCompEnv(key))) {
-                        continue;
+                    if (ignoreNames.contains(removeCompEnv(key))) { // keep 
tomcat resources
+                        try {
+                            // tomcat can get the reference but the bound value
+                            // can come from OpenEJB (ejb-jar.xml for instance)
+                            // so check the lookup can be resolved before 
skipping it
+                            root.lookup(key);
+                            continue;
+                        } catch (NameNotFoundException nnfe) {
+                            // no-op: let it be rebound or bound
+                        }
                     }
 
                     Contexts.createSubcontexts(root, key);
@@ -346,6 +344,7 @@ public class TomcatJndiBuilder {
             }
 
         } catch (Exception e) {
+            // no-op
         }
 
         return value;

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=1412548&r1=1412547&r2=1412548&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
 Thu Nov 22 13:32:00 2012
@@ -39,9 +39,7 @@ 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;
@@ -50,7 +48,6 @@ import org.apache.catalina.loader.Webapp
 import org.apache.catalina.session.StandardManager;
 import org.apache.catalina.startup.Constants;
 import org.apache.catalina.startup.ContextConfig;
-import org.apache.catalina.startup.ContextRuleSet;
 import org.apache.catalina.startup.HostConfig;
 import org.apache.catalina.startup.RealmRuleSet;
 import org.apache.catalina.startup.SetAllPropertiesRule;
@@ -77,7 +74,6 @@ 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;
@@ -90,12 +86,10 @@ import org.apache.openejb.jee.EnvEntry;
 import org.apache.openejb.jee.WebApp;
 import org.apache.openejb.loader.IO;
 import org.apache.openejb.loader.SystemInstance;
-import org.apache.openejb.util.LinkResolver;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 import org.apache.tomcat.InstanceManager;
 import org.apache.tomcat.util.digester.Digester;
-import org.apache.tomcat.util.digester.RuleSet;
 import org.apache.tomee.catalina.cluster.ClusterObserver;
 import org.apache.tomee.catalina.cluster.TomEEClusterListener;
 import org.apache.tomee.catalina.event.AfterApplicationCreated;
@@ -114,7 +108,6 @@ import javax.el.ELResolver;
 import javax.naming.Context;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
-import javax.persistence.EntityManagerFactory;
 import javax.servlet.ServletContext;
 import javax.servlet.SessionTrackingMode;
 import javax.servlet.jsp.JspApplicationContext;
@@ -364,7 +357,7 @@ public class TomcatWebAppBuilder impleme
         digester.addSetNext("Context/Manager/Store", "setStore", 
"org.apache.catalina.Store");
         digester.addRuleSet(new RealmRuleSet("Context/"));
         digester.addCallMethod("Context/WatchedResource", 
"addWatchedResource", 0);
-        
digester.addObjectCreate("Context/Resource","org.apache.catalina.deploy.ContextResource");
+        digester.addObjectCreate("Context/Resource", 
"org.apache.catalina.deploy.ContextResource");
         digester.addRule("Context/Resource", new SetAllPropertiesRule());
         digester.addRule("Context/Resource", new 
SetNextNamingRule("addResource", "org.apache.catalina.deploy.ContextResource"));
 
@@ -913,19 +906,6 @@ public class TomcatWebAppBuilder impleme
         ContextInfo contextInfo = getContextInfo(standardContext);
         ClassLoader classLoader = standardContext.getLoader().getClassLoader();
 
-        final LifecycleListener[] listeners = 
standardContext.findLifecycleListeners();
-        if (listeners != null) { // force init of tomcat resources
-            for (LifecycleListener listener : listeners) {
-                if (OpenEJBContextConfig.class.isInstance(listener)) {
-                    ((OpenEJBContextConfig) listener).configureStart();
-                }
-            }
-        }
-
-        final Collection<String> tomcatResources = 
getResourcesNames(standardContext.getNamingResources());
-        AutoConfig.PROVIDED_RESOURCES.set(tomcatResources);
-        AutoConfig.PROVIDED_RESOURCES_PREFIX.set("java:/comp/env/");
-
         if (contextInfo == null) {
             final AppModule appModule = loadApplication(standardContext);
             if (appModule != null) {
@@ -959,8 +939,6 @@ public class TomcatWebAppBuilder impleme
         } else {
             contextInfo.standardContext = standardContext;
         }
-        contextInfo.resourceNames = tomcatResources;
-
 
         final String id = getId(standardContext);
         WebAppInfo webAppInfo = null;
@@ -1019,7 +997,7 @@ public class TomcatWebAppBuilder impleme
                 final TomcatJndiBuilder jndiBuilder = new 
TomcatJndiBuilder(standardContext, webAppInfo, injections);
                 NamingUtil.setCurrentContext(standardContext);
                 try {
-                    jndiBuilder.mergeJndi(tomcatResources);
+                    jndiBuilder.mergeJndi();
                 } finally {
                     NamingUtil.setCurrentContext(null);
                 }
@@ -1069,41 +1047,6 @@ 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>();
@@ -1144,10 +1087,7 @@ public class TomcatWebAppBuilder impleme
                 }
                 container = container.getParent();
             }
-            if (container != null) {
-                return undeploy(standardContext, container);
-            }
-            return false;
+            return container != null && undeploy(standardContext, container);
         }
     }
 
@@ -1315,6 +1255,7 @@ public class TomcatWebAppBuilder impleme
                     }
                 }
             } catch (NamingException e) {
+                // no-op
             }
         }
 
@@ -1657,8 +1598,6 @@ public class TomcatWebAppBuilder impleme
      * @return a openejb application module
      */
     private AppModule loadApplication(final StandardContext standardContext) {
-        final ServletContext servletContext = 
standardContext.getServletContext();
-
         // don't use getId since the app id shouldnt get the host (jndi)
         // final TomcatDeploymentLoader tomcatDeploymentLoader = new 
TomcatDeploymentLoader(standardContext, getId(standardContext));
 
@@ -1896,7 +1835,6 @@ public class TomcatWebAppBuilder impleme
         public StandardContext standardContext;
         public HostConfig deployer;
         public Host host;
-        public LinkResolver<EntityManagerFactory> emfLinkResolver;
         public Collection<String> resourceNames = Collections.emptyList();
 
         @Override


Reply via email to