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-