Author: rmannibucau
Date: Tue Jan 29 08:45:25 2013
New Revision: 1439789

URL: http://svn.apache.org/viewvc?rev=1439789&view=rev
Log:
scanning extension respecting exclusions + caching internal interceptors

Modified:
    
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiInterceptor.java
    
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorData.java
    
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/monitoring/StatsInterceptor.java
    
tomee/tomee/trunk/container/openejb-core/src/main/resources/default.exclusions

Modified: 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1439789&r1=1439788&r2=1439789&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
 (original)
+++ 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
 Tue Jan 29 08:45:25 2013
@@ -57,6 +57,7 @@ import org.apache.openejb.cdi.ThreadSing
 import org.apache.openejb.classloader.ClassLoaderConfigurer;
 import org.apache.openejb.component.ClassLoaderEnricher;
 import org.apache.openejb.config.ConfigurationFactory;
+import org.apache.openejb.config.NewLoaderLogic;
 import org.apache.openejb.config.TldScanner;
 import org.apache.openejb.core.ConnectorReference;
 import org.apache.openejb.core.CoreContainerSystem;
@@ -123,6 +124,7 @@ import org.apache.webbeans.spi.ScannerSe
 import org.apache.webbeans.spi.TransactionService;
 import org.apache.webbeans.spi.adaptor.ELAdaptor;
 import org.apache.xbean.finder.ResourceFinder;
+import org.apache.xbean.finder.UrlSet;
 import org.apache.xbean.recipe.ObjectRecipe;
 import org.apache.xbean.recipe.Option;
 import org.apache.xbean.recipe.UnsetPropertiesRecipe;
@@ -275,6 +277,17 @@ public class Assembler extends Assembler
     }
 
     private void installExtensions() {
+        try {
+            final Collection<URL> urls = 
NewLoaderLogic.applyBuiltinExcludes(new 
UrlSet(Assembler.class.getClassLoader())).getUrls();
+            EventHelper.installExtensions(new ResourceFinder("META-INF", 
urls.toArray(new URL[urls.size()])));
+            return;
+        } catch (MalformedURLException e) {
+            // no-op
+        } catch (IOException e) {
+            // no-op
+        }
+
+        // if an error occured do it brutely
         EventHelper.installExtensions(new ResourceFinder("META-INF"));
     }
 

Modified: 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiInterceptor.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiInterceptor.java?rev=1439789&r1=1439788&r2=1439789&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiInterceptor.java
 (original)
+++ 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiInterceptor.java
 Tue Jan 29 08:45:25 2013
@@ -16,6 +16,7 @@
  */
 package org.apache.openejb.cdi;
 
+import org.apache.openejb.core.interceptor.InterceptorData;
 import org.apache.openejb.core.ivm.IntraVmArtifact;
 import org.apache.webbeans.component.InjectionTargetBean;
 import org.apache.webbeans.config.WebBeansContext;
@@ -40,6 +41,9 @@ import java.util.concurrent.Callable;
  * @version $Rev$ $Date$
  */
 public class CdiInterceptor implements Serializable {
+    static {
+        InterceptorData.cacheScan(CdiInterceptor.class);
+    }
 
     private final CdiEjbBean<Object> bean;
     private final BeanManagerImpl manager;

Modified: 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorData.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorData.java?rev=1439789&r1=1439788&r2=1439789&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorData.java
 (original)
+++ 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorData.java
 Tue Jan 29 08:45:25 2013
@@ -35,12 +35,15 @@ import java.util.ArrayList;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Collections;
+import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * @version $Rev$ $Date$
  */
 public class InterceptorData {
+    private static final Map<Class<?>, InterceptorData> CACHE = new 
ConcurrentHashMap<Class<?>, InterceptorData>();
 
     private Class clazz;
 
@@ -134,10 +137,28 @@ public class InterceptorData {
         return (clazz != null ? clazz.hashCode() : 0);
     }
 
+    public static void cacheScan(final Class<?> clazz) {
+        CACHE.put(clazz, scan(clazz));
+    }
+
     public static InterceptorData scan(Class<?> clazz) {
-        ClassFinder finder = new ClassFinder(clazz);
+        final InterceptorData model = CACHE.get(clazz);
+        if (model != null) {
+            final InterceptorData data = new InterceptorData(clazz);
+            data.aroundInvoke.addAll(model.getAroundInvoke());
+            data.postConstruct.addAll(model.getPostConstruct());
+            data.preDestroy.addAll(model.getPreDestroy());
+            data.postActivate.addAll(model.getPostActivate());
+            data.prePassivate.addAll(model.getPrePassivate());
+            data.afterBegin.addAll(model.getAfterBegin());
+            data.beforeCompletion.addAll(model.getBeforeCompletion());
+            data.afterCompletion.addAll(model.getAfterCompletion());
+            data.aroundTimeout.addAll(model.getAroundTimeout());
+            return data;
+        }
 
-        InterceptorData data = new InterceptorData(clazz);
+        final ClassFinder finder = new ClassFinder(clazz);
+        final InterceptorData data = new InterceptorData(clazz);
 
         add(finder, data.aroundInvoke, AroundInvoke.class);
         add(finder, data.postConstruct, PostConstruct.class);

Modified: 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/monitoring/StatsInterceptor.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/monitoring/StatsInterceptor.java?rev=1439789&r1=1439788&r2=1439789&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/monitoring/StatsInterceptor.java
 (original)
+++ 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/monitoring/StatsInterceptor.java
 Tue Jan 29 08:45:25 2013
@@ -16,22 +16,22 @@
  */
 package org.apache.openejb.monitoring;
 
+import org.apache.openejb.api.Monitor;
+import org.apache.openejb.core.interceptor.InterceptorData;
 import org.apache.openejb.loader.SystemInstance;
 import 
org.apache.openejb.math.stat.descriptive.SynchronizedDescriptiveStatistics;
 import org.apache.xbean.finder.ClassFinder;
-import org.apache.openejb.api.Monitor;
-import org.apache.openejb.core.interceptor.InterceptorData;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
-import javax.ejb.PostActivate;
-import javax.ejb.PrePassivate;
+import javax.ejb.AfterBegin;
 import javax.ejb.AfterCompletion;
 import javax.ejb.BeforeCompletion;
-import javax.ejb.AfterBegin;
+import javax.ejb.PostActivate;
+import javax.ejb.PrePassivate;
 import javax.interceptor.AroundInvoke;
-import javax.interceptor.InvocationContext;
 import javax.interceptor.AroundTimeout;
+import javax.interceptor.InvocationContext;
 import java.lang.reflect.Method;
 import java.util.Collection;
 import java.util.Map;
@@ -43,6 +43,10 @@ import java.util.concurrent.atomic.Atomi
  * @version $Rev$ $Date$
  */
 public class StatsInterceptor {
+    static {
+        InterceptorData.cacheScan(StatsInterceptor.class);
+    }
+
     private static final String DISABLE_STAT_INTERCEPTOR_PROPERTY = 
"openejb.stats.interceptor.disable";
 
     public static final InterceptorData metadata = 
InterceptorData.scan(StatsInterceptor.class);

Modified: 
tomee/tomee/trunk/container/openejb-core/src/main/resources/default.exclusions
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/resources/default.exclusions?rev=1439789&r1=1439788&r2=1439789&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-core/src/main/resources/default.exclusions 
(original)
+++ 
tomee/tomee/trunk/container/openejb-core/src/main/resources/default.exclusions 
Tue Jan 29 08:45:25 2013
@@ -28,6 +28,7 @@ c3p0-
 catalina-
 catalina.jar
 cglib-
+charsets.jar
 commons-beanutils
 commons-cli-
 commons-codec-
@@ -105,6 +106,7 @@ jsoup-
 jsp-api
 jsr299-
 jsr311-
+jsse.jar
 juli-
 junit-
 kahadb-
@@ -155,8 +157,11 @@ org.osgi.core-
 oro-
 pax-url
 plexus-
+plugin.jar
 quartz-
+resources.jar
 rmock-
+rt.jar
 saaj-
 sac-
 scannotation-


Reply via email to