[webbeans-commits] Webbeans SVN: r1525 - in ri/trunk: webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap and 14 other directories.
webbeans-commits at lists.jboss.org
webbeans-commits at lists.jboss.org
Sun Feb 15 11:06:56 EST 2009
Author: pete.muir at jboss.org
Date: 2009-02-15 11:06:55 -0500 (Sun, 15 Feb 2009)
New Revision: 1525
Added:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeansXmlParser.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/EnumerationVector.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/dom/
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/dom/NodeListIterable.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/dom/NodeListIterator.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/xml/
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/xml/AnotherDeploymentType.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/xml/BeansXmlParserTest.java
ri/trunk/webbeans-ri/src/test/resources/org/
ri/trunk/webbeans-ri/src/test/resources/org/jboss/
ri/trunk/webbeans-ri/src/test/resources/org/jboss/webbeans/
ri/trunk/webbeans-ri/src/test/resources/org/jboss/webbeans/test/
ri/trunk/webbeans-ri/src/test/resources/org/jboss/webbeans/test/unit/
ri/trunk/webbeans-ri/src/test/resources/org/jboss/webbeans/test/unit/bootstrap/
ri/trunk/webbeans-ri/src/test/resources/org/jboss/webbeans/test/unit/bootstrap/test-beans.xml
ri/trunk/webbeans-ri/src/test/resources/org/jboss/webbeans/test/unit/xml/
ri/trunk/webbeans-ri/src/test/resources/org/jboss/webbeans/test/unit/xml/default-beans.xml
ri/trunk/webbeans-ri/src/test/resources/org/jboss/webbeans/test/unit/xml/user-defined-beans.xml
Modified:
ri/trunk/porting-package/src/main/java/org/jboss/webbeans/tck/StandaloneContainersImpl.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/mock/MockBootstrap.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/mock/MockWebBeanDiscovery.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/EnumerationIterable.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/AbstractEjbEmbeddableTest.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/AbstractTest.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/bootstrap/BootstrapTest.java
Log:
Initial work on reading enabled deployment types from XML.
Modified: ri/trunk/porting-package/src/main/java/org/jboss/webbeans/tck/StandaloneContainersImpl.java
===================================================================
--- ri/trunk/porting-package/src/main/java/org/jboss/webbeans/tck/StandaloneContainersImpl.java 2009-02-15 11:10:56 UTC (rev 1524)
+++ ri/trunk/porting-package/src/main/java/org/jboss/webbeans/tck/StandaloneContainersImpl.java 2009-02-15 16:06:55 UTC (rev 1525)
@@ -1,6 +1,7 @@
package org.jboss.webbeans.tck;
import java.lang.annotation.Annotation;
+import java.util.Arrays;
import java.util.List;
import javax.inject.manager.Manager;
@@ -24,7 +25,9 @@
{
manager.setEnabledDeploymentTypes(enabledDeploymentTypes);
}
- bootstrap.setWebBeanDiscovery(new MockWebBeanDiscovery(classes));
+ MockWebBeanDiscovery discovery = new MockWebBeanDiscovery();
+ discovery.setWebBeanClasses(Arrays.asList(classes));
+ bootstrap.setWebBeanDiscovery(discovery);
bootstrap.boot();
return manager;
}
Added: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeansXmlParser.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeansXmlParser.java (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeansXmlParser.java 2009-02-15 16:06:55 UTC (rev 1525)
@@ -0,0 +1,205 @@
+package org.jboss.webbeans.bootstrap;
+
+import java.io.IOException;
+import java.lang.annotation.Annotation;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.inject.DeploymentException;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.jboss.webbeans.resources.spi.ResourceLoader;
+import org.jboss.webbeans.util.dom.NodeListIterable;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.xml.sax.SAXException;
+
+/**
+ * Temporary XML parser to get essential data (like enabled deployment types)
+ * until we have a full XML parser/binder
+ *
+ * @author Pete Muir
+ *
+ */
+public class BeansXmlParser
+{
+
+ private static class DeployElement
+ {
+ private URL file;
+ private Element element;
+ private Map<String, String> namespaces;
+
+ public DeployElement(URL file, Element element, Map<String, String> namespaces)
+ {
+ super();
+ this.file = file;
+ this.element = element;
+ this.namespaces = namespaces;
+ }
+
+ public URL getFile()
+ {
+ return file;
+ }
+
+ public Element getElement()
+ {
+ return element;
+ }
+
+ public Map<String, String> getNamespaces()
+ {
+ return namespaces;
+ }
+
+ @Override
+ public String toString()
+ {
+ return "File: " + getFile() + "; Node: " + getElement();
+ }
+
+ }
+
+ public static final String EE_NAMESPACE = "urn:java:ee";
+
+ private final Iterable<URL> beansXml;
+ private final ResourceLoader resourceLoader;
+
+ private List<Class<? extends Annotation>> enabledDeploymentTypes;
+
+ public List<Class<? extends Annotation>> getEnabledDeploymentTypes()
+ {
+ return enabledDeploymentTypes;
+ }
+
+ public BeansXmlParser(ResourceLoader resourceLoader, Iterable<URL> beansXml)
+ {
+ this.beansXml = beansXml;
+ this.resourceLoader = resourceLoader;
+ }
+
+ public void parse()
+ {
+ DocumentBuilder documentBuilder;
+ try
+ {
+ documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ }
+ catch (ParserConfigurationException e)
+ {
+ throw new DeploymentException("Error configuring XML parser", e);
+ }
+ List<DeployElement> deployElements = new ArrayList<DeployElement>();
+ for (URL url : beansXml)
+ {
+ Document document;
+ try
+ {
+ document = documentBuilder.parse(url.openStream());
+ document.normalize();
+ }
+ catch (SAXException e)
+ {
+ throw new DeploymentException("Error parsing beans.xml " + url.toString());
+ }
+ catch (IOException e)
+ {
+ throw new DeploymentException("Error loading beans.xml " + url.toString());
+ }
+ Element beans = document.getDocumentElement();
+ Map<String, String> namespaces = new HashMap<String, String>();
+ for (int i = 0; i < beans.getAttributes().getLength(); i++)
+ {
+ Node child = beans.getAttributes().item(i);
+ if (child instanceof Attr)
+ {
+ Attr attr = (Attr) child;
+ if (attr.getName().startsWith("xmlns"))
+ {
+ String namespacePrefix;
+ if (attr.getName().length() == 5)
+ {
+ namespacePrefix = "";
+ }
+ else
+ {
+ namespacePrefix = attr.getName().substring(6);
+ }
+
+ String namespace = attr.getValue();
+ namespaces.put(namespacePrefix, namespace);
+ }
+ }
+ }
+ for (Node child : new NodeListIterable(beans.getChildNodes()))
+ {
+ if (child instanceof Element && "Deploy".equals(child.getNodeName()))
+ {
+ deployElements.add(new DeployElement(url, (Element) child, namespaces));
+ }
+ }
+ }
+ if (deployElements.size() > 1)
+ {
+ throw new DeploymentException("<Deploy> can only be specified once, but it is specified muliple times " + deployElements);
+ }
+ else if (deployElements.size() == 1)
+ {
+ DeployElement deployElement = deployElements.get(0);
+ enabledDeploymentTypes = new ArrayList<Class<? extends Annotation>>();
+ for (Node child : new NodeListIterable(deployElement.getElement().getChildNodes()))
+ {
+ if (child instanceof Element)
+ {
+ String className = getAsClassName(child.getNodeName(), deployElement.getNamespaces());
+ if (className != null)
+ {
+ enabledDeploymentTypes.add(resourceLoader.classForName(className).asSubclass(Annotation.class));
+ }
+ }
+ }
+ }
+ }
+
+ private static String getAsClassName(String nodeName, Map<String, String> namespaces)
+ {
+ String namespacePrefix;
+ String simpleClassName;
+ if (nodeName.contains(":"))
+ {
+ namespacePrefix = nodeName.substring(0, nodeName.indexOf(":"));
+ simpleClassName = nodeName.substring(nodeName.indexOf(":") + 1);
+ }
+ else
+ {
+ namespacePrefix = "";
+ simpleClassName = nodeName;
+ }
+ String namespace = namespaces.get(namespacePrefix);
+ String packageName;
+ if (namespace.startsWith("urn:java:ee"))
+ {
+ // Hack for now to return the correct package for this composite package deployment types
+ packageName = "javax.inject";
+ }
+ else if (namespace.startsWith("urn:java:"))
+ {
+ packageName = namespace.substring(9);
+ }
+ else
+ {
+ // Not a Java package
+ return null;
+ }
+ return packageName + "." + simpleClassName;
+ }
+
+}
Property changes on: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeansXmlParser.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java 2009-02-15 11:10:56 UTC (rev 1524)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java 2009-02-15 16:06:55 UTC (rev 1525)
@@ -17,6 +17,9 @@
package org.jboss.webbeans.bootstrap;
+import java.lang.annotation.Annotation;
+import java.util.List;
+
import org.jboss.webbeans.BeanValidator;
import org.jboss.webbeans.CurrentManager;
import org.jboss.webbeans.ManagerImpl;
@@ -25,9 +28,9 @@
import org.jboss.webbeans.bootstrap.spi.EjbDiscovery;
import org.jboss.webbeans.bootstrap.spi.WebBeanDiscovery;
import org.jboss.webbeans.conversation.ConversationImpl;
-import org.jboss.webbeans.conversation.ServletConversationManager;
import org.jboss.webbeans.conversation.JavaSEConversationTerminator;
import org.jboss.webbeans.conversation.NumericConversationIdGenerator;
+import org.jboss.webbeans.conversation.ServletConversationManager;
import org.jboss.webbeans.ejb.spi.EjbResolver;
import org.jboss.webbeans.literal.DeployedLiteral;
import org.jboss.webbeans.literal.InitializedLiteral;
@@ -126,6 +129,13 @@
// Must populate EJB cache first, as we need it to detect whether a
// bean is an EJB!
getManager().getEjbDescriptorCache().addAll(getEjbDiscovery().discoverEjbs());
+ BeansXmlParser parser = new BeansXmlParser(getResourceLoader(), getWebBeanDiscovery().discoverWebBeansXml());
+ parser.parse();
+ List<Class<? extends Annotation>> enabledDeploymentTypes = parser.getEnabledDeploymentTypes();
+ if (enabledDeploymentTypes != null)
+ {
+ getManager().setEnabledDeploymentTypes(enabledDeploymentTypes);
+ }
registerBeans(getWebBeanDiscovery().discoverWebBeanClasses());
getManager().fireEvent(getManager(), new InitializedLiteral());
log.info("Web Beans initialized. Validating beans.");
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/mock/MockBootstrap.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/mock/MockBootstrap.java 2009-02-15 11:10:56 UTC (rev 1524)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/mock/MockBootstrap.java 2009-02-15 16:06:55 UTC (rev 1525)
@@ -198,10 +198,6 @@
public void setWebBeanDiscovery(WebBeanDiscovery webBeanDiscovery)
{
this.webBeanDiscovery = webBeanDiscovery;
- if (webBeanDiscovery != null)
- {
- this.ejbDiscovery = new MockEjbDiscovery(webBeanDiscovery.discoverWebBeanClasses());
- }
}
@Override
@@ -224,7 +220,7 @@
@Override
protected EjbDiscovery getEjbDiscovery()
{
- return ejbDiscovery;
+ return new MockEjbDiscovery(webBeanDiscovery.discoverWebBeanClasses());
}
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/mock/MockWebBeanDiscovery.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/mock/MockWebBeanDiscovery.java 2009-02-15 11:10:56 UTC (rev 1524)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/mock/MockWebBeanDiscovery.java 2009-02-15 16:06:55 UTC (rev 1525)
@@ -17,7 +17,6 @@
package org.jboss.webbeans.mock;
import java.net.URL;
-import java.util.Arrays;
import java.util.HashSet;
import org.jboss.webbeans.bootstrap.spi.WebBeanDiscovery;
@@ -29,22 +28,6 @@
private Iterable<URL> webBeansXmlFiles = new HashSet<URL>();
- /**
- * Simple constructor that auto discovers EJBs
- * @param webBeanClasses
- */
- public MockWebBeanDiscovery(Class<?>... webBeanClasses)
- {
- this(Arrays.asList(webBeanClasses), null);
- }
-
- public MockWebBeanDiscovery(Iterable<Class<?>> webBeanClasses, Iterable<URL> webBeansXmlFiles)
- {
- super();
- this.webBeanClasses = webBeanClasses;
- this.webBeansXmlFiles = webBeansXmlFiles;
- }
-
public Iterable<Class<?>> discoverWebBeanClasses()
{
return webBeanClasses;
@@ -54,5 +37,15 @@
{
return webBeansXmlFiles;
}
+
+ public void setWebBeanClasses(Iterable<Class<?>> webBeanClasses)
+ {
+ this.webBeanClasses = webBeanClasses;
+ }
+
+ public void setWebBeansXmlFiles(Iterable<URL> webBeansXmlFiles)
+ {
+ this.webBeansXmlFiles = webBeansXmlFiles;
+ }
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/EnumerationIterable.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/EnumerationIterable.java 2009-02-15 11:10:56 UTC (rev 1524)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/EnumerationIterable.java 2009-02-15 16:06:55 UTC (rev 1525)
@@ -17,8 +17,11 @@
package org.jboss.webbeans.util;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.Enumeration;
import java.util.Iterator;
+import java.util.List;
/**
* An Enumeration -> Iteratble adaptor
@@ -28,8 +31,8 @@
*/
public class EnumerationIterable<T> implements Iterable<T>
{
- // The enumeration-iteartor
- private EnumerationIterator<T> iterator;
+ // The enumeration as a list
+ private final List<T> list = new ArrayList<T>();
/**
* Constructor
@@ -38,7 +41,10 @@
*/
public EnumerationIterable(Enumeration<T> enumeration)
{
- this.iterator = new EnumerationIterator<T>(enumeration);
+ while (enumeration.hasMoreElements())
+ {
+ list.add(enumeration.nextElement());
+ }
}
/**
@@ -48,7 +54,7 @@
*/
public Iterator<T> iterator()
{
- return iterator;
+ return Collections.unmodifiableList(list).iterator();
}
}
Added: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/EnumerationVector.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/EnumerationVector.java (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/EnumerationVector.java 2009-02-15 16:06:55 UTC (rev 1525)
@@ -0,0 +1,3 @@
+package org.jboss.webbeans.util;
+
+
Property changes on: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/EnumerationVector.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/dom/NodeListIterable.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/dom/NodeListIterable.java (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/dom/NodeListIterable.java 2009-02-15 16:06:55 UTC (rev 1525)
@@ -0,0 +1,23 @@
+package org.jboss.webbeans.util.dom;
+
+import java.util.Iterator;
+
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class NodeListIterable implements Iterable<Node>
+{
+
+ private final NodeList nodeList;
+
+ public NodeListIterable(NodeList nodeList)
+ {
+ this.nodeList = nodeList;
+ }
+
+ public Iterator<Node> iterator()
+ {
+ return new NodeListIterator(nodeList);
+ }
+
+}
Property changes on: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/dom/NodeListIterable.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/dom/NodeListIterator.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/dom/NodeListIterator.java (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/dom/NodeListIterator.java 2009-02-15 16:06:55 UTC (rev 1525)
@@ -0,0 +1,36 @@
+package org.jboss.webbeans.util.dom;
+
+import java.util.Iterator;
+
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class NodeListIterator implements Iterator<Node>
+{
+
+ private final NodeList nodeList;
+ private int index;
+
+ public NodeListIterator(NodeList nodeList)
+ {
+ this.nodeList = nodeList;
+ index = 0;
+ }
+
+ public boolean hasNext()
+ {
+ return index < nodeList.getLength() - 1;
+ }
+
+ public Node next()
+ {
+ index++;
+ return nodeList.item(index);
+ }
+
+ public void remove()
+ {
+ throw new UnsupportedOperationException("XML DOM is readonly");
+ }
+
+}
Property changes on: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/dom/NodeListIterator.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/AbstractEjbEmbeddableTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/AbstractEjbEmbeddableTest.java 2009-02-15 11:10:56 UTC (rev 1524)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/AbstractEjbEmbeddableTest.java 2009-02-15 16:06:55 UTC (rev 1525)
@@ -42,13 +42,13 @@
public void before() throws Exception
{
super.before();
- webBeansBootstrap.getNaming().setContext(new InitialContext());
+ bootstrap.getNaming().setContext(new InitialContext());
}
@AfterMethod
public void after() throws Exception
{
- webBeansBootstrap.getNaming().setContext(null);
+ bootstrap.getNaming().setContext(null);
}
@@ -66,7 +66,7 @@
public Context getContext()
{
- return webBeansBootstrap.getNaming().getContext();
+ return bootstrap.getNaming().getContext();
}
}
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/AbstractTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/AbstractTest.java 2009-02-15 11:10:56 UTC (rev 1524)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/AbstractTest.java 2009-02-15 16:06:55 UTC (rev 1525)
@@ -1,8 +1,10 @@
package org.jboss.webbeans.test.unit;
+import java.io.IOException;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
+import java.net.URL;
import java.util.Arrays;
import java.util.List;
@@ -21,6 +23,7 @@
import org.jboss.webbeans.mock.MockBootstrap;
import org.jboss.webbeans.mock.MockEjbDescriptor;
import org.jboss.webbeans.mock.MockWebBeanDiscovery;
+import org.jboss.webbeans.util.EnumerationIterable;
import org.testng.annotations.BeforeMethod;
public class AbstractTest
@@ -59,16 +62,18 @@
protected static final int BUILT_IN_BEANS = 3;
protected ManagerImpl manager;
- protected MockBootstrap webBeansBootstrap;
+ protected MockBootstrap bootstrap;
+ protected MockWebBeanDiscovery discovery;
public static boolean visited = false;
@BeforeMethod
public void before() throws Exception
{
- webBeansBootstrap = new MockBootstrap();
- manager = webBeansBootstrap.getManager();
- manager.setEnabledDeploymentTypes(getEnabledDeploymentTypes());
+ bootstrap = new MockBootstrap();
+ manager = bootstrap.getManager();
+ this.discovery = new MockWebBeanDiscovery();
+ bootstrap.setWebBeanDiscovery(discovery);
}
protected List<Class<? extends Annotation>> getEnabledDeploymentTypes()
@@ -126,9 +131,29 @@
protected void deployBeans(Class<?>... classes)
{
- MockBootstrap bootstrap = new MockBootstrap();
- bootstrap.setWebBeanDiscovery(new MockWebBeanDiscovery(classes));
+ discovery.setWebBeanClasses(Arrays.asList(classes));
bootstrap.boot();
manager = bootstrap.getManager();
}
+
+
+ protected Iterable<URL> getResources(String name)
+ {
+ if (name.startsWith("/"))
+ {
+ name = name.substring(1);
+ }
+ else
+ {
+ name = getClass().getPackage().getName().replace(".", "/") + "/" + name;
+ }
+ try
+ {
+ return new EnumerationIterable<URL>(getClass().getClassLoader().getResources(name));
+ }
+ catch (IOException e)
+ {
+ throw new RuntimeException("Error loading resource from classloader" + name, e);
+ }
+ }
}
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/bootstrap/BootstrapTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/bootstrap/BootstrapTest.java 2009-02-15 11:10:56 UTC (rev 1524)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/bootstrap/BootstrapTest.java 2009-02-15 16:06:55 UTC (rev 1525)
@@ -4,8 +4,11 @@
import java.util.List;
import java.util.Map;
+import javax.inject.Production;
+import javax.inject.Standard;
import javax.inject.manager.Bean;
+import org.jboss.webbeans.WebBean;
import org.jboss.webbeans.bean.EnterpriseBean;
import org.jboss.webbeans.bean.ProducerMethodBean;
import org.jboss.webbeans.bean.RIBean;
@@ -16,6 +19,19 @@
public class BootstrapTest extends AbstractTest
{
+
+ @Test
+ public void testDeploymentTypesLoadedFromBeansXml()
+ {
+ discovery.setWebBeansXmlFiles(getResources("test-beans.xml"));
+ deployBeans();
+ assert manager.getEnabledDeploymentTypes().size() == 4;
+ assert manager.getEnabledDeploymentTypes().get(0).equals(Standard.class);
+ assert manager.getEnabledDeploymentTypes().get(1).equals(WebBean.class);
+ assert manager.getEnabledDeploymentTypes().get(2).equals(Production.class);
+ assert manager.getEnabledDeploymentTypes().get(3).equals(AnotherDeploymentType.class);
+ }
+
@Test(groups="bootstrap")
public void testSingleSimpleBean()
{
Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/xml/AnotherDeploymentType.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/xml/AnotherDeploymentType.java (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/xml/AnotherDeploymentType.java 2009-02-15 16:06:55 UTC (rev 1525)
@@ -0,0 +1,20 @@
+package org.jboss.webbeans.test.unit.xml;
+
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.inject.DeploymentType;
+
+ at Target( { TYPE, METHOD })
+ at Retention(RUNTIME)
+ at Documented
+ at DeploymentType
+ at interface AnotherDeploymentType
+{
+
+}
\ No newline at end of file
Property changes on: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/xml/AnotherDeploymentType.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/xml/BeansXmlParserTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/xml/BeansXmlParserTest.java (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/xml/BeansXmlParserTest.java 2009-02-15 16:06:55 UTC (rev 1525)
@@ -0,0 +1,52 @@
+package org.jboss.webbeans.test.unit.xml;
+
+import java.net.URL;
+import java.util.Iterator;
+
+import javax.inject.Production;
+import javax.inject.Standard;
+
+import org.jboss.webbeans.bootstrap.BeansXmlParser;
+import org.jboss.webbeans.mock.MockResourceLoader;
+import org.jboss.webbeans.resources.spi.ResourceLoader;
+import org.jboss.webbeans.test.unit.AbstractTest;
+import org.testng.annotations.Test;
+
+public class BeansXmlParserTest extends AbstractTest
+{
+
+ private static final ResourceLoader RESOURCE_LOADER = new MockResourceLoader();
+
+ // Quick unit tests for the parser
+ @Test
+ public void testDefaultDeploymentTypes()
+ {
+ Iterable<URL> urls = getResources("default-beans.xml");
+ int i = 0;
+ Iterator<URL> it = urls.iterator();
+ while (it.hasNext())
+ {
+ i++;
+ it.next();
+ }
+ assert i == 1;
+ BeansXmlParser parser = new BeansXmlParser(RESOURCE_LOADER, urls);
+ parser.parse();
+ assert parser.getEnabledDeploymentTypes().size() == 2;
+ assert parser.getEnabledDeploymentTypes().get(0).equals(Standard.class);
+ assert parser.getEnabledDeploymentTypes().get(1).equals(Production.class);
+ }
+
+ @Test
+ public void testUserDefinedDeploymentType()
+ {
+ Iterable<URL> urls = getResources("user-defined-beans.xml");
+ BeansXmlParser parser = new BeansXmlParser(RESOURCE_LOADER, urls);
+ parser.parse();
+ assert parser.getEnabledDeploymentTypes().size() == 3;
+ assert parser.getEnabledDeploymentTypes().get(0).equals(Standard.class);
+ assert parser.getEnabledDeploymentTypes().get(1).equals(Production.class);
+ assert parser.getEnabledDeploymentTypes().get(2).equals(AnotherDeploymentType.class);
+ }
+
+}
Property changes on: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/unit/xml/BeansXmlParserTest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: ri/trunk/webbeans-ri/src/test/resources/org/jboss/webbeans/test/unit/bootstrap/test-beans.xml
===================================================================
--- ri/trunk/webbeans-ri/src/test/resources/org/jboss/webbeans/test/unit/bootstrap/test-beans.xml (rev 0)
+++ ri/trunk/webbeans-ri/src/test/resources/org/jboss/webbeans/test/unit/bootstrap/test-beans.xml 2009-02-15 16:06:55 UTC (rev 1525)
@@ -0,0 +1,8 @@
+<Beans xmlns="urn:java:ee"
+ xmlns:test="urn:java:org.jboss.webbeans.test.unit.bootstrap">
+ <Deploy>
+ <Standard />
+ <Production />
+ <test:AnotherDeploymentType />
+ </Deploy>
+</Beans>
Property changes on: ri/trunk/webbeans-ri/src/test/resources/org/jboss/webbeans/test/unit/bootstrap/test-beans.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: ri/trunk/webbeans-ri/src/test/resources/org/jboss/webbeans/test/unit/xml/default-beans.xml
===================================================================
--- ri/trunk/webbeans-ri/src/test/resources/org/jboss/webbeans/test/unit/xml/default-beans.xml (rev 0)
+++ ri/trunk/webbeans-ri/src/test/resources/org/jboss/webbeans/test/unit/xml/default-beans.xml 2009-02-15 16:06:55 UTC (rev 1525)
@@ -0,0 +1,6 @@
+<Beans xmlns="urn:java:ee">
+ <Deploy>
+ <Standard />
+ <Production />
+ </Deploy>
+</Beans>
Property changes on: ri/trunk/webbeans-ri/src/test/resources/org/jboss/webbeans/test/unit/xml/default-beans.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: ri/trunk/webbeans-ri/src/test/resources/org/jboss/webbeans/test/unit/xml/user-defined-beans.xml
===================================================================
--- ri/trunk/webbeans-ri/src/test/resources/org/jboss/webbeans/test/unit/xml/user-defined-beans.xml (rev 0)
+++ ri/trunk/webbeans-ri/src/test/resources/org/jboss/webbeans/test/unit/xml/user-defined-beans.xml 2009-02-15 16:06:55 UTC (rev 1525)
@@ -0,0 +1,8 @@
+<Beans xmlns="urn:java:ee"
+ xmlns:test="urn:java:org.jboss.webbeans.test.unit.xml">
+ <Deploy>
+ <Standard />
+ <Production />
+ <test:AnotherDeploymentType />
+ </Deploy>
+</Beans>
Property changes on: ri/trunk/webbeans-ri/src/test/resources/org/jboss/webbeans/test/unit/xml/user-defined-beans.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
More information about the weld-commits
mailing list