You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by yi...@apache.org on 2010/04/01 22:48:31 UTC
svn commit: r930092 - in /openwebbeans/trunk/webbeans-impl/src:
main/java/org/apache/webbeans/deployment/
main/java/org/apache/webbeans/util/ main/java/org/apache/webbeans/xml/
test/java/org/apache/webbeans/test/
test/java/org/apache/webbeans/test/unit...
Author: yingwang
Date: Thu Apr 1 20:48:31 2010
New Revision: 930092
URL: http://svn.apache.org/viewvc?rev=930092&view=rev
Log:
[OWB-310] switch to JVM DOM parser. There might be some bumps in my changes since I could not test all code path.
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/deployment/XMLStereoTypeModel.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/Asserts.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/WebBeansXMLConfigurator.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/XMLAnnotationTypeManager.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/XMLDefinitionUtil.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/XMLUtil.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/TestContext.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/xml/XMLTest.java
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/deployment/XMLStereoTypeModel.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/deployment/XMLStereoTypeModel.java?rev=930092&r1=930091&r2=930092&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/deployment/XMLStereoTypeModel.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/deployment/XMLStereoTypeModel.java Thu Apr 1 20:48:31 2010
@@ -30,7 +30,9 @@ import org.apache.webbeans.exception.def
import org.apache.webbeans.proxy.JavassistProxyFactory;
import org.apache.webbeans.util.AnnotationUtil;
import org.apache.webbeans.xml.XMLUtil;
-import org.dom4j.Element;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
@SuppressWarnings("unchecked")
public class XMLStereoTypeModel implements IStereoTypeModel
@@ -59,105 +61,105 @@ public class XMLStereoTypeModel implemen
private void configure(Element stereoTypeDecleration, String errorMessage)
{
- List<Element> childs = stereoTypeDecleration.elements();
- if (childs != null && childs.size() > 0)
+ boolean scopeTypeFound = false;
+ Node node; Element child;
+ NodeList ns = stereoTypeDecleration.getChildNodes();
+ for(int i=0; i<ns.getLength(); i++)
{
- boolean scopeTypeFound = false;
+ node = ns.item(i);
+ if (!(node instanceof Element)) continue;
+ child = (Element)node;
+ Class<?> clazz = XMLUtil.getElementJavaType(child);
+ if (clazz == null)
+ {
+ throw new NonexistentTypeException(errorMessage + "Type is not exist with class name : " + XMLUtil.getElementJavaClassName(child) + " in namespace : " + XMLUtil.getElementNameSpace(child) );
+ }
- for (Element child : childs)
+ Class<? extends Annotation> annClazz = null;
+ if (!clazz.isAnnotation())
{
- Class<?> clazz = XMLUtil.getElementJavaType(child);
- if (clazz == null)
- {
- throw new NonexistentTypeException(errorMessage + "Type is not exist with class name : " + XMLUtil.getElementJavaClassName(child) + " in namespace : " + XMLUtil.getElementNameSpace(child) );
- }
+ throw new WebBeansConfigurationException(errorMessage + "Type is not annotation type with class name : " + XMLUtil.getElementJavaClassName(child) + " in namespace : " + XMLUtil.getElementNameSpace(child));
+ }
- Class<? extends Annotation> annClazz = null;
- if (!clazz.isAnnotation())
+ annClazz = (Class<? extends Annotation>) clazz;
+ Annotation defaultAnn = JavassistProxyFactory.createNewAnnotationProxy(annClazz);
+
+ if (clazz.isAnnotationPresent(NormalScope.class) || clazz.isAnnotationPresent(Scope.class))
+ {
+ if (scopeTypeFound)
{
- throw new WebBeansConfigurationException(errorMessage + "Type is not annotation type with class name : " + XMLUtil.getElementJavaClassName(child) + " in namespace : " + XMLUtil.getElementNameSpace(child));
+ throw new WebBeansConfigurationException(errorMessage + "@StereoType annotation can not contain more than one @Scope/@NormalScope annotation");
}
- annClazz = (Class<? extends Annotation>) clazz;
- Annotation defaultAnn = JavassistProxyFactory.createNewAnnotationProxy(annClazz);
-
- if (clazz.isAnnotationPresent(NormalScope.class) || clazz.isAnnotationPresent(Scope.class))
- {
- if (scopeTypeFound)
- {
- throw new WebBeansConfigurationException(errorMessage + "@StereoType annotation can not contain more than one @Scope/@NormalScope annotation");
- }
+ defaultScopeType = defaultAnn;
+ scopeTypeFound = true;
+ }
+ else if (AnnotationUtil.isInterceptorBindingAnnotation(annClazz))
+ {
+ Target target = clazz.getAnnotation(Target.class);
+ ElementType[] type = target.value();
- defaultScopeType = defaultAnn;
- scopeTypeFound = true;
- }
- else if (AnnotationUtil.isInterceptorBindingAnnotation(annClazz))
+ if (type.length != 1 && !type[0].equals(ElementType.TYPE))
{
- Target target = clazz.getAnnotation(Target.class);
- ElementType[] type = target.value();
-
- if (type.length != 1 && !type[0].equals(ElementType.TYPE))
- {
- throw new WebBeansConfigurationException(errorMessage + "Stereotype with @InterceptorBinding must be defined as @Target{TYPE}");
- }
-
- interceptorBindingTypes.add(XMLUtil.getXMLDefinedAnnotationMember(child, annClazz, errorMessage));
+ throw new WebBeansConfigurationException(errorMessage + "Stereotype with @InterceptorBinding must be defined as @Target{TYPE}");
}
- else if (clazz.equals(Named.class))
- {
- defaultName = defaultAnn;
- Named name = (Named) defaultName;
- if (!name.value().equals(""))
- {
- throw new WebBeansConfigurationException(errorMessage + "@StereoType annotation can not define @Named annotation with value");
- }
- }
- else if (AnnotationUtil.isQualifierAnnotation(annClazz))
+
+ interceptorBindingTypes.add(XMLUtil.getXMLDefinedAnnotationMember(child, annClazz, errorMessage));
+ }
+ else if (clazz.equals(Named.class))
+ {
+ defaultName = defaultAnn;
+ Named name = (Named) defaultName;
+ if (!name.value().equals(""))
{
- throw new WebBeansConfigurationException(errorMessage + "@StereoType annotation can not define @Qualifier annotation");
+ throw new WebBeansConfigurationException(errorMessage + "@StereoType annotation can not define @Named annotation with value");
}
+ }
+ else if (AnnotationUtil.isQualifierAnnotation(annClazz))
+ {
+ throw new WebBeansConfigurationException(errorMessage + "@StereoType annotation can not define @Qualifier annotation");
+ }
- else if (AnnotationUtil.isStereoTypeAnnotation(annClazz))
- {
- Target innerStereo = clazz.getAnnotation(Target.class);
- Class<?> outerStereoClass = XMLUtil.getElementJavaType(stereoTypeDecleration);
- Target outerStereo = outerStereoClass.getAnnotation(Target.class);
+ else if (AnnotationUtil.isStereoTypeAnnotation(annClazz))
+ {
+ Target innerStereo = clazz.getAnnotation(Target.class);
+ Class<?> outerStereoClass = XMLUtil.getElementJavaType(stereoTypeDecleration);
+ Target outerStereo = outerStereoClass.getAnnotation(Target.class);
- ElementType[] innerValues = innerStereo.value();
- ElementType[] outerValues = outerStereo.value();
+ ElementType[] innerValues = innerStereo.value();
+ ElementType[] outerValues = outerStereo.value();
- for (ElementType innerValue : innerValues)
+ for (ElementType innerValue : innerValues)
+ {
+ if (innerValue.equals(ElementType.METHOD) || innerValue.equals(ElementType.FIELD))
{
- if (innerValue.equals(ElementType.METHOD) || innerValue.equals(ElementType.FIELD))
+ for (ElementType outerValue : outerValues)
{
- for (ElementType outerValue : outerValues)
+ if (outerValue.equals(ElementType.TYPE))
{
- if (outerValue.equals(ElementType.TYPE))
- {
- throw new WebBeansConfigurationException(errorMessage + "Inherited StereoType with class name : " + clazz.getName() + " must have compatible @Target annotation with Stereotype class name : " + outerStereoClass.getName());
- }
+ throw new WebBeansConfigurationException(errorMessage + "Inherited StereoType with class name : " + clazz.getName() + " must have compatible @Target annotation with Stereotype class name : " + outerStereoClass.getName());
}
}
- else if (innerValue.equals(ElementType.TYPE))
+ }
+ else if (innerValue.equals(ElementType.TYPE))
+ {
+ for (ElementType outerValue : outerValues)
{
- for (ElementType outerValue : outerValues)
+ if (outerValue.equals(ElementType.METHOD) || outerValue.equals(ElementType.FIELD))
{
- if (outerValue.equals(ElementType.METHOD) || outerValue.equals(ElementType.FIELD))
- {
- throw new WebBeansConfigurationException(errorMessage + "Inherited StereoType with class name : " + clazz.getName() + " must have compatible @Target annotation with Stereotype class name : " + outerStereoClass.getName());
- }
+ throw new WebBeansConfigurationException(errorMessage + "Inherited StereoType with class name : " + clazz.getName() + " must have compatible @Target annotation with Stereotype class name : " + outerStereoClass.getName());
}
}
}
+ }
- this.inherits.add(defaultAnn);
+ this.inherits.add(defaultAnn);
- }
+ }
- else
- {
- throw new WebBeansConfigurationException(errorMessage + "Type with class name : " + XMLUtil.getElementJavaClassName(child) + " is not applicable for stereotype");
- }
+ else
+ {
+ throw new WebBeansConfigurationException(errorMessage + "Type with class name : " + XMLUtil.getElementJavaClassName(child) + " is not applicable for stereotype");
}
}
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/Asserts.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/Asserts.java?rev=930092&r1=930091&r2=930092&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/Asserts.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/Asserts.java Thu Apr 1 20:48:31 2010
@@ -14,8 +14,7 @@
package org.apache.webbeans.util;
import java.lang.reflect.Method;
-
-import org.dom4j.Element;
+import org.w3c.dom.Element;
/**
* Simple utility classes with some assertions methods.
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/WebBeansXMLConfigurator.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/WebBeansXMLConfigurator.java?rev=930092&r1=930091&r2=930092&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/WebBeansXMLConfigurator.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/WebBeansXMLConfigurator.java Thu Apr 1 20:48:31 2010
@@ -42,6 +42,7 @@ import javax.enterprise.inject.Produces;
import javax.inject.Inject;
import javax.inject.Scope;
import javax.interceptor.Interceptor;
+import javax.lang.model.util.Elements;
import org.apache.webbeans.WebBeansConstants;
import org.apache.webbeans.annotation.DefaultLiteral;
@@ -79,7 +80,10 @@ import org.apache.webbeans.util.Annotati
import org.apache.webbeans.util.Asserts;
import org.apache.webbeans.util.ClassUtil;
import org.apache.webbeans.util.WebBeansUtil;
-import org.dom4j.Element;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Text;
/**
* Configures the web beans from the xml declerations.
@@ -236,13 +240,14 @@ public final class WebBeansXMLConfigurat
private void configureOwbSpecific(Element webBeansRoot)
{
List<Element> webBeanDeclerationList = new ArrayList<Element>();
- List<Element> childs = webBeansRoot.elements();
- Iterator<Element> it = childs.iterator();
- Element child = null;
- while (it.hasNext())
- {
- child = it.next();
+ Node node; Element child;
+ NodeList ns = webBeansRoot.getChildNodes();
+ for(int i=0; i<ns.getLength(); i++)
+ {
+ node = ns.item(i);
+ if (!(node instanceof Element)) continue;
+ child = (Element)node;
/* WebBean element decleration */
if (XMLUtil.isElementWebBeanDeclaration(child))
@@ -300,13 +305,13 @@ public final class WebBeansXMLConfigurat
*/
private void configureSpecSpecific(Element webBeansRoot)
{
- List<Element> childs = webBeansRoot.elements();
- Iterator<Element> it = childs.iterator();
-
- Element child = null;
- while (it.hasNext())
- {
- child = it.next();
+ Node node; Element child;
+ NodeList ns = webBeansRoot.getChildNodes();
+ for(int i=0; i<ns.getLength(); i++)
+ {
+ node = ns.item(i);
+ if (!(node instanceof Element)) continue;
+ child = (Element)node;
/* <Interceptors> element decleration */
if (XMLUtil.getName(child).equals(WebBeansConstants.WEB_BEANS_XML_SPEC_SPECIFIC_INTERCEPTORS_ELEMENT))
@@ -364,13 +369,13 @@ public final class WebBeansXMLConfigurat
Class<?> clazz = XMLUtil.getElementJavaType(bindingTypeElement);
if (clazz == null)
{
- throw new NonexistentTypeException(createConfigurationFailedMessage() + "Binding type with given class : " + bindingTypeElement.getName() + " not found");
+ throw new NonexistentTypeException(createConfigurationFailedMessage() + "Binding type with given class : " + bindingTypeElement.getLocalName() + " not found");
}
Class<? extends Annotation> clazzAnnot = null;
if (!clazz.isAnnotation())
{
- throw new WebBeansConfigurationException(createConfigurationFailedMessage() + "Binding type with given class : " + bindingTypeElement.getName() + " is not an annotation type");
+ throw new WebBeansConfigurationException(createConfigurationFailedMessage() + "Binding type with given class : " + bindingTypeElement.getLocalName() + " is not an annotation type");
}
else
{
@@ -379,7 +384,7 @@ public final class WebBeansXMLConfigurat
if (xmlAnnotTypeManager.hasBindingType(clazzAnnot))
{
- throw new DeploymentException(createConfigurationFailedMessage() + "Binding type with given class : " + bindingTypeElement.getName() + " is already defined in the XML");
+ throw new DeploymentException(createConfigurationFailedMessage() + "Binding type with given class : " + bindingTypeElement.getLocalName() + " is already defined in the XML");
}
xmlAnnotTypeManager.addBindingType(clazzAnnot);
@@ -395,13 +400,13 @@ public final class WebBeansXMLConfigurat
Class<?> clazz = XMLUtil.getElementJavaType(interceptorBindingTypeElement);
if (clazz == null)
{
- throw new NonexistentTypeException(createConfigurationFailedMessage() + "InterceptorBinding type with given class : " + interceptorBindingTypeElement.getName() + " not found");
+ throw new NonexistentTypeException(createConfigurationFailedMessage() + "InterceptorBinding type with given class : " + interceptorBindingTypeElement.getLocalName() + " not found");
}
Class<? extends Annotation> clazzAnnot = null;
if (!clazz.isAnnotation())
{
- throw new WebBeansConfigurationException(createConfigurationFailedMessage() + "InterceptorBinding type with given class : " + interceptorBindingTypeElement.getName() + " is not an annotation type");
+ throw new WebBeansConfigurationException(createConfigurationFailedMessage() + "InterceptorBinding type with given class : " + interceptorBindingTypeElement.getLocalName() + " is not an annotation type");
}
else
{
@@ -410,12 +415,16 @@ public final class WebBeansXMLConfigurat
if (xmlAnnotTypeManager.hasInterceptorBindingType(clazzAnnot))
{
- throw new DeploymentException(createConfigurationFailedMessage() + "InterceptorBinding type with given class : " + interceptorBindingTypeElement.getName() + " is already defined in the XML");
+ throw new DeploymentException(createConfigurationFailedMessage() + "InterceptorBinding type with given class : " + interceptorBindingTypeElement.getLocalName() + " is already defined in the XML");
}
- List<Element> childs = interceptorBindingTypeElement.elements();
- for (Element child : childs)
+ Node node; Element child;
+ NodeList ns = interceptorBindingTypeElement.getChildNodes();
+ for(int i=0; i<ns.getLength(); i++)
{
+ node = ns.item(i);
+ if (!(node instanceof Element)) continue;
+ child = (Element)node;
Class<?> clz = XMLUtil.getElementJavaType(child);
if (clz == null)
{
@@ -443,13 +452,13 @@ public final class WebBeansXMLConfigurat
Class<?> clazz = XMLUtil.getElementJavaType(stereoTypeElement);
if (clazz == null)
{
- throw new NonexistentTypeException(createConfigurationFailedMessage() + "Stereotype with given class : " + stereoTypeElement.getName() + " not found");
+ throw new NonexistentTypeException(createConfigurationFailedMessage() + "Stereotype with given class : " + stereoTypeElement.getLocalName() + " not found");
}
Class<? extends Annotation> clazzAnnot = null;
if (!clazz.isAnnotation())
{
- throw new WebBeansConfigurationException(createConfigurationFailedMessage() + "Stereotype with given class : " + stereoTypeElement.getName() + " is not an annotation type");
+ throw new WebBeansConfigurationException(createConfigurationFailedMessage() + "Stereotype with given class : " + stereoTypeElement.getLocalName() + " is not an annotation type");
}
else
{
@@ -458,7 +467,7 @@ public final class WebBeansXMLConfigurat
if (xmlAnnotTypeManager.hasStereoType(clazzAnnot))
{
- throw new DeploymentException(createConfigurationFailedMessage() + "Stereotype with given class : " + stereoTypeElement.getName() + " is already defined in the XML");
+ throw new DeploymentException(createConfigurationFailedMessage() + "Stereotype with given class : " + stereoTypeElement.getLocalName() + " is already defined in the XML");
}
xmlAnnotTypeManager.addStereoType(clazzAnnot, stereoTypeElement, clazzAnnot.getName(), createConfigurationFailedMessage());
@@ -472,13 +481,14 @@ public final class WebBeansXMLConfigurat
*/
private void configureInterceptorsElement(Element interceptorsElement)
{
- List<Element> childs = interceptorsElement.elements();
- Iterator<Element> itChilds = childs.iterator();
-
- InterceptorsManager manager = InterceptorsManager.getInstance();
- while (itChilds.hasNext())
- {
- Element child = itChilds.next();
+ InterceptorsManager manager = InterceptorsManager.getInstance();
+ Node node; Element child;
+ NodeList ns = interceptorsElement.getChildNodes();
+ for(int i=0; i<ns.getLength(); i++)
+ {
+ node = ns.item(i);
+ if (!(node instanceof Element)) continue;
+ child = (Element)node;
Class<?> clazz = null;
if(this.owbSpecificConfiguration)
@@ -487,13 +497,13 @@ public final class WebBeansXMLConfigurat
}
else
{
- clazz = ClassUtil.getClassFromName(child.getTextTrim());
+ clazz = ClassUtil.getClassFromName(child.getTextContent().trim());
}
if (clazz == null)
{
throw new WebBeansConfigurationException(createConfigurationFailedMessage() + "Interceptor class : " +
- (this.owbSpecificConfiguration ? XMLUtil.getName(child) : child.getTextTrim()) + " not found");
+ (this.owbSpecificConfiguration ? XMLUtil.getName(child) : child.getTextContent().trim()) + " not found");
}
else
{
@@ -501,13 +511,13 @@ public final class WebBeansXMLConfigurat
!AnnotationUtil.hasInterceptorBindingMetaAnnotation(clazz.getDeclaredAnnotations()))
{
throw new WebBeansConfigurationException(createConfigurationFailedMessage() + "Interceptor class : " +
- (this.owbSpecificConfiguration ? XMLUtil.getName(child) : child.getTextTrim()) + " must have at least one @InterceptorBindingType");
+ (this.owbSpecificConfiguration ? XMLUtil.getName(child) : child.getTextContent().trim()) + " must have at least one @InterceptorBindingType");
}
if (manager.isInterceptorEnabled(clazz))
{
throw new WebBeansConfigurationException(createConfigurationFailedMessage() + "Interceptor class : " +
- (this.owbSpecificConfiguration ? XMLUtil.getName(child) : child.getTextTrim()) + " is already defined");
+ (this.owbSpecificConfiguration ? XMLUtil.getName(child) : child.getTextContent().trim()) + " is already defined");
}
manager.addNewInterceptor(clazz);
@@ -524,13 +534,14 @@ public final class WebBeansXMLConfigurat
*/
private void configureDecoratorsElement(Element decoratorsElement)
{
- List<Element> childs = decoratorsElement.elements();
- Iterator<Element> itChilds = childs.iterator();
-
DecoratorsManager manager = DecoratorsManager.getInstance();
- while (itChilds.hasNext())
- {
- Element child = itChilds.next();
+ Node node; Element child;
+ NodeList ns = decoratorsElement.getChildNodes();
+ for(int i=0; i<ns.getLength(); i++)
+ {
+ node = ns.item(i);
+ if (!(node instanceof Element)) continue;
+ child = (Element)node;
Class<?> clazz = null;
if(this.owbSpecificConfiguration)
@@ -539,13 +550,13 @@ public final class WebBeansXMLConfigurat
}
else
{
- clazz = ClassUtil.getClassFromName(child.getTextTrim());
+ clazz = ClassUtil.getClassFromName(child.getTextContent().trim());
}
if (clazz == null)
{
throw new WebBeansConfigurationException(createConfigurationFailedMessage() + "Decorator class : " +
- (this.owbSpecificConfiguration ? XMLUtil.getName(child) : child.getTextTrim()) + " not found");
+ (this.owbSpecificConfiguration ? XMLUtil.getName(child) : child.getTextContent().trim()) + " not found");
}
else
{
@@ -553,7 +564,7 @@ public final class WebBeansXMLConfigurat
if (manager.isDecoratorEnabled(clazz))
{
throw new WebBeansConfigurationException(createConfigurationFailedMessage() + "Decorator class : " +
- (this.owbSpecificConfiguration ? XMLUtil.getName(child) : child.getTextTrim()) + " is already defined");
+ (this.owbSpecificConfiguration ? XMLUtil.getName(child) : child.getTextContent().trim()) + " is already defined");
}
manager.addNewDecorator(clazz);
@@ -570,12 +581,13 @@ public final class WebBeansXMLConfigurat
*/
private void configureAlternativesElement(Element alternativesElement)
{
- List<Element> childs = alternativesElement.elements();
- Iterator<Element> itChilds = childs.iterator();
-
- while (itChilds.hasNext())
- {
- Element child = itChilds.next();
+ Node node; Element child;
+ NodeList ns = alternativesElement.getChildNodes();
+ for(int i=0; i<ns.getLength(); i++)
+ {
+ node = ns.item(i);
+ if (!(node instanceof Element)) continue;
+ child = (Element)node;
if(XMLUtil.getName(child).equals(WebBeansConstants.WEB_BEANS_XML_SPEC_SPECIFIC_STEREOTYPE) ||
XMLUtil.getName(child).equals(WebBeansConstants.WEB_BEANS_XML_OWB_SPECIFIC_STEREOTYPE))
@@ -604,7 +616,7 @@ public final class WebBeansXMLConfigurat
}
else
{
- clazz = ClassUtil.getClassFromName(child.getTextTrim());
+ clazz = ClassUtil.getClassFromName(child.getTextContent().trim());
}
if (clazz == null)
@@ -719,11 +731,6 @@ public final class WebBeansXMLConfigurat
*/
private <T> void configureWebBeanDeclerationChilds(XMLManagedBean<T> component, Element webBeanDecleration)
{
- List<Element> childs = webBeanDecleration.elements();
- Iterator<Element> it = childs.iterator();
-
- Element child = null;
-
/* Constructor api type list */
List<Class<?>> constTypeList = new ArrayList<Class<?>>();
@@ -738,9 +745,16 @@ public final class WebBeansXMLConfigurat
boolean isConstructor = false;
String fieldOrMethodName = null;
- while (it.hasNext())
- {
- child = it.next();
+
+ Node node; Element child;
+ NodeList ns = webBeanDecleration.getChildNodes();
+
+ for(int i=0; i<ns.getLength(); i++)
+ {
+ node = ns.item(i);
+ if (!(node instanceof Element)) continue;
+ child = (Element)node;
+
Class<?> type = XMLUtil.getElementJavaType(child);
boolean isElementApplicable = false;
@@ -1034,6 +1048,17 @@ public final class WebBeansXMLConfigurat
}
}
+ private boolean hasTextOnlyChild(Element element)
+ {
+ NodeList ns = element.getChildNodes();
+ for(int i=0; i<ns.getLength(); i++)
+ {
+ if (ns.item(i) instanceof Text) continue;
+ return false;
+ }
+ return true;
+ }
+
/**
* Configures the given child element as field of the webbeans component.
*
@@ -1060,7 +1085,7 @@ public final class WebBeansXMLConfigurat
boolean isValueElement = false;
boolean isApplicable = false;
- if (child.isTextOnly())
+ if (hasTextOnlyChild(child))
{
if (!isValueElement)
{
@@ -1069,15 +1094,19 @@ public final class WebBeansXMLConfigurat
}
}
- List<Element> directChilds = child.elements();
- Iterator<Element> itChilds = directChilds.iterator();
-
boolean isTypeElement = false;
// it has some other elements
- while (itChilds.hasNext())
- {
- Element directChild = itChilds.next();
+ int childElementNumber = 0;
+ Node node;
+ Element directChild = null;
+ NodeList directChilds = child.getChildNodes();
+ for(int i=0; i<directChilds.getLength(); i++)
+ {
+ node = directChilds.item(i);
+ if (!(node instanceof Element)) continue;
+ directChild = (Element)node;
+ childElementNumber++;
if (XMLUtil.isElementInWebBeansNameSpaceWithName(directChild, WebBeansConstants.WEB_BEANS_XML_VALUE_ELEMENT))
{
if (!isValueElement)
@@ -1120,7 +1149,7 @@ public final class WebBeansXMLConfigurat
throw new WebBeansConfigurationException(createConfigurationFailedMessage() + "Field with name : " + fieldName + " element is not correctly defined");
}
- if (directChilds.size() > 1)
+ if (childElementNumber > 1)
{
if (!isValueElement)
{
@@ -1136,8 +1165,10 @@ public final class WebBeansXMLConfigurat
}
// configure field values if available.
- configureFieldValues(component, field, child, isValueElement);
-
+ if (directChild != null)
+ configureFieldValues(component, field, directChild, isValueElement);
+ else
+ configureFieldValues(component, field, child, isValueElement);
}
/**
@@ -1157,9 +1188,6 @@ public final class WebBeansXMLConfigurat
throw new NonexistentMethodException(createConfigurationFailedMessage() + "Method declaration with name " + XMLUtil.getName(child) + " is not found in the class : " + component.getReturnType().getName());
}
- List<Element> methodChilds = child.elements();
- Iterator<Element> itMethodChilds = methodChilds.iterator();
-
boolean isDefineType = false;
/*
@@ -1175,11 +1203,14 @@ public final class WebBeansXMLConfigurat
/* Method parameter xml elements */
List<Element> methodParameterElements = new ArrayList<Element>();
+ Node node;
Element methodChild = null;
-
- while (itMethodChilds.hasNext())
+ NodeList mns = child.getChildNodes();
+ for(int j=0; j<mns.getLength(); j++)
{
- methodChild = itMethodChilds.next();
+ node = mns.item(j);
+ if (!(node instanceof Element)) continue;
+ methodChild = (Element)node;
Class<?> childClazz = XMLUtil.getElementJavaType(methodChild);
final String moreThanOneChildTypeErrorMesg = createConfigurationFailedMessage() + XMLUtil.getName(methodChild) + "method declaration can not contain more than one <Initializer>, <Destructor>, <Produces>, <Disposes> or <Observes> element";
@@ -1392,15 +1423,16 @@ public final class WebBeansXMLConfigurat
*/
private <T> void checkConfigureDisposes(AbstractOwbBean<T> component, Element disposes)
{
- List<Element> disposesChilds = disposes.elements();
+ NodeList disposesChilds = disposes.getChildNodes();
- if (disposesChilds.size() != 1)
+ if (disposesChilds.getLength()!= 1)
{
throw new WebBeansConfigurationException(createConfigurationFailedMessage() + "Disposes element : " + XMLUtil.getName(disposes) + " can not contain more than one direct child elements");
}
}
+
/**
* Configures the observer method of the webbeans component
*
@@ -1414,9 +1446,13 @@ public final class WebBeansXMLConfigurat
*/
private <T> void checkConfigureObserves(AbstractOwbBean<T> component, Element observes)
{
- List<Element> observesChilds = observes.elements();
-
- if (observesChilds.size() != 1)
+ int childElementCount = 0;
+ NodeList observesChilds = observes.getChildNodes();
+ for(int i=0; i<observesChilds.getLength(); i++)
+ {
+ if (observesChilds.item(i) instanceof Element) childElementCount++;
+ }
+ if (childElementCount != 1)
{
throw new WebBeansConfigurationException(createConfigurationFailedMessage() + "Observes element : " + XMLUtil.getName(observes) + " can not contain more than one direct child elements");
}
@@ -1511,8 +1547,8 @@ public final class WebBeansXMLConfigurat
boolean isDefined = XMLDefinitionUtil.defineXMLName(component, annotationSet);
if (isDefined)
{
- Element element = webBeanDecleration.element(WebBeansConstants.WEB_BEANS_XML_NAMED_ELEMENT);
- String name = element.getTextTrim();
+ Element element = (Element)webBeanDecleration.getElementsByTagName(WebBeansConstants.WEB_BEANS_XML_NAMED_ELEMENT).item(0);
+ String name = element.getTextContent().trim();
if (name != null && !name.equals(""))
{
@@ -1580,16 +1616,15 @@ public final class WebBeansXMLConfigurat
*/
private void configureJMSEndpointComponent(Element webBeanElement)
{
- List<Element> childs = webBeanElement.elements();
- Element resource = webBeanElement.element(WebBeansConstants.WEB_BEANS_XML_JMS_RESOURCE);
+ Element resource = (Element)webBeanElement.getElementsByTagName(WebBeansConstants.WEB_BEANS_XML_JMS_RESOURCE).item(0);
if(resource == null)
{
throw new WebBeansConfigurationException("Topic or Queue resource mut be defined in the XML");
}
- Element name = resource.element(WebBeansConstants.WEB_BEANS_XML_JMS_RESOURCE_NAME);
- Element mappedName = resource.element(WebBeansConstants.WEB_BEANS_XML_JMS_RESOURCE_MAPPED_NAME);
+ Element name = (Element)resource.getElementsByTagName(WebBeansConstants.WEB_BEANS_XML_JMS_RESOURCE_NAME).item(0);
+ Element mappedName = (Element)resource.getElementsByTagName(WebBeansConstants.WEB_BEANS_XML_JMS_RESOURCE_MAPPED_NAME).item(0);
if(name== null && mappedName == null)
{
@@ -1597,9 +1632,14 @@ public final class WebBeansXMLConfigurat
}
List<Annotation> bindingTypes = new ArrayList<Annotation>();
- for(Element child : childs)
- {
- if(child.getName() != WebBeansConstants.WEB_BEANS_XML_JMS_RESOURCE)
+ Node node; Element child;
+ NodeList ns = webBeanElement.getChildNodes();
+ for(int i=0; i<ns.getLength(); i++)
+ {
+ node = ns.item(i);
+ if (!(node instanceof Element)) continue;
+ child = (Element)node;
+ if(child.getLocalName() != WebBeansConstants.WEB_BEANS_XML_JMS_RESOURCE)
{
Class<? extends Annotation> binding = (Class<Annotation>)XMLUtil.getElementJavaType(child);
@@ -1612,7 +1652,7 @@ public final class WebBeansXMLConfigurat
JMSType type = null;
- if(webBeanElement.getName().equals(WebBeansConstants.WEB_BEANS_XML_TOPIC_ELEMENT))
+ if(webBeanElement.getLocalName().equals(WebBeansConstants.WEB_BEANS_XML_TOPIC_ELEMENT))
{
type = JMSType.TOPIC;
}
@@ -1622,8 +1662,8 @@ public final class WebBeansXMLConfigurat
}
- String jndiName = name == null ? null : name.getTextTrim();
- String mapName = mappedName== null ? null : mappedName.getTextTrim();
+ String jndiName = name == null ? null : name.getTextContent().trim();
+ String mapName = mappedName== null ? null : mappedName.getTextContent().trim();
JMSModel model = new JMSModel(type,jndiName,mapName);
@@ -1656,7 +1696,7 @@ public final class WebBeansXMLConfigurat
/* Field type */
Class<?> fieldType = field.getType();
- String value = child.getTextTrim();
+ String value = child.getTextContent().trim();
try
{
@@ -1849,10 +1889,14 @@ public final class WebBeansXMLConfigurat
throw new WebBeansConfigurationException(createConfigurationFailedMessage() + "List field type with field name : " + field.getName() + " must be declared as ParametrizedType");
}
- List<Element> valueElements = child.elements();
- for (Element valueElement : valueElements)
- {
- String value = valueElement.getTextTrim();
+ Node valueNode;Text valueElement;
+ NodeList valueElements = child.getChildNodes();
+ for(int i=0; i<valueElements.getLength(); i++)
+ {
+ valueNode = valueElements.item(i);
+ if (!(valueNode instanceof Text)) continue;
+ valueElement = (Text)valueNode;
+ String value = valueElement.getTextContent().trim();
if (isString)
{
list.add(value);
@@ -1944,10 +1988,14 @@ public final class WebBeansXMLConfigurat
throw new WebBeansConfigurationException(createConfigurationFailedMessage() + "Set field type with field name : " + field.getName() + " must be declared as ParametrizedType");
}
- List<Element> valueElements = child.elements();
- for (Element valueElement : valueElements)
- {
- String value = valueElement.getTextTrim();
+ Node valueNode;Element valueElement;
+ NodeList valueElements = child.getChildNodes();
+ for(int i=0; i<valueElements.getLength(); i++)
+ {
+ valueNode = valueElements.item(i);
+ if (!(valueNode instanceof Element)) continue;
+ valueElement = (Element)valueNode;
+ String value = valueElement.getTextContent().trim();
if (isString)
{
set.add(value);
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/XMLAnnotationTypeManager.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/XMLAnnotationTypeManager.java?rev=930092&r1=930091&r2=930092&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/XMLAnnotationTypeManager.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/XMLAnnotationTypeManager.java Thu Apr 1 20:48:31 2010
@@ -25,7 +25,7 @@ import org.apache.webbeans.config.WebBea
import org.apache.webbeans.deployment.StereoTypeManager;
import org.apache.webbeans.deployment.XMLStereoTypeModel;
import org.apache.webbeans.util.WebBeansUtil;
-import org.dom4j.Element;
+import org.w3c.dom.Element;
public class XMLAnnotationTypeManager
{
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/XMLDefinitionUtil.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/XMLDefinitionUtil.java?rev=930092&r1=930091&r2=930092&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/XMLDefinitionUtil.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/XMLDefinitionUtil.java Thu Apr 1 20:48:31 2010
@@ -61,7 +61,9 @@ import org.apache.webbeans.util.Annotati
import org.apache.webbeans.util.Asserts;
import org.apache.webbeans.util.ClassUtil;
import org.apache.webbeans.util.WebBeansUtil;
-import org.dom4j.Element;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
@SuppressWarnings("unchecked")
public final class XMLDefinitionUtil
@@ -265,11 +267,16 @@ public final class XMLDefinitionUtil
public static <T> void defineXMLMethodLevelInterceptorType(XMLManagedBean<T> component, Method interceptorMethod, Element interceptorMethodElement, String errorMessage)
{
- List<Element> bindingTypes = interceptorMethodElement.elements();
Set<Annotation> bindingTypesSet = new HashSet<Annotation>();
- for (Element bindingType : bindingTypes)
- {
- Class<? extends Annotation> annot = (Class<? extends Annotation>) XMLUtil.getElementJavaType(bindingType);
+ Node node; Element bindingType;
+ NodeList ns = interceptorMethodElement.getChildNodes();
+ for(int i=0; i<ns.getLength(); i++)
+ {
+ node = ns.item(i);
+ if (!(node instanceof Element)) continue;
+ bindingType = (Element)node;
+
+ Class<? extends Annotation> annot = (Class<? extends Annotation>) XMLUtil.getElementJavaType(bindingType);
Annotation bindingAnnot = XMLUtil.getXMLDefinedAnnotationMember(bindingType, annot, errorMessage);
bindingTypesSet.add(bindingAnnot);
@@ -405,19 +412,24 @@ public final class XMLDefinitionUtil
if (found)
{
- List<Element> childs = decoratorDecleration.elements();
- for (Element child : childs)
+ Node node; Element child;
+ NodeList ns = decoratorDecleration.getChildNodes();
+
+ for(int i=0; i<ns.getLength(); i++)
{
+ node = ns.item(i);
+ if (!(node instanceof Element)) continue;
+ child = (Element)node;
if (XMLUtil.getElementNameSpace(child).equals(XMLUtil.getElementNameSpace(decoratorDecleration)) && XMLUtil.isElementHasDecoratesChild(child))
{
- Field field = ClassUtil.getFieldWithName(component.getReturnType(), child.getName());
+ Field field = ClassUtil.getFieldWithName(component.getReturnType(), child.getLocalName());
if (field == null)
{
- throw new NonexistentFieldException(errorMessage + "Field with name : " + child.getName() + " not found in the decorator class : " + component.getReturnType().getName());
+ throw new NonexistentFieldException(errorMessage + "Field with name : " + child.getLocalName() + " not found in the decorator class : " + component.getReturnType().getName());
}
-
- Element decorates = child.element(WebBeansConstants.WEB_BEANS_XML_DECORATES_ELEMENT);
- Element type = (Element) decorates.elements().get(0);
+ Element type;
+ NodeList ns1 = child.getElementsByTagName(WebBeansConstants.WEB_BEANS_XML_DECORATES_ELEMENT);
+ type = (Element)ns1.item(0);
Class<?> apType = XMLUtil.getElementJavaType(type);
@@ -451,7 +463,6 @@ public final class XMLDefinitionUtil
public static <T> XMLProducerBean<T> defineXMLProducerMethod(WebBeansXMLConfigurator configurator, XMLManagedBean<T> component, Method producesMethod, Element producerMethodElement, String errorMessage)
{
boolean producesDefined = false;
- List<Element> childElements = producerMethodElement.elements();
Class<T> type = null;
Element typeElement = null;
Element arrayElement = null;
@@ -459,8 +470,13 @@ public final class XMLDefinitionUtil
List<Element> memberLevelElement = new ArrayList<Element>();
List<XMLInjectionPointModel> injectedParameters = new ArrayList<XMLInjectionPointModel>();
- for (Element childElement : childElements)
- {
+ Node node; Element childElement;
+ NodeList ns = producerMethodElement.getChildNodes();
+ for(int i=0; i<ns.getLength(); i++)
+ {
+ node = ns.item(i);
+ if (!(node instanceof Element)) continue;
+ childElement = (Element)node;
if (XMLUtil.isElementInWebBeansNameSpaceWithName(childElement, WebBeansConstants.WEB_BEANS_XML_PRODUCES_ELEMENT))
{
if (producesDefined == false)
@@ -472,12 +488,16 @@ public final class XMLDefinitionUtil
throw new WebBeansConfigurationException(errorMessage + "More than one <Produces> element is defined");
}
- List<Element> producesElementChilds = childElement.elements();
boolean definedType = false;
- for (Element producesElementChild : producesElementChilds)
- {
- if (producesElementChild.getName().equals(WebBeansConstants.WEB_BEANS_XML_ARRAY_ELEMENT))
+ Node producerNode; Element producesElementChild;
+ NodeList nsProducer = childElement.getChildNodes();
+ for(int j=0; j<nsProducer.getLength(); j++)
+ {
+ producerNode = nsProducer.item(j);
+ if (!(producerNode instanceof Element)) continue;
+ producesElementChild= (Element)producerNode;
+ if (producesElementChild.getLocalName().equals(WebBeansConstants.WEB_BEANS_XML_ARRAY_ELEMENT))
{
arrayElement = producesElementChild;
definedType = true;
@@ -638,8 +658,6 @@ public final class XMLDefinitionUtil
*/
public static <T> void defineXMLDisposalMethod(XMLManagedBean<T> component, Method disposalMethod, Element disposalMethodElement, String errorMessage)
{
- /* Disposal method element childs */
- List<Element> disposalChildElements = disposalMethodElement.elements();
/* Multiple <Disposes> element control parameter */
boolean disposalDefined = false;
@@ -649,8 +667,14 @@ public final class XMLDefinitionUtil
XMLProducerBean<?> producerComponent = null;
- for (Element childElement : disposalChildElements)
- {
+ /* Disposal method element childs */
+ Node node; Element childElement;
+ NodeList ns = disposalMethodElement.getChildNodes();
+ for(int i=0; i<ns.getLength(); i++)
+ {
+ node = ns.item(i);
+ if (!(node instanceof Element)) continue;
+ childElement = (Element)node;
if (XMLUtil.isElementInWebBeansNameSpaceWithName(childElement, WebBeansConstants.WEB_BEANS_XML_DISPOSES_ELEMENT))
{
if (disposalDefined == false)
@@ -662,7 +686,8 @@ public final class XMLDefinitionUtil
throw new WebBeansConfigurationException(errorMessage + "More than one <Disposal> element is defined for defining disposal method : " + disposalMethod.getName());
}
- Element typeElement = (Element) childElement.elements().get(0);
+ //TODO: verify the first node is element.
+ Element typeElement = (Element) childElement.getChildNodes().item(0);
/* Find disposal method model */
XMLInjectionPointModel model = XMLUtil.getInjectionPointModel(typeElement, errorMessage);
@@ -707,8 +732,6 @@ public final class XMLDefinitionUtil
{
component.addObservableMethod(observesMethod);
- /* Observes method element childs */
- List<Element> observesChildElements = observesMethodElement.elements();
/* Other parameter elements other than @Observes */
List<Element> otherParameterElements = new ArrayList<Element>();
@@ -717,11 +740,19 @@ public final class XMLDefinitionUtil
Class<K> eventType = null;
- for (Element childElement : observesChildElements)
+ /* Observes method element childs */
+ Node node; Element childElement;
+ NodeList ns = observesMethodElement.getChildNodes();
+
+ for(int i=0; i<ns.getLength(); i++)
{
+ node = ns.item(i);
+ if (!(node instanceof Element)) continue;
+ childElement = (Element)node;
if (XMLUtil.isElementInWebBeansNameSpaceWithName(childElement, WebBeansConstants.WEB_BEANS_XML_OBSERVES_ELEMENT))
{
- Element typeElement = (Element) childElement.elements().get(0);
+ //TODO: verify the first node is Element.
+ Element typeElement = (Element) childElement.getChildNodes().item(0);
eventType = (Class<K>) XMLUtil.getElementJavaType(typeElement);
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/XMLUtil.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/XMLUtil.java?rev=930092&r1=930091&r2=930092&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/XMLUtil.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/XMLUtil.java Thu Apr 1 20:48:31 2010
@@ -21,7 +21,6 @@ import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable;
import java.util.ArrayList;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.List;
import java.util.Set;
@@ -40,24 +39,18 @@ import org.apache.webbeans.proxy.Javassi
import org.apache.webbeans.util.AnnotationUtil;
import org.apache.webbeans.util.Asserts;
import org.apache.webbeans.util.ClassUtil;
-import org.dom4j.Attribute;
-import org.dom4j.Document;
-import org.dom4j.DocumentException;
-import org.dom4j.Element;
-import org.dom4j.ElementHandler;
-import org.dom4j.ElementPath;
-import org.dom4j.Namespace;
-import org.dom4j.io.SAXReader;
-
-/**
- * Used for getting information contained in the file web-beans.xml.
- *
- * @author <a href="mailto:gurkanerdogdu@yahoo.com">Gurkan Erdogdu</a>
- * @since 1.0
- */
-@SuppressWarnings("unchecked")
-public final class XMLUtil
-{
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Attr;
+import org.w3c.dom.NodeList;
+
+
+public class XMLUtil {
private XMLUtil()
{
@@ -65,77 +58,80 @@ public final class XMLUtil
private static WebBeansLogger log = WebBeansLogger.getLogger(XMLUtil.class);
- /**
- * Gets new {@link SAXReader} instance.
- *
- * @return sax reader instance
- */
- public static SAXReader getSaxReader()
+ protected static boolean verifyNameSpace(Element element)
{
- return new SAXReader();
- }
-
- /**
- * Gets the root element of the parsed document.
- *
- * @param stream parsed document
- * @return root element of the document
- * @throws WebBeansException if any runtime exception occurs
- */
+ boolean ret;
+ if (element.getNamespaceURI() == null)
+ {
+ return false;
+ }
+ Node node;
+ NodeList ns = element.getChildNodes();
+ for(int i=0; i<ns.getLength(); i++)
+ {
+ node = ns.item(i);
+ if (!(node instanceof Element)) continue;
+ ret = verifyNameSpace((Element)node);
+ if (!ret) return false;
+ }
+ return true;
+ }
+
+ protected static void updateNameSpacePackageMapping(Element root)
+ {
+ if (!verifyNameSpace(root))
+ {
+ throw new WebBeansConfigurationException(log.getTokenString(OWBLogConst.EXCEPT_0012));
+ }
+ if (root.getNamespaceURI() != null)
+ {
+ WebBeansNameSpaceContainer.getInstance().
+ addNewPackageNameSpace(root.getNamespaceURI());
+ } else {
+ String attr = root.getAttribute("xmlns");
+ if (attr != null) {
+ WebBeansNameSpaceContainer.getInstance().
+ addNewPackageNameSpace(root.getNamespaceURI());
+ }
+ }
+ NamedNodeMap attrs = root.getAttributes();
+ for(int i=0; i<attrs.getLength(); i++)
+ {
+ // hack the code here, since I did'nt find NameSpace support
+ // in Java DOM.
+ Attr attr = (Attr)attrs.item(i);
+ if (attr.getName().toLowerCase().startsWith("xmlns"))
+ {
+ WebBeansNameSpaceContainer.getInstance().addNewPackageNameSpace(attr.getValue());
+ }
+ }
+ }
+
public static Element getRootElement(InputStream stream) throws WebBeansException
{
- try
- {
- SAXReader saxReader = getSaxReader();
- saxReader.setMergeAdjacentText(true);
- saxReader.setStripWhitespaceText(true);
- saxReader.setErrorHandler(new WebBeansErrorHandler());
- saxReader.setEntityResolver(new WebBeansResolver());
- saxReader.setValidation(false);
- saxReader.setDefaultHandler(new ElementHandler()
- {
- public void onEnd(ElementPath path)
- {
-
- }
-
- public void onStart(ElementPath path)
- {
- Element element = path.getCurrent();
- if (element.getNamespaceURI() == null || element.getNamespaceURI().equals(""))
- {
- throw new WebBeansConfigurationException(log.getTokenString(OWBLogConst.EXCEPT_0012));
- }
- else
- {
- if (element.isRootElement())
- {
- WebBeansNameSpaceContainer.getInstance().addNewPackageNameSpace(element.getNamespace().getURI());
-
- List allNs = element.declaredNamespaces();
- Iterator itNs = allNs.iterator();
-
- while (itNs.hasNext())
- {
- Namespace namespace = (Namespace)itNs.next();
- WebBeansNameSpaceContainer.getInstance().addNewPackageNameSpace(namespace.getURI());
- }
- }
- }
- }
-
- });
-
- Document document = saxReader.read(stream);
-
- return document.getRootElement();
-
- }
- catch (DocumentException e)
- {
+
+ try
+ {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ factory.setCoalescing(false);
+ factory.setExpandEntityReferences(true);
+ factory.setIgnoringComments(true);
+ factory.setIgnoringElementContentWhitespace(true);
+ factory.setNamespaceAware(true);
+ factory.setValidating(false);
+ DocumentBuilder documentBuilder = factory.newDocumentBuilder();
+ documentBuilder.setErrorHandler(new WebBeansErrorHandler());
+ documentBuilder.setEntityResolver(new WebBeansResolver());
+
+ Document doc = documentBuilder.parse(stream);
+ Element root = doc.getDocumentElement();
+ updateNameSpacePackageMapping(root);
+ return root;
+ } catch (Exception e)
+ {
log.fatal(OWBLogConst.FATAL_0002, e);
throw new WebBeansException(log.getTokenString(OWBLogConst.EXCEPT_0013), e);
- }
+ }
}
/**
@@ -147,42 +143,34 @@ public final class XMLUtil
*/
public static Element getSpecStrictRootElement(InputStream stream) throws WebBeansException
{
- try
- {
- SAXReader saxReader = getSaxReader();
- saxReader.setMergeAdjacentText(true);
- saxReader.setStripWhitespaceText(true);
- saxReader.setErrorHandler(new WebBeansErrorHandler());
- saxReader.setEntityResolver(new WebBeansResolver());
- saxReader.setValidation(false);
- Document document = saxReader.read(stream);
-
- return document.getRootElement();
-
- }
- catch (DocumentException e)
- {
+ try
+ {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ factory.setCoalescing(false);
+ factory.setExpandEntityReferences(true);
+ factory.setIgnoringComments(true);
+ factory.setIgnoringElementContentWhitespace(true);
+ factory.setNamespaceAware(true);
+ factory.setValidating(false);
+ DocumentBuilder documentBuilder = factory.newDocumentBuilder();
+ documentBuilder.setErrorHandler(new WebBeansErrorHandler());
+ documentBuilder.setEntityResolver(new WebBeansResolver());
+
+ Element root = documentBuilder.parse(stream).getDocumentElement();
+ return root;
+ } catch (Exception e)
+ {
log.fatal(OWBLogConst.FATAL_0002, e);
throw new WebBeansException(log.getTokenString(OWBLogConst.EXCEPT_0013), e);
- }
- }
-
+ }
+ }
public static boolean isElementInNamespace(Element element, String namespace)
{
Asserts.assertNotNull(element, "element parameter can not be null");
Asserts.assertNotNull(namespace, "namespace parameter can not be null");
-
- Namespace ns = element.getNamespace();
- if (!Namespace.NO_NAMESPACE.equals(ns))
- {
- if (ns.getURI().equals(namespace))
- {
- return true;
- }
- }
-
- return false;
+ String nsURI = element.getNamespaceURI();
+ return nsURI.equals(namespace);
}
public static boolean isElementInWebBeansNameSpace(Element element)
@@ -197,15 +185,14 @@ public final class XMLUtil
return false;
}
-
+
public static boolean isElementInWebBeansNameSpaceWithName(Element element, String name)
{
nullCheckForElement(element);
if (isElementInWebBeansNameSpace(element))
{
- String txtName = element.getName();
-
+ String txtName = element.getLocalName();
if (name.equals(txtName))
{
return true;
@@ -214,20 +201,14 @@ public final class XMLUtil
return false;
}
-
+
public static String getElementNameSpace(Element element)
{
nullCheckForElement(element);
- Namespace ns = element.getNamespace();
- if (!Namespace.NO_NAMESPACE.equals(ns))
- {
- return ns.getURI();
- }
-
- return null;
+ return element.getNamespaceURI();
}
-
+
public static boolean isElementWebBeanDeclaration(Element element)
{
nullCheckForElement(element);
@@ -244,7 +225,7 @@ public final class XMLUtil
return false;
- }
+ }
/**
* Returns true if element has a bindingtype child element in webbeans
@@ -388,10 +369,13 @@ public final class XMLUtil
{
nullCheckForElement(element);
- List<Element> childs = element.elements();
-
- for (Element child : childs)
- {
+ Node node; Element child;
+ NodeList ns = element.getChildNodes();
+ for(int i=0; i<ns.getLength(); i++)
+ {
+ node = ns.item(i);
+ if (!(node instanceof Element)) continue;
+ child = (Element)node;
if (!isElementInWebBeansNameSpaceWithName(child, WebBeansConstants.WEB_BEANS_XML_INITIALIZER_ELEMENT) && !isElementInWebBeansNameSpaceWithName(child, WebBeansConstants.WEB_BEANS_XML_DESTRUCTOR_ELEMENT) && !isElementInWebBeansNameSpaceWithName(child, WebBeansConstants.WEB_BEANS_XML_PRODUCES_ELEMENT) && !isElementInWebBeansNameSpaceWithName(child, WebBeansConstants.WEB_BEANS_XML_DISPOSES_ELEMENT) && !isElementInWebBeansNameSpaceWithName(child, WebBeansConstants.WEB_BEANS_XML_OBSERVES_ELEMENT) && !isElementInWebBeansNameSpaceWithName(child, WebBeansConstants.WEB_BEANS_XML_DECORATES_ELEMENT))
{
@@ -429,12 +413,15 @@ public final class XMLUtil
*/
public static boolean isElementMethod(Element element)
{
- Asserts.nullCheckForDomElement(element);
-
- List<Element> childs = element.elements();
+ nullCheckForElement(element);
- for (Element child : childs)
- {
+ Node node; Element child;
+ NodeList ns = element.getChildNodes();
+ for(int i=0; i<ns.getLength(); i++)
+ {
+ node = ns.item(i);
+ if (!(node instanceof Element)) continue;
+ child = (Element)node;
if (isElementInWebBeansNameSpaceWithName(child, WebBeansConstants.WEB_BEANS_XML_INITIALIZER_ELEMENT) || isElementInWebBeansNameSpaceWithName(child, WebBeansConstants.WEB_BEANS_XML_DESTRUCTOR_ELEMENT) || isElementInWebBeansNameSpaceWithName(child, WebBeansConstants.WEB_BEANS_XML_PRODUCES_ELEMENT) || isElementInWebBeansNameSpaceWithName(child, WebBeansConstants.WEB_BEANS_XML_DISPOSES_ELEMENT) || isElementInWebBeansNameSpaceWithName(child, WebBeansConstants.WEB_BEANS_XML_OBSERVES_ELEMENT))
{
return true;
@@ -466,7 +453,7 @@ public final class XMLUtil
{
nullCheckForElement(element);
- return element.getName();
+ return element.getLocalName();
}
public static Class<?> getElementJavaType(Element element)
@@ -503,7 +490,7 @@ public final class XMLUtil
return foundClazz;
}
-
+
public static String getElementJavaClassName(Element element)
{
Class<?> clazz = getElementJavaType(element);
@@ -515,20 +502,29 @@ public final class XMLUtil
return getName(element);
}
-
+
private static void nullCheckForElement(Element element)
{
- Asserts.nullCheckForDomElement(element);
+ Asserts.assertNotNull(element, "element argument can not be null");
}
-
+
+
public static boolean hasChildElement(Element parent, String childName)
- {
+ {Node node;
Asserts.assertNotNull(parent, "parent parameter can not be null");
Asserts.assertNotNull(childName, "childName parameter can not be null");
-
- return parent.element(childName) != null ? true : false;
+ NodeList nl = parent.getChildNodes();
+ for(int i=0; i<nl.getLength(); i++)
+ {
+ node = nl.item(i);
+ if (node instanceof Element)
+ {
+ if (node.getNodeName().equals(childName)) return true;
+ }
+ }
+ return false;
}
-
+
/**
* Return child element within webbeans namespace with given child name.
*
@@ -541,8 +537,21 @@ public final class XMLUtil
{
Asserts.assertNotNull(parent, "parent parameter can not be null");
Asserts.assertNotNull(childName, "childName parameter can not be null");
-
- Element child = parent.element(childName);
+ Node node;
+ Element child = null;
+ NodeList nl = parent.getChildNodes();
+ for(int i=0; i<nl.getLength(); i++)
+ {
+ node = nl.item(i);
+ if (node instanceof Element)
+ {
+ if (node.getNodeName().equals(childName))
+ {
+ child = (Element)node;
+ }
+ }
+ }
+
if (child == null)
{
return false;
@@ -551,7 +560,6 @@ public final class XMLUtil
{
return isElementInWebBeansNameSpace(child);
}
-
}
/**
@@ -566,7 +574,7 @@ public final class XMLUtil
Asserts.assertNotNull(typeElement, "typeElement parameter can not be null");
/* Element <Array> */
- if (typeElement.getName().equals(WebBeansConstants.WEB_BEANS_XML_ARRAY_ELEMENT))
+ if (typeElement.getLocalName().equals(WebBeansConstants.WEB_BEANS_XML_ARRAY_ELEMENT))
{
return getArrayInjectionPointModel(typeElement, errorMessage);
}
@@ -577,7 +585,7 @@ public final class XMLUtil
}
}
-
+
/**
* Injection point with Java type.
*
@@ -604,14 +612,18 @@ public final class XMLUtil
{
TypeVariable[] typeVariables = clazz.getTypeParameters();
int actualTypeArgument = typeVariables.length;
- List<Element> childElements = typeElement.elements();
List<Type> typeArguments = new ArrayList<Type>();
List<Annotation> bindingAnnots = new ArrayList<Annotation>();
Class<? extends Annotation> definedBindingType = null;
- for (Element childElement : childElements)
- {
- Type actualType = getElementJavaType(childElement);
+ Node node; Element childElement;
+ NodeList ns = typeElement.getChildNodes();
+ for(int i=0; i<ns.getLength(); i++)
+ {
+ node = ns.item(i);
+ if (!(node instanceof Element)) continue;
+ childElement = (Element)node;
+ Type actualType = getElementJavaType(childElement);
if (actualType == null)
{
throw new NonexistentTypeException(errorMessage + log.getTokenString(OWBLogConst.TEXT_JAVA_TYPENAME) + getElementJavaClassName(typeElement) + " is not found in the deployment");
@@ -686,6 +698,7 @@ public final class XMLUtil
return model;
}
+
/**
* Creates new annotation with configured members values.
*
@@ -696,12 +709,13 @@ public final class XMLUtil
*/
public static Annotation getXMLDefinedAnnotationMember(Element annotationElement, Class<? extends Annotation> annotClazz, String errorMessage)
{
- String value = annotationElement.getTextTrim();
- List<Attribute> attrs = annotationElement.attributes();
+ String value = annotationElement.getTextContent().trim();
+ NamedNodeMap attrs = annotationElement.getAttributes();
List<String> attrsNames = new ArrayList<String>();
-
- for (Attribute attr : attrs)
+
+ for(int i=0; i<attrs.getLength(); i++)
{
+ Attr attr = (Attr)attrs.item(i);
attrsNames.add(attr.getName());
}
@@ -779,12 +793,13 @@ public final class XMLUtil
* @param errorMessage error message
* @return new annotation
*/
- private static WebBeansAnnotation createInjectionPointAnnotation(List<Attribute> attrs, Class<? extends Annotation> annotClazz, String valueText, String errorMessage)
+ private static WebBeansAnnotation createInjectionPointAnnotation(NamedNodeMap attrs, Class<? extends Annotation> annotClazz, String valueText, String errorMessage)
{
WebBeansAnnotation annotation = JavassistProxyFactory.createNewAnnotationProxy(annotClazz);
boolean isValueAttrDefined = false;
- for (Attribute attr : attrs)
+ for(int i=0; i<attrs.getLength(); i++)
{
+ Attr attr = (Attr)attrs.item(i);
String attrName = attr.getName();
String attrValue = attr.getValue();
@@ -853,6 +868,7 @@ public final class XMLUtil
return annotation;
}
+
/**
* Injection point with array type.
*
@@ -864,13 +880,17 @@ public final class XMLUtil
{
XMLInjectionPointModel model = null;
- List<Element> childElements = typeElement.elements();
boolean isElementTypeDefined = false;
-
Set<Annotation> anns = new HashSet<Annotation>();
- for (Element childElement : childElements)
+ Node node; Element childElement;
+ NodeList ns = typeElement.getChildNodes();
+
+ for(int i=0; i<ns.getLength(); i++)
{
- Class<?> clazz = XMLUtil.getElementJavaType(childElement);
+ node = ns.item(i);
+ if (!(node instanceof Element)) continue;
+ childElement = (Element)node;
+ Class<?> clazz = XMLUtil.getElementJavaType(childElement);
if (clazz == null)
{
@@ -911,15 +931,18 @@ public final class XMLUtil
return model;
}
-
+
public static <T> void defineXMLProducerApiTypeFromArrayElement(XMLProducerBean<T> component, Element typeElement, String errorMessage)
{
- List<Element> childElements = typeElement.elements();
boolean isElementTypeDefined = false;
-
Set<Annotation> anns = new HashSet<Annotation>();
- for (Element childElement : childElements)
- {
+ Node node; Element childElement;
+ NodeList ns = typeElement.getChildNodes();
+ for(int i=0; i<ns.getLength(); i++)
+ {
+ node = ns.item(i);
+ if (!(node instanceof Element)) continue;
+ childElement = (Element)node;
Class<?> clazz = XMLUtil.getElementJavaType(childElement);
if (clazz == null)
@@ -960,5 +983,6 @@ public final class XMLUtil
}
}
-
+
}
+
Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/TestContext.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/TestContext.java?rev=930092&r1=930091&r2=930092&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/TestContext.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/TestContext.java Thu Apr 1 20:48:31 2010
@@ -74,7 +74,10 @@ import org.apache.webbeans.util.Annotati
import org.apache.webbeans.util.WebBeansUtil;
import org.apache.webbeans.xml.WebBeansXMLConfigurator;
import org.apache.webbeans.xml.XMLUtil;
-import org.dom4j.Element;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
/**
* Superclass of all the unit test classes. It defines some methods for
@@ -353,9 +356,16 @@ public abstract class TestContext implem
InputStream stream = XMLTest.class.getClassLoader().getResourceAsStream(xmlResourcePath);
Assert.assertNotNull(stream);
+ Element beanElement = null;
Element rootElement = XMLUtil.getRootElement(stream);
- Element beanElement = (Element) rootElement.elements().get(0);
-
+ NodeList ns = rootElement.getChildNodes();
+ for(int i = 0; i<=ns.getLength(); i++)
+ {
+ Node node = ns.item(i);
+ if (!(node instanceof Element)) continue;
+ beanElement = (Element)node;
+ break;
+ }
Class<?> clazz = XMLUtil.getElementJavaType(beanElement);
XMLManagedBean<?> def = defineXMLSimpleWebBeans(clazz, beanElement);
@@ -378,10 +388,16 @@ public abstract class TestContext implem
InputStream stream = XMLTest.class.getClassLoader().getResourceAsStream(xmlResourcePath);
Assert.assertNotNull(stream);
+ Element beanElement;
Element rootElement = XMLUtil.getRootElement(stream);
-
- for (Element beanElement : (List<Element>) rootElement.elements())
+ NodeList nodes = rootElement.getChildNodes();
+ for(int i=0; i<nodes.getLength(); i++)
{
+ Node node = nodes.item(i);
+ if (!(node instanceof Element)) {
+ continue;
+ }
+ beanElement = (Element)node;
Class<?> clazz = XMLUtil.getElementJavaType(beanElement);
defineXMLSimpleWebBeans(clazz, beanElement);
Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/xml/XMLTest.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/xml/XMLTest.java?rev=930092&r1=930091&r2=930092&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/xml/XMLTest.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/xml/XMLTest.java Thu Apr 1 20:48:31 2010
@@ -19,7 +19,7 @@ import junit.framework.Assert;
import org.apache.webbeans.test.TestContext;
import org.apache.webbeans.xml.XMLUtil;
-import org.dom4j.Element;
+import org.w3c.dom.Element;
import org.junit.Test;
public class XMLTest extends TestContext