[webbeans-commits] Webbeans SVN: r2823 - in ri/trunk: impl/src/main/java/org/jboss/webbeans and 18 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Thu Jun 11 11:10:53 EDT 2009


Author: pete.muir at jboss.org
Date: 2009-06-11 11:10:52 -0400 (Thu, 11 Jun 2009)
New Revision: 2823

Added:
   ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/DecoratorBean.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/util/dom/
   ri/trunk/impl/src/main/java/org/jboss/webbeans/util/dom/NodeListIterable.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/util/dom/NodeListIterator.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/BeansXmlParser.java
Removed:
   ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/ParseXmlHelper.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/XmlClass.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/XmlConstants.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/XmlEnvironment.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/XmlParser.java
   ri/trunk/tests/src/main/java/org/jboss/webbeans/mock/MockXmlEnvironment.java
   ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/xml/javaeepkg/JavaEePkgTest.java
   ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/xml/javaeepkg/foo/
   ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/xml/parser/AnotherDeploymentType.java
   ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/xml/parser/XmlParserImplTest.java
   ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/xml/parser/schema/SchemaValidationTest.java
   ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/xml/parser/schema/foo/
   ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/javaeepkg/
   ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/namespace
   ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/schema.xsd
   ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/schema/beans.xml
   ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/schema/namespace
   ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/schema/not-valid-beans.xml
   ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/schema/schema.xsd
   ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/schema/valid/
   ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/user-defined-beans.xml
Modified:
   ri/trunk/api/src/main/java/javax/enterprise/inject/spi/Decorator.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractBean.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/DisposalMethodBean.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ProducerFieldBean.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/SimpleBean.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/AnnotatedClass.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/AnnotatedConstructor.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/AnnotatedItem.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/AnnotatedMethod.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedClass.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedItem.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedClassImpl.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Reflections.java
   ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/xml/deploy/BeansXmlParserTest.java
   ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/examples/beans.xml
   ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/bootstrap/test-beans.xml
   ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/deploy/default-beans.xml
   ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/deploy/duplicate-deployments-beans.xml
   ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/deploy/user-defined-beans.xml
Log:
Start decorators, fix beans.xml parser

Modified: ri/trunk/api/src/main/java/javax/enterprise/inject/spi/Decorator.java
===================================================================
--- ri/trunk/api/src/main/java/javax/enterprise/inject/spi/Decorator.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/api/src/main/java/javax/enterprise/inject/spi/Decorator.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -18,31 +18,38 @@
 package javax.enterprise.inject.spi;
 
 import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
 import java.util.Set;
 
+/**
+ * The bean object for a decorator
+ * 
+ * @author Pete Muir
+ *
+ * @param <T> the decorator type
+ */
 public interface Decorator<T> extends Bean<T>
 {
 
    /**
-    * Obtains the type of the decorated bean
+    * Obtains the delegate type
     * 
     * @return
     */
-   public Class<?> getDelegateType();
+   public Type getDelegateType();
 
    /**
-    * Obtains the bindings of the decorated bean
+    * Obtains the delegate bindings
     * 
     * @return
     */
    public Set<Annotation> getDelegateBindings();
-
+   
    /**
-    * Injects the delegate
+    * Obtains the decorated types
     * 
-    * @param instance the instance to inject the delegate into
-    * @param delegate the delegate to inject
+    * @return
     */
-   public void setDelegate(Object instance, Object delegate);
+   public Set<Type> getDecoratedTypes();
 
 }
\ No newline at end of file

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -174,6 +174,8 @@
     * ***********************************
     */
    private transient List<Class<? extends Annotation>> enabledDeploymentTypes;
+   private transient List<Class<?>> enabledDecoratorClasses;
+   private transient List<Class<?>> enabledInterceptorClasses;
    private transient final ConcurrentListMultiMap<Class<? extends Annotation>, Context> contexts;
    private final transient Set<CurrentActivity> currentActivities;
    private transient final ClientProxyProvider clientProxyProvider;
@@ -449,6 +451,16 @@
       checkEnabledDeploymentTypes();
       addWebBeansDeploymentTypes();
    }
+   
+   public void setEnabledDecoratorClasses(List<Class<?>> enabledDecoratorClasses)
+   {
+      this.enabledDecoratorClasses = enabledDecoratorClasses;
+   }
+   
+   public void setEnabledInterceptorClasses(List<Class<?>> enabledInterceptorClasses)
+   {
+      this.enabledInterceptorClasses = enabledInterceptorClasses;
+   }
 
    
    public Set<Bean<?>> getBeans(Type beanType, Annotation... bindings)
@@ -1155,4 +1167,6 @@
       return webbeansELResolver;
    }
 
+
+
 }

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractBean.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractBean.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractBean.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -24,6 +24,7 @@
 import java.util.Map;
 import java.util.Set;
 
+import javax.decorator.Decorates;
 import javax.enterprise.context.Dependent;
 import javax.enterprise.inject.BindingType;
 import javax.enterprise.inject.Named;
@@ -120,6 +121,8 @@
    
    private boolean initialized;
    
+   private Set<AnnotatedInjectionPoint<?, ?>> decoratesInjectionPoint;
+   
    protected boolean isInitialized()
    {
       return initialized;
@@ -162,8 +165,36 @@
       initSerializable();
       initProxyable();
       checkRequiredTypesImplemented();
+      initInjectionPoints();
+      initDecorates();
+      checkDecorates();
    }
 
+   protected void checkDecorates()
+   {
+      if (this.decoratesInjectionPoint.size() > 0)
+      {
+         throw new DefinitionException("Cannot place @Decorates at an injection point which is not on a Decorator " + this);
+      }
+   }
+
+   protected void initDecorates()
+   {
+      this.decoratesInjectionPoint = new HashSet<AnnotatedInjectionPoint<?,?>>();
+      for (AnnotatedInjectionPoint<?, ?> injectionPoint : getAnnotatedInjectionPoints())
+      {
+         if (injectionPoint.isAnnotationPresent(Decorates.class))
+         {
+            this.decoratesInjectionPoint.add(injectionPoint);
+         }
+      }
+   }
+   
+   protected Set<AnnotatedInjectionPoint<?, ?>> getDecoratesInjectionPoint()
+   {
+      return decoratesInjectionPoint;
+   }
+
    /**
     * Initializes the API types
     */
@@ -181,6 +212,8 @@
       this.bindings.addAll(getAnnotatedItem().getMetaAnnotations(BindingType.class));
       initDefaultBindings();
    }
+   
+   protected abstract void initInjectionPoints();
 
    protected void initDefaultBindings()
    {

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -87,10 +87,10 @@
    @Override
    public void initialize(BeanDeployerEnvironment environment)
    {
+      initInitializerMethods();
       super.initialize(environment);
       checkScopeAllowed();
       checkBeanImplementation();
-      initInitializerMethods();
    }
 
    /**

Added: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/DecoratorBean.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/DecoratorBean.java	                        (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/DecoratorBean.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -0,0 +1,150 @@
+package org.jboss.webbeans.bean;
+
+import java.io.Serializable;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.Arrays;
+import java.util.Set;
+
+import javax.enterprise.inject.Initializer;
+import javax.enterprise.inject.spi.Decorator;
+import javax.inject.DefinitionException;
+
+import org.jboss.webbeans.BeanManagerImpl;
+import org.jboss.webbeans.bootstrap.BeanDeployerEnvironment;
+import org.jboss.webbeans.injection.AnnotatedInjectionPoint;
+import org.jboss.webbeans.injection.MethodInjectionPoint;
+import org.jboss.webbeans.introspector.AnnotatedClass;
+import org.jboss.webbeans.introspector.AnnotatedItem;
+
+public class DecoratorBean<T> extends SimpleBean<T> implements Decorator<T>
+{
+   
+   /**
+    * Creates a decorator bean
+    * 
+    * @param <T> The type
+    * @param clazz The class
+    * @param manager the current manager
+    * @return a Bean
+    */
+   public static <T> DecoratorBean<T> of(AnnotatedClass<T> clazz, BeanManagerImpl manager)
+   {
+      return new DecoratorBean<T>(clazz, manager);
+   }
+
+   private AnnotatedItem<?, ?> decorates;
+   private Set<Annotation> delegateBindings;
+   private Type delegateType;
+   private Set<Type> decoratedTypes;
+
+   protected DecoratorBean(AnnotatedClass<T> type, BeanManagerImpl manager)
+   {
+      super(type, manager);
+   }
+   
+   @Override
+   public void initialize(BeanDeployerEnvironment environment)
+   {
+      if (!isInitialized())
+      {
+         super.initialize(environment);
+         checkDecorates();
+         initDecorates();
+         initDecoratedTypes();
+         initDelegateBindings();
+         initDelegateType();
+      }
+   }
+   
+   protected void initDecoratedTypes()
+   {
+      this.decoratedTypes = getAnnotatedItem().getInterfaceOnlyFlattenedTypeHierarchy();
+      this.decoratedTypes.remove(Serializable.class);
+   }
+   
+   protected void initDecorates()
+   {
+      this.decorates = getDecoratesInjectionPoint().iterator().next();
+   }
+   
+   @Override
+   protected void checkDecorates()
+   {
+      for (AnnotatedInjectionPoint<?, ?> injectionPoint : getDecoratesInjectionPoint())
+      {
+         if (injectionPoint instanceof MethodInjectionPoint && !injectionPoint.isAnnotationPresent(Initializer.class))
+         {
+            throw new DefinitionException("Method with @Decorates parameter must be an initializer method " + injectionPoint);
+         }
+      }
+      if (getDecoratesInjectionPoint().size() == 0)
+      {
+         throw new DefinitionException("No @Decorates injection point defined " + this);
+      }
+      else if (getDecoratesInjectionPoint().size() > 1)
+      {
+         throw new DefinitionException("Too many @Decorates injection point defined " + this);
+      }
+   }
+   
+   protected void initDelegateBindings()
+   {
+      this.delegateBindings = this.decorates.getBindings();
+   }
+   
+   protected void initDelegateType()
+   {
+      this.delegateType = this.decorates.getType();
+   }
+   
+   protected void checkDelegateType()
+   {
+      for (Type decoratedType : getDecoratedTypes())
+      {
+         if (decoratedType instanceof Class)
+         {
+            if (!((Class<?>) decoratedType).isAssignableFrom(decorates.getRawType()))
+            {
+               throw new DefinitionException("The delegate type must extend or implement every decorated type. Decorated type " + decoratedType + "." + this );
+            }
+         }
+         else if (decoratedType instanceof ParameterizedType)
+         {
+            ParameterizedType parameterizedType = (ParameterizedType) decoratedType;
+            if (!decorates.isParameterizedType())
+            {
+               throw new DefinitionException("The decorated type is parameterized, but the delegate type isn't. Delegate type " + delegateType + "." + this);
+            }
+            if (!Arrays.equals(decorates.getActualTypeArguments(), parameterizedType.getActualTypeArguments()));
+            Type rawType = ((ParameterizedType) decoratedType).getRawType();
+            if (rawType instanceof Class && !((Class<?>) rawType).isAssignableFrom(decorates.getRawType()))
+            {
+               throw new DefinitionException("The delegate type must extend or implement every decorated type. Decorated type " + decoratedType + "." + this );
+            }
+            else
+            {
+               throw new IllegalStateException("Unable to process " + decoratedType);
+            }
+
+         }
+      }
+   }
+
+   public Set<Annotation> getDelegateBindings()
+   {
+      return delegateBindings;
+   }
+
+   public Type getDelegateType()
+   {
+      return delegateType;
+   }
+
+   public Set<Type> getDecoratedTypes()
+   {
+      return decoratedTypes;
+   }
+
+}


Property changes on: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/DecoratorBean.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/DisposalMethodBean.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/DisposalMethodBean.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/DisposalMethodBean.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -59,7 +59,6 @@
       this.disposalMethodInjectionPoint = MethodInjectionPoint.of(this, disposalMethod);
       this.declaringBean = declaringBean;
       checkDisposalMethod();
-      initInjectionPoints();
       initBindings();
       initType();
       initTypes();
@@ -84,7 +83,7 @@
       return new DisposalMethodBean<T>(manager, disposalMethod, declaringBean);
    }
 
-   private void initInjectionPoints()
+   protected void initInjectionPoints()
    {
       disposalInjectionPoints = new HashSet<AnnotatedInjectionPoint<?, ?>>();
 

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -122,7 +122,6 @@
       {
          super.initialize(environment);
          initProxyClass();
-         initInjectionPoints();
          checkEJBTypeAllowed();
          checkConflictingRoles();
          checkObserverMethods();

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ProducerFieldBean.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ProducerFieldBean.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ProducerFieldBean.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -154,4 +154,10 @@
       return id;
    }
 
+   @Override
+   protected void initInjectionPoints()
+   {
+      
+   }
+
 }

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -102,7 +102,6 @@
          super.initialize(environment);
          checkProducerMethod();
          initDisposalMethod(environment);
-         initInjectionPoints();
       }
    }
 

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/SimpleBean.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/SimpleBean.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/SimpleBean.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -299,10 +299,9 @@
    {
       if (!isInitialized())
       {
-         super.initialize(environment);
          initConstructor();
+         super.initialize(environment);
          checkType();
-         initInjectionPoints();
          initPostConstruct();
          initPreDestroy();
          if (getManager().getServices().contains(EjbServices.class))

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -21,6 +21,7 @@
 import java.util.HashSet;
 import java.util.Set;
 
+import javax.decorator.Decorator;
 import javax.enterprise.inject.BindingType;
 import javax.enterprise.inject.Disposes;
 import javax.enterprise.inject.Initializer;
@@ -32,6 +33,7 @@
 
 import org.jboss.webbeans.BeanManagerImpl;
 import org.jboss.webbeans.bean.AbstractClassBean;
+import org.jboss.webbeans.bean.DecoratorBean;
 import org.jboss.webbeans.bean.DisposalMethodBean;
 import org.jboss.webbeans.bean.EnterpriseBean;
 import org.jboss.webbeans.bean.NewEnterpriseBean;
@@ -123,14 +125,22 @@
          {
             createEnterpriseBean(clazz);
          }
-         else if (isTypeSimpleWebBean(clazz))
+         else
          {
-            createSimpleBean(clazz);
+            boolean managedBeanOrDecorator = isTypeManagedBeanOrDecorator(clazz);
+            if (managedBeanOrDecorator && clazz.isAnnotationPresent(Decorator.class))
+            {
+               createDecorator(clazz);
+            }
+            else if (managedBeanOrDecorator && !clazz.isAbstract())
+            {
+               createSimpleBean(clazz);
+            }
          }
       }
       return this;
    }
-   
+
    public BeanDeployer deploy()
    {
       Set<RIBean<?>> beans = environment.getBeans();
@@ -286,6 +296,12 @@
       addBean(NewSimpleBean.of(annotatedClass, manager));
    }
    
+   private <T> void createDecorator(AnnotatedClass<T> annotatedClass)
+   {
+      DecoratorBean<T> bean = DecoratorBean.of(annotatedClass, manager);
+      addBean(bean);
+   }
+   
    private <T> void createEnterpriseBean(AnnotatedClass<T> annotatedClass)
    {
       // TODO Don't create enterprise bean if it has no local interfaces!
@@ -301,14 +317,13 @@
     *           The type to inspect
     * @return True if simple Web Bean, false otherwise
     */
-   private boolean isTypeSimpleWebBean(AnnotatedClass<?> clazz)
+   private boolean isTypeManagedBeanOrDecorator(AnnotatedClass<?> clazz)
    {
       Class<?> rawType = clazz.getRawType();
       EJBApiAbstraction ejbApiAbstraction = manager.getServices().get(EJBApiAbstraction.class);
       JsfApiAbstraction jsfApiAbstraction = manager.getServices().get(JsfApiAbstraction.class);
       ServletApiAbstraction servletApiAbstraction = manager.getServices().get(ServletApiAbstraction.class);
-      // TODO: check 3.2.1 for more rules!!!!!!
-      return !Reflections.isAbstract(rawType) && 
+      return !clazz.isNonStaticMemberClass() &&
              !Reflections.isParameterizedType(rawType) && 
              !servletApiAbstraction.SERVLET_CLASS.isAssignableFrom(rawType) && 
              !servletApiAbstraction.FILTER_CLASS.isAssignableFrom(rawType) && 

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -16,14 +16,9 @@
  */
 package org.jboss.webbeans.bootstrap;
 
-import java.lang.annotation.Annotation;
-import java.util.Collection;
-import java.util.List;
-
+import org.jboss.webbeans.BeanManagerImpl;
 import org.jboss.webbeans.BeanValidator;
 import org.jboss.webbeans.CurrentManager;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.bean.ee.AbstractJavaEEResourceBean;
 import org.jboss.webbeans.bean.standard.EventBean;
 import org.jboss.webbeans.bean.standard.InjectionPointBean;
 import org.jboss.webbeans.bean.standard.InstanceBean;
@@ -48,7 +43,6 @@
 import org.jboss.webbeans.ejb.EJBApiAbstraction;
 import org.jboss.webbeans.ejb.EjbDescriptorCache;
 import org.jboss.webbeans.ejb.spi.EjbServices;
-import org.jboss.webbeans.introspector.AnnotatedClass;
 import org.jboss.webbeans.jsf.JsfApiAbstraction;
 import org.jboss.webbeans.log.Log;
 import org.jboss.webbeans.log.Logging;
@@ -66,8 +60,7 @@
 import org.jboss.webbeans.servlet.ServletApiAbstraction;
 import org.jboss.webbeans.transaction.spi.TransactionServices;
 import org.jboss.webbeans.ws.spi.WebServices;
-import org.jboss.webbeans.xml.XmlEnvironment;
-import org.jboss.webbeans.xml.XmlParser;
+import org.jboss.webbeans.xml.BeansXmlParser;
 
 /**
  * Common bootstrapping functionality that is run at application startup and
@@ -153,11 +146,10 @@
     * 
     * @param classes The classes to register as Web Beans
     */
-   protected void registerBeans(Iterable<Class<?>> classes, Collection<AnnotatedClass<?>> xmlClasses, Iterable<AbstractJavaEEResourceBean<?>> resourceBeans, EjbDescriptorCache ejbDescriptors)
+   protected void registerBeans(Iterable<Class<?>> classes, EjbDescriptorCache ejbDescriptors)
    {
       BeanDeployer beanDeployer = new BeanDeployer(manager, ejbDescriptors);
       beanDeployer.addClasses(classes);
-      beanDeployer.addClasses(xmlClasses);
       beanDeployer.addBean(ManagerBean.of(manager));
       beanDeployer.addBean(InjectionPointBean.of(manager));
       beanDeployer.addBean(EventBean.of(manager));
@@ -170,7 +162,6 @@
          beanDeployer.addClass(NumericConversationIdGenerator.class);
          beanDeployer.addClass(HttpSessionManager.class);
       }
-      beanDeployer.addBeans(resourceBeans);
       beanDeployer.createBeans().deploy();
    }
    
@@ -197,18 +188,24 @@
             ejbDescriptors.addAll(getServices().get(EjbServices.class).discoverEjbs());
          }
          
-         XmlEnvironment xmlEnvironmentImpl = new XmlEnvironment(getServices(), ejbDescriptors, manager);
-         XmlParser parser = new XmlParser(xmlEnvironmentImpl);
+         BeansXmlParser parser = new BeansXmlParser(getServices().get(ResourceLoader.class), getServices().get(WebBeanDiscovery.class).discoverWebBeansXml());
          parser.parse();
-          
-         List<Class<? extends Annotation>> enabledDeploymentTypes = xmlEnvironmentImpl.getEnabledDeploymentTypes();
-         if (enabledDeploymentTypes.size() > 0)
+         
+         if (parser.getEnabledDeploymentTypes() != null)
          {
-            manager.setEnabledDeploymentTypes(enabledDeploymentTypes);
+            manager.setEnabledDeploymentTypes(parser.getEnabledDeploymentTypes());
          }
+         if (parser.getEnabledDecoratorClasses() != null)
+         {
+            manager.setEnabledDecoratorClasses(parser.getEnabledDecoratorClasses());
+         }
+         if (parser.getEnabledInterceptorClasses() != null)
+         {
+            manager.setEnabledInterceptorClasses(parser.getEnabledInterceptorClasses());
+         }
          log.debug("Deployment types: " + manager.getEnabledDeploymentTypes());
          manager.fireEvent(new BeforeBeanDiscoveryImpl());
-         registerBeans(getServices().get(WebBeanDiscovery.class).discoverWebBeanClasses(), xmlEnvironmentImpl.getClasses(), xmlEnvironmentImpl.getResourceBeans(), ejbDescriptors);
+         registerBeans(getServices().get(WebBeanDiscovery.class).discoverWebBeanClasses(), ejbDescriptors);
          manager.fireEvent(new AfterBeanDiscoveryImpl());
          log.debug("Web Beans initialized. Validating beans.");
          manager.getResolver().resolveInjectionPoints();

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/AnnotatedClass.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/AnnotatedClass.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/AnnotatedClass.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -159,6 +159,15 @@
    public Set<AnnotatedMethod<?>> getMethodsWithAnnotatedParameters(Class<? extends Annotation> annotationType);
    
    /**
+    * Gets all with constructors annotated with annotationType
+    * 
+    * @param annotationType The annotation to match
+    * @return A set of abstracted constructors with the given annotation. Returns an
+    *         empty set if there are no matches
+    */
+   public Set<AnnotatedConstructor<?>> getConstructorsWithAnnotatedParameters(Class<? extends Annotation> annotationType);
+   
+   /**
     * Gets all with parameters annotated with annotationType
     * 
     * @param annotationType The annotation to match

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/AnnotatedConstructor.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/AnnotatedConstructor.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/AnnotatedConstructor.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -19,8 +19,13 @@
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
+import java.util.Arrays;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
+import javax.decorator.Decorates;
+
 /**
  * Represents a Class Constructor
  * 
@@ -29,6 +34,9 @@
  */
 public interface AnnotatedConstructor<T> extends AnnotatedMember<T, Constructor<T>>
 {
+   
+   @SuppressWarnings("unchecked")
+   public static final Set<Class<? extends Annotation>> MAPPED_PARAMETER_ANNOTATIONS = new HashSet<Class<? extends Annotation>>(Arrays.asList(Decorates.class));
 
    /**
     * Gets all parameters to the constructor

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/AnnotatedItem.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/AnnotatedItem.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/AnnotatedItem.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -107,7 +107,27 @@
     */
    public <A extends Annotation> A getAnnotation(Class<A> annotationType);
    
+   /**
+    * Get the whole type hierarchy as a set of flattened types.
+    * 
+    * The returned types should have any type parameters resolved to their
+    * actual types.
+    * 
+    * @return the type hierarchy
+    */
    public Set<Type> getFlattenedTypeHierarchy();
+   
+   /**
+    * Get the type hierarchy of any interfaces implemented by this class.
+    * 
+    * Interface hierarchies from super classes are not included.
+    * 
+    * The returned types should have any type parameters resolved to their
+    * actual types.
+    * 
+    * @return the type hierarchy
+    */
+   public Set<Type> getInterfaceOnlyFlattenedTypeHierarchy();
 
    /**
     * Indicates if an annotation type specified is present

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/AnnotatedMethod.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/AnnotatedMethod.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/AnnotatedMethod.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -30,7 +30,6 @@
 import javax.event.AfterTransactionSuccess;
 import javax.event.Asynchronously;
 import javax.event.BeforeTransactionCompletion;
-import javax.enterprise.inject.Any;
 import javax.event.IfExists;
 import javax.event.Observes;
 
@@ -44,7 +43,7 @@
 public interface AnnotatedMethod<T> extends AnnotatedMember<T, Method>
 {
    @SuppressWarnings("unchecked")
-   public static final Set<Class<? extends Annotation>> MAPPED_PARAMETER_ANNOTATIONS = new HashSet<Class<? extends Annotation>>(Arrays.asList(Disposes.class, Observes.class, IfExists.class, BeforeTransactionCompletion.class, AfterTransactionCompletion.class, AfterTransactionFailure.class, AfterTransactionSuccess.class, Asynchronously.class));
+   public static final Set<Class<? extends Annotation>> MAPPED_PARAMETER_ANNOTATIONS = new HashSet<Class<? extends Annotation>>(Arrays.asList(Disposes.class, Observes.class, IfExists.class, BeforeTransactionCompletion.class, AfterTransactionCompletion.class, AfterTransactionFailure.class, AfterTransactionSuccess.class, Asynchronously.class, Disposes.class));
 
    /**
     * Gets the abstracted parameters of the method

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedClass.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedClass.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedClass.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -85,6 +85,11 @@
    {
       return delegate().getMethodsWithAnnotatedParameters(annotationType);
    }
+   
+   public Set<AnnotatedConstructor<?>> getConstructorsWithAnnotatedParameters(Class<? extends Annotation> annotationType)
+   {
+      return delegate().getConstructorsWithAnnotatedParameters(annotationType);
+   }
 
    public AnnotatedClass<?> getSuperclass()
    {

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedItem.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedItem.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedItem.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -223,6 +223,11 @@
       return delegate().getFlattenedTypeHierarchy();
    }
    
+   public Set<Type> getInterfaceOnlyFlattenedTypeHierarchy()
+   {
+      return delegate().getInterfaceOnlyFlattenedTypeHierarchy();
+   }
+   
    public boolean isParameterizedType()
    {
       return delegate().isParameterizedType();

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -20,6 +20,8 @@
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
 import java.util.Set;
 
 import org.jboss.webbeans.introspector.AnnotatedItem;
@@ -59,6 +61,7 @@
    private final Type[] actualTypeArguments; 
    private final Type type;
    private final Set<Type> flattenedTypes;
+   private final Set<Type> interfaceOnlyFlattenedTypes;
    private final boolean proxyable;
    private final boolean _parameterizedType;
 
@@ -86,6 +89,11 @@
       }
       this._parameterizedType = Reflections.isParameterizedType(rawType);
       this.flattenedTypes = new Reflections.HierarchyDiscovery(type).getFlattenedTypes();
+      this.interfaceOnlyFlattenedTypes = new HashSet<Type>();
+      for (Type t : rawType.getGenericInterfaces())
+      {
+         interfaceOnlyFlattenedTypes.addAll(new Reflections.HierarchyDiscovery(t).getFlattenedTypes());
+      }
       this.proxyable = Proxies.isTypesProxyable(flattenedTypes);
    }
    
@@ -97,6 +105,7 @@
       this.actualTypeArguments = new Type[0];
       this._parameterizedType = false;
       this.flattenedTypes = null;
+      this.interfaceOnlyFlattenedTypes = null;
       this.proxyable = false;
    }
    
@@ -299,8 +308,13 @@
    
    public Set<Type> getFlattenedTypeHierarchy()
    {
-      return flattenedTypes;
+      return Collections.unmodifiableSet(flattenedTypes);
    }
+   
+   public Set<Type> getInterfaceOnlyFlattenedTypeHierarchy()
+   {
+      return Collections.unmodifiableSet(interfaceOnlyFlattenedTypes);
+   }
 
    public abstract S getDelegate();
    

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedClassImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedClassImpl.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedClassImpl.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -94,6 +94,8 @@
    // The map from class list to abstracted constructor
    private final Map<List<Class<?>>, AnnotatedConstructor<T>> constructorsByArgumentMap;
    
+   private final SetMultiMap<Class<? extends Annotation>, AnnotatedConstructor<?>> constructorsByAnnotatedParameters;
+   
    // Cached string representation
    private String toString;
    
@@ -118,7 +120,7 @@
       this.declaredFieldsByName = new HashMap<String, AnnotatedField<?>>();
       this.declaredAnnotatedFields = new SetHashMultiMap<Class<? extends Annotation>, AnnotatedField<?>>();
       this.declaredMetaAnnotatedFields = new SetHashMultiMap<Class<? extends Annotation>, AnnotatedField<?>>();
-      this._nonStaticMemberClass = Reflections.isNonMemberInnerClass(rawType);
+      this._nonStaticMemberClass = Reflections.isNonStaticInnerClass(rawType);
       this._abstract = Reflections.isAbstract(rawType);
       this._enum = rawType.isEnum();
       for (Class<?> c = rawType; c != Object.class && c != null; c = c.getSuperclass())
@@ -159,6 +161,7 @@
       this.constructors = new HashSet<AnnotatedConstructor<T>>();
       this.constructorsByArgumentMap = new HashMap<List<Class<?>>, AnnotatedConstructor<T>>();
       this.annotatedConstructors = new SetHashMultiMap<Class<? extends Annotation>, AnnotatedConstructor<T>>();
+      this.constructorsByAnnotatedParameters = new SetHashMultiMap<Class<? extends Annotation>, AnnotatedConstructor<?>>();
       this.declaredConstructorsBySignature = new HashMap<ConstructorSignature, AnnotatedConstructor<?>>();
       for (Constructor<?> constructor : rawType.getDeclaredConstructors())
       {
@@ -182,6 +185,14 @@
             }
             annotatedConstructors.get(annotation.annotationType()).add(annotatedConstructor);
          }
+         
+         for (Class<? extends Annotation> annotationType : AnnotatedConstructor.MAPPED_PARAMETER_ANNOTATIONS)
+         {
+            if (annotatedConstructor.getAnnotatedParameters(annotationType).size() > 0)
+            {
+               constructorsByAnnotatedParameters.put(annotationType, annotatedConstructor);
+            }
+         }
       }
       
       this.methods = new HashSet<AnnotatedMethod<?>>();
@@ -390,6 +401,11 @@
       return Collections.unmodifiableSet(methodsByAnnotatedParameters.get(annotationType));
    }
    
+   public Set<AnnotatedConstructor<?>> getConstructorsWithAnnotatedParameters(Class<? extends Annotation> annotationType)
+   {
+      return Collections.unmodifiableSet(constructorsByAnnotatedParameters.get(annotationType));
+   }
+   
    public Set<AnnotatedMethod<?>> getDeclaredMethodsWithAnnotatedParameters(Class<? extends Annotation> annotationType)
    {
       return Collections.unmodifiableSet(declaredMethodsByAnnotatedParameters.get(annotationType));

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Reflections.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Reflections.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Reflections.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -321,9 +321,9 @@
     * @param clazz Class to Check
     * @return True if static, false otherwise
     */
-   public static boolean isNonMemberInnerClass(Class<?> clazz)
+   public static boolean isNonStaticInnerClass(Class<?> clazz)
    {
-      return clazz.isMemberClass() && !isStatic(clazz);
+      return (clazz.isMemberClass() || clazz.isAnonymousClass()) && !isStatic(clazz);
    }
 
    /**

Added: ri/trunk/impl/src/main/java/org/jboss/webbeans/util/dom/NodeListIterable.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/util/dom/NodeListIterable.java	                        (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/util/dom/NodeListIterable.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -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/impl/src/main/java/org/jboss/webbeans/util/dom/NodeListIterable.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: ri/trunk/impl/src/main/java/org/jboss/webbeans/util/dom/NodeListIterator.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/util/dom/NodeListIterator.java	                        (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/util/dom/NodeListIterator.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -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/impl/src/main/java/org/jboss/webbeans/util/dom/NodeListIterator.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/BeansXmlParser.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/BeansXmlParser.java	                        (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/BeansXmlParser.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -0,0 +1,242 @@
+package org.jboss.webbeans.xml;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.annotation.Annotation;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+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.resources.spi.ResourceLoadingException;
+import org.jboss.webbeans.util.dom.NodeListIterable;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.Text;
+import org.xml.sax.SAXException;
+
+/**
+ * Simple parser for beans.xml
+ * 
+ * @author Pete Muir
+ *
+ */
+public class BeansXmlParser
+{
+   
+   private static class XmlElement
+   {
+      private URL file;
+      private Element element;
+      
+      public XmlElement(URL file, Element element)
+      {
+         super();
+         this.file = file;
+         this.element = element;
+      }
+      
+      public URL getFile()
+      {
+         return file;
+      }
+      
+      public Element getElement()
+      {
+         return element;
+      }
+      
+      @Override
+      public String toString()
+      {
+         return "File: " + getFile() + "; Node: " + getElement();
+      }
+      
+   }
+   
+   private final Iterable<URL> beansXml;
+   private final ResourceLoader resourceLoader;
+   
+   private List<Class<? extends Annotation>> enabledDeploymentTypes;
+   private List<Class<?>> enabledDecoratorClasses;
+   private List<Class<?>> enabledInterceptorClasses;
+   
+   public List<Class<? extends Annotation>> getEnabledDeploymentTypes()
+   {
+      return enabledDeploymentTypes;
+   }
+   
+   public List<Class<?>> getEnabledDecoratorClasses()
+   {
+      return enabledDecoratorClasses;
+   }
+   
+   public List<Class<?>> getEnabledInterceptorClasses()
+   {
+      return Collections.emptyList();
+   }
+   
+   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<XmlElement> deployElements = new ArrayList<XmlElement>(); 
+      List<XmlElement> decoratorElements = new ArrayList<XmlElement>(); 
+      List<XmlElement> interceptorElements = new ArrayList<XmlElement>(); 
+      for (URL url : beansXml)
+      {
+         InputStream is;
+         boolean fileHasContents;
+         try
+         {
+            is = url.openStream();
+            fileHasContents = is.available() > 0;
+         }
+         catch (IOException e)
+         {
+            throw new DeploymentException("Error loading beans.xml " + url.toString(), e);
+         }
+         if (fileHasContents)
+         {
+            Document document;
+            try
+            {
+               document = documentBuilder.parse(is);
+               document.normalize();
+            }
+            catch (SAXException e)
+            {
+               throw new DeploymentException("Error parsing beans.xml " + url.toString(), e);
+            }
+            catch (IOException e)
+            {
+               throw new DeploymentException("Error loading beans.xml " + url.toString(), e);
+            }
+            Element beans = document.getDocumentElement();
+            for (Node child : new NodeListIterable(beans.getChildNodes()))
+            {
+               if (child instanceof Element && "deploy".equals(child.getNodeName()))
+               {
+                  deployElements.add(new XmlElement(url, (Element) child));
+               }
+               if (child instanceof Element && "interceptors".equals(child.getNodeName()))
+               {
+                  decoratorElements.add(new XmlElement(url, (Element) child));
+               }
+               
+               if (child instanceof Element && "decorators".equals(child.getNodeName()))
+               {
+                  interceptorElements.add(new XmlElement(url, (Element) child));
+               }
+            }
+         }
+      }
+      
+      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)
+      {
+         enabledDeploymentTypes = new ArrayList<Class<? extends Annotation>>();
+         enabledDeploymentTypes.addAll(processDeployElement(resourceLoader, deployElements.get(0)));
+      }
+      
+      if (decoratorElements.size() > 1)
+      {
+         throw new DeploymentException("<decorator> can only be specified once, but it is specified muliple times " + decoratorElements);
+      }
+      else if (decoratorElements.size() == 1)
+      {
+         enabledDecoratorClasses = new ArrayList<Class<?>>();
+         enabledDecoratorClasses.addAll(processElement(resourceLoader, decoratorElements.get(0)));
+      }
+         
+      if (interceptorElements.size() > 1)
+      {
+         throw new DeploymentException("<interceptor> can only be specified once, but it is specified muliple times " + interceptorElements);
+      }
+      else if (interceptorElements.size() == 1)
+      {
+         enabledInterceptorClasses = new ArrayList<Class<?>>();
+         enabledInterceptorClasses.addAll(processElement(resourceLoader, interceptorElements.get(0)));
+      }
+      
+   }
+   
+   private static List<Class<? extends Annotation>> processDeployElement(ResourceLoader resourceLoader, XmlElement element)
+   {
+      List<Class<? extends Annotation>> list = new ArrayList<Class<? extends Annotation>>();
+      for (Node child : new NodeListIterable(element.getElement().getChildNodes()))
+      {
+         String className = processNode(child);
+         if (className != null)
+         {
+            try
+            {
+               list.add(resourceLoader.classForName(className).asSubclass(Annotation.class));
+            }
+            catch (ResourceLoadingException e)
+            {
+               throw new DeploymentException("Cannot load class " + className + " defined in " + element.getFile().toString());
+            }
+         }
+      }
+      return list;
+   }
+   
+   private static String processNode(Node node)
+   {
+      if (node instanceof Element)
+      {
+         if (node.getChildNodes().getLength() == 1 && node.getChildNodes().item(0) instanceof Text)
+         {
+            String className = ((Text) node.getChildNodes().item(0)).getData();
+            return className;
+         }
+      }
+      return null;
+   }
+   
+   private static List<Class<?>> processElement(ResourceLoader resourceLoader, XmlElement element)
+   {
+      List<Class<?>> list = new ArrayList<Class<?>>();
+      for (Node child : new NodeListIterable(element.getElement().getChildNodes()))
+      {
+         String className = processNode(child);
+         if (className != null)
+         {
+            try
+            {
+               list.add(resourceLoader.classForName(className).asSubclass(Annotation.class));
+            }
+            catch (ResourceLoadingException e)
+            {
+               throw new DeploymentException("Cannot load class " + className + " defined in " + element.getFile().toString());
+            }
+         }
+      }
+      return list;
+   }
+   
+}

Property changes on: ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/BeansXmlParser.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Deleted: ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/ParseXmlHelper.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/ParseXmlHelper.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/ParseXmlHelper.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -1,349 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * Licensed 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.jboss.webbeans.xml;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Array;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Scanner;
-import java.util.Set;
-
-import javax.inject.DefinitionException;
-
-import org.dom4j.Attribute;
-import org.dom4j.DocumentException;
-import org.dom4j.Element;
-import org.dom4j.Namespace;
-import org.dom4j.QName;
-import org.dom4j.io.SAXReader;
-import org.jboss.webbeans.introspector.AnnotatedClass;
-import org.jboss.webbeans.introspector.jlr.AnnotatedClassImpl;
-import org.jboss.webbeans.resources.ClassTransformer;
-import org.jboss.webbeans.resources.spi.ResourceLoadingException;
-import org.xml.sax.SAXException;
-
-public class ParseXmlHelper
-{
-   public static boolean isJavaEeNamespace(Element element)
-   {
-      return XmlConstants.JAVA_EE_NAMESPACE.equalsIgnoreCase(element.getNamespace().getURI());
-   }
-
-   public static <T> AnnotatedClass<? extends T> loadElementClass(Element element, Class<T> expectedType, XmlEnvironment environment, 
-                                                                     Map<String, Set<String>> packagesMap)
-   {
-      List<AnnotatedClass<? extends T>> classesList = tryLoadElementClass(element, expectedType, environment, packagesMap);
-      String className = element.getName();
-
-      if (classesList.size() == 0)
-         throw new DefinitionException("Could not find '" + className + "'");
-
-      return classesList.get(0);
-   }
-
-   public static <T> List<AnnotatedClass<? extends T>> tryLoadElementClass(Element element, Class<T> expectedType, XmlEnvironment environment, 
-                                                                              Map<String, Set<String>> packagesMap)
-   {
-      List<AnnotatedClass<? extends T>> classesList = new ArrayList<AnnotatedClass<? extends T>>();
-      String prefix = element.getNamespacePrefix();
-
-      for (Map.Entry<String, Set<String>> packagesEntry : packagesMap.entrySet())
-      {
-         if (packagesEntry.getKey().equalsIgnoreCase(prefix))
-         {
-            Set<String> packages = packagesEntry.getValue();
-            for (String packageName : packages)
-            {
-               String classPath = packageName + "." + element.getName();
-               try
-               {
-                  AnnotatedClass<? extends T> classType = environment.loadClass(classPath, expectedType);
-                  classesList.add(classType);
-               }
-               catch (ResourceLoadingException e)
-               {
-               }
-            }
-         }
-      }
-
-      if (classesList.size() > 1)
-         throw new DefinitionException("There are multiple packages containing a Java type with the same name '" + element.getName() + "'");
-
-      return classesList;
-   }
-
-   public static <T extends Annotation> Class<? extends T> loadAnnotationClass(Element element, Class<T> expectedType, XmlEnvironment environment, 
-                                                                                 Map<String, Set<String>> packagesMap)
-   {
-      List<Class<? extends T>> classesList = new ArrayList<Class<? extends T>>();
-      String className = element.getName();
-      String prefix = element.getNamespacePrefix();
-
-      for (Map.Entry<String, Set<String>> packagesEntry : packagesMap.entrySet())
-      {
-         if (packagesEntry.getKey().equalsIgnoreCase(prefix))
-         {
-            Set<String> packages = packagesEntry.getValue();
-            for (String packageName : packages)
-            {
-               String classPath = packageName + "." + element.getName();
-               try
-               {
-                  classesList.add(environment.loadAnnotation(classPath, expectedType));
-               }
-               catch (ResourceLoadingException e)
-               {
-                  // work with this when 'classesList.size() == 0'
-               }
-               catch (ClassCastException e)
-               {
-                  throw new DefinitionException("<" + element.getName() + "> must be a Java annotation type");
-               }
-            }
-         }
-      }
-
-      if (classesList.size() == 0)
-         throw new DefinitionException("Could not find '" + className + "'");
-
-      if (classesList.size() == 1)
-         return classesList.get(0);
-
-      throw new DefinitionException("There are multiple packages containing a Java type with the same name '" + className + "'");
-   }
-
-   public static void checkRootAttributes(Element root, Map<String, Set<String>> packagesMap, XmlEnvironment environment, URL xmlUrl, Set<URL> schemas)
-   {
-      Iterator<?> rootAttrIterator = root.attributeIterator();
-      while (rootAttrIterator.hasNext())
-      {
-         Set<String> packagesSet = new HashSet<String>();
-         Attribute attribute = (Attribute) rootAttrIterator.next();
-         String attrPrefix = attribute.getNamespacePrefix();
-         String attrData = attribute.getStringValue();
-
-         String urn = "";
-         for (String attrVal : attrData.split(" "))
-         {
-            if (attrVal.startsWith(XmlConstants.URN_PREFIX))
-            {
-               urn = attrVal;
-               URL namespaceFile = environment.loadFileByUrn(urn, XmlConstants.NAMESPACE_FILE_NAME);
-
-               if (namespaceFile != null)
-               {
-                  packagesSet.addAll(parseNamespaceFile(namespaceFile));
-               }
-               else
-               {
-                  String packageName = urn.replaceFirst(XmlConstants.URN_PREFIX, "");
-                  packagesSet.add(packageName);
-               }
-            }
-            if (XmlConstants.SCHEMA_LOCATION.equalsIgnoreCase(attribute.getName()) && 
-                  attrVal.startsWith(XmlConstants.HTTP_PREFIX) && urn.trim().length() > 0)
-            {
-               URL schemaUrl = environment.loadFileByUrn(urn, XmlConstants.SCHEMA_FILE_NAME);
-               if (schemaUrl == null)
-                  throw new DefinitionException("Could not find '" + XmlConstants.SCHEMA_FILE_NAME + 
-                        "' file according to specified URN '" + urn + "'");
-               schemas.add(schemaUrl);
-            }
-         }
-
-         addElementToPackagesMap(packagesMap, attrPrefix, packagesSet);
-      }
-   }
-
-   public static void checkRootDeclaredNamespaces(Element root, Map<String, Set<String>> packagesMap, XmlEnvironment environment, URL xmlUrl, Set<URL> schemas)
-   {
-      Iterator<?> namespacesIterator = root.declaredNamespaces().iterator();
-      while (namespacesIterator.hasNext())
-      {
-         Namespace namespace = (Namespace) namespacesIterator.next();
-         String prefix = namespace.getPrefix();
-         String uri = namespace.getURI();
-
-         if (uri.startsWith(XmlConstants.URN_PREFIX))
-         {
-            Set<String> packagesSet = new HashSet<String>();
-
-            URL schemaUrl = environment.loadFileByUrn(uri, XmlConstants.SCHEMA_FILE_NAME);
-            if (schemaUrl != null)
-               schemas.add(schemaUrl);
-
-            URL namespaceFile = environment.loadFileByUrn(uri, XmlConstants.NAMESPACE_FILE_NAME);
-            if (namespaceFile != null)
-            {
-               packagesSet.addAll(parseNamespaceFile(namespaceFile));
-            }
-            else
-            {
-               String packageName = uri.replaceFirst(XmlConstants.URN_PREFIX, "");
-               packagesSet.add(packageName);
-            }
-
-            addElementToPackagesMap(packagesMap, prefix, packagesSet);
-         }
-      }
-   }
-
-   public static void validateXmlWithXsd(URL xmlUrl, Set<URL> schemas)
-   {
-      try
-      {    
-         List<InputStream> schemaStreams = new ArrayList<InputStream>();
-         for (URL schema : schemas)
-         {
-            schemaStreams.add(schema.openStream());
-         }
-         
-         SAXReader reader = new SAXReader(true);         
-         reader.setProperty("http://java.sun.com/xml/jaxp/properties/schemaLanguage", "http://www.w3.org/2001/XMLSchema");
-         reader.setProperty("http://java.sun.com/xml/jaxp/properties/schemaSource", schemaStreams.toArray());
-         reader.read(xmlUrl.openStream());
-      }
-      catch (SAXException e)
-      {
-         String message = "SAXException while validate " + xmlUrl + " with " + schemas;
-         throw new DefinitionException(message, e);
-      }
-      catch (IOException e)
-      {
-         String message = "IOException while validate " + xmlUrl + " with " + schemas;
-         throw new DefinitionException(message, e);
-      }
-      catch (DocumentException e)
-      {
-         String message = "DocumentException while validate " + xmlUrl + " with " + schemas;
-         throw new DefinitionException(message, e);
-      }
-   }
-
-   public static List<Element> findElementsInEeNamespace(Element elementParent, String elementName)
-   {
-      String elementPrefix = "";
-      String elementUri = XmlConstants.JAVA_EE_NAMESPACE;
-
-      return findElements(elementParent, elementName, elementPrefix, elementUri);
-   }
-
-   public static List<Element> findElements(Element elementParent, String elementName, String elementPrefix, String elementUri)
-   {
-      List<Element> elements = new ArrayList<Element>();
-      Namespace elementNamespace = new Namespace(elementPrefix, elementUri);
-      QName qName = new QName(elementName, elementNamespace);
-      Iterator<?> elementIterator = elementParent.elementIterator(qName);
-      while (elementIterator.hasNext())
-      {
-         Element element = (Element) elementIterator.next();
-         elements.add(element);
-      }
-
-      return elements;
-   }
-
-   private static Set<String> parseNamespaceFile(URL namespaceFile)
-   {
-      Set<String> packages = new HashSet<String>();
-      Scanner fileScanner;
-      try
-      {
-         fileScanner = new Scanner(namespaceFile.openStream());
-         while (fileScanner.hasNextLine())
-         {
-            String line = fileScanner.nextLine();
-            Scanner lineScanner = new Scanner(line);
-            lineScanner.useDelimiter(XmlConstants.NAMESPACE_FILE_DELIMETER);
-            while (lineScanner.hasNext())
-            {
-               packages.add(lineScanner.next());
-            }
-            lineScanner.close();
-         }
-         fileScanner.close();
-         return packages;
-      }
-      catch (IOException e)
-      {
-         throw new RuntimeException("Error opening " + namespaceFile.toString());
-      }
-   }
-
-   private static void addElementToPackagesMap(Map<String, Set<String>> packagesMap, String prefix, Set<String> packagesSet)
-   {
-      if (packagesMap.containsKey(prefix))
-      {
-         Set<String> packages = packagesMap.get(prefix);
-         packages.addAll(packagesSet);
-      }
-      else
-      {
-         packagesMap.put(prefix, packagesSet);
-      }
-   }
-
-   public static void checkForUniqueElements(List<Class<? extends Annotation>> list)
-   {
-      Set<Class<? extends Annotation>> set = new HashSet<Class<? extends Annotation>>(list);
-      if (list.size() != set.size())
-         throw new DefinitionException("A certain annotation type is declared more than once as a binding type, " + 
-               "interceptor binding type or stereotype using XML");
-   }
-   
-   public static AnnotatedClass<?> obtainArray(Element arrayElement, XmlEnvironment environment, Map<String, Set<String>> packagesMap)
-   {  
-      AnnotatedClass<?> arrayType = obtainArrayType(arrayElement, environment, packagesMap);
-      Object array = Array.newInstance(arrayType.getRawType(), 0);      
-      AnnotatedClass<?> result = AnnotatedClassImpl.of(array.getClass(), new ClassTransformer());      
-      return result;
-   }
-   
-   private static AnnotatedClass<?> obtainArrayType(Element arrayElement, XmlEnvironment environment, Map<String, Set<String>> packagesMap)
-   {
-      AnnotatedClass<?> arrayType = null;
-      
-      boolean haveNotAnnotation = false;
-      Iterator<?> arrayIterator = arrayElement.elementIterator();
-      while (arrayIterator.hasNext())
-      {
-         Element arrayChild = (Element) arrayIterator.next();
-         AnnotatedClass<?> arrayChildType = ParseXmlHelper.loadElementClass(arrayChild, Object.class, environment, packagesMap);
-         boolean isAnnotation = arrayChildType.getRawType().isAnnotation();
-         if (!isAnnotation)
-         {
-            if (haveNotAnnotation)
-               throw new DefinitionException("<Array> element have second child which is not annotation, it is '" + 
-                     arrayChild.getName() + "'");
-            haveNotAnnotation = true;
-            arrayType = arrayChildType;
-         }
-      }
-      if (!haveNotAnnotation)
-         throw new DefinitionException("<Array> element must have one child elemen which is not annotation");
-      
-      return arrayType;
-   }
-}

Deleted: ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/XmlClass.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/XmlClass.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/XmlClass.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -1,22 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * Licensed 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.jboss.webbeans.xml;
-
-public interface XmlClass
-{
-   
-}

Deleted: ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/XmlConstants.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/XmlConstants.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/XmlConstants.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -1,88 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * Licensed 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.jboss.webbeans.xml;
-
-public class XmlConstants
-{
-   public static final String JAVA_EE_NAMESPACE = "urn:java:ee";
-
-   public static final String DEPLOY = "Deploy";
-
-   public static final String INTERCEPTORS = "Interceptors";
-
-   public static final String INTERCEPTOR = "Interceptor";
-
-   public static final String DECORATORS = "Decorators";
-
-   public static final String DECORATOR = "Decorator";
-
-   public static final String BINDING_TYPE = "BindingType";
-
-   public static final String INTERCEPTOR_BINDING_TYPE = "InterceptorBindingType";
-
-   public static final String STEREOTYPE = "Stereotype";
-
-   public static final String RESOURCE = "Resource";
-
-   public static final String PERSISTENCE_CONTEXT = "PersistenceContext";
-
-   public static final String PERSISTENCE_UNIT = "PersistenceUnit";
-
-   public static final String EJB = "EJB";
-
-   public static final String EJB_NAME = "ejbName";
-
-   public static final String EJB_LINK = "ejbLink";
-
-   public static final String WEB_SERVICE_REF = "WebServiceRef";
-
-   public static final String WSDL_LOCATION = "wsdlLocation";
-
-   public static final String TOPIC = "Topic";
-
-   public static final String QUEUE = "Queue";
-
-   public static final String URN_PREFIX = "urn:java:";
-
-   public static final String HTTP_PREFIX = "http://";
-
-   public static final String SCHEMA_LOCATION = "schemaLocation";
-
-   public static final String MAPPED_NAME = "mappedName";
-
-   public static final String UNIT_NAME = "unitName";
-
-   public static final String STANDARD = "Standard";
-
-   public static final String NAMESPACE_FILE_NAME = "namespace";
-
-   public static final String SCHEMA_FILE_NAME = "schema.xsd";
-
-   public static final String NAMESPACE_FILE_DELIMETER = " ";
-
-   public static final String PRODUCES = "Produces";
-
-   public static final String VALUE = "value";
-
-   public static final String ARRAY = "Array";
-
-   public static final String JNDI_NAME = "name";
-
-   public static final String JAVA_GLOBAL = "java:global/";
-
-   public static final String JAVA_APP = "java:app/";
-}

Deleted: ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/XmlEnvironment.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/XmlEnvironment.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/XmlEnvironment.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -1,124 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * Licensed 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.jboss.webbeans.xml;
-
-import java.lang.annotation.Annotation;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.bean.ee.AbstractJavaEEResourceBean;
-import org.jboss.webbeans.bootstrap.api.ServiceRegistry;
-import org.jboss.webbeans.bootstrap.spi.WebBeanDiscovery;
-import org.jboss.webbeans.ejb.EjbDescriptorCache;
-import org.jboss.webbeans.introspector.AnnotatedAnnotation;
-import org.jboss.webbeans.introspector.AnnotatedClass;
-import org.jboss.webbeans.resources.ClassTransformer;
-import org.jboss.webbeans.resources.spi.ResourceLoader;
-
-public class XmlEnvironment
-{
-   
-   private final List<AnnotatedClass<?>> classes;
-   private final List<AnnotatedAnnotation<?>> annotations;
-   private final ServiceRegistry serviceRegistry;
-   private final List<Class<? extends Annotation>> enabledDeploymentTypes;
-   private final Iterable<URL> beansXmlUrls;
-   private final EjbDescriptorCache ejbDescriptors;
-   private final Set<AbstractJavaEEResourceBean<?>> resourceBeans;
-   private final BeanManagerImpl manager;
-   
-   public XmlEnvironment(ServiceRegistry serviceRegistry, EjbDescriptorCache ejbDescriptors, BeanManagerImpl manager)
-   {
-      this(serviceRegistry, serviceRegistry.get(WebBeanDiscovery.class).discoverWebBeansXml(), ejbDescriptors, manager);
-   }
-   
-   protected XmlEnvironment(ServiceRegistry serviceRegistry, Iterable<URL> beanXmlUrls, EjbDescriptorCache ejbDescriptors, BeanManagerImpl manager)
-   {
-      this.classes = new ArrayList<AnnotatedClass<?>>();
-      this.annotations = new ArrayList<AnnotatedAnnotation<?>>();
-      this.enabledDeploymentTypes = new ArrayList<Class<? extends Annotation>>();
-      this.resourceBeans = new HashSet<AbstractJavaEEResourceBean<?>>();
-      this.serviceRegistry = serviceRegistry;
-      this.beansXmlUrls = beanXmlUrls;
-      this.ejbDescriptors = ejbDescriptors;
-      this.manager = manager;
-   }
-   
-   public List<AnnotatedClass<?>> getClasses()
-   {
-      return classes;
-   }
-   
-   public List<AnnotatedAnnotation<?>> getAnnotations()
-   {
-      return annotations;
-   }
-   
-   public Iterable<URL> getBeansXmlUrls()
-   {
-      return beansXmlUrls;
-   }
-   
-   public <T> AnnotatedClass<? extends T> loadClass(String className, Class<T> expectedType)
-   {
-      return serviceRegistry.get(ClassTransformer.class).classForName((serviceRegistry.get(ResourceLoader.class).classForName(className).asSubclass(expectedType)));
-   }
-   
-   public <T extends Annotation> Class<? extends T> loadAnnotation(String className, Class<T> expectedType)
-   {
-      return serviceRegistry.get(ResourceLoader.class).classForName(className).asSubclass(expectedType);
-   }
-
-   public List<Class<? extends Annotation>> getEnabledDeploymentTypes()
-   {
-      return enabledDeploymentTypes;
-   }
-   
-   public EjbDescriptorCache getEjbDescriptors() 
-   {
-      return ejbDescriptors;
-   }
-   
-   public URL loadFileByUrn(String urn, String fileName)
-   {
-      char separator = '/';
-      String packageName = urn.replaceFirst(XmlConstants.URN_PREFIX, "");
-      String path = packageName.replace('.', separator);
-      String filePath = path + separator + fileName;
-      return serviceRegistry.get(ResourceLoader.class).getResource(filePath);
-   }
-   
-   public ServiceRegistry getServices()
-   {
-      return serviceRegistry;
-   }
-   
-   public Set<AbstractJavaEEResourceBean<?>> getResourceBeans()
-   {
-      return resourceBeans;
-   }
-   
-   public BeanManagerImpl getManager()
-   {
-      return manager;
-   }
-   
-}

Deleted: ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/XmlParser.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/XmlParser.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/XmlParser.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -1,323 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * Licensed 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.jboss.webbeans.xml;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.annotation.Annotation;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.enterprise.context.ScopeType;
-import javax.enterprise.inject.Named;
-import javax.enterprise.inject.deployment.DeploymentType;
-import javax.inject.DefinitionException;
-import javax.inject.DeploymentException;
-import javax.interceptor.InterceptorBindingType;
-
-import org.dom4j.Document;
-import org.dom4j.DocumentException;
-import org.dom4j.Element;
-import org.dom4j.io.SAXReader;
-import org.jboss.webbeans.introspector.AnnotatedClass;
-import org.jboss.webbeans.log.Log;
-import org.jboss.webbeans.log.Logging;
-import org.jboss.webbeans.xml.checker.beanchildren.ext.JmsResourceBeanChildrenChecker;
-import org.jboss.webbeans.xml.checker.beanchildren.ext.NotSimpleBeanChildrenChecker;
-import org.jboss.webbeans.xml.checker.beanchildren.ext.ResourceBeanChildrenChecker;
-import org.jboss.webbeans.xml.checker.beanchildren.ext.SimpleBeanChildrenChecker;
-import org.jboss.webbeans.xml.registrator.bean.BeanElementRegistrator;
-import org.jboss.webbeans.xml.registrator.bean.ext.JmsResourceElementRegistrator;
-import org.jboss.webbeans.xml.registrator.bean.ext.ResourceElementRegistrator;
-import org.jboss.webbeans.xml.registrator.bean.ext.SessionBeanElementRegistrator;
-import org.jboss.webbeans.xml.registrator.bean.ext.SimpleBeanElementRegistrator;
-
-public class XmlParser
-{
-   private static Log log = Logging.getLog(XmlParser.class);
-
-   private final XmlEnvironment environment;
-
-   private List<BeanElementRegistrator> beanElementRegistrators = new ArrayList<BeanElementRegistrator>();
-
-   private boolean haveAnyDeployElement = false;
-
-   private Map<String, Set<String>> packagesMap = new HashMap<String, Set<String>>();
-
-   public XmlParser(XmlEnvironment environment)
-   {
-      this.environment = environment;
-   }
-
-   public void parse()
-   {
-      for (URL url : environment.getBeansXmlUrls())
-      {
-         Document document = createDocument(url);
-         if (document != null)
-         {
-            parseForAnnotationTypes(document);
-            parseForDeploy(document);
-            parseForBeans(document);
-         }
-      }
-   }
-
-   private void parseForAnnotationTypes(Document document)
-   {
-      Element root = document.getRootElement();
-
-      List<Class<? extends Annotation>> bindingTypes = new ArrayList<Class<? extends Annotation>>();
-      List<Class<? extends Annotation>> stereotypes = new ArrayList<Class<? extends Annotation>>();
-      List<Class<? extends Annotation>> interceptorBindingTypes = new ArrayList<Class<? extends Annotation>>();
-      
-      Iterator<?> elIterator = root.elementIterator();
-      while (elIterator.hasNext())
-      {
-         Element element = (Element) elIterator.next();
-         boolean isBindingType = ParseXmlHelper.findElementsInEeNamespace(element, XmlConstants.BINDING_TYPE).size() > 0;
-         boolean isInterceptorBindingType = ParseXmlHelper.findElementsInEeNamespace(element, XmlConstants.INTERCEPTOR_BINDING_TYPE).size() > 0;
-         boolean isStereotype = ParseXmlHelper.findElementsInEeNamespace(element, XmlConstants.STEREOTYPE).size() > 0;
-
-         if (isBindingType || isStereotype || isInterceptorBindingType)
-         {
-            Class<? extends Annotation> annotationType = ParseXmlHelper.loadAnnotationClass(element, Annotation.class, environment, packagesMap);
-            if (isBindingType)
-            {
-               bindingTypes.add(annotationType);
-            }
-            if (isStereotype)
-            {
-               stereotypes.add(annotationType);
-               checkForStereotypeChildren(element);
-            }
-            if (isInterceptorBindingType)
-            {
-               interceptorBindingTypes.add(annotationType);
-               checkForInterceptorBindingTypeChildren(element);
-            }
-         }
-      }
-      ParseXmlHelper.checkForUniqueElements(bindingTypes);
-      ParseXmlHelper.checkForUniqueElements(stereotypes);
-      ParseXmlHelper.checkForUniqueElements(interceptorBindingTypes);
-   }
-
-   private void parseForBeans(Document document)
-   {
-      List<Element> beanElements = findBeans(document);
-      for (Element beanElement : beanElements)
-      {
-         AnnotatedClass<?> beanClass = ParseXmlHelper.loadElementClass(beanElement, Object.class, environment, packagesMap);
-         checkBeanElement(beanElement, beanClass);
-      }
-   }
-
-   private void parseForDeploy(Document document)
-   {
-      Element root = document.getRootElement();
-
-      Iterator<?> elIterator = root.elementIterator();
-      while (elIterator.hasNext())
-      {
-         Element element = (Element) elIterator.next();
-         if (ParseXmlHelper.isJavaEeNamespace(element) && XmlConstants.DEPLOY.equalsIgnoreCase(element.getName()))
-            environment.getEnabledDeploymentTypes().addAll(obtainDeploymentTypes(element));
-      }
-   }
-
-   private Document createDocument(URL url)
-   {
-      try
-      {
-         InputStream xmlStream;
-
-         xmlStream = url.openStream();
-         if (xmlStream.available() == 0)
-         {
-            return null;
-         }
-         
-         Set<URL> schemas = new HashSet<URL>();
-         
-         SAXReader reader = new SAXReader();
-         Document document = reader.read(xmlStream);
-         fullFillPackagesMap(document, url, schemas);
-         
-         if (schemas.size() > 0)
-            ParseXmlHelper.validateXmlWithXsd(url, schemas);
-         
-         return document;
-      }
-      catch (IOException e)
-      {
-         String message = "Can not open stream for " + url;
-         log.debug(message, e);
-         throw new DefinitionException(message, e);
-      }
-      catch (DocumentException e)
-      {
-         String message = "Error during the processing of a DOM4J document for " + url;
-         log.debug(message, e);
-         throw new DefinitionException(message, e);
-      }
-   }
-
-   private void checkForInterceptorBindingTypeChildren(Element element)
-   {
-      Iterator<?> elIterator = element.elementIterator();
-      while (elIterator.hasNext())
-      {
-         Element child = (Element) elIterator.next();
-         Class<? extends Annotation> clazz = ParseXmlHelper.loadAnnotationClass(child, Annotation.class, environment, packagesMap);
-         if (!XmlConstants.INTERCEPTOR_BINDING_TYPE.equalsIgnoreCase(child.getName()) && 
-               !clazz.isAnnotationPresent(InterceptorBindingType.class))
-            throw new DefinitionException("Direct child <" + child.getName() + "> of interceptor binding type <" + 
-                  element.getName() + "> declaration must be interceptor binding type");
-
-      }
-   }
-
-   private void checkForStereotypeChildren(Element stereotypeElement)
-   {
-      Iterator<?> elIterator = stereotypeElement.elementIterator();
-      while (elIterator.hasNext())
-      {
-         Element stereotypeChild = (Element) elIterator.next();
-         Class<? extends Annotation> stereotypeClass = ParseXmlHelper.loadAnnotationClass(stereotypeChild, Annotation.class, environment, packagesMap);
-         if (XmlConstants.STEREOTYPE.equalsIgnoreCase(stereotypeChild.getName()) || 
-               stereotypeClass.isAnnotationPresent(ScopeType.class) || 
-               stereotypeClass.isAnnotationPresent(DeploymentType.class) || 
-               stereotypeClass.isAnnotationPresent(InterceptorBindingType.class) ||
-               stereotypeClass.equals(Named.class))
-            continue;
-         throw new DefinitionException("Direct child <" + stereotypeChild.getName() + "> of stereotype <" + stereotypeElement.getName() + 
-               "> declaration must be scope type, or deployment type, or interceptor binding type, or javax.annotation.Named");
-      }
-   }
-
-   private List<Element> findBeans(Document document)
-   {
-      List<Element> beans = new ArrayList<Element>();
-
-      Element root = document.getRootElement();
-
-      Iterator<?> elIterator = root.elementIterator();
-      while (elIterator.hasNext())
-      {
-         Element element = (Element) elIterator.next();
-         if (checkBeanElementName(element) && checkBeanElementChildrenNames(element))
-            beans.add(element);
-      }
-
-      return beans;
-   }
-
-   private boolean checkBeanElementName(Element element)
-   {
-      if (ParseXmlHelper.isJavaEeNamespace(element) && 
-            (XmlConstants.DEPLOY.equalsIgnoreCase(element.getName()) || 
-                  XmlConstants.INTERCEPTORS.equalsIgnoreCase(element.getName()) || 
-                  XmlConstants.DECORATORS.equalsIgnoreCase(element.getName())))
-         return false;
-      return true;
-   }
-
-   private boolean checkBeanElementChildrenNames(Element element)
-   {
-      Iterator<?> elIterator = element.elementIterator();
-      while (elIterator.hasNext())
-      {
-         Element child = (Element) elIterator.next();
-         if (ParseXmlHelper.isJavaEeNamespace(child) && 
-               (XmlConstants.BINDING_TYPE.equalsIgnoreCase(child.getName()) || 
-                     XmlConstants.INTERCEPTOR_BINDING_TYPE.equalsIgnoreCase(child.getName()) || 
-                     XmlConstants.STEREOTYPE.equalsIgnoreCase(child.getName())))
-            return false;
-      }
-      return true;
-   }
-
-   // TODO Make this object orientated
-   private List<Class<? extends Annotation>> obtainDeploymentTypes(Element element)
-   {
-      if (haveAnyDeployElement)
-         throw new DefinitionException("<Deploy> element is specified more than once");
-
-      List<Element> standardElements = ParseXmlHelper.findElementsInEeNamespace(element, XmlConstants.STANDARD);
-      if (standardElements.size() == 0)
-         throw new DeploymentException("The @Standard deployment type must be declared");
-
-      List<Class<? extends Annotation>> deploymentClasses = new ArrayList<Class<? extends Annotation>>();
-      Iterator<?> deployIterator = element.elementIterator();
-      while (deployIterator.hasNext())
-      {
-         Element deploymentElement = (Element) deployIterator.next();
-
-         String elementName = deploymentElement.getName();
-         String elementPrefix = deploymentElement.getNamespacePrefix();
-         String elementUri = deploymentElement.getNamespaceURI();
-         List<Element> deploymentElements = ParseXmlHelper.findElements(element, elementName, elementPrefix, elementUri);
-         if (deploymentElements.size() != 1)
-            throw new DefinitionException("The same deployment type '" + deploymentElement.getName() + "' is declared more than once");
-
-         Class<? extends Annotation> deploymentClass = ParseXmlHelper.loadAnnotationClass(deploymentElement, Annotation.class, environment, packagesMap);
-
-         if (!deploymentClass.isAnnotationPresent(DeploymentType.class))
-            throw new DefinitionException("<Deploy> child '" + deploymentElement.getName() + "' must be a deployment type");
-
-         deploymentClasses.add(deploymentClass);
-      }
-      haveAnyDeployElement = true;
-      return deploymentClasses;
-   }
-
-   private void checkBeanElement(Element beanElement, AnnotatedClass<?> beanClass)
-   {
-      beanElementRegistrators.add(new JmsResourceElementRegistrator(new JmsResourceBeanChildrenChecker(environment, packagesMap)));
-      beanElementRegistrators.add(new ResourceElementRegistrator(new ResourceBeanChildrenChecker(environment, packagesMap)));
-      beanElementRegistrators.add(new SessionBeanElementRegistrator(new NotSimpleBeanChildrenChecker(environment, packagesMap), environment.getEjbDescriptors()));
-      beanElementRegistrators.add(new SimpleBeanElementRegistrator(new SimpleBeanChildrenChecker(environment, packagesMap), environment.getEjbDescriptors()));
-
-      boolean isValidType = false;
-      for (BeanElementRegistrator beanElementRegistrator : beanElementRegistrators)
-      {
-         if (beanElementRegistrator.accept(beanElement, beanClass))
-         {
-            beanElementRegistrator.registerBeanElement(beanElement, beanClass);
-            isValidType = true;
-            break;
-         }
-      }
-
-      if (!isValidType)
-         throw new DefinitionException("Can't determine type of bean element <" + beanElement.getName() + ">");
-   }
-
-   private void fullFillPackagesMap(Document document, URL xmlUrl, Set<URL> schemas)
-   {
-      Element root = document.getRootElement();
-      ParseXmlHelper.checkRootAttributes(root, packagesMap, environment, xmlUrl, schemas);
-      ParseXmlHelper.checkRootDeclaredNamespaces(root, packagesMap, environment, xmlUrl, schemas);
-   }
-}

Deleted: ri/trunk/tests/src/main/java/org/jboss/webbeans/mock/MockXmlEnvironment.java
===================================================================
--- ri/trunk/tests/src/main/java/org/jboss/webbeans/mock/MockXmlEnvironment.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/tests/src/main/java/org/jboss/webbeans/mock/MockXmlEnvironment.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -1,31 +0,0 @@
-package org.jboss.webbeans.mock;
-
-import java.net.URL;
-
-import org.jboss.webbeans.CurrentManager;
-import org.jboss.webbeans.bootstrap.api.ServiceRegistry;
-import org.jboss.webbeans.bootstrap.api.helpers.SimpleServiceRegistry;
-import org.jboss.webbeans.ejb.EjbDescriptorCache;
-import org.jboss.webbeans.resources.ClassTransformer;
-import org.jboss.webbeans.resources.DefaultResourceLoader;
-import org.jboss.webbeans.resources.spi.ResourceLoader;
-import org.jboss.webbeans.xml.XmlEnvironment;
-
-public class MockXmlEnvironment extends XmlEnvironment
-{
-
-   private static final ServiceRegistry services;
-   
-   static
-   {
-      services = new SimpleServiceRegistry();
-      services.add(ResourceLoader.class, new DefaultResourceLoader());
-      services.add(ClassTransformer.class, new ClassTransformer());
-   }
-   
-   public MockXmlEnvironment(Iterable<URL> beansXmlUrls, EjbDescriptorCache ejbDescriptors)
-   {
-      super(services, beansXmlUrls, ejbDescriptors, CurrentManager.rootManager());
-   }
-   
-}

Modified: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/xml/deploy/BeansXmlParserTest.java
===================================================================
--- ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/xml/deploy/BeansXmlParserTest.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/xml/deploy/BeansXmlParserTest.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -5,17 +5,15 @@
 
 import javax.enterprise.inject.deployment.Production;
 import javax.enterprise.inject.deployment.Standard;
-import javax.inject.DefinitionException;
+import javax.inject.DeploymentException;
 
 import org.jboss.testharness.impl.packaging.Artifact;
 import org.jboss.testharness.impl.packaging.Classes;
 import org.jboss.testharness.impl.packaging.Resource;
 import org.jboss.testharness.impl.packaging.Resources;
-import org.jboss.webbeans.ejb.EjbDescriptorCache;
-import org.jboss.webbeans.mock.MockXmlEnvironment;
+import org.jboss.webbeans.mock.MockResourceLoader;
 import org.jboss.webbeans.test.AbstractWebBeansTest;
-import org.jboss.webbeans.xml.XmlEnvironment;
-import org.jboss.webbeans.xml.XmlParser;
+import org.jboss.webbeans.xml.BeansXmlParser;
 import org.testng.annotations.Test;
 
 @Artifact
@@ -25,8 +23,7 @@
    @Resource(destination="WEB-INF/classes/org/jboss/webbeans/test/unit/xml/deploy/user-defined-beans.xml", source="/org/jboss/webbeans/test/unit/xml/deploy/user-defined-beans.xml")
 })
 @Classes(
-      packages={"org.jboss.webbeans.test.unit.xml.beans", "org.jboss.webbeans.test.unit.xml.beans.annotationtype"},
-      value={MockXmlEnvironment.class}
+      packages={"org.jboss.webbeans.test.unit.xml.beans", "org.jboss.webbeans.test.unit.xml.beans.annotationtype"}
 )
 public class BeansXmlParserTest extends AbstractWebBeansTest
 {
@@ -44,37 +41,34 @@
          it.next();
       }
       assert i == 1;
-      XmlEnvironment environment = new MockXmlEnvironment(urls, new EjbDescriptorCache());
-      XmlParser parser = new XmlParser(environment);
+      BeansXmlParser parser = new BeansXmlParser(new MockResourceLoader(), urls);
       parser.parse();
       
-      assert environment.getEnabledDeploymentTypes().size() == 2;
-      assert environment.getEnabledDeploymentTypes().get(0).equals(Standard.class);
-      assert environment.getEnabledDeploymentTypes().get(1).equals(Production.class);
+      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");
-      XmlEnvironment environment = new MockXmlEnvironment(urls, new EjbDescriptorCache());
-      XmlParser parser = new XmlParser(environment);
+      BeansXmlParser parser = new BeansXmlParser(new MockResourceLoader(), urls);
       parser.parse();
-      assert environment.getEnabledDeploymentTypes().size() == 3;
-      assert environment.getEnabledDeploymentTypes().get(0).equals(Standard.class);
-      assert environment.getEnabledDeploymentTypes().get(1).equals(Production.class);
-      assert environment.getEnabledDeploymentTypes().get(2).equals(AnotherDeploymentType.class);
+      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);
    }
    
    /**
     * Test case for WBRI-21.
     */
-   @Test(expectedExceptions=DefinitionException.class, description="WBRI-21")
+   @Test(expectedExceptions=DeploymentException.class, description="WBRI-21")
    public void testDuplicateDeployElement()
    {
       Iterable<URL> urls = getResources("duplicate-deployments-beans.xml");
-      XmlEnvironment environment = new MockXmlEnvironment(urls, new EjbDescriptorCache());
-      XmlParser parser = new XmlParser(environment);
+      BeansXmlParser parser = new BeansXmlParser(new MockResourceLoader(), urls);
       parser.parse();
    }
    

Deleted: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/xml/javaeepkg/JavaEePkgTest.java
===================================================================
--- ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/xml/javaeepkg/JavaEePkgTest.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/xml/javaeepkg/JavaEePkgTest.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -1,20 +0,0 @@
-package org.jboss.webbeans.test.unit.xml.javaeepkg;
-
-import org.jboss.testharness.impl.packaging.Artifact;
-import org.jboss.testharness.impl.packaging.Classes;
-import org.jboss.testharness.impl.packaging.jsr299.BeansXml;
-import org.jboss.webbeans.test.AbstractWebBeansTest;
-import org.jboss.webbeans.test.unit.xml.javaeepkg.foo.Order;
-import org.testng.annotations.Test;
-
- at Artifact
- at Classes({Order.class})
- at BeansXml("beans.xml")
-public class JavaEePkgTest extends AbstractWebBeansTest
-{
-   @Test
-   public void testJavaEePkg()
-   {      
-      assert getCurrentManager().getBeans(Order.class).size() == 2;
-   }
-}
\ No newline at end of file

Deleted: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/xml/parser/AnotherDeploymentType.java
===================================================================
--- ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/xml/parser/AnotherDeploymentType.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/xml/parser/AnotherDeploymentType.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -1,20 +0,0 @@
-package org.jboss.webbeans.test.unit.xml.parser;
-
-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.enterprise.inject.deployment.DeploymentType;
-
- at Target( { TYPE, METHOD })
- at Retention(RUNTIME)
- at Documented
- at DeploymentType
- at interface AnotherDeploymentType
-{
-
-}
\ No newline at end of file

Deleted: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/xml/parser/XmlParserImplTest.java
===================================================================
--- ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/xml/parser/XmlParserImplTest.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/xml/parser/XmlParserImplTest.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -1,78 +0,0 @@
-package org.jboss.webbeans.test.unit.xml.parser;
-
-import java.lang.annotation.Annotation;
-import java.net.URL;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import javax.enterprise.inject.spi.Bean;
-
-import org.jboss.testharness.impl.packaging.Artifact;
-import org.jboss.testharness.impl.packaging.Classes;
-import org.jboss.testharness.impl.packaging.Resource;
-import org.jboss.testharness.impl.packaging.Resources;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.ejb.EjbDescriptorCache;
-import org.jboss.webbeans.introspector.AnnotatedClass;
-import org.jboss.webbeans.introspector.AnnotatedItem;
-import org.jboss.webbeans.mock.MockXmlEnvironment;
-import org.jboss.webbeans.test.AbstractWebBeansTest;
-import org.jboss.webbeans.test.unit.xml.beans.Order;
-import org.jboss.webbeans.xml.XmlEnvironment;
-import org.jboss.webbeans.xml.XmlParser;
-
- at Artifact
- at Resources({
-   @Resource(source="/org/jboss/webbeans/test/unit/xml/parser/user-defined-beans.xml", destination="WEB-INF/classes/org/jboss/webbeans/test/unit/xml/parser/user-defined-beans.xml" ),
-   @Resource(source="/org/jboss/webbeans/test/unit/xml/parser/schema.xsd", destination="WEB-INF/classes/org/jboss/webbeans/test/unit/xml/parser/schema.xsd" ),
-   @Resource(source="/org/jboss/webbeans/test/unit/xml/parser/namespace", destination="WEB-INF/classes/org/jboss/webbeans/test/unit/xml/parser/namespace" )
-})
- at Classes(
-      value={Order.class, MockXmlEnvironment.class},
-      packages={"org.jboss.webbeans.test.unit.xml.beans.annotationtype", "org.jboss.webbeans.test.unit.xml.parser.schema.foo"}
-)
-public class XmlParserImplTest extends AbstractWebBeansTest
-{
-//   @Test
-   public void testParse()
-   {
-      XmlEnvironment parserEnv = new MockXmlEnvironment(getResources("beans.xml"), new EjbDescriptorCache());
-      AnnotatedClass<?> aClass = parserEnv.loadClass("org.jboss.webbeans.test.unit.xml.beans.Order", Order.class);
-
-      Set<URL> xmls = new HashSet<URL>();
-      Iterable<URL> urls = getResources("user-defined-beans.xml");
-
-      for (URL url : urls)
-         xmls.add(url);      
-      
-      XmlParser parser = new XmlParser(parserEnv);
-      parser.parse();      
-      
-      for (AnnotatedItem<?, ?> aElement : parserEnv.getClasses())
-      {
-         assert aElement.equals(aClass);
-      }
-
-      assert parserEnv.getClasses().size() == 1;
-   }
-   
-//   @Test
-   public void testDd()
-   {      
-      XmlEnvironment parserEnv = new MockXmlEnvironment(getResources("user-defined-beans.xml"), new EjbDescriptorCache());
-      XmlParser parser = new XmlParser(parserEnv);
-      parser.parse();
-      
-      BeanManagerImpl manager = parserEnv.getManager();
-      
-      Set<Bean<?>> beansSet = manager.getBeans(Order.class);
-      List<Class<? extends Annotation>> dTypes = manager.getEnabledDeploymentTypes();
-      dTypes.size();
-      for(Bean<?> bean : beansSet)
-      {
-         Class<? extends Annotation> deploymentType = bean.getDeploymentType();
-         System.out.println("after parsing: " + deploymentType);
-      }
-   }
-}
\ No newline at end of file

Deleted: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/xml/parser/schema/SchemaValidationTest.java
===================================================================
--- ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/xml/parser/schema/SchemaValidationTest.java	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/xml/parser/schema/SchemaValidationTest.java	2009-06-11 15:10:52 UTC (rev 2823)
@@ -1,50 +0,0 @@
-package org.jboss.webbeans.test.unit.xml.parser.schema;
-
-import javax.inject.DefinitionException;
-
-import org.jboss.testharness.impl.packaging.Artifact;
-import org.jboss.testharness.impl.packaging.Classes;
-import org.jboss.testharness.impl.packaging.Resource;
-import org.jboss.testharness.impl.packaging.Resources;
-import org.jboss.webbeans.ejb.EjbDescriptorCache;
-import org.jboss.webbeans.mock.MockXmlEnvironment;
-import org.jboss.webbeans.test.AbstractWebBeansTest;
-import org.jboss.webbeans.test.unit.xml.parser.schema.foo.Order;
-import org.jboss.webbeans.xml.XmlEnvironment;
-import org.jboss.webbeans.xml.XmlParser;
-import org.testng.annotations.Test;
-
- at Artifact
- at Resources({
-   @Resource(source="/org/jboss/webbeans/test/unit/xml/parser/schema/beans.xml", destination="WEB-INF/classes/org/jboss/webbeans/test/unit/xml/parser/schema/beans.xml" ),
-   @Resource(source="/org/jboss/webbeans/test/unit/xml/parser/schema/not-valid-beans.xml", destination="WEB-INF/classes/org/jboss/webbeans/test/unit/xml/parser/schema/not-valid-beans.xml" ),
-   @Resource(source="/org/jboss/webbeans/test/unit/xml/parser/schema/namespace", destination="WEB-INF/classes/org/jboss/webbeans/test/unit/xml/parser/schema/namespace" ),
-   @Resource(source="/org/jboss/webbeans/test/unit/xml/parser/schema/schema.xsd", destination="WEB-INF/classes/org/jboss/webbeans/test/unit/xml/parser/schema/schema.xsd" ),
-   @Resource(source="/org/jboss/webbeans/test/unit/xml/parser/schema/valid/schema.xsd", destination="WEB-INF/classes/org/jboss/webbeans/test/unit/xml/parser/schema/valid/schema.xsd" )
-})
- at Classes(
-      value={Order.class, MockXmlEnvironment.class},
-      packages={"org.jboss.webbeans.test.unit.xml.beans.annotationtype", "org.jboss.webbeans.test.unit.xml.parser.schema.foo"}
-)
-public class SchemaValidationTest extends AbstractWebBeansTest
-{   
-   @Test
-   public void testTwoValidSchemas()
-   {      
-      XmlEnvironment parserEnv = new MockXmlEnvironment(getResources("beans.xml"), new EjbDescriptorCache());
-      XmlParser parser = new XmlParser(parserEnv);
-      parser.parse();
-      
-      assert parserEnv.getManager().getBeans(Order.class).size() == 1;
-   }
-   
-   @Test(expectedExceptions = DefinitionException.class)
-   public void testOneSchemaNotValid()
-   {      
-      XmlEnvironment parserEnv = new MockXmlEnvironment(getResources("not-valid-beans.xml"), new EjbDescriptorCache());
-      XmlParser parser = new XmlParser(parserEnv);
-      parser.parse();
-      
-      assert false : "file '/org/jboss/webbeans/test/unit/xml/parser/schema/not-valid-beans.xml' matching '/org/jboss/webbeans/test/unit/xml/parser/schema/schema.xsd'";
-   }
-}
\ No newline at end of file

Modified: ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/examples/beans.xml
===================================================================
--- ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/examples/beans.xml	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/examples/beans.xml	2009-06-11 15:10:52 UTC (rev 2823)
@@ -1,8 +1,7 @@
-<Beans xmlns="urn:java:ee"
-       xmlns:test="urn:java:org.jboss.webbeans.test.examples"> 
-   <Deploy>
-      <Standard />
-      <Production />
-      <test:Mock />
-   </Deploy>
-</Beans>
+<beans> 
+   <deploy>
+      <type>javax.enterprise.inject.deployment.Standard</type>
+      <type>javax.enterprise.inject.deployment.Production</type>
+      <type>org.jboss.webbeans.test.examples.Mock</type>
+   </deploy>
+</beans>

Modified: ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/bootstrap/test-beans.xml
===================================================================
--- ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/bootstrap/test-beans.xml	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/bootstrap/test-beans.xml	2009-06-11 15:10:52 UTC (rev 2823)
@@ -1,8 +1,7 @@
-<Beans xmlns="urn:java:ee"
-       xmlns:test="urn:java:org.jboss.webbeans.test.unit.bootstrap"> 
-   <Deploy>
-      <Standard />
-      <Production />
-      <test:AnotherDeploymentType />
-   </Deploy>
-</Beans>
+<beans> 
+   <deploy>
+      <type>javax.enterprise.inject.deployment.Standard</type>
+      <type>javax.enterprise.inject.deployment.Production</type>
+      <type>org.jboss.webbeans.test.unit.bootstrap.AnotherDeploymentType</type>
+   </deploy>
+</beans>

Modified: ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/deploy/default-beans.xml
===================================================================
--- ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/deploy/default-beans.xml	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/deploy/default-beans.xml	2009-06-11 15:10:52 UTC (rev 2823)
@@ -1,6 +1,6 @@
-<Beans xmlns="urn:java:ee"> 
-   <Deploy>
-      <Standard />
-      <Production />
-   </Deploy>
-</Beans>
+<beans> 
+   <deploy>
+      <type>javax.enterprise.inject.deployment.Standard</type>
+      <type>javax.enterprise.inject.deployment.Production</type>
+   </deploy>
+</beans>

Modified: ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/deploy/duplicate-deployments-beans.xml
===================================================================
--- ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/deploy/duplicate-deployments-beans.xml	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/deploy/duplicate-deployments-beans.xml	2009-06-11 15:10:52 UTC (rev 2823)
@@ -1,10 +1,10 @@
-<Beans xmlns="urn:java:ee"> 
-   <Deploy>
-      <Standard />
-      <Production />
-   </Deploy>
-   <Deploy>
-      <Standard />
-      <Production />
-   </Deploy>
-</Beans>
+<beans> 
+   <deploy>
+      <type>javax.enterprise.inject.deployment.Standard</type>
+      <type>javax.enterprise.inject.deployment.Production</type>
+   </deploy>
+   <deploy>
+      <type>javax.enterprise.inject.deployment.Standard</type>
+      <type>javax.enterprise.inject.deployment.Production</type>
+   </deploy>
+</beans>

Modified: ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/deploy/user-defined-beans.xml
===================================================================
--- ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/deploy/user-defined-beans.xml	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/deploy/user-defined-beans.xml	2009-06-11 15:10:52 UTC (rev 2823)
@@ -1,8 +1,7 @@
-<Beans xmlns="urn:java:ee"
-	xmlns:test="urn:java:org.jboss.webbeans.test.unit.xml.deploy">
-	<Deploy>
-		<Standard />
-		<Production />
-		<test:AnotherDeploymentType />
-	</Deploy>
-</Beans>
\ No newline at end of file
+<beans>
+	<deploy>
+		<type>javax.enterprise.inject.deployment.Standard</type>
+		<type>javax.enterprise.inject.deployment.Production</type>
+		<type>org.jboss.webbeans.test.unit.xml.deploy.AnotherDeploymentType</type>
+	</deploy>
+</beans>
\ No newline at end of file

Deleted: ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/namespace
===================================================================
--- ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/namespace	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/namespace	2009-06-11 15:10:52 UTC (rev 2823)
@@ -1,2 +0,0 @@
-org.jboss.webbeans.test.unit.xml.beans.annotationtype
-org.jboss.webbeans.test.unit.xml.parser.schema.foo
\ No newline at end of file

Deleted: ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/schema/beans.xml
===================================================================
--- ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/schema/beans.xml	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/schema/beans.xml	2009-06-11 15:10:52 UTC (rev 2823)
@@ -1,13 +0,0 @@
-<Beans xmlns="urn:java:ee" 
-	xmlns:myapp="urn:java:org.jboss.webbeans.test.unit.xml.parser.schema"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="urn:java:org.jboss.webbeans.test.unit.xml.parser.schema.valid http://mydomain.com/myapp/schema-1.2.xsd">	
-	<myapp:Order>
-		<myapp:getVal />
-		<myapp:val />
-		<Integer />
-		<Array>
-			<String />
-		</Array>
-	</myapp:Order>
-</Beans>
\ No newline at end of file

Deleted: ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/schema/namespace
===================================================================
--- ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/schema/namespace	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/schema/namespace	2009-06-11 15:10:52 UTC (rev 2823)
@@ -1 +0,0 @@
-org.jboss.webbeans.test.unit.xml.parser.schema.foo
\ No newline at end of file

Deleted: ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/schema/not-valid-beans.xml
===================================================================
--- ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/schema/not-valid-beans.xml	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/schema/not-valid-beans.xml	2009-06-11 15:10:52 UTC (rev 2823)
@@ -1,13 +0,0 @@
-<Beans xmlns="urn:java:ee" 
-	xmlns:myapp="urn:java:org.jboss.webbeans.test.unit.xml.parser.schema"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="urn:java:org.jboss.webbeans.test.unit.xml.parser.schema.valid http://mydomain.com/myapp/schema-1.2.xsd">
-	<myapp:NotValidOrder>
-		<Array>
-			<String />
-		</Array>
-		<myapp:getVal />
-		<myapp:val />
-		<Integer />
-	</myapp:NotValidOrder>
-</Beans>
\ No newline at end of file

Deleted: ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/schema/schema.xsd
===================================================================
--- ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/schema/schema.xsd	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/schema/schema.xsd	2009-06-11 15:10:52 UTC (rev 2823)
@@ -1,10 +0,0 @@
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:java:org.jboss.webbeans.test.unit.xml.parser.schema">
-	<xs:element name="Order">
-		<xs:complexType>
-			<xs:sequence minOccurs="0" maxOccurs="unbounded">
-				<xs:any namespace="##any" processContents="skip"  />
-			</xs:sequence>
-			<xs:anyAttribute namespace="##any" processContents="skip" />
-		</xs:complexType>
-	</xs:element>
-</xs:schema>
\ No newline at end of file

Deleted: ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/schema.xsd
===================================================================
--- ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/schema.xsd	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/schema.xsd	2009-06-11 15:10:52 UTC (rev 2823)
@@ -1,10 +0,0 @@
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:java:ee">
-	<xs:element name="Beans">
-		<xs:complexType>
-			<xs:sequence minOccurs="0" maxOccurs="unbounded">
-				<xs:any namespace="##any" processContents="skip"  />
-			</xs:sequence>
-			<xs:anyAttribute namespace="##any" processContents="skip" />
-		</xs:complexType>
-	</xs:element>
-</xs:schema>
\ No newline at end of file

Deleted: ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/user-defined-beans.xml
===================================================================
--- ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/user-defined-beans.xml	2009-06-11 12:50:26 UTC (rev 2822)
+++ ri/trunk/tests/src/test/resources/org/jboss/webbeans/test/unit/xml/parser/user-defined-beans.xml	2009-06-11 15:10:52 UTC (rev 2823)
@@ -1,70 +0,0 @@
-<Beans xmlns="urn:java:ee" 
-	xmlns:myapp="urn:java:org.jboss.webbeans.test.unit.xml.parser"
-	xmlns:manager="urn:java:javax.enterprise.inject.spi"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="urn:java:org.jboss.webbeans.test.unit.xml.parser">
-	<Deploy>
-		<Standard />
-		<Production />
-		<myapp:TestDeploymentType />
-	</Deploy>
-	
-	<myapp:TestBindingType>
-		<BindingType />
-	</myapp:TestBindingType>
-	<myapp:TestInterceptorBindingType>
-		<InterceptorBindingType />
-		<myapp:AnotherTestInterceptorBindingType />
-	</myapp:TestInterceptorBindingType>
-	<myapp:TestStereotype>
-		<Stereotype />
-		<myapp:TestScopeType />
-		<myapp:TestDeploymentType />
-		<myapp:AnotherTestInterceptorBindingType />
-		<Named />
-	</myapp:TestStereotype>
-	
-	<myapp:Order>
-		<myapp:TestBindingType />
-		<myapp:TestInterceptorBindingType />
-		<myapp:TestStereotype />
-		<myapp:TestDeploymentType />
-		<myapp:getVal />
-		<myapp:val />
-		<Integer />
-		<Array>
-			<String />
-		</Array>
-		<myapp:setStrArr>
-			<Array>
-				<String />
-			</Array>
-		</myapp:setStrArr>
-	</myapp:Order>
-<!--	
-	<myapp:PaymentService>
-		<RequestScoped />
-		<myapp:TestBindingType />
-		<myapp:TestInterceptorBindingType />
-		<myapp:TestStereotype />
-		<myapp:TestDeploymentType />
-		<Resource>
-			<name>java:app/service/PaymentService</name>
-		</Resource>
-	</myapp:PaymentService>
--->
-<!--
-	<Topic>
-		<Resource>
-			<name>java:app/service/PaymentService</name>
-		</Resource>
-	</Topic>
--->		
-	<Decorators>
-		<myapp:TestDecorator />	
-	</Decorators>
-	
-	<Interceptors>
-		<myapp:TestInterceptor />
-	</Interceptors>
-</Beans>
\ No newline at end of file




More information about the weld-commits mailing list