Example usage for javax.xml.stream.events XMLEvent asCharacters

List of usage examples for javax.xml.stream.events XMLEvent asCharacters

Introduction

In this page you can find the example usage for javax.xml.stream.events XMLEvent asCharacters.

Prototype

public Characters asCharacters();

Source Link

Document

Returns this event as Characters, may result in a class cast exception if this event is not Characters.

Usage

From source file:org.apache.olingo.client.core.serialization.AtomDeserializer.java

private ODataError error(final XMLEventReader reader, final StartElement start) throws XMLStreamException {
    final ODataError error = new ODataError();

    boolean setCode = false;
    boolean codeSet = false;
    boolean setMessage = false;
    boolean messageSet = false;
    boolean setTarget = false;
    boolean targetSet = false;

    boolean foundEndElement = false;
    while (reader.hasNext() && !foundEndElement) {
        final XMLEvent event = reader.nextEvent();

        if (event.isStartElement()) {
            if (errorCodeQName.equals(event.asStartElement().getName())) {
                setCode = true;/*from   w  ww. ja  v  a 2s.c o  m*/
            } else if (errorMessageQName.equals(event.asStartElement().getName())) {
                setMessage = true;
            } else if (errorTargetQName.equals(event.asStartElement().getName())) {
                setTarget = true;
            }
        }

        if (event.isCharacters() && !event.asCharacters().isWhiteSpace()) {
            if (setCode && !codeSet) {
                error.setCode(event.asCharacters().getData());
                setCode = false;
                codeSet = true;
            }
            if (setMessage && !messageSet) {
                error.setMessage(event.asCharacters().getData());
                setMessage = false;
                messageSet = true;
            }
            if (setTarget && !targetSet) {
                error.setTarget(event.asCharacters().getData());
                setTarget = false;
                targetSet = true;
            }
        }

        if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
            foundEndElement = true;
        }
    }

    return error;
}

From source file:org.apache.olingo.client.core.serialization.AtomGeoValueDeserializer.java

private List<Point> points(final XMLEventReader reader, final StartElement start,
        final EdmPrimitiveTypeKind type, final SRID srid) throws XMLStreamException {

    final List<Point> result = new ArrayList<Point>();

    boolean foundEndProperty = false;
    while (reader.hasNext() && !foundEndProperty) {
        final XMLEvent event = reader.nextEvent();

        if (event.isCharacters() && !event.asCharacters().isWhiteSpace()) {
            final String[] pointInfo = event.asCharacters().getData().split(" ");

            final Point point = new Point(GeoUtils.getDimension(type), srid);
            try {
                point.setX(EdmDouble.getInstance().valueOfString(pointInfo[0], null, null,
                        Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null, Double.class));
                point.setY(EdmDouble.getInstance().valueOfString(pointInfo[1], null, null,
                        Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null, Double.class));
            } catch (EdmPrimitiveTypeException e) {
                throw new XMLStreamException("While deserializing point coordinates as double", e);
            }/*from   w w w  . ja v a 2 s.  co m*/
            result.add(point);
        }

        if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
            foundEndProperty = true;
        }
    }

    // handles bad input, e.g. things like <gml:pos/>
    if (result.isEmpty()) {
        result.add(new Point(GeoUtils.getDimension(type), srid));
    }

    return result;
}

From source file:org.apache.olingo.commons.core.data.AtomGeoValueDeserializer.java

private List<Point> points(final XMLEventReader reader, final StartElement start,
        final EdmPrimitiveTypeKind type, final String crs) throws XMLStreamException {

    final List<Point> result = new ArrayList<Point>();

    boolean foundEndProperty = false;
    while (reader.hasNext() && !foundEndProperty) {
        final XMLEvent event = reader.nextEvent();

        if (event.isCharacters() && !event.asCharacters().isWhiteSpace()) {
            final String[] pointInfo = event.asCharacters().getData().split(" ");

            final Point point = new Point(GeoUtils.getDimension(type), crs);
            try {
                point.setX(EdmDouble.getInstance().valueOfString(pointInfo[0], null, null,
                        Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null, Double.class));
                point.setY(EdmDouble.getInstance().valueOfString(pointInfo[1], null, null,
                        Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null, Double.class));
            } catch (EdmPrimitiveTypeException e) {
                throw new XMLStreamException("While deserializing point coordinates as double", e);
            }/*from w ww .  j  ava2s  .co m*/
            result.add(point);
        }

        if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
            foundEndProperty = true;
        }
    }

    return result;
}

From source file:org.apache.olingo.commons.core.data.AtomPropertyDeserializer.java

private Value fromPrimitive(final XMLEventReader reader, final StartElement start, final EdmTypeInfo typeInfo)
        throws XMLStreamException {

    Value value = null;// www  . j  a v a 2s  .  com

    boolean foundEndProperty = false;
    while (reader.hasNext() && !foundEndProperty) {
        final XMLEvent event = reader.nextEvent();

        if (event.isStartElement() && typeInfo != null && typeInfo.getPrimitiveTypeKind().isGeospatial()) {
            final EdmPrimitiveTypeKind geoType = EdmPrimitiveTypeKind.valueOfFQN(version,
                    typeInfo.getFullQualifiedName().toString());
            value = new GeospatialValueImpl(
                    this.geoDeserializer.deserialize(reader, event.asStartElement(), geoType));
        }

        if (event.isCharacters() && !event.asCharacters().isWhiteSpace()
                && (typeInfo == null || !typeInfo.getPrimitiveTypeKind().isGeospatial())) {

            value = new PrimitiveValueImpl(event.asCharacters().getData());
        }

        if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
            foundEndProperty = true;
        }
    }

    return value;
}

From source file:org.apache.olingo.commons.core.data.AtomPropertyDeserializer.java

private ODataPropertyType guessPropertyType(final XMLEventReader reader) throws XMLStreamException {
    XMLEvent child = null;/* w ww .  j  a v  a  2 s  .  c  o m*/
    while (reader.hasNext() && child == null) {
        final XMLEvent event = reader.peek();
        if (event.isCharacters() && event.asCharacters().isWhiteSpace()) {
            reader.nextEvent();
        } else {
            child = event;
        }
    }

    final ODataPropertyType type;
    if (child == null) {
        type = ODataPropertyType.PRIMITIVE;
    } else {
        if (child.isStartElement()) {
            if (Constants.NS_GML.equals(child.asStartElement().getName().getNamespaceURI())) {
                type = ODataPropertyType.PRIMITIVE;
            } else if (elementQName.equals(child.asStartElement().getName())) {
                type = ODataPropertyType.COLLECTION;
            } else {
                type = ODataPropertyType.COMPLEX;
            }
        } else if (child.isCharacters()) {
            type = ODataPropertyType.PRIMITIVE;
        } else {
            type = ODataPropertyType.EMPTY;
        }
    }

    return type;
}

From source file:org.apache.olingo.commons.core.serialization.AtomDeserializer.java

private Object fromPrimitive(final XMLEventReader reader, final StartElement start, final EdmTypeInfo typeInfo)
        throws XMLStreamException, EdmPrimitiveTypeException {

    Object value = null;/* ww  w .ja  v  a 2 s .  c  om*/

    boolean foundEndProperty = false;
    while (reader.hasNext() && !foundEndProperty) {
        final XMLEvent event = reader.nextEvent();

        if (event.isStartElement() && typeInfo != null && typeInfo.getPrimitiveTypeKind().isGeospatial()) {
            final EdmPrimitiveTypeKind geoType = EdmPrimitiveTypeKind.valueOfFQN(version,
                    typeInfo.getFullQualifiedName().toString());
            value = geoDeserializer.deserialize(reader, event.asStartElement(), geoType);
        }

        if (event.isCharacters() && !event.asCharacters().isWhiteSpace()
                && (typeInfo == null || !typeInfo.getPrimitiveTypeKind().isGeospatial())) {

            final String stringValue = event.asCharacters().getData();
            value = typeInfo == null ? stringValue : // TODO: add facets
                    ((EdmPrimitiveType) typeInfo.getType()).valueOfString(stringValue, true, null,
                            Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, true,
                            ((EdmPrimitiveType) typeInfo.getType()).getDefaultType());
        }

        if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
            foundEndProperty = true;
        }
    }

    return value;
}

From source file:org.apache.olingo.commons.core.serialization.AtomDeserializer.java

@SuppressWarnings("unchecked")
private Object fromComplexOrEnum(final XMLEventReader reader, final StartElement start)
        throws XMLStreamException, EdmPrimitiveTypeException {

    Object value = null;/*  w ww.  j a v a2  s  .  c  o  m*/

    boolean foundEndProperty = false;
    while (reader.hasNext() && !foundEndProperty) {
        final XMLEvent event = reader.nextEvent();

        if (event.isStartElement()) {
            if (value == null) {
                value = version.compareTo(ODataServiceVersion.V40) < 0 ? new ArrayList<Property>()
                        : new LinkedComplexValueImpl();
            }

            if (Constants.QNAME_ATOM_ELEM_LINK.equals(event.asStartElement().getName())) {
                final LinkImpl link = new LinkImpl();
                final Attribute rel = event.asStartElement()
                        .getAttributeByName(QName.valueOf(Constants.ATTR_REL));
                if (rel != null) {
                    link.setRel(rel.getValue());
                }
                final Attribute title = event.asStartElement()
                        .getAttributeByName(QName.valueOf(Constants.ATTR_TITLE));
                if (title != null) {
                    link.setTitle(title.getValue());
                }
                final Attribute href = event.asStartElement()
                        .getAttributeByName(QName.valueOf(Constants.ATTR_HREF));
                if (href != null) {
                    link.setHref(href.getValue());
                }
                final Attribute type = event.asStartElement()
                        .getAttributeByName(QName.valueOf(Constants.ATTR_TYPE));
                if (type != null) {
                    link.setType(type.getValue());
                }

                if (link.getRel().startsWith(
                        version.getNamespace(ODataServiceVersion.NamespaceKey.NAVIGATION_LINK_REL))) {

                    ((LinkedComplexValue) value).getNavigationLinks().add(link);
                    inline(reader, event.asStartElement(), link);
                } else if (link.getRel().startsWith(
                        version.getNamespace(ODataServiceVersion.NamespaceKey.ASSOCIATION_LINK_REL))) {

                    ((Valuable) value).asLinkedComplex().getAssociationLinks().add(link);
                }
            } else {
                (value instanceof LinkedComplexValue ? ((LinkedComplexValue) value).getValue()
                        : (List<Property>) value).add(property(reader, event.asStartElement()));
            }
        }

        if (event.isCharacters() && !event.asCharacters().isWhiteSpace()) {
            value = event.asCharacters().getData();
        }

        if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
            foundEndProperty = true;
        }
    }

    return value;
}

From source file:org.apache.olingo.commons.core.serialization.AtomDeserializer.java

private ODataPropertyType guessPropertyType(final XMLEventReader reader, final EdmTypeInfo typeInfo)
        throws XMLStreamException {

    XMLEvent child = null;/*  w  w  w  .  j  a  v  a  2 s . co m*/
    while (reader.hasNext() && child == null) {
        final XMLEvent event = reader.peek();
        if (event.isCharacters() && event.asCharacters().isWhiteSpace()) {
            reader.nextEvent();
        } else {
            child = event;
        }
    }

    final ODataPropertyType type;
    if (child == null) {
        type = typeInfo == null || typeInfo.isPrimitiveType() ? ODataPropertyType.PRIMITIVE
                : ODataPropertyType.ENUM;
    } else {
        if (child.isStartElement()) {
            if (Constants.NS_GML.equals(child.asStartElement().getName().getNamespaceURI())) {
                type = ODataPropertyType.PRIMITIVE;
            } else if (elementQName.equals(child.asStartElement().getName())) {
                type = ODataPropertyType.COLLECTION;
            } else {
                type = ODataPropertyType.COMPLEX;
            }
        } else if (child.isCharacters()) {
            type = typeInfo == null || typeInfo.isPrimitiveType() ? ODataPropertyType.PRIMITIVE
                    : ODataPropertyType.ENUM;
        } else {
            type = ODataPropertyType.EMPTY;
        }
    }

    return type;
}

From source file:org.apache.olingo.commons.core.serialization.AtomDeserializer.java

private void common(final XMLEventReader reader, final StartElement start, final AbstractODataObject object,
        final String key) throws XMLStreamException {

    boolean foundEndElement = false;
    while (reader.hasNext() && !foundEndElement) {
        final XMLEvent event = reader.nextEvent();

        if (event.isCharacters() && !event.asCharacters().isWhiteSpace()) {
            try {
                object.setCommonProperty(key, event.asCharacters().getData());
            } catch (ParseException e) {
                throw new XMLStreamException("While parsing Atom entry or feed common elements", e);
            }// www. j a v a 2s .  co m
        }

        if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
            foundEndElement = true;
        }
    }
}

From source file:org.apache.olingo.commons.core.serialization.AtomDeserializer.java

private void inline(final XMLEventReader reader, final StartElement start, final LinkImpl link)
        throws XMLStreamException, EdmPrimitiveTypeException {

    boolean foundEndElement = false;
    while (reader.hasNext() && !foundEndElement) {
        final XMLEvent event = reader.nextEvent();

        if (event.isStartElement()) {
            if (inlineQName.equals(event.asStartElement().getName())) {
                StartElement inline = null;
                while (reader.hasNext() && inline == null) {
                    final XMLEvent innerEvent = reader.peek();
                    if (innerEvent.isCharacters() && innerEvent.asCharacters().isWhiteSpace()) {
                        reader.nextEvent();
                    } else if (innerEvent.isStartElement()) {
                        inline = innerEvent.asStartElement();
                    }//from ww  w.  j  ava  2s .com
                }
                if (inline != null) {
                    if (Constants.QNAME_ATOM_ELEM_ENTRY.equals(inline.getName())) {
                        link.setInlineEntity(entity(reader, inline));
                    }
                    if (Constants.QNAME_ATOM_ELEM_FEED.equals(inline.getName())) {
                        link.setInlineEntitySet(entitySet(reader, inline));
                    }
                }
            } else if (annotationQName.equals(event.asStartElement().getName())) {
                link.getAnnotations().add(annotation(reader, event.asStartElement()));
            }
        }

        if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
            foundEndElement = true;
        }
    }
}