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