You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by st...@apache.org on 2014/02/02 23:34:11 UTC
svn commit: r1563738 - in /openwebbeans/trunk:
webbeans-impl/src/main/java/org/apache/webbeans/util/
webbeans-impl/src/main/java/org/apache/webbeans/xml/
webbeans-impl/src/test/java/org/apache/webbeans/test/xml/
webbeans-impl/src/test/resources/org/apa...
Author: struberg
Date: Sun Feb 2 22:34:10 2014
New Revision: 1563738
URL: http://svn.apache.org/r1563738
Log:
OWB-928 add simple exclude rule scanning & execution
Added:
openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/test/xml/strict/cdi11_exclude.xml
- copied, changed from r1563533, openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/test/xml/strict/cdi11_discovery_none.xml
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansConstants.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/DefaultBeanArchiveInformation.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/DefaultBeanArchiveService.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/WebBeansXMLConfigurator.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/xml/BeanArchiveServiceTest.java
openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/test/xml/strict/cdi11_discovery_none.xml
openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/test/xml/strict/cdi11_failed.xml
openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/BeanArchiveService.java
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansConstants.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansConstants.java?rev=1563738&r1=1563737&r2=1563738&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansConstants.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansConstants.java Sun Feb 2 22:34:10 2014
@@ -38,16 +38,15 @@ public final class WebBeansConstants
"javax.persistence.PersistenceUnit",
"javax.persistence.PersistenceContext"};
- public static final String WEB_BEANS_XML_SPEC_SPECIFIC_INTERCEPTORS_ELEMENT = "interceptors";
-
- public static final String WEB_BEANS_XML_SPEC_SPECIFIC_DECORATORS_ELEMENT = "decorators";
-
+ public static final String WEB_BEANS_XML_INTERCEPTORS_ELEMENT = "interceptors";
+ public static final String WEB_BEANS_XML_DECORATORS_ELEMENT = "decorators";
+ public static final String WEB_BEANS_XML_ALTERNATIVES_ELEMENT = "alternatives";
+ public static final String WEB_BEANS_XML_SCAN_ELEMENT = "scan";
+
+ public static final String WEB_BEANS_XML_CLASS = "class";
+ public static final String WEB_BEANS_XML_STEREOTYPE = "stereotype";
+ public static final String WEB_BEANS_XML_EXCLUDE = "exclude";
- public static final String WEB_BEANS_XML_SPEC_SPECIFIC_BEAN_DISCOVERY_MODE_ELEMENT = "bean-discovery-mode";
- public static final String WEB_BEANS_XML_SPEC_SPECIFIC_ALTERNATIVES_ELEMENT = "alternatives";
- public static final String WEB_BEANS_XML_SPEC_SPECIFIC_CLASS = "class";
- public static final String WEB_BEANS_XML_SPEC_SPECIFIC_STEREOTYPE = "stereotype";
-
/**JNDI name of the {@link javax.enterprise.inject.spi.BeanManager} instance*/
public static final String WEB_BEANS_MANAGER_JNDI_NAME = "java:comp/BeanManager";
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/DefaultBeanArchiveInformation.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/DefaultBeanArchiveInformation.java?rev=1563738&r1=1563737&r2=1563738&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/DefaultBeanArchiveInformation.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/DefaultBeanArchiveInformation.java Sun Feb 2 22:34:10 2014
@@ -33,6 +33,13 @@ public class DefaultBeanArchiveInformati
private List<String> alternativeClasses = new ArrayList<String>();
private List<String> alternativeStereotypes = new ArrayList<String>();
+ /** Either an excluded class or an excluded .* path */
+ private List<String> excludedClasses = null;
+
+ /** Exclude all subpackages (exclude= .**) */
+ private List<String> excludedPackages = null;
+
+
@Override
public BeanDiscoveryMode getBeanDiscoveryMode()
@@ -41,9 +48,54 @@ public class DefaultBeanArchiveInformati
}
@Override
- public boolean isExcluded(String classOrPath)
+ public boolean isClassExcluded(String clazz)
{
- return false; //X TODO
+ boolean isExcluded = isPackageExcluded(clazz);
+
+ if (!isExcluded && excludedClasses != null)
+ {
+ for (String excludedClass : excludedClasses)
+ {
+ if (clazz.startsWith(excludedClass))
+ {
+ if (clazz.length() > excludedClass.length())
+ {
+ int lastDotPosition = clazz.lastIndexOf('.');
+ if (lastDotPosition > excludedClass.length())
+ {
+ continue;
+ }
+ }
+ isExcluded = true;
+ break;
+ }
+ }
+ }
+
+ return isExcluded;
+ }
+
+ @Override
+ public boolean isPackageExcluded(String packageName)
+ {
+ if (excludedPackages != null)
+ {
+ for (String excludedPackage : excludedPackages)
+ {
+ /*X TODO
+ * For 'org.apache.foo.**'
+ * the spec currently also excludes the package
+ * 'org.apache.foobar'
+ * Currently trying to clarify this.
+ */
+ if (packageName.startsWith(excludedPackage))
+ {
+ return true;
+ }
+ }
+ }
+
+ return false;
}
@Override
@@ -97,13 +149,23 @@ public class DefaultBeanArchiveInformati
this.decorators = decorators;
}
- public void setAlternativeClasses(List<String> alternativeClasses)
+ public void addClassExclude(String classOrPath)
{
- this.alternativeClasses = alternativeClasses;
+ if (excludedClasses == null)
+ {
+ excludedClasses = new ArrayList<String>();
+ }
+
+ excludedClasses.add(classOrPath);
}
- public void setAlternativeStereotypes(List<String> alternativeStereotypes)
+ public void addPackageExclude(String packageName)
{
- this.alternativeStereotypes = alternativeStereotypes;
+ if (excludedPackages == null)
+ {
+ excludedPackages = new ArrayList<String>();
+ }
+
+ excludedPackages.add(packageName);
}
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/DefaultBeanArchiveService.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/DefaultBeanArchiveService.java?rev=1563738&r1=1563737&r2=1563738&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/DefaultBeanArchiveService.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/DefaultBeanArchiveService.java Sun Feb 2 22:34:10 2014
@@ -27,6 +27,7 @@ import java.io.InputStream;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
+import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -35,6 +36,7 @@ import org.apache.webbeans.exception.Web
import org.apache.webbeans.exception.WebBeansException;
import org.apache.webbeans.logger.WebBeansLoggerFacade;
import org.apache.webbeans.spi.BeanArchiveService;
+import org.apache.webbeans.util.UrlSet;
import org.apache.webbeans.util.WebBeansConstants;
import org.w3c.dom.Element;
@@ -50,6 +52,8 @@ public class DefaultBeanArchiveService i
*/
private Map<String, BeanArchiveInformation> beanArchiveInformations = new HashMap<String, BeanArchiveInformation>();
+ private UrlSet registeredBeanArchives = new UrlSet();
+
@Override
public BeanArchiveInformation getBeanArchiveInformation(URL beansXmlUrl)
@@ -61,11 +65,18 @@ public class DefaultBeanArchiveService i
{
bdaInfo = readBeansXml(beansXmlUrl, beansXmlLocation);
beanArchiveInformations.put(beansXmlLocation, bdaInfo);
+ registeredBeanArchives.add(beansXmlUrl);
}
return bdaInfo;
}
+ @Override
+ public Set<URL> getRegisteredBeanArchives()
+ {
+ return registeredBeanArchives;
+ }
+
/**
* This method exists for extensibility reasons.
*/
@@ -135,8 +146,10 @@ public class DefaultBeanArchiveService i
throw new WebBeansConfigurationException("beans.xml must have a <beans> root element, but has: " + webBeansRoot.getLocalName());
}
- String version = webBeansRoot.getAttribute("version");
- bdaInfo.setVersion((version != null && version.length() > 0) ? version : null);
+ bdaInfo.setVersion(getTrimmedAttribute(webBeansRoot, "version"));
+
+ String beanDiscoveryMode = getTrimmedAttribute(webBeansRoot, "bean-discovery-mode");
+ bdaInfo.setBeanDiscoveryMode(beanDiscoveryMode != null ? BeanDiscoveryMode.valueOf(beanDiscoveryMode.toUpperCase()) : null);
readBeanChildren(bdaInfo, webBeansRoot);
}
@@ -171,38 +184,32 @@ public class DefaultBeanArchiveService i
{
Element child = elit.next();
- if (WebBeansConstants.WEB_BEANS_XML_SPEC_SPECIFIC_BEAN_DISCOVERY_MODE_ELEMENT.equalsIgnoreCase(child.getLocalName()))
- {
- fillScanMode(bdaInfo, child);
- }
- else if (WebBeansConstants.WEB_BEANS_XML_SPEC_SPECIFIC_DECORATORS_ELEMENT.equalsIgnoreCase(child.getLocalName()))
+ if (WebBeansConstants.WEB_BEANS_XML_DECORATORS_ELEMENT.equalsIgnoreCase(child.getLocalName()))
{
fillDecorators(bdaInfo, child);
}
- else if (WebBeansConstants.WEB_BEANS_XML_SPEC_SPECIFIC_INTERCEPTORS_ELEMENT.equalsIgnoreCase(child.getLocalName()))
+ else if (WebBeansConstants.WEB_BEANS_XML_INTERCEPTORS_ELEMENT.equalsIgnoreCase(child.getLocalName()))
{
fillInterceptors(bdaInfo, child);
}
- else if (WebBeansConstants.WEB_BEANS_XML_SPEC_SPECIFIC_ALTERNATIVES_ELEMENT.equalsIgnoreCase(child.getLocalName()))
+ else if (WebBeansConstants.WEB_BEANS_XML_ALTERNATIVES_ELEMENT.equalsIgnoreCase(child.getLocalName()))
{
fillAlternatives(bdaInfo, child);
}
+ else if (WebBeansConstants.WEB_BEANS_XML_SCAN_ELEMENT.equalsIgnoreCase(child.getLocalName()))
+ {
+ fillExcludes(bdaInfo, child);
+ }
}
}
- protected void fillScanMode(DefaultBeanArchiveInformation bdaInfo, Element beanDiscoveryModeElement)
- {
- String scanMode = beanDiscoveryModeElement.getTextContent().trim();
- bdaInfo.setBeanDiscoveryMode(BeanDiscoveryMode.valueOf(scanMode.toUpperCase()));
- }
-
private void fillDecorators(DefaultBeanArchiveInformation bdaInfo, Element decoratorsElement)
{
ElementIterator elit = new ElementIterator(decoratorsElement);
while (elit.hasNext())
{
Element child = elit.next();
- if (WebBeansConstants.WEB_BEANS_XML_SPEC_SPECIFIC_CLASS.equalsIgnoreCase(child.getLocalName()))
+ if (WebBeansConstants.WEB_BEANS_XML_CLASS.equalsIgnoreCase(child.getLocalName()))
{
String clazz = child.getTextContent().trim();
if (clazz.isEmpty())
@@ -220,7 +227,7 @@ public class DefaultBeanArchiveService i
while (elit.hasNext())
{
Element child = elit.next();
- if (WebBeansConstants.WEB_BEANS_XML_SPEC_SPECIFIC_CLASS.equalsIgnoreCase(child.getLocalName()))
+ if (WebBeansConstants.WEB_BEANS_XML_CLASS.equalsIgnoreCase(child.getLocalName()))
{
String clazz = child.getTextContent().trim();
if (clazz.isEmpty())
@@ -238,7 +245,7 @@ public class DefaultBeanArchiveService i
while (elit.hasNext())
{
Element child = elit.next();
- if (WebBeansConstants.WEB_BEANS_XML_SPEC_SPECIFIC_CLASS.equalsIgnoreCase(child.getLocalName()))
+ if (WebBeansConstants.WEB_BEANS_XML_CLASS.equalsIgnoreCase(child.getLocalName()))
{
String clazz = child.getTextContent().trim();
if (clazz.isEmpty())
@@ -247,7 +254,7 @@ public class DefaultBeanArchiveService i
}
bdaInfo.getAlternativeClasses().add(clazz);
}
- if (WebBeansConstants.WEB_BEANS_XML_SPEC_SPECIFIC_STEREOTYPE.equalsIgnoreCase(child.getLocalName()))
+ if (WebBeansConstants.WEB_BEANS_XML_STEREOTYPE.equalsIgnoreCase(child.getLocalName()))
{
String stereotype = child.getTextContent().trim();
if (stereotype.isEmpty())
@@ -260,6 +267,37 @@ public class DefaultBeanArchiveService i
}
+ private void fillExcludes(DefaultBeanArchiveInformation bdaInfo, Element scanElement)
+ {
+ ElementIterator elit = new ElementIterator(scanElement);
+ while (elit.hasNext())
+ {
+ Element child = elit.next();
+ if (WebBeansConstants.WEB_BEANS_XML_EXCLUDE.equalsIgnoreCase(child.getLocalName()))
+ {
+ String name = getTrimmedAttribute(child, "name");
+ if (name != null)
+ {
+ if (name.endsWith(".*"))
+ {
+ // package exclude without sub-packages
+ bdaInfo.addClassExclude(name.substring(0, name.length() - 2));
+ }
+ else if (name.endsWith(".**"))
+ {
+ // package exclude WITH sub-packages
+ bdaInfo.addPackageExclude(name.substring(0, name.length() - 3));
+ }
+ else
+ {
+ // a simple Class
+ bdaInfo.addClassExclude(name);
+ }
+ }
+ }
+ }
+ }
+
@Override
public void release()
{
@@ -274,7 +312,7 @@ public class DefaultBeanArchiveService i
* @return root element of the document
* @throws org.apache.webbeans.exception.WebBeansException if any runtime exception occurs
*/
- private Element getBeansRootElement(InputStream xmlStream) throws WebBeansException
+ protected Element getBeansRootElement(InputStream xmlStream) throws WebBeansException
{
try
{
@@ -299,4 +337,22 @@ public class DefaultBeanArchiveService i
}
}
+ /**
+ * @return the trimmed attribute value, or <code>null</code> if the attribute does not exist or the attribute is empty
+ */
+ protected String getTrimmedAttribute(Element element, String attributeName)
+ {
+ String val = element.getAttribute(attributeName);
+ if (val != null)
+ {
+ val = val.trim();
+ if (!val.isEmpty())
+ {
+ return val;
+ }
+ }
+ return null;
+ }
+
+
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/WebBeansXMLConfigurator.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/WebBeansXMLConfigurator.java?rev=1563738&r1=1563737&r2=1563738&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/WebBeansXMLConfigurator.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/WebBeansXMLConfigurator.java Sun Feb 2 22:34:10 2014
@@ -213,16 +213,16 @@ public final class WebBeansXMLConfigurat
child = (Element) node;
/* <Interceptors> element decleration */
- if (getName(child).equals(WebBeansConstants.WEB_BEANS_XML_SPEC_SPECIFIC_INTERCEPTORS_ELEMENT))
+ if (getName(child).equals(WebBeansConstants.WEB_BEANS_XML_INTERCEPTORS_ELEMENT))
{
configureInterceptorsElement(child,fileName,scanner);
}
/* <Decorators> element decleration */
- else if (getName(child).equals(WebBeansConstants.WEB_BEANS_XML_SPEC_SPECIFIC_DECORATORS_ELEMENT))
+ else if (getName(child).equals(WebBeansConstants.WEB_BEANS_XML_DECORATORS_ELEMENT))
{
configureDecoratorsElement(child,fileName,scanner);
}
- else if (getName(child).equals(WebBeansConstants.WEB_BEANS_XML_SPEC_SPECIFIC_ALTERNATIVES_ELEMENT))
+ else if (getName(child).equals(WebBeansConstants.WEB_BEANS_XML_ALTERNATIVES_ELEMENT))
{
configureAlternativesElement(child,fileName,scanner);
}
@@ -408,11 +408,11 @@ public final class WebBeansXMLConfigurat
}
alternativesInFile.add(alternativeName);
- if (getName(child).equals(WebBeansConstants.WEB_BEANS_XML_SPEC_SPECIFIC_STEREOTYPE))
+ if (getName(child).equals(WebBeansConstants.WEB_BEANS_XML_STEREOTYPE))
{
addAlternative(child, true,fileName,scanner);
}
- else if (getName(child).equals(WebBeansConstants.WEB_BEANS_XML_SPEC_SPECIFIC_CLASS))
+ else if (getName(child).equals(WebBeansConstants.WEB_BEANS_XML_CLASS))
{
addAlternative(child, false,fileName,scanner);
}
Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/xml/BeanArchiveServiceTest.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/xml/BeanArchiveServiceTest.java?rev=1563738&r1=1563737&r2=1563738&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/xml/BeanArchiveServiceTest.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/xml/BeanArchiveServiceTest.java Sun Feb 2 22:34:10 2014
@@ -113,6 +113,38 @@ public class BeanArchiveServiceTest
Assert.assertTrue(bai.getInterceptors().isEmpty());
}
+ @Test
+ public void testExclude() throws Exception
+ {
+ BeanArchiveInformation bai = scanBeansXml("cdi11_exclude.xml");
+ Assert.assertEquals(BeanDiscoveryMode.ALL, bai.getBeanDiscoveryMode());
+ Assert.assertTrue(bai.getAlternativeClasses().isEmpty());
+ Assert.assertTrue(bai.getAlternativeStereotypes().isEmpty());
+ Assert.assertTrue(bai.getDecorators().isEmpty());
+ Assert.assertTrue(bai.getInterceptors().isEmpty());
+
+ Assert.assertFalse(bai.isClassExcluded("some.other.package"));
+ Assert.assertFalse(bai.isClassExcluded("some.other.Class"));
+
+ Assert.assertFalse(bai.isPackageExcluded("org.apache.webbeans"));
+ Assert.assertFalse(bai.isPackageExcluded("org.apache.webbeans.test"));
+ Assert.assertFalse(bai.isPackageExcluded("org.apache.webbeans.test.singlepackage"));
+ Assert.assertFalse(bai.isPackageExcluded("org.apache.webbeans.test.singlepackage.otherpackage"));
+
+ Assert.assertTrue(bai.isPackageExcluded("org.apache.webbeans.test.subpackage"));
+ Assert.assertTrue(bai.isPackageExcluded("org.apache.webbeans.test.subpackage.other"));
+
+ Assert.assertFalse(bai.isClassExcluded("org.apache.webbeans.test.SomeClass"));
+ Assert.assertFalse(bai.isClassExcluded("org.apache.webbeans.test.otherpackage.OtherClass"));
+
+ Assert.assertTrue(bai.isClassExcluded("org.apache.webbeans.test.singlepackage.SomeClass"));
+ Assert.assertTrue(bai.isClassExcluded("org.apache.webbeans.test.singlepackage.OtherClass"));
+ Assert.assertFalse(bai.isClassExcluded("org.apache.webbeans.test.singlepackage.otherpackage.OtherClass"));
+
+ Assert.assertTrue(bai.isClassExcluded("org.apache.webbeans.test.subpackage.SomeClass"));
+ Assert.assertTrue(bai.isClassExcluded("org.apache.webbeans.test.subpackage.OtherClass"));
+ Assert.assertTrue(bai.isClassExcluded("org.apache.webbeans.test.subpackage.otherpackage.OtherClass"));
+ }
Modified: openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/test/xml/strict/cdi11_discovery_none.xml
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/test/xml/strict/cdi11_discovery_none.xml?rev=1563738&r1=1563737&r2=1563738&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/test/xml/strict/cdi11_discovery_none.xml (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/test/xml/strict/cdi11_discovery_none.xml Sun Feb 2 22:34:10 2014
@@ -17,7 +17,5 @@ KIND, either express or implied. See th
specific language governing permissions and limitations
under the License.
-->
-<beans version="1.1">
- <!-- this file has no bean-discovery-mode, thus we need to fail with version=1.1 -->
- <bean-discovery-mode>none</bean-discovery-mode>
+<beans version="1.1" bean-discovery-mode="none">
</beans>
Copied: openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/test/xml/strict/cdi11_exclude.xml (from r1563533, openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/test/xml/strict/cdi11_discovery_none.xml)
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/test/xml/strict/cdi11_exclude.xml?p2=openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/test/xml/strict/cdi11_exclude.xml&p1=openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/test/xml/strict/cdi11_discovery_none.xml&r1=1563533&r2=1563738&rev=1563738&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/test/xml/strict/cdi11_discovery_none.xml (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/test/xml/strict/cdi11_exclude.xml Sun Feb 2 22:34:10 2014
@@ -17,7 +17,15 @@ KIND, either express or implied. See th
specific language governing permissions and limitations
under the License.
-->
-<beans version="1.1">
- <!-- this file has no bean-discovery-mode, thus we need to fail with version=1.1 -->
- <bean-discovery-mode>none</bean-discovery-mode>
+<beans>
+ <scan>
+ <!-- a single class exclude-->
+ <exclude name="org.apache.webbeans.test.ExcludedClass"/>
+
+ <!-- exclude all classes of a single package, without excluding subpackages -->
+ <exclude name="org.apache.webbeans.test.singlepackage.*"/>
+
+ <!-- exclude all classes of a single package, and also exclude all subpackages -->
+ <exclude name="org.apache.webbeans.test.subpackage.**"/>
+ </scan>
</beans>
Modified: openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/test/xml/strict/cdi11_failed.xml
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/test/xml/strict/cdi11_failed.xml?rev=1563738&r1=1563737&r2=1563738&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/test/xml/strict/cdi11_failed.xml (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/resources/org/apache/webbeans/test/xml/strict/cdi11_failed.xml Sun Feb 2 22:34:10 2014
@@ -17,6 +17,5 @@ KIND, either express or implied. See th
specific language governing permissions and limitations
under the License.
-->
-<beans version="1.1">
- <!-- this file has no bean-discovery-mode, thus we need to fail with version=1.1 -->
+<beans version="1.1"> <!-- this file has no bean-discovery-mode, thus we need to fail with version=1.1 -->
</beans>
Modified: openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/BeanArchiveService.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/BeanArchiveService.java?rev=1563738&r1=1563737&r2=1563738&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/BeanArchiveService.java (original)
+++ openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/BeanArchiveService.java Sun Feb 2 22:34:10 2014
@@ -20,6 +20,7 @@ package org.apache.webbeans.spi;
import java.net.URL;
import java.util.List;
+import java.util.Set;
/**
* This Service returns information about scanned beans.xml files.
@@ -76,12 +77,14 @@ public interface BeanArchiveService
BeanDiscoveryMode getBeanDiscoveryMode();
/**
- * If a package is excluded, then you do not need to recurse into it.
- *
- * @param classOrPath either a class name or a package name.
- * @return whether the given path is excluded or not
+ * @return whether the given class is excluded from scanning or not
*/
- boolean isExcluded(String classOrPath);
+ boolean isClassExcluded(String clazz);
+
+ /**
+ * @return whether the given package is excluded from scanning or not
+ */
+ boolean isPackageExcluded(String packageName);
/**
* @return the class name of the Interceptors defined in the beans.xml
@@ -121,6 +124,15 @@ public interface BeanArchiveService
/**
+ * This method is useful to later on know which JARs and ClassPath entries
+ * did get scanned.
+ * Please note that we use a special UrlSet internally which only holds
+ * the externalForm as key and thus does no DNS resolving via the URL.
+ * @return a Set of all registered Bean Archives.
+ */
+ Set<URL> getRegisteredBeanArchives();
+
+ /**
* Release the gathered information to free up memory.
* This should get called at the end of the deployment phase.
*/