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);
>>>>>
>>>>>
>>>
>>>
>
>

Reply via email to