[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