Author: rmannibucau Date: Fri Oct 21 09:19:38 2016 New Revision: 1765968 URL: http://svn.apache.org/viewvc?rev=1765968&view=rev Log: allows to use a custom xbean filter to filter classes + exposing the finder from the web lifecycle
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-web/src/main/java/org/apache/webbeans/web/lifecycle/WebContainerLifecycle.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=1765968&r1=1765967&r2=1765968&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 Fri Oct 21 09:19:38 2016 @@ -35,6 +35,7 @@ import org.apache.webbeans.util.UrlSet; import org.apache.webbeans.util.WebBeansUtil; import org.apache.xbean.finder.AnnotationFinder; import org.apache.xbean.finder.ClassLoaders; +import org.apache.xbean.finder.filter.Filter; import java.io.IOException; import java.lang.annotation.Annotation; @@ -111,7 +112,8 @@ public abstract class AbstractMetaDataDi beanArchiveService = webBeansContext.getBeanArchiveService(); } - archive = new CdiArchive(beanArchiveService, WebBeansUtil.getCurrentClassLoader(), getBeanDeploymentUrls()); + final Filter userFilter = webBeansContext.getService(Filter.class); + archive = new CdiArchive(beanArchiveService, WebBeansUtil.getCurrentClassLoader(), getBeanDeploymentUrls(), userFilter); finder = new OwbAnnotationFinder(archive); return finder; 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=1765968&r1=1765967&r2=1765968&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 Fri Oct 21 09:19:38 2016 @@ -31,13 +31,15 @@ public class BeanArchiveFilter implement { private final BeanArchiveInformation beanArchiveInfo; private final boolean scanNone; + private final Filter userFilter; private List<String> urlClasses; - public BeanArchiveFilter(BeanArchiveInformation beanArchiveInfo, List<String> urlClasses) + public BeanArchiveFilter(BeanArchiveInformation beanArchiveInfo, List<String> urlClasses, Filter userFilter) { this.beanArchiveInfo = beanArchiveInfo; this.urlClasses = urlClasses; + this.userFilter = userFilter; BeanDiscoveryMode discoveryMode = beanArchiveInfo.getBeanDiscoveryMode(); scanNone = BeanDiscoveryMode.NONE.equals(discoveryMode); @@ -51,13 +53,13 @@ public class BeanArchiveFilter implement return false; } - if (beanArchiveInfo.isClassExcluded(name)) + if ((userFilter != null && !userFilter.accept(name)) || beanArchiveInfo.isClassExcluded(name)) { return false; } - urlClasses.add(name); - return true; + urlClasses.add(name); + return true; } } 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=1765968&r1=1765967&r2=1765968&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 Fri Oct 21 09:19:38 2016 @@ -24,6 +24,7 @@ import org.apache.xbean.finder.archive.A 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; @@ -51,7 +52,8 @@ public class CdiArchive implements Archi private final Archive delegate; - public CdiArchive(BeanArchiveService beanArchiveService, final ClassLoader loader, final Map<String, URL> urls) + public CdiArchive(BeanArchiveService beanArchiveService, final ClassLoader loader, final Map<String, URL> urls, + final Filter userFilter) { final Collection<Archive> archives = new ArrayList<Archive>(); for (final URL url : urls.values()) @@ -60,7 +62,7 @@ public class CdiArchive implements Archi BeanArchiveInformation beanArchiveInfo = beanArchiveService.getBeanArchiveInformation(url); final Archive archive = new FilteredArchive(ClasspathArchive.archive(loader, url), - new BeanArchiveFilter(beanArchiveInfo, urlClasses)); + new BeanArchiveFilter(beanArchiveInfo, urlClasses, userFilter)); classesByUrl.put(url.toExternalForm(), new FoundClasses(url, urlClasses, beanArchiveInfo)); archives.add(archive); Modified: openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/lifecycle/WebContainerLifecycle.java URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/lifecycle/WebContainerLifecycle.java?rev=1765968&r1=1765967&r2=1765968&view=diff ============================================================================== --- openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/lifecycle/WebContainerLifecycle.java (original) +++ openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/lifecycle/WebContainerLifecycle.java Fri Oct 21 09:19:38 2016 @@ -75,7 +75,6 @@ public final class WebContainerLifecycle this.logger = WebBeansLoggerFacade.getLogger(WebContainerLifecycle.class); } - /** * {@inheritDoc} */ 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=1765968&r1=1765967&r2=1765968&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 Fri Oct 21 09:19:38 2016 @@ -19,8 +19,8 @@ package org.apache.webbeans.web.scanner; import org.apache.webbeans.corespi.scanner.AbstractMetaDataDiscovery; +import org.apache.webbeans.corespi.scanner.xbean.OwbAnnotationFinder; import org.apache.webbeans.logger.WebBeansLoggerFacade; -import org.apache.webbeans.spi.BeanArchiveService; import org.apache.webbeans.util.ExceptionUtil; import org.apache.webbeans.util.WebBeansUtil; @@ -39,7 +39,6 @@ public class WebScannerService extends A private static final Logger logger = WebBeansLoggerFacade.getLogger(WebScannerService.class); protected ServletContext servletContext = null; - private BeanArchiveService beanArchiveService; public WebScannerService() { @@ -62,6 +61,11 @@ public class WebScannerService extends A registerBeanArchives(loader); } + public OwbAnnotationFinder getFinder() + { + return finder; + } + /** * Returns the web application class path if it contains * a beans.xml marker file.