[jboss-dev-forums] [Design the new POJO MicroContainer] - Getting content of XML element
kabir.khan@jboss.com
do-not-reply at jboss.com
Tue Nov 20 13:36:29 EST 2007
Can somebody please tell me how to get the contents of the annotation? i.e. I want: @org.jboss.test.microcontainer.beans2.Annotation1. It does not appear to be accessible from any of the things passed in to the methods of AnnotationOverrideHandler?
Also, for a similar schenario I will need to construct a org.w3c.dom.Element from the nested contents of a element. Is that possible?
Schema:
| <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
| targetNamespace="urn:jboss:aop-beans:1.0"
| xmlns="urn:jboss:aop-beans:1.0"
| xmlns:mc="urn:jboss:bean-deployer:2.0"
| elementFormDefault="qualified"
| attributeFormDefault="unqualified"
| version="1.0"
| >
| ...
|
| <xsd:element name="annotation" type="annotationType">
| <xsd:annotation>
| <xsd:documentation>
| <![CDATA[
| A annotation override
| ]]>
| </xsd:documentation>
| </xsd:annotation>
| </xsd:element>
|
| <xsd:complexType name="annotationType">
| <xsd:annotation>
| <xsd:documentation>
| <![CDATA[
| A annotation override
| ]]>
| </xsd:documentation>
| </xsd:annotation>
| <xsd:complexContent>
| <xsd:attribute name="expr" type="xsd:string" use="required"/>
| <xsd:attribute name="invisible" type="xsd:string" use="required"/>
| </xsd:complexContent>
| </xsd:complexType>
|
| </xsd:schema>
|
|
XML:
| <?xml version="1.0" encoding="UTF-8"?>
|
| <deployment xmlns="urn:jboss:bean-deployer:2.0">
| ...
| <annotation xmlns="urn:jboss:aop-beans:1.0" expr="class(org.jboss.test.microcontainer.beans2.POJO)" invisible="false">
| @org.jboss.test.microcontainer.beans2.Annotation1
| </annotation>
| ...
| </deployment>
|
|
SchemaBindingIntitializer:
| public class AOPBeansSchemaInitializer implements SchemaBindingInitializer
| {
| ...
|
| private static final QName annotationTypeQName = new QName(AOP_BEANS_NS, "annotationType");
|
| TypeBinding type = schema.getType(annotationTypeQName);
| type.setHandler(AnnotationOverrideHandler.HANDLER);
| //type.pushInterceptor(annotationQName, AnnotationContentInterceptor.INTERCEPTOR);
| ....
|
|
| private static class AnnotationOverrideHandler extends DefaultElementHandler
| {
| public static final AnnotationOverrideHandler HANDLER = new AnnotationOverrideHandler();
|
| @Override
| public Object startElement(Object parent, QName name, ElementBinding element)
| {
| return new AbstractBeanMetaData(AnnotationOverride.class.getName());
| }
|
| @Override
| public void attributes(Object o, QName elementName, ElementBinding element, Attributes attrs, NamespaceContext nsCtx)
| {
| AspectBeanMetaDataUtil util = new AspectBeanMetaDataUtil();
| AbstractBeanMetaData pointcut = (AbstractBeanMetaData)o;
|
| for (int i = 0; i < attrs.getLength(); ++i)
| {
| ....
| }
| }
|
| @Override
| public Object endElement(Object o, QName name, ElementBinding element)
| {
| return super.endElement(o, name, element);
| }
|
|
| }
|
| private static class AnnotationContentInterceptor extends DefaultElementInterceptor
| {
| public static final AnnotationContentInterceptor INTERCEPTOR = new AnnotationContentInterceptor();
|
| @Override
| public void add (Object parent, Object child, QName name)
| {
| System.out.println("-----------> " + child);
| }
| }
| }
|
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4106519#4106519
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4106519
More information about the jboss-dev-forums
mailing list