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

org.codehaus.xfire.aegis.AbstractMessageReader Maven / Gradle / Ivy

package org.codehaus.xfire.aegis;

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

import org.codehaus.xfire.XFireRuntimeException;
import org.codehaus.xfire.soap.SoapConstants;

/**
 * Basic type conversions for reading messages.
 * 
 * @author Dan Diephouse
 */
public abstract class AbstractMessageReader
    implements MessageReader
{
    private static final QName XSI_NIL = new QName(SoapConstants.XSI_NS, "nil", SoapConstants.XSI_PREFIX);
    
    public AbstractMessageReader()
    {
    }

    public void readToEnd()
    {
        readToEnd(this);
    }
    
    private void readToEnd(MessageReader childReader)
    {
        while (childReader.hasMoreElementReaders())
        {
            readToEnd(childReader.getNextElementReader());
        }
    }
    
    public boolean isXsiNil()
    {
        MessageReader nilReader = getAttributeReader(XSI_NIL);
        boolean nil = false;
        if (nilReader != null)
        {
            String value = nilReader.getValue();
            if (value != null && (value.equals("true") || value.equals("1")))
                return true;
        }
        
        return nil;
    }

    public boolean hasValue()
    {
        return getValue() != null;
    }

    /**
     * @see org.codehaus.xfire.aegis.MessageReader#getValueAsCharacter()
     */
    public char getValueAsCharacter()
    {
        if (getValue() == null) return 0;
        return getValue().charAt(0);
    }

    public int getValueAsInt()
    {
        if (getValue() == null) return 0;
        
        return Integer.parseInt( getValue() );
    }

	/**
	 * @see org.codehaus.xfire.aegis.MessageReader#getValueAsLong()
	 */
	public long getValueAsLong()
	{
        if (getValue() == null) return 0l;
        
        return Long.parseLong( getValue() );
	}
    
	/**
	 * @see org.codehaus.xfire.aegis.MessageReader#getValueAsDouble()
	 */
	public double getValueAsDouble()
	{
        if (getValue() == null) return 0d;
        
        return Double.parseDouble( getValue() );
	}

	/**
	 * @see org.codehaus.xfire.aegis.MessageReader#getValueAsFloat()
	 */
	public float getValueAsFloat()
	{
        if (getValue() == null) return 0f;
        
        return Float.parseFloat( getValue() );
	}

	/**
	 * @see org.codehaus.xfire.aegis.MessageReader#getValueAsBoolean()
	 */
	public boolean getValueAsBoolean()
	{
        String value = getValue();
        if (value == null) return false;
        
        if ("true".equalsIgnoreCase(value) || "1".equalsIgnoreCase(value))
            return true;

        if ("false".equalsIgnoreCase(value) || "0".equalsIgnoreCase(value))
            return false;
        
        throw new XFireRuntimeException("Invalid boolean value: " + value);
	}

    public XMLStreamReader getXMLStreamReader()
    {
        throw new UnsupportedOperationException();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy