You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by rm...@apache.org on 2013/02/18 18:18:57 UTC
svn commit: r1447399 - in /openwebbeans/trunk: ./ webbeans-impl/
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/cor...
Author: rmannibucau
Date: Mon Feb 18 17:18:56 2013
New Revision: 1447399
URL: http://svn.apache.org/r1447399
Log:
OWB-779 importing xbean as main scanner
Added:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/xbean/
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/xbean/CdiArchive.java
Removed:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/AnnotationDB.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/se/BeansXmlAnnotationDB.java
Modified:
openwebbeans/trunk/pom.xml
openwebbeans/trunk/webbeans-impl/pom.xml
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/se/DefaultScannerService.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/test/OpenWebBeansTestMetaDataDiscoveryService.java
openwebbeans/trunk/webbeans-porting/src/main/java/org/apache/webbeans/test/tck/mock/TCKMetaDataDiscoveryImpl.java
openwebbeans/trunk/webbeans-tck/pom.xml
openwebbeans/trunk/webbeans-web/pom.xml
openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/scanner/WebScannerService.java
Modified: openwebbeans/trunk/pom.xml
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/pom.xml?rev=1447399&r1=1447398&r2=1447399&view=diff
==============================================================================
--- openwebbeans/trunk/pom.xml (original)
+++ openwebbeans/trunk/pom.xml Mon Feb 18 17:18:56 2013
@@ -554,8 +554,8 @@
<dependency>
<groupId>org.apache.xbean</groupId>
- <artifactId>xbean-finder</artifactId>
- <version>3.7</version>
+ <artifactId>xbean-finder-shaded</artifactId>
+ <version>3.13-SNAPSHOT</version>
</dependency>
<!--X TODO use a shaded version of:
@@ -566,11 +566,6 @@
<optional>true</optional>
</dependency>
-->
- <dependency>
- <groupId>org.apache.xbean</groupId>
- <artifactId>xbean-asm-shaded</artifactId>
- <version>3.13-SNAPSHOT</version>
- </dependency>
<dependency>
<groupId>net.sf.scannotation</groupId>
Modified: openwebbeans/trunk/webbeans-impl/pom.xml
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/pom.xml?rev=1447399&r1=1447398&r2=1447399&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/pom.xml (original)
+++ openwebbeans/trunk/webbeans-impl/pom.xml Mon Feb 18 17:18:56 2013
@@ -43,13 +43,8 @@
</dependency>
<dependency>
- <groupId>net.sf.scannotation</groupId>
- <artifactId>scannotation</artifactId>
- </dependency>
-
- <dependency>
<groupId>org.apache.xbean</groupId>
- <artifactId>xbean-asm-shaded</artifactId>
+ <artifactId>xbean-finder-shaded</artifactId>
</dependency>
<dependency>
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=1447399&r1=1447398&r2=1447399&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 Mon Feb 18 17:18:56 2013
@@ -19,28 +19,31 @@
package org.apache.webbeans.corespi.scanner;
+import org.apache.webbeans.config.OWBLogConst;
+import org.apache.webbeans.config.OpenWebBeansConfiguration;
+import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.corespi.scanner.xbean.CdiArchive;
+import org.apache.webbeans.exception.WebBeansConfigurationException;
+import org.apache.webbeans.exception.WebBeansDeploymentException;
+import org.apache.webbeans.logger.WebBeansLoggerFacade;
+import org.apache.webbeans.spi.BDABeansXmlScanner;
+import org.apache.webbeans.spi.ScannerService;
+import org.apache.webbeans.util.ClassUtil;
+import org.apache.webbeans.util.WebBeansUtil;
+import org.apache.xbean.finder.AnnotationFinder;
+
import java.io.IOException;
+import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashSet;
-import java.util.Map;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.apache.webbeans.config.OWBLogConst;
-import org.apache.webbeans.config.OpenWebBeansConfiguration;
-import org.apache.webbeans.config.WebBeansContext;
-import org.apache.webbeans.corespi.se.BeansXmlAnnotationDB;
-import org.apache.webbeans.corespi.se.DefaultBDABeansXmlScanner;
-import org.apache.webbeans.exception.WebBeansDeploymentException;
-import org.apache.webbeans.logger.WebBeansLoggerFacade;
-import org.apache.webbeans.spi.BDABeansXmlScanner;
-import org.apache.webbeans.spi.ScannerService;
-import org.apache.webbeans.util.ClassUtil;
-
public abstract class AbstractMetaDataDiscovery implements ScannerService
{
protected static final Logger logger = WebBeansLoggerFacade.getLogger(AbstractMetaDataDiscovery.class);
@@ -52,42 +55,56 @@ public abstract class AbstractMetaDataDi
//private Map<String, InputStream> EJB_XML_LOCATIONS = new HashMap<String, InputStream>();
- /** Annotation Database */
- private AnnotationDB annotationDB;
-
+ protected ClassLoader loader;
+ protected CdiArchive archive;
+ protected AnnotationFinder finder;
protected boolean isBDAScannerEnabled = false;
protected BDABeansXmlScanner bdaBeansXmlScanner;
- /**
- * determines if cross referencing already got performed or not
- */
- private boolean isCrossReferenzed = false;
-
- protected AbstractMetaDataDiscovery()
+ protected AnnotationFinder initFinder()
{
- initAnnotationDB();
- }
-
- private void initAnnotationDB()
- {
- try
+ if (finder != null)
{
- annotationDB = new AnnotationDB();
- annotationDB.setScanClassAnnotations(true);
- annotationDB.setScanFieldAnnotations(true);
- annotationDB.setScanMethodAnnotations(true);
- annotationDB.setScanParameterAnnotations(true);
+ return finder;
}
- catch(Exception e)
+
+ final Collection<URL> trimmedUrls = new ArrayList<URL>();
+ for (final URL url : getUrls())
{
- throw new WebBeansDeploymentException(e);
+ try
+ {
+ String file = url.getFile();
+ if (file.endsWith(META_INF_BEANS_XML))
+ {
+ file = file.substring(0, file.length() - META_INF_BEANS_XML.length());
+ }
+ else if (file.endsWith("WEB-INF/beans.xml"))
+ {
+ file = file.substring(0, file.length() - "WEB-INF/beans.xml".length());
+ }
+ trimmedUrls.add(new URL(url.getProtocol(), url.getHost(), url.getPort(), file));
+ }
+ catch (MalformedURLException e)
+ {
+ throw new WebBeansConfigurationException("Can't trim url " + url.toExternalForm());
+ }
}
+
+ archive = new CdiArchive(WebBeansUtil.getCurrentClassLoader(), trimmedUrls);
+ finder = new AnnotationFinder(archive);
+
+ return finder;
+ }
+
+ protected Iterable<URL> getUrls()
+ {
+ return webBeansXmlLocations;
}
/**
* Configure the Web Beans Container with deployment information and fills
* annotation database and beans.xml stream database.
- *
+ *
* @throws org.apache.webbeans.exception.WebBeansConfigurationException if any run time exception occurs
*/
public void scan() throws WebBeansDeploymentException
@@ -104,7 +121,9 @@ public abstract class AbstractMetaDataDi
public void release()
{
- initAnnotationDB();
+ finder = null;
+ archive = null;
+ loader = null;
}
abstract protected void configure();
@@ -120,6 +139,8 @@ public abstract class AbstractMetaDataDi
*/
protected String[] findBeansXmlBases(String resourceName, ClassLoader loader)
{
+ this.loader = loader;
+
ArrayList<String> list = new ArrayList<String>();
try
{
@@ -143,12 +164,14 @@ public abstract class AbstractMetaDataDi
throw new RuntimeException(e);
}
+ initFinder();
+
return list.toArray(new String[list.size()]);
}
-
+
public void init(Object object)
{
// set per BDA beans.xml flag here because setting it in constructor
@@ -156,31 +179,16 @@ public abstract class AbstractMetaDataDi
// properties are loaded.
String usage = WebBeansContext.currentInstance().getOpenWebBeansConfiguration().getProperty(OpenWebBeansConfiguration.USE_BDA_BEANSXML_SCANNER);
isBDAScannerEnabled = Boolean.parseBoolean(usage);
- if (isBDAScannerEnabled)
- {
- annotationDB = new BeansXmlAnnotationDB();
- ((BeansXmlAnnotationDB)annotationDB).setBdaBeansXmlScanner(this);
-
- bdaBeansXmlScanner = new DefaultBDABeansXmlScanner();
- }
- }
-
- /**
- * @return the aNNOTATION_DB
- */
- protected AnnotationDB getAnnotationDB()
- {
- return annotationDB;
}
public Set<String> getAllAnnotations(String className)
{
- return annotationDB.getAnnotationIndex().get(className);
+ throw new UnsupportedOperationException();
}
/**
- * add the given beans.xml path to the locations list
+ * add the given beans.xml path to the locations list
* @param beansXmlUrl location path
*/
protected void addWebBeansXmlLocation(URL beansXmlUrl)
@@ -197,65 +205,35 @@ public abstract class AbstractMetaDataDi
*/
public Set<Class<?>> getBeanClasses()
{
- crossReferenceBeans();
-
- Set<Class<?>> classSet = new HashSet<Class<?>>();
- Map<String,Set<String>> index = annotationDB.getClassIndex();
-
- if(index != null)
+ final Set<Class<?>> classSet = new HashSet<Class<?>>();
+ for(String str : archive.getClasses())
{
- Set<String> strSet = index.keySet();
- if(strSet != null)
+ try
{
- for(String str : strSet)
+ Class<?> clazz = ClassUtil.getClassFromName(str);
+ if (clazz != null)
{
- try
- {
- Class<?> clazz = ClassUtil.getClassFromName(str);
- 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);
-
- }
- }
- catch (NoClassDefFoundError e)
- {
- if (logger.isLoggable(Level.WARNING))
- {
- logger.log(Level.WARNING, OWBLogConst.WARN_0018, new Object[] { str, e.toString() });
- }
- }
- }
- }
- }
-
- return classSet;
- }
- /**
- * Ensure that all Annotation CrossReferences got resolved.
- */
- protected synchronized void crossReferenceBeans()
- {
- if (!isCrossReferenzed)
- {
- try
- {
- annotationDB.crossReferenceMetaAnnotations();
+ // 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);
+
+ }
}
- catch (AnnotationDB.CrossReferenceException e)
+ catch (NoClassDefFoundError e)
{
- throw new RuntimeException(e);
+ if (logger.isLoggable(Level.WARNING))
+ {
+ logger.log(Level.WARNING, OWBLogConst.WARN_0018, new Object[] { str, e.toString() });
+ }
}
- isCrossReferenzed = true;
}
+
+ return classSet;
}
Added: 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=1447399&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/xbean/CdiArchive.java (added)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/xbean/CdiArchive.java Mon Feb 18 17:18:56 2013
@@ -0,0 +1,113 @@
+/*
+ * 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.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;
+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
+// because we will be able to add
+// some exclusion config through it
+// using Filter + FilterArchive
+public class CdiArchive implements Archive
+{
+ private final Map<URL, Collection<String>> map = new HashMap<URL, Collection<String>>();
+ private final Set<String> classes = new HashSet<String>();
+ private final Archive delegate;
+
+ public CdiArchive(final ClassLoader loader, final Iterable<URL> urls)
+ {
+ final Collection<Archive> archives = new ArrayList<Archive>();
+ for (final URL url : urls)
+ {
+ final List<String> classes = new ArrayList<String>();
+ final Archive archive = new FilteredArchive(ClasspathArchive.archive(loader, url), new Filter()
+ {
+ @Override
+ public boolean accept(final String name)
+ {
+ classes.add(name);
+ CdiArchive.this.classes.add(name);
+ return true;
+ }
+ });
+ map.put(url, classes);
+ 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)
+ {
+ classes.add(name);
+ return true;
+ }
+ });
+ }
+
+ public Set<String> getClasses()
+ {
+ return classes;
+ }
+
+ public Map<URL, Collection<String>> classesByUrl()
+ {
+ return map;
+ }
+
+ @Override
+ public InputStream getBytecode(final String className) throws IOException, ClassNotFoundException
+ {
+ return delegate.getBytecode(className);
+ }
+
+ @Override
+ public Class<?> loadClass(final String className) throws ClassNotFoundException
+ {
+ return delegate.loadClass(className);
+ }
+
+ @Override
+ public Iterator<Entry> iterator()
+ {
+ return delegate.iterator();
+ }
+}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/se/DefaultScannerService.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/se/DefaultScannerService.java?rev=1447399&r1=1447398&r2=1447399&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/se/DefaultScannerService.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/se/DefaultScannerService.java Mon Feb 18 17:18:56 2013
@@ -18,10 +18,7 @@
*/
package org.apache.webbeans.corespi.se;
-import java.io.IOException;
-
import org.apache.webbeans.corespi.scanner.AbstractMetaDataDiscovery;
-import org.apache.webbeans.exception.WebBeansConfigurationException;
import org.apache.webbeans.util.WebBeansUtil;
public class DefaultScannerService extends AbstractMetaDataDiscovery
@@ -43,16 +40,7 @@ public class DefaultScannerService exten
ClassLoader loader = WebBeansUtil.getCurrentClassLoader();
//Store collection of beans.xml's before scanning archives
- String[] urlPaths = findBeansXmlBases(META_INF_BEANS_XML, loader);
-
- try
- {
- getAnnotationDB().scanArchives(urlPaths);
- }
- catch (IOException e)
- {
- throw new WebBeansConfigurationException("Error while scanning the JAR archives", e);
- }
+ findBeansXmlBases(META_INF_BEANS_XML, loader);
}
}
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=1447399&r1=1447398&r2=1447399&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 Mon Feb 18 17:18:56 2013
@@ -18,19 +18,15 @@
*/
package org.apache.webbeans.lifecycle.test;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Collection;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javassist.ClassPool;
-
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.logger.WebBeansLoggerFacade;
import org.apache.webbeans.util.Asserts;
+import org.apache.xbean.finder.AnnotationFinder;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Collection;
/**
* Used by each test.
@@ -39,8 +35,6 @@ import org.apache.webbeans.util.Asserts;
*/
public class OpenWebBeansTestMetaDataDiscoveryService extends AbstractMetaDataDiscovery
{
- private static final Logger logger = WebBeansLoggerFacade.getLogger(OpenWebBeansTestMetaDataDiscoveryService.class);
-
public OpenWebBeansTestMetaDataDiscoveryService()
{
@@ -60,10 +54,8 @@ public class OpenWebBeansTestMetaDataDis
{
if(classes != null)
{
- for(Class<?> clazz : classes)
- {
- addBeanClass(clazz);
- }
+ archive = new CdiArchive(classes);
+ finder = new AnnotationFinder(archive);
}
}
@@ -89,27 +81,6 @@ public class OpenWebBeansTestMetaDataDis
}
}
-
- /**
- * Adds new class for scanning.
- * @param clazz new scanned class
- */
- private void addBeanClass(Class<?> clazz)
- {
- Asserts.assertNotNull(clazz);
-
- URL url = ClassPool.getDefault().find(clazz.getName());
-
- try
- {
- getAnnotationDB().scanClass(url.openStream());
- }
- catch (IOException e)
- {
- logger.log(Level.WARNING, "Problems while scanning class " + clazz.getName());
- }
- }
-
/**
* Adds new beans.xml url for scanning.
* @param url new xml url
Modified: openwebbeans/trunk/webbeans-porting/src/main/java/org/apache/webbeans/test/tck/mock/TCKMetaDataDiscoveryImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-porting/src/main/java/org/apache/webbeans/test/tck/mock/TCKMetaDataDiscoveryImpl.java?rev=1447399&r1=1447398&r2=1447399&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-porting/src/main/java/org/apache/webbeans/test/tck/mock/TCKMetaDataDiscoveryImpl.java (original)
+++ openwebbeans/trunk/webbeans-porting/src/main/java/org/apache/webbeans/test/tck/mock/TCKMetaDataDiscoveryImpl.java Mon Feb 18 17:18:56 2013
@@ -18,16 +18,18 @@
*/
package org.apache.webbeans.test.tck.mock;
-import java.io.IOException;
-import java.net.URL;
-
-import javassist.ClassPool;
-
import org.apache.webbeans.corespi.scanner.AbstractMetaDataDiscovery;
+import org.apache.webbeans.corespi.scanner.xbean.CdiArchive;
import org.apache.webbeans.util.Asserts;
+import org.apache.xbean.finder.AnnotationFinder;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
public class TCKMetaDataDiscoveryImpl extends AbstractMetaDataDiscovery
{
+ private Collection<Class<?>> classes = new ArrayList<Class<?>>();
public TCKMetaDataDiscoveryImpl()
{
@@ -39,19 +41,22 @@ public class TCKMetaDataDiscoveryImpl ex
{
}
- public void addBeanClass(Class<?> clazz)
+ @Override
+ protected AnnotationFinder initFinder()
{
- Asserts.assertNotNull(clazz);
-
- URL url = ClassPool.getDefault().find(clazz.getName());
- try
+ if (finder != null)
{
- this.getAnnotationDB().scanClass(url.openStream());
- }
- catch (IOException e)
- {
- e.printStackTrace();
+ return finder;
}
+
+ archive = new CdiArchive(classes);
+ finder = new AnnotationFinder(archive);
+ return finder;
+ }
+
+ public void addBeanClass(Class<?> clazz)
+ {
+ classes.add(clazz);
}
public void addBeanXml(URL url)
Modified: openwebbeans/trunk/webbeans-tck/pom.xml
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-tck/pom.xml?rev=1447399&r1=1447398&r2=1447399&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-tck/pom.xml (original)
+++ openwebbeans/trunk/webbeans-tck/pom.xml Mon Feb 18 17:18:56 2013
@@ -77,7 +77,7 @@
<dependency>
<groupId>org.apache.xbean</groupId>
- <artifactId>xbean-asm-shaded</artifactId>
+ <artifactId>xbean-finder-shaded</artifactId>
</dependency>
<dependency>
Modified: openwebbeans/trunk/webbeans-web/pom.xml
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-web/pom.xml?rev=1447399&r1=1447398&r2=1447399&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-web/pom.xml (original)
+++ openwebbeans/trunk/webbeans-web/pom.xml Mon Feb 18 17:18:56 2013
@@ -49,7 +49,7 @@
<dependency>
<groupId>org.apache.xbean</groupId>
- <artifactId>xbean-asm-shaded</artifactId>
+ <artifactId>xbean-finder-shaded</artifactId>
</dependency>
<dependency>
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=1447399&r1=1447398&r2=1447399&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 Mon Feb 18 17:18:56 2013
@@ -18,22 +18,24 @@
*/
package org.apache.webbeans.web.scanner;
-import java.net.URL;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.servlet.ServletContext;
-
import org.apache.webbeans.config.OWBLogConst;
import org.apache.webbeans.corespi.scanner.AbstractMetaDataDiscovery;
-import org.apache.webbeans.corespi.scanner.AnnotationDB;
-import org.apache.webbeans.corespi.se.BeansXmlAnnotationDB;
+import org.apache.webbeans.corespi.scanner.xbean.CdiArchive;
import org.apache.webbeans.exception.WebBeansConfigurationException;
import org.apache.webbeans.logger.WebBeansLoggerFacade;
import org.apache.webbeans.util.WebBeansUtil;
-import org.scannotation.WarUrlFinder;
+import org.apache.xbean.finder.AnnotationFinder;
+
+import javax.servlet.ServletContext;
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
/**
* Configures the web application to find beans.
@@ -51,6 +53,40 @@ public class WebScannerService extends A
}
+ @Override
+ protected AnnotationFinder initFinder()
+ {
+ final Collection<URL> trimmedUrls = new ArrayList<URL>();
+ try
+ {
+ for (final String trimmed : getArchives())
+ {
+ try
+ {
+ String file = trimmed;
+ if (file.endsWith(META_INF_BEANS_XML))
+ {
+ file = file.substring(0, file.length() - META_INF_BEANS_XML.length());
+ }
+ trimmedUrls.add(new URL(file));
+ }
+ catch (MalformedURLException e)
+ {
+ throw new WebBeansConfigurationException("Can't trim url " + trimmed);
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ throw new WebBeansConfigurationException(WebBeansLoggerFacade.getTokenString(OWBLogConst.ERROR_0002), e);
+ }
+
+ archive = new CdiArchive(WebBeansUtil.getCurrentClassLoader(), trimmedUrls);
+ finder = new AnnotationFinder(archive);
+
+ return finder;
+ }
+
public void init(Object context)
{
super.init(context);
@@ -63,12 +99,7 @@ public class WebScannerService extends A
{
if (!configure)
{
- Set<String> arcs = getArchives();
- String[] urls = new String[arcs.size()];
- urls = arcs.toArray(urls);
-
- getAnnotationDB().scanArchives(urls);
-
+ initFinder();
configure = true;
}
@@ -173,20 +204,23 @@ public class WebScannerService extends A
if (url != null)
{
addWebBeansXmlLocation(url);
- URL resourceUrl = WarUrlFinder.findWebInfClassesPath(this.servletContext);
- if (resourceUrl == null)
+ URL resourceUrl = null;
+ final String path = servletContext.getRealPath("/WEB-INF/classes");
+ if (path != null)
{
- return null;
+ final File fp = new File(path);
+ if (fp.exists())
+ {
+ resourceUrl = fp.toURI().toURL();
+ }
}
- //set resource to beans.xml mapping
- AnnotationDB annotationDB = getAnnotationDB();
-
- if(annotationDB instanceof BeansXmlAnnotationDB)
+ if (resourceUrl == null)
{
- ((BeansXmlAnnotationDB)annotationDB).setResourceBeansXml(resourceUrl.toExternalForm(), url.toExternalForm());
+ return null;
}
+
return resourceUrl.toExternalForm();
}