You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2012/06/29 21:42:31 UTC

svn commit: r1355531 - /openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java

Author: dblevins
Date: Fri Jun 29 19:42:30 2012
New Revision: 1355531

URL: http://svn.apache.org/viewvc?rev=1355531&view=rev
Log:
Potential improvement on internal design to make it easier to have objects tracked at the classloader level.  Something like @ClassLoaderScoped :)
TOMEE-0 (not feature or issue related)

Modified:
    openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java

Modified: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java?rev=1355531&r1=1355530&r2=1355531&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java (original)
+++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java Fri Jun 29 19:42:30 2012
@@ -30,6 +30,8 @@ import org.apache.catalina.loader.Webapp
 import org.apache.catalina.mbeans.MBeanUtils;
 import org.apache.naming.resources.DirContextURLStreamHandler;
 import org.apache.openejb.ClassLoaderUtil;
+import org.apache.openejb.loader.event.ComponentAdded;
+import org.apache.openejb.loader.event.ComponentRemoved;
 import org.apache.openejb.util.ArrayEnumeration;
 import org.apache.openejb.util.URLs;
 import org.apache.tomcat.util.ExceptionUtils;
@@ -121,6 +123,7 @@ public class TomEEWebappLoader extends W
         private ClassLoader app;
         private WebappClassLoader webapp;
         private String appPath;
+        private final HashMap<Class, Object> components = new HashMap<Class, Object>();
 
         public TomEEClassLoader(final String appId, final ClassLoader appCl, final WebappClassLoader webappCl) {
             super(webappCl.getURLs(), webappCl); // in fact this classloader = webappclassloader since we add nothing to this
@@ -129,6 +132,21 @@ public class TomEEWebappLoader extends W
             this.webapp = webappCl;
         }
 
+        public <T> T getComponent(final Class<T> type) {
+            return (T) components.get(type);
+        }
+
+        public <T> T removeComponent(final Class<T> type) {
+            return (T) components.remove(type);
+        }
+
+        /**
+         * @param type the class type of the component required
+         */
+        public <T> T setComponent(final Class<T> type, final T value) {
+            return (T) components.put(type, value);
+        }
+
         /**
          * we totally override this method to be able to remove duplicated resources.
          *