All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.codehaus.xfire.aegis.jdom.JDOMReader Maven / Gradle / Ivy

package org.codehaus.xfire.aegis.jdom;

import java.util.List;

import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamReader;

import org.codehaus.xfire.aegis.AbstractMessageReader;
import org.codehaus.xfire.aegis.MessageReader;
import org.codehaus.xfire.aegis.stax.AttributeReader;
import org.codehaus.xfire.util.stax.JDOMStreamReader;
import org.jdom.Attribute;
import org.jdom.Element;
import org.jdom.Namespace;

public class JDOMReader
    extends AbstractMessageReader
    implements MessageReader
{
    private Element element;
    private int currentChild = 0;
    private int currentAttribute = 0;
    private List elements;
    private QName qname;
    
    public JDOMReader(Element element)
    {
        this.element = element;
        this.elements = element.getChildren();
    }
    
    public String getValue()
    {
        return element.getValue();
    }

    public String getValue(String ns, String attr)
    {
        return element.getAttributeValue(attr, ns);
    }

    public boolean hasMoreElementReaders()
    {
        return (currentChild < elements.size());
    }

    public MessageReader getNextElementReader()
    {
        currentChild++;
        return new JDOMReader((Element) elements.get(currentChild-1));
    }

    public QName getName()
    {
        if (qname == null)
        {
            qname = new QName(element.getNamespaceURI(), 
                              element.getName(), 
                              element.getNamespacePrefix());
        }
        return qname;
    }

    public String getLocalName()
    {
        return element.getName();
    }

    public String getNamespace()
    {
        return element.getNamespaceURI();
    }

    public XMLStreamReader getXMLStreamReader()
    {
        return new JDOMStreamReader(element);
    }

    public boolean hasMoreAttributeReaders()
    {
        return (currentAttribute < element.getAttributes().size());
    }

    public MessageReader getAttributeReader( QName attName )
    {
        String value = element.getAttributeValue(attName.getLocalPart(),
                                                 Namespace.getNamespace(attName.getNamespaceURI()));
        return new AttributeReader(attName, value);
    }

    public MessageReader getNextAttributeReader()
    {
        Attribute att = (Attribute) element.getAttributes().get(currentAttribute);
        currentAttribute++;
        
        return new AttributeReader(new QName(att.getNamespaceURI(), att.getName()), att.getValue());
    }

    public String getNamespaceForPrefix( String prefix )
    {
        Namespace namespace = element.getNamespace( prefix );
        return null == namespace ? null : namespace.getURI();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy