I thought about that as well. I need to dig a bit into the tomee codebase. I used quite a few tricks to get a good performance. What to do next? I'd say we focus on the owb-1.2.2 release for tomee 1.6.1 and then continue with integrating owb-2.0.0 in tomee.
LieGrue, strub On Monday, 10 February 2014, 8:35, Romain Manni-Bucau <[email protected]> wrote: wonder if we could merge somehow openejb and openwebbeans scanning >filtering. OpenEJB/TomEE one is really nice and efficient (even if >sometimes code can seem a bit rough). > >Maybe something to finally put in XBean? >Romain Manni-Bucau >Twitter: @rmannibucau >Blog: http://rmannibucau.wordpress.com/ >LinkedIn: http://fr.linkedin.com/in/rmannibucau >Github: https://github.com/rmannibucau > > > >2014-02-10 8:27 GMT+01:00 Mark Struberg <[email protected]>: >> It's basically a complete re-implementation of our scanning mechanism. >> We still provide and consume the same ScannerService SPI yet though. >> >> But I'm about to change this and try to introduce something more smart >> probably. Still thinking about it. >> >> LieGrue, >> strub >> >> >> >> >> >> On Monday, 10 February 2014, 8:24, Romain Manni-Bucau >> <[email protected]> wrote: >> >> Great, got a doubt after months without touching it, thks :) >>>Romain Manni-Bucau >>>Twitter: @rmannibucau >>>Blog: http://rmannibucau.wordpress.com/ >>>LinkedIn: http://fr.linkedin.com/in/rmannibucau >>>Github: https://github.com/rmannibucau >>> >>> >>> >>>2014-02-10 8:09 GMT+01:00 Mark Struberg <[email protected]>: >>>> I also did test this on windows and it works. >>>> Reason is that thi are URL.toExternalPath, which always use forward >>>> slashes on all platforms to my knowledge. >>>> >>>> Now we have no single new URL(...) anymore in our code. >>>> >>>> LieGrue, >>>> strub >>>> >>>> >>>> >>>> >>>> >>>> On Monday, 10 February 2014, 7:07, Romain Manni-Bucau >>>> <[email protected]> wrote: >>>> >>>> Hi Mark >>>>> >>>>>Will it work on windows or /xxx will not match? >>>>>---------- Message transféré ---------- >>>>>De : <[email protected]> >>>>>Date : 9 févr. 2014 23:23 >>>>>Objet : svn commit: r1566452 - in /openwebbeans/trunk: >>>>>webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/ >>>>>webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/xbean/ >>>>>webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/test/ webbe... >>>>>À : <[email protected]> >>>>> >>>>>Author: struberg >>>>>Date: Sun Feb 9 22:23:28 2014 >>>>>New Revision: 1566452 >>>>> >>>>>URL: http://svn.apache.org/r1566452 >>>>>Log: >>>>>OWB-928 improve scanning performance >>>>> >>>>>We now take the annotation information from ASM and don't do a >>>>>loadClass...getAnnotations anymore >>>>> >>>>>Added: >>>>> >>>>>openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/xbean/OwbAnnotationFinder.java >>>>>Modified: >>>>> >>>>>openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/AbstractMetaDataDiscovery.java >>>>> >>>>>openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/xbean/BeanArchiveFilter.java >>>>> >>>>>openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/xbean/CdiArchive.java >>>>> >>>>>openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/test/OpenWebBeansTestMetaDataDiscoveryService.java >>>>> >>>>>openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/scanner/WebScannerService.java >>>>> >>>>>Modified: >>>>>openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/AbstractMetaDataDiscovery.java >>>>>URL: >>>>>http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/AbstractMetaDataDiscovery.java?rev=1566452&r1=1566451&r2=1566452&view=diff >>>>>============================================================================== >>>>>--- >>>>>openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/AbstractMetaDataDiscovery.java >>>>>(original) >>>>>+++ >>>>>openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/AbstractMetaDataDiscovery.java >>>>>Sun Feb 9 22:23:28 2014 >>>>>@@ -23,10 +23,12 @@ import org.apache.webbeans.config.OWBLog >>>>>import org.apache.webbeans.config.OpenWebBeansConfiguration; >>>>>import org.apache.webbeans.config.WebBeansContext; >>>>>import org.apache.webbeans.corespi.scanner.xbean.CdiArchive; >>>>>+import org.apache.webbeans.corespi.scanner.xbean.OwbAnnotationFinder; >>>>>import org.apache.webbeans.exception.WebBeansDeploymentException; >>>>>import org.apache.webbeans.logger.WebBeansLoggerFacade; >>>>>import org.apache.webbeans.spi.BDABeansXmlScanner; >>>>>import org.apache.webbeans.spi.BeanArchiveService; >>>>>+import org.apache.webbeans.spi.BeanArchiveService.BeanDiscoveryMode; >>>>>import org.apache.webbeans.spi.ScannerService; >>>>>import org.apache.webbeans.util.ClassUtil; >>>>>import org.apache.webbeans.util.UrlSet; >>>>>@@ -35,6 +37,7 @@ import org.apache.xbean.finder.Annotatio >>>>>import org.apache.xbean.finder.ClassLoaders; >>>>> >>>>>import java.io.IOException; >>>>>+import java.lang.annotation.Annotation; >>>>>import java.net.URL; >>>>>import java.util.Collections; >>>>>import java.util.Enumeration; >>>>>@@ -75,11 +78,16 @@ public abstract class AbstractMetaDataDi >>>>> >>>>> protected ClassLoader loader; >>>>> protected CdiArchive archive; >>>>>- protected AnnotationFinder finder; >>>>>+ protected OwbAnnotationFinder finder; >>>>> protected boolean isBDAScannerEnabled = false; >>>>> protected BDABeansXmlScanner bdaBeansXmlScanner; >>>>>+ protected final WebBeansContext webBeansContext; >>>>> >>>>> >>>>>+ protected AbstractMetaDataDiscovery() >>>>>+ { >>>>>+ webBeansContext = WebBeansContext.getInstance(); >>>>>+ } >>>>> >>>>> protected AnnotationFinder initFinder() >>>>> { >>>>>@@ -88,14 +96,13 @@ public abstract class AbstractMetaDataDi >>>>> return finder; >>>>> } >>>>> >>>>>- WebBeansContext webBeansContext = WebBeansContext.getInstance(); >>>>> if (beanArchiveService == null) >>>>> { >>>>> beanArchiveService = webBeansContext.getBeanArchiveService(); >>>>> } >>>>> >>>>>- archive = new CdiArchive(webBeansContext.getBeanManagerImpl(), >>>>>beanArchiveService, WebBeansUtil.getCurrentClassLoader(), >>>>>getBeanDeploymentUrls()); >>>>>- finder = new AnnotationFinder(archive); >>>>>+ archive = new CdiArchive(beanArchiveService, >>>>>WebBeansUtil.getCurrentClassLoader(), getBeanDeploymentUrls()); >>>>>+ finder = new OwbAnnotationFinder(archive); >>>>> >>>>> return finder; >>>>> } >>>>>@@ -250,6 +257,16 @@ public abstract class AbstractMetaDataDi >>>>> path.contains("/idea_rt") || >>>>> path.contains("/eclipse") || >>>>> path.contains("/jcommander") || >>>>>+ path.contains("/tomcat") || >>>>>+ path.contains("/catalina") || >>>>>+ path.contains("/jasper") || >>>>>+ path.contains("/jsp-api") || >>>>>+ path.contains("/myfaces-") || >>>>>+ path.contains("/servlet-api") || >>>>>+ path.contains("/javax") || >>>>>+ path.contains("/annotation-api") || >>>>>+ path.contains("/el-api") || >>>>>+ path.contains("/mojarra") || >>>>> path.contains("/openwebbeans-")) >>>>> { >>>>> //X TODO this should be much more actually >>>>>@@ -316,7 +333,7 @@ public abstract class AbstractMetaDataDi >>>>> // and also scan the bean archive! >>>>> if (beanArchiveService == null) >>>>> { >>>>>- WebBeansContext webBeansContext = >>>>>WebBeansContext.getInstance(); >>>>>+ >>>>> beanArchiveService = webBeansContext.getBeanArchiveService(); >>>>> } >>>>> >>>>>@@ -330,36 +347,94 @@ public abstract class AbstractMetaDataDi >>>>> public Set<Class<?>> getBeanClasses() >>>>> { >>>>> final Set<Class<?>> classSet = new HashSet<Class<?>>(); >>>>>- for(String str : archive.getClasses()) >>>>>+ for (CdiArchive.FoundClasses foundClasses : >>>>>archive.classesByUrl().values()) >>>>> { >>>>>- try >>>>>+ boolean scanModeAnnotated = >>>>>BeanDiscoveryMode.ANNOTATED.equals(foundClasses.getBeanArchiveInfo().getBeanDiscoveryMode()); >>>>>+ for(String className : foundClasses.getClassNames()) >>>>> { >>>>>- Class<?> clazz = ClassUtil.getClassFromName(str); >>>>>- if (clazz != null) >>>>>+ try >>>>> { >>>>>+ if (scanModeAnnotated) >>>>>+ { >>>>>+ // in this case we need to find out whether we >>>>>should keep this class in the Archive >>>>>+ AnnotationFinder.ClassInfo classInfo = >>>>>finder.getClassInfo(className); >>>>>+ if (classInfo == null || >>>>>!isBeanAnnotatedClass(classInfo)) >>>>>+ { >>>>>+ continue; >>>>>+ } >>>>>+ } >>>>> >>>>>- // try to provoke a NoClassDefFoundError exception >>>>>which is thrown >>>>>- // if some dependencies of the class are missing >>>>>- clazz.getDeclaredFields(); >>>>>- clazz.getDeclaredMethods(); >>>>>+ Class<?> clazz = >>>>>ClassUtil.getClassFromName(className); >>>>>+ if (clazz != null) >>>>>+ { >>>>>+ >>>>>+ // try to provoke a NoClassDefFoundError exception >>>>>which is thrown >>>>>+ // if some dependencies of the class are missing >>>>>+ clazz.getDeclaredFields(); >>>>>+ clazz.getDeclaredMethods(); >>>>> >>>>>- // we can add this class cause it has been loaded >>>>>completely >>>>>- classSet.add(clazz); >>>>>+ // we can add this class cause it has been loaded >>>>>completely >>>>>+ classSet.add(clazz); >>>>> >>>>>+ } >>>>> } >>>>>- } >>>>>- catch (NoClassDefFoundError e) >>>>>- { >>>>>- if (logger.isLoggable(Level.WARNING)) >>>>>+ catch (NoClassDefFoundError e) >>>>> { >>>>>- logger.log(Level.WARNING, OWBLogConst.WARN_0018, new >>>>>Object[] { str, e.toString() }); >>>>>+ if (logger.isLoggable(Level.WARNING)) >>>>>+ { >>>>>+ logger.log(Level.WARNING, OWBLogConst.WARN_0018, >>>>>new Object[] { className, e.toString() }); >>>>>+ } >>>>> } >>>>> } >>>>>+ >>>>> } >>>>> >>>>> return classSet; >>>>> } >>>>> >>>>>+ /** >>>>>+ * This method is called for classes from bean archives with >>>>>+ * bean-discovery-mode 'annotated'. >>>>>+ * >>>>>+ * This method is intended to be overwritten in integration scenarios >>>>>and e.g. >>>>>+ * allows to add other criterias for keeping the class. >>>>>+ * >>>>>+ * @param classInfo >>>>>+ * @return true if this class should be kept and further get picked up >>>>>as CDI Bean >>>>>+ */ >>>>>+ protected boolean isBeanAnnotatedClass(AnnotationFinder.ClassInfo >>>>>classInfo) >>>>>+ { >>>>>+ // check whether this class has 'scope' annotations or a >>>>>stereotype >>>>>+ for (AnnotationFinder.AnnotationInfo annotationInfo : >>>>>classInfo.getAnnotations()) >>>>>+ { >>>>>+ if (isBeanAnnotation(annotationInfo)) >>>>>+ { >>>>>+ return true; >>>>>+ } >>>>>+ } >>>>>+ return false; >>>>>+ } >>>>>+ >>>>>+ protected boolean isBeanAnnotation(AnnotationFinder.AnnotationInfo >>>>>annotationInfo) >>>>>+ { >>>>>+ String annotationName = annotationInfo.getName(); >>>>>+ >>>>>+ // TODO add caches >>>>>+ >>>>>+ try >>>>>+ { >>>>>+ Class<? extends Annotation> annotationType = (Class<? extends >>>>>Annotation>) >>>>>WebBeansUtil.getCurrentClassLoader().loadClass(annotationName); >>>>>+ boolean isBeanAnnotation = >>>>>webBeansContext.getBeanManagerImpl().isScope(annotationType); >>>>>+ isBeanAnnotation = isBeanAnnotation || >>>>>webBeansContext.getBeanManagerImpl().isStereotype(annotationType); >>>>>+ >>>>>+ return isBeanAnnotation; >>>>>+ } >>>>>+ catch (ClassNotFoundException e) >>>>>+ { >>>>>+ return false; >>>>>+ } >>>>>+ } >>>>>+ >>>>> >>>>> @Override >>>>> public Set<URL> getBeanXmls() >>>>> >>>>>Modified: >>>>>openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/xbean/BeanArchiveFilter.java >>>>>URL: >>>>>http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/xbean/BeanArchiveFilter.java?rev=1566452&r1=1566451&r2=1566452&view=diff >>>>>============================================================================== >>>>>--- >>>>>openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/xbean/BeanArchiveFilter.java >>>>>(original) >>>>>+++ >>>>>openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/xbean/BeanArchiveFilter.java >>>>>Sun Feb 9 22:23:28 2014 >>>>>@@ -18,11 +18,8 @@ >>>>> */ >>>>>package org.apache.webbeans.corespi.scanner.xbean; >>>>> >>>>>-import java.lang.annotation.Annotation; >>>>>import java.util.List; >>>>>-import java.util.Set; >>>>> >>>>>-import org.apache.webbeans.container.BeanManagerImpl; >>>>>import org.apache.webbeans.spi.BeanArchiveService.BeanArchiveInformation; >>>>>import org.apache.webbeans.spi.BeanArchiveService.BeanDiscoveryMode; >>>>>import org.apache.xbean.finder.filter.Filter; >>>>>@@ -32,28 +29,18 @@ import org.apache.xbean.finder.filter.Fi >>>>> */ >>>>>public class BeanArchiveFilter implements Filter >>>>>{ >>>>>- private final ClassLoader loader; >>>>>- private final BeanManagerImpl beanManager; >>>>> private final BeanArchiveInformation beanArchiveInfo; >>>>>- private final boolean scanAll; >>>>> private final boolean scanNone; >>>>>- private final boolean scanAnnotated; >>>>> >>>>> private List<String> urlClasses; >>>>>- private Set<String> allClasses; >>>>> >>>>>- public BeanArchiveFilter(ClassLoader loader, BeanManagerImpl >>>>>beanManager, BeanArchiveInformation beanArchiveInfo, List<String> >>>>>urlClasses, Set<String> allClasses) >>>>>+ public BeanArchiveFilter(BeanArchiveInformation beanArchiveInfo, >>>>>List<String> urlClasses) >>>>> { >>>>>- this.loader = loader; >>>>>- this.beanManager = beanManager; >>>>> this.beanArchiveInfo = beanArchiveInfo; >>>>> this.urlClasses = urlClasses; >>>>>- this.allClasses = allClasses; >>>>> BeanDiscoveryMode discoveryMode = >>>>>beanArchiveInfo.getBeanDiscoveryMode(); >>>>> >>>>>- scanAll = BeanDiscoveryMode.ALL.equals(discoveryMode); >>>>> scanNone = BeanDiscoveryMode.NONE.equals(discoveryMode); >>>>>- scanAnnotated = BeanDiscoveryMode.ANNOTATED.equals(discoveryMode); >>>>> } >>>>> >>>>> @Override >>>>>@@ -69,51 +56,8 @@ public class BeanArchiveFilter implement >>>>> return false; >>>>> } >>>>> >>>>>- if (scanAll) >>>>>- { >>>>>- urlClasses.add(name); >>>>>- allClasses.add(name); >>>>>- return true; >>>>>- } >>>>>- >>>>>- if (scanAnnotated) >>>>>- { >>>>>- try >>>>>- { >>>>>- Class clazz = Class.forName(name, false, loader); >>>>>- if (!hasScopeAnnotation(clazz.getAnnotations())) >>>>>- { >>>>>- return false; >>>>>- } >>>>>- } >>>>>- catch (ClassNotFoundException cnfe) >>>>>- { >>>>>- // not a problem, just ignore this class >>>>>- return false; >>>>>- } >>>>>- catch (NoClassDefFoundError ncdf) >>>>>- { >>>>>- // not a problem, just ignore this class >>>>>- return false; >>>>>- } >>>>>- >>>>> urlClasses.add(name); >>>>>- allClasses.add(name); >>>>> return true; >>>>>- } >>>>>- >>>>>- return false; >>>>> } >>>>> >>>>>- private boolean hasScopeAnnotation(Annotation[] annotations) >>>>>- { >>>>>- for (Annotation annotation : annotations) >>>>>- { >>>>>- if (beanManager.isScope(annotation.annotationType())) >>>>>- { >>>>>- return true; >>>>>- } >>>>>- } >>>>>- return false; >>>>>- } >>>>>} >>>>> >>>>>Modified: >>>>>openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/xbean/CdiArchive.java >>>>>URL: >>>>>http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/xbean/CdiArchive.java?rev=1566452&r1=1566451&r2=1566452&view=diff >>>>>============================================================================== >>>>>--- >>>>>openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/xbean/CdiArchive.java >>>>>(original) >>>>>+++ >>>>>openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/xbean/CdiArchive.java >>>>>Sun Feb 9 22:23:28 2014 >>>>>@@ -18,14 +18,12 @@ >>>>> */ >>>>>package org.apache.webbeans.corespi.scanner.xbean; >>>>> >>>>>-import org.apache.webbeans.container.BeanManagerImpl; >>>>>import org.apache.webbeans.spi.BeanArchiveService; >>>>>+import org.apache.webbeans.spi.BeanArchiveService.BeanArchiveInformation; >>>>>import org.apache.xbean.finder.archive.Archive; >>>>>-import org.apache.xbean.finder.archive.ClassesArchive; >>>>>import org.apache.xbean.finder.archive.ClasspathArchive; >>>>>import org.apache.xbean.finder.archive.CompositeArchive; >>>>>import org.apache.xbean.finder.archive.FilteredArchive; >>>>>-import org.apache.xbean.finder.filter.Filter; >>>>> >>>>>import java.io.IOException; >>>>>import java.io.InputStream; >>>>>@@ -33,11 +31,9 @@ import java.net.URL; >>>>>import java.util.ArrayList; >>>>>import java.util.Collection; >>>>>import java.util.HashMap; >>>>>-import java.util.HashSet; >>>>>import java.util.Iterator; >>>>>import java.util.List; >>>>>import java.util.Map; >>>>>-import java.util.Set; >>>>> >>>>>/** >>>>> * this delegate pattern is interesting >>>>>@@ -53,45 +49,26 @@ public class CdiArchive implements Archi >>>>> */ >>>>> private final Map<String, FoundClasses> classesByUrl = new >>>>>HashMap<String, FoundClasses>(); >>>>> >>>>>- private final Set<String> allClasses = new HashSet<String>(); >>>>> private final Archive delegate; >>>>> >>>>>- public CdiArchive(BeanManagerImpl beanManager, BeanArchiveService >>>>>beanArchiveService, final ClassLoader loader, final Map<String, URL> urls) >>>>>+ public CdiArchive(BeanArchiveService beanArchiveService, final >>>>>ClassLoader loader, final Map<String, URL> urls) >>>>> { >>>>> final Collection<Archive> archives = new ArrayList<Archive>(); >>>>> for (final URL url : urls.values()) >>>>> { >>>>> final List<String> urlClasses = new ArrayList<String>(); >>>>> >>>>>- BeanArchiveService.BeanArchiveInformation beanArchiveInfo = >>>>>beanArchiveService.getBeanArchiveInformation(url); >>>>>+ BeanArchiveInformation beanArchiveInfo = >>>>>beanArchiveService.getBeanArchiveInformation(url); >>>>> final Archive archive = new >>>>>FilteredArchive(ClasspathArchive.archive(loader, url), >>>>>- new BeanArchiveFilter(loader, beanManager, >>>>>beanArchiveInfo, urlClasses, allClasses)); >>>>>+ new BeanArchiveFilter(beanArchiveInfo, urlClasses)); >>>>> >>>>>- classesByUrl.put(url.toExternalForm(), new FoundClasses(url, >>>>>urlClasses)); >>>>>+ classesByUrl.put(url.toExternalForm(), new FoundClasses(url, >>>>>urlClasses, beanArchiveInfo)); >>>>> archives.add(archive); >>>>> } >>>>> >>>>> delegate = new CompositeArchive(archives); >>>>> } >>>>> >>>>>- public CdiArchive(final Collection<Class<?>> classList) >>>>>- { >>>>>- delegate = new FilteredArchive(new ClassesArchive(classList), new >>>>>Filter() >>>>>- { >>>>>- @Override >>>>>- public boolean accept(final String name) >>>>>- { >>>>>- allClasses.add(name); >>>>>- return true; >>>>>- } >>>>>- }); >>>>>- } >>>>>- >>>>>- public Set<String> getClasses() >>>>>- { >>>>>- return allClasses; >>>>>- } >>>>>- >>>>> public Map<String, FoundClasses> classesByUrl() >>>>> { >>>>> return classesByUrl; >>>>>@@ -119,11 +96,13 @@ public class CdiArchive implements Archi >>>>> { >>>>> private URL url; >>>>> private Collection<String> classNames; >>>>>+ private BeanArchiveInformation beanArchiveInfo; >>>>> >>>>>- public FoundClasses(URL url, Collection<String> classNames) >>>>>+ public FoundClasses(URL url, Collection<String> classNames, >>>>>BeanArchiveInformation beanArchiveInfo) >>>>> { >>>>> this.url = url; >>>>> this.classNames = classNames; >>>>>+ this.beanArchiveInfo = beanArchiveInfo; >>>>> } >>>>> >>>>> public URL getUrl() >>>>>@@ -131,6 +110,11 @@ public class CdiArchive implements Archi >>>>> return url; >>>>> } >>>>> >>>>>+ public BeanArchiveInformation getBeanArchiveInfo() >>>>>+ { >>>>>+ return beanArchiveInfo; >>>>>+ } >>>>>+ >>>>> public Collection<String> getClassNames() >>>>> { >>>>> return classNames; >>>>> >>>>>Added: >>>>>openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/xbean/OwbAnnotationFinder.java >>>>>URL: >>>>>http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/xbean/OwbAnnotationFinder.java?rev=1566452&view=auto >>>>>============================================================================== >>>>>--- >>>>>openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/xbean/OwbAnnotationFinder.java >>>>>(added) >>>>>+++ >>>>>openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/xbean/OwbAnnotationFinder.java >>>>>Sun Feb 9 22:23:28 2014 >>>>>@@ -0,0 +1,45 @@ >>>>>+/* >>>>>+ * Licensed to the Apache Software Foundation (ASF) under one >>>>>+ * or more contributor license agreements. See the NOTICE file >>>>>+ * distributed with this work for additional information >>>>>+ * regarding copyright ownership. The ASF licenses this file >>>>>+ * to you under the Apache License, Version 2.0 (the >>>>>+ * "License"); you may not use this file except in compliance >>>>>+ * with the License. You may obtain a copy of the License at >>>>>+ * >>>>>+ * http://www.apache.org/licenses/LICENSE-2.0 >>>>>+ * >>>>>+ * Unless required by applicable law or agreed to in writing, >>>>>+ * software distributed under the License is distributed on an >>>>>+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY >>>>>+ * KIND, either express or implied. See the License for the >>>>>+ * specific language governing permissions and limitations >>>>>+ * under the License. >>>>>+ */ >>>>>+package org.apache.webbeans.corespi.scanner.xbean; >>>>>+ >>>>>+import org.apache.xbean.finder.AnnotationFinder; >>>>>+import org.apache.xbean.finder.archive.Archive; >>>>>+ >>>>>+/** >>>>>+ * We just extend the default AnnotationFinder to get Access to the >>>>>original ClassInfo >>>>>+ * for not having to call loadClass so often... >>>>>+ */ >>>>>+public class OwbAnnotationFinder extends AnnotationFinder >>>>>+{ >>>>>+ public OwbAnnotationFinder(Archive archive, boolean >>>>>checkRuntimeAnnotation) >>>>>+ { >>>>>+ super(archive, checkRuntimeAnnotation); >>>>>+ } >>>>>+ >>>>>+ public OwbAnnotationFinder(Archive archive) >>>>>+ { >>>>>+ super(archive); >>>>>+ } >>>>>+ >>>>>+ public ClassInfo getClassInfo(String className) >>>>>+ { >>>>>+ return classInfos.get(className); >>>>>+ } >>>>>+ >>>>>+} >>>>> >>>>>Modified: >>>>>openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/test/OpenWebBeansTestMetaDataDiscoveryService.java >>>>>URL: >>>>>http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/test/OpenWebBeansTestMetaDataDiscoveryService.java?rev=1566452&r1=1566451&r2=1566452&view=diff >>>>>============================================================================== >>>>>--- >>>>>openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/test/OpenWebBeansTestMetaDataDiscoveryService.java >>>>>(original) >>>>>+++ >>>>>openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/test/OpenWebBeansTestMetaDataDiscoveryService.java >>>>>Sun Feb 9 22:23:28 2014 >>>>>@@ -19,14 +19,14 @@ >>>>>package org.apache.webbeans.lifecycle.test; >>>>> >>>>>import org.apache.webbeans.corespi.scanner.AbstractMetaDataDiscovery; >>>>>-import org.apache.webbeans.corespi.scanner.xbean.CdiArchive; >>>>>import org.apache.webbeans.exception.WebBeansDeploymentException; >>>>>import org.apache.webbeans.util.Asserts; >>>>>-import org.apache.xbean.finder.AnnotationFinder; >>>>> >>>>>import java.net.MalformedURLException; >>>>>import java.net.URL; >>>>>import java.util.Collection; >>>>>+import java.util.HashSet; >>>>>+import java.util.Set; >>>>> >>>>>/** >>>>> * Used by each test. >>>>>@@ -35,15 +35,18 @@ import java.util.Collection; >>>>> */ >>>>>public class OpenWebBeansTestMetaDataDiscoveryService extends >>>>>AbstractMetaDataDiscovery >>>>>{ >>>>>+ >>>>>+ private Collection<Class<?>> classes; >>>>>+ >>>>> public OpenWebBeansTestMetaDataDiscoveryService() >>>>> { >>>>>- >>>>>+ super(); >>>>> } >>>>> >>>>> @Override >>>>> protected void configure() >>>>> { >>>>>- //Nothing we scan >>>>>+ // Nothing to scan, we add all our stuff manually... >>>>> } >>>>> >>>>> /** >>>>>@@ -52,13 +55,15 @@ public class OpenWebBeansTestMetaDataDis >>>>> */ >>>>> public void deployClasses(Collection<Class<?>> classes) >>>>> { >>>>>- if(classes != null) >>>>>- { >>>>>- archive = new CdiArchive(classes); >>>>>- finder = new AnnotationFinder(archive); >>>>>- } >>>>>+ this.classes = classes; >>>>> } >>>>>- >>>>>+ >>>>>+ @Override >>>>>+ public Set<Class<?>> getBeanClasses() >>>>>+ { >>>>>+ return new HashSet<Class<?>>(classes); >>>>>+ } >>>>>+ >>>>> /** >>>>> * Those xmls will be scanned by container. >>>>> * @param xmls beans xmls >>>>>@@ -91,6 +96,5 @@ public class OpenWebBeansTestMetaDataDis >>>>> >>>>> addWebBeansXmlLocation(url); >>>>> } >>>>>- >>>>> >>>>>} >>>>> >>>>>Modified: >>>>>openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/scanner/WebScannerService.java >>>>>URL: >>>>>http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/scanner/WebScannerService.java?rev=1566452&r1=1566451&r2=1566452&view=diff >>>>>============================================================================== >>>>>--- >>>>>openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/scanner/WebScannerService.java >>>>>(original) >>>>>+++ >>>>>openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/scanner/WebScannerService.java >>>>>Sun Feb 9 22:23:28 2014 >>>>>@@ -18,14 +18,11 @@ >>>>> */ >>>>>package org.apache.webbeans.web.scanner; >>>>> >>>>>-import org.apache.webbeans.config.WebBeansContext; >>>>>import org.apache.webbeans.corespi.scanner.AbstractMetaDataDiscovery; >>>>>-import org.apache.webbeans.corespi.scanner.xbean.CdiArchive; >>>>>import org.apache.webbeans.logger.WebBeansLoggerFacade; >>>>>import org.apache.webbeans.spi.BeanArchiveService; >>>>>import org.apache.webbeans.util.ExceptionUtil; >>>>>import org.apache.webbeans.util.WebBeansUtil; >>>>>-import org.apache.xbean.finder.AnnotationFinder; >>>>> >>>>>import javax.servlet.ServletContext; >>>>>import java.net.MalformedURLException; >>>>>@@ -50,17 +47,6 @@ public class WebScannerService extends A >>>>> } >>>>> >>>>> @Override >>>>>- protected AnnotationFinder initFinder() >>>>>- { >>>>>- WebBeansContext webbeansContext = WebBeansContext.getInstance(); >>>>>- beanArchiveService = webbeansContext.getBeanArchiveService(); >>>>>- archive = new CdiArchive(webbeansContext.getBeanManagerImpl(), >>>>>beanArchiveService, WebBeansUtil.getCurrentClassLoader(), >>>>>getBeanDeploymentUrls()); >>>>>- finder = new AnnotationFinder(archive); >>>>>- >>>>>- return finder; >>>>>- } >>>>>- >>>>>- @Override >>>>> public void init(Object context) >>>>> { >>>>> super.init(context); >>>>> >>>>> >>> >>> > >
