Example usage for javax.xml.stream.events StartElement getAttributeByName

List of usage examples for javax.xml.stream.events StartElement getAttributeByName

Introduction

In this page you can find the example usage for javax.xml.stream.events StartElement getAttributeByName.

Prototype

public Attribute getAttributeByName(QName name);

Source Link

Document

Returns the attribute referred to by the qname.

Usage

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

private void valuable(final Valuable valuable, final XMLEventReader reader, final StartElement start)
        throws XMLStreamException, EdmPrimitiveTypeException {

    final Attribute nullAttr = start.getAttributeByName(nullQName);

    final Attribute typeAttr = start.getAttributeByName(typeQName);
    final String typeAttrValue = typeAttr == null ? null : typeAttr.getValue();

    final EdmTypeInfo typeInfo = StringUtils.isBlank(typeAttrValue) ? null
            : new EdmTypeInfo.Builder().setTypeExpression(typeAttrValue).build();

    if (typeInfo != null) {
        valuable.setType(typeInfo.internal());
    }/* ww w. java 2s. c o m*/

    final PropertyType propType = typeInfo == null ? guessPropertyType(reader, typeInfo)
            : typeInfo.isCollection() ? PropertyType.COLLECTION
                    : typeInfo.isPrimitiveType() ? PropertyType.PRIMITIVE : PropertyType.COMPLEX;

    if (nullAttr == null) {
        switch (propType) {
        case COLLECTION:
            fromCollection(valuable, reader, start, typeInfo);
            break;

        case COMPLEX:
            final Object complexValue = fromComplexOrEnum(reader, start);
            valuable.setValue(complexValue instanceof ComplexValue ? ValueType.COMPLEX : ValueType.ENUM,
                    complexValue);
            break;

        case PRIMITIVE:
            // No type specified? Defaults to Edm.String
            if (typeInfo == null) {
                valuable.setType(EdmPrimitiveTypeKind.String.getFullQualifiedName().toString());
            }
            final Object value = fromPrimitive(reader, start, typeInfo);
            valuable.setValue(value instanceof Geospatial ? ValueType.GEOSPATIAL : ValueType.PRIMITIVE, value);
            break;

        case EMPTY:
        default:
            valuable.setValue(ValueType.PRIMITIVE, StringUtils.EMPTY);
        }
    } else {
        valuable.setValue(propType == PropertyType.PRIMITIVE ? ValueType.PRIMITIVE
                : propType == PropertyType.ENUM ? ValueType.ENUM
                        : propType == PropertyType.COMPLEX ? ValueType.COMPLEX
                                : propType == PropertyType.COLLECTION ? ValueType.COLLECTION_PRIMITIVE
                                        : ValueType.PRIMITIVE,
                null);
    }
}

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

private Delta delta(final XMLEventReader reader, final StartElement start)
        throws XMLStreamException, EdmPrimitiveTypeException {
    if (!Constants.QNAME_ATOM_ELEM_FEED.equals(start.getName())) {
        return null;
    }//from  w  ww.ja  va2  s  .c o  m
    final Delta delta = new Delta();
    final Attribute xmlBase = start.getAttributeByName(Constants.QNAME_ATTR_XML_BASE);
    if (xmlBase != null) {
        delta.setBaseURI(URI.create(xmlBase.getValue()));
    }

    boolean foundEndFeed = false;
    while (reader.hasNext() && !foundEndFeed) {
        final XMLEvent event = reader.nextEvent();
        if (event.isStartElement()) {
            if (countQName.equals(event.asStartElement().getName())) {
                count(reader, event.asStartElement(), delta);
            } else if (Constants.QNAME_ATOM_ELEM_ID.equals(event.asStartElement().getName())) {
                common(reader, event.asStartElement(), delta, "id");
            } else if (Constants.QNAME_ATOM_ELEM_TITLE.equals(event.asStartElement().getName())) {
                common(reader, event.asStartElement(), delta, "title");
            } else if (Constants.QNAME_ATOM_ELEM_SUMMARY.equals(event.asStartElement().getName())) {
                common(reader, event.asStartElement(), delta, "summary");
            } else if (Constants.QNAME_ATOM_ELEM_UPDATED.equals(event.asStartElement().getName())) {
                common(reader, event.asStartElement(), delta, "updated");
            } else if (Constants.QNAME_ATOM_ELEM_LINK.equals(event.asStartElement().getName())) {
                final Attribute rel = event.asStartElement()
                        .getAttributeByName(QName.valueOf(Constants.ATTR_REL));
                if (rel != null) {
                    if (Constants.NEXT_LINK_REL.equals(rel.getValue())) {
                        final Attribute href = event.asStartElement()
                                .getAttributeByName(QName.valueOf(Constants.ATTR_HREF));
                        if (href != null) {
                            delta.setNext(URI.create(href.getValue()));
                        }
                    }
                    if (Constants.NS_DELTA_LINK_REL.equals(rel.getValue())) {
                        final Attribute href = event.asStartElement()
                                .getAttributeByName(QName.valueOf(Constants.ATTR_HREF));
                        if (href != null) {
                            delta.setDeltaLink(URI.create(href.getValue()));
                        }
                    }
                }
            } else if (Constants.QNAME_ATOM_ELEM_ENTRY.equals(event.asStartElement().getName())) {
                delta.getEntities().add(entity(reader, event.asStartElement()));
            } else if (deletedEntryQName.equals(event.asStartElement().getName())) {
                final DeletedEntity deletedEntity = new DeletedEntity();

                final Attribute ref = event.asStartElement()
                        .getAttributeByName(QName.valueOf(Constants.ATTR_REF));
                if (ref != null) {
                    deletedEntity.setId(URI.create(ref.getValue()));
                }
                final Attribute reason = event.asStartElement().getAttributeByName(reasonQName);
                if (reason != null) {
                    deletedEntity.setReason(Reason.valueOf(reason.getValue()));
                }

                delta.getDeletedEntities().add(deletedEntity);
            } else if (linkQName.equals(event.asStartElement().getName())
                    || deletedLinkQName.equals(event.asStartElement().getName())) {

                final DeltaLink link = new DeltaLink();

                final Attribute source = event.asStartElement()
                        .getAttributeByName(QName.valueOf(Constants.ATTR_SOURCE));
                if (source != null) {
                    link.setSource(URI.create(source.getValue()));
                }
                final Attribute relationship = event.asStartElement()
                        .getAttributeByName(QName.valueOf(Constants.ATTR_RELATIONSHIP));
                if (relationship != null) {
                    link.setRelationship(relationship.getValue());
                }
                final Attribute target = event.asStartElement()
                        .getAttributeByName(QName.valueOf(Constants.ATTR_TARGET));
                if (target != null) {
                    link.setTarget(URI.create(target.getValue()));
                }

                if (linkQName.equals(event.asStartElement().getName())) {
                    delta.getAddedLinks().add(link);
                } else {
                    delta.getDeletedLinks().add(link);
                }
            }
        }

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

    return delta;
}

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

private Annotation annotation(final XMLEventReader reader, final StartElement start)
        throws XMLStreamException, EdmPrimitiveTypeException {

    final Annotation annotation = new Annotation();

    annotation.setTerm(start.getAttributeByName(QName.valueOf(Constants.ATOM_ATTR_TERM)).getValue());
    valuable(annotation, reader, start);

    return annotation;
}

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

private Entity entityRef(final StartElement start) throws XMLStreamException {
    final Entity entity = new Entity();

    final Attribute entityRefId = start.getAttributeByName(Constants.QNAME_ATOM_ATTR_ID);
    if (entityRefId != null) {
        entity.setId(URI.create(entityRefId.getValue()));
    }//from w  w  w. ja  v  a  2  s. com

    return entity;
}

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

private Entity entity(final XMLEventReader reader, final StartElement start)
        throws XMLStreamException, EdmPrimitiveTypeException {
    final Entity entity;
    if (entryRefQName.equals(start.getName())) {
        entity = entityRef(start);/*from  w w  w .  j  ava2s.  c  o  m*/
    } else if (Constants.QNAME_ATOM_ELEM_ENTRY.equals(start.getName())) {
        entity = new Entity();
        final Attribute xmlBase = start.getAttributeByName(Constants.QNAME_ATTR_XML_BASE);
        if (xmlBase != null) {
            entity.setBaseURI(URI.create(xmlBase.getValue()));
        }

        final Attribute etag = start.getAttributeByName(etagQName);
        if (etag != null) {
            entity.setETag(etag.getValue());
        }

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

            if (event.isStartElement()) {
                if (Constants.QNAME_ATOM_ELEM_ID.equals(event.asStartElement().getName())) {
                    common(reader, event.asStartElement(), entity, "id");
                } else if (Constants.QNAME_ATOM_ELEM_TITLE.equals(event.asStartElement().getName())) {
                    common(reader, event.asStartElement(), entity, "title");
                } else if (Constants.QNAME_ATOM_ELEM_SUMMARY.equals(event.asStartElement().getName())) {
                    common(reader, event.asStartElement(), entity, "summary");
                } else if (Constants.QNAME_ATOM_ELEM_UPDATED.equals(event.asStartElement().getName())) {
                    common(reader, event.asStartElement(), entity, "updated");
                } else if (Constants.QNAME_ATOM_ELEM_CATEGORY.equals(event.asStartElement().getName())) {
                    final Attribute term = event.asStartElement()
                            .getAttributeByName(QName.valueOf(Constants.ATOM_ATTR_TERM));
                    if (term != null) {
                        entity.setType(new EdmTypeInfo.Builder().setTypeExpression(term.getValue()).build()
                                .internal());
                    }
                } else if (Constants.QNAME_ATOM_ELEM_LINK.equals(event.asStartElement().getName())) {
                    final Link link = new Link();
                    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 (Constants.SELF_LINK_REL.equals(link.getRel())) {
                        entity.setSelfLink(link);
                    } else if (Constants.EDIT_LINK_REL.equals(link.getRel())) {
                        entity.setEditLink(link);
                    } else if (Constants.EDITMEDIA_LINK_REL.equals(link.getRel())) {
                        final Attribute mediaETag = event.asStartElement().getAttributeByName(etagQName);
                        if (mediaETag != null) {
                            entity.setMediaETag(mediaETag.getValue());
                        }
                    } else if (link.getRel().startsWith(Constants.NS_NAVIGATION_LINK_REL)) {
                        entity.getNavigationLinks().add(link);
                        inline(reader, event.asStartElement(), link);
                    } else if (link.getRel().startsWith(Constants.NS_ASSOCIATION_LINK_REL)) {
                        entity.getAssociationLinks().add(link);
                    } else if (link.getRel().startsWith(Constants.NS_MEDIA_EDIT_LINK_REL)
                            || link.getRel().startsWith(Constants.NS_MEDIA_READ_LINK_REL)) {
                        final Attribute metag = event.asStartElement().getAttributeByName(etagQName);
                        if (metag != null) {
                            link.setMediaETag(metag.getValue());
                        }
                        entity.getMediaEditLinks().add(link);
                    }
                } else if (actionQName.equals(event.asStartElement().getName())) {
                    final Operation operation = new Operation();
                    final Attribute metadata = event.asStartElement()
                            .getAttributeByName(QName.valueOf(Constants.ATTR_METADATA));
                    if (metadata != null) {
                        operation.setMetadataAnchor(metadata.getValue());
                    }
                    final Attribute title = event.asStartElement()
                            .getAttributeByName(QName.valueOf(Constants.ATTR_TITLE));
                    if (title != null) {
                        operation.setTitle(title.getValue());
                    }
                    final Attribute target = event.asStartElement()
                            .getAttributeByName(QName.valueOf(Constants.ATTR_TARGET));
                    if (target != null) {
                        operation.setTarget(URI.create(target.getValue()));
                    }

                    entity.getOperations().add(operation);
                } else if (Constants.QNAME_ATOM_ELEM_CONTENT.equals(event.asStartElement().getName())) {
                    final Attribute type = event.asStartElement()
                            .getAttributeByName(QName.valueOf(Constants.ATTR_TYPE));
                    if (type == null
                            || ContentType.APPLICATION_XML.toContentTypeString().equals(type.getValue())) {
                        properties(reader, skipBeforeFirstStartElement(reader), entity);
                    } else {
                        entity.setMediaContentType(type.getValue());
                        final Attribute src = event.asStartElement()
                                .getAttributeByName(QName.valueOf(Constants.ATOM_ATTR_SRC));
                        if (src != null) {
                            entity.setMediaContentSource(URI.create(src.getValue()));
                        }
                    }
                } else if (propertiesQName.equals(event.asStartElement().getName())) {
                    properties(reader, event.asStartElement(), entity);
                } else if (annotationQName.equals(event.asStartElement().getName())) {
                    entity.getAnnotations().add(annotation(reader, event.asStartElement()));
                }
            }

            if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
                foundEndEntry = true;
            }
        }
    } else {
        entity = null;
    }

    return entity;
}

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

private EntityCollection entitySet(final XMLEventReader reader, final StartElement start)
        throws XMLStreamException, EdmPrimitiveTypeException {
    if (!Constants.QNAME_ATOM_ELEM_FEED.equals(start.getName())) {
        return null;
    }/* w  w w. jav a  2 s.c  om*/
    final EntityCollection entitySet = new EntityCollection();
    final Attribute xmlBase = start.getAttributeByName(Constants.QNAME_ATTR_XML_BASE);
    if (xmlBase != null) {
        entitySet.setBaseURI(URI.create(xmlBase.getValue()));
    }

    boolean foundEndFeed = false;
    while (reader.hasNext() && !foundEndFeed) {
        final XMLEvent event = reader.nextEvent();
        if (event.isStartElement()) {
            if (countQName.equals(event.asStartElement().getName())) {
                count(reader, event.asStartElement(), entitySet);
            } else if (Constants.QNAME_ATOM_ELEM_ID.equals(event.asStartElement().getName())) {
                common(reader, event.asStartElement(), entitySet, "id");
            } else if (Constants.QNAME_ATOM_ELEM_TITLE.equals(event.asStartElement().getName())) {
                common(reader, event.asStartElement(), entitySet, "title");
            } else if (Constants.QNAME_ATOM_ELEM_SUMMARY.equals(event.asStartElement().getName())) {
                common(reader, event.asStartElement(), entitySet, "summary");
            } else if (Constants.QNAME_ATOM_ELEM_UPDATED.equals(event.asStartElement().getName())) {
                common(reader, event.asStartElement(), entitySet, "updated");
            } else if (Constants.QNAME_ATOM_ELEM_LINK.equals(event.asStartElement().getName())) {
                final Attribute rel = event.asStartElement()
                        .getAttributeByName(QName.valueOf(Constants.ATTR_REL));
                if (rel != null) {
                    if (Constants.NEXT_LINK_REL.equals(rel.getValue())) {
                        final Attribute href = event.asStartElement()
                                .getAttributeByName(QName.valueOf(Constants.ATTR_HREF));
                        if (href != null) {
                            entitySet.setNext(URI.create(href.getValue()));
                        }
                    }
                    if (Constants.NS_DELTA_LINK_REL.equals(rel.getValue())) {
                        final Attribute href = event.asStartElement()
                                .getAttributeByName(QName.valueOf(Constants.ATTR_HREF));
                        if (href != null) {
                            entitySet.setDeltaLink(URI.create(href.getValue()));
                        }
                    }
                }
            } else if (Constants.QNAME_ATOM_ELEM_ENTRY.equals(event.asStartElement().getName())) {
                entitySet.getEntities().add(entity(reader, event.asStartElement()));
            } else if (entryRefQName.equals(event.asStartElement().getName())) {
                entitySet.getEntities().add(entityRef(event.asStartElement()));
            } else if (annotationQName.equals(event.asStartElement().getName())) {
                entitySet.getAnnotations().add(annotation(reader, event.asStartElement()));
            }
        }

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

    return entitySet;
}

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

private <T> ResWrap<T> getContainer(final StartElement start, final T object) {
    final Attribute context = start.getAttributeByName(contextQName);
    final Attribute metadataETag = start.getAttributeByName(metadataEtagQName);

    return new ResWrap<T>(context == null ? null : URI.create(context.getValue()),
            metadataETag == null ? null : metadataETag.getValue(), object);
}

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

public Geospatial deserialize(final XMLEventReader reader, final StartElement start,
        final EdmPrimitiveTypeKind type) throws XMLStreamException {

    SRID srid = null;//from w w  w .  ja v a  2  s . c  o m
    final Attribute srsName = start.getAttributeByName(Constants.QNAME_ATTR_SRSNAME);
    if (srsName != null) {
        srid = SRID.valueOf(StringUtils.substringAfterLast(srsName.getValue(), "/"));
    }

    Geospatial value;

    switch (type) {
    case GeographyPoint:
    case GeometryPoint:
        value = points(reader, start, type, srid).get(0);
        break;

    case GeographyMultiPoint:
    case GeometryMultiPoint:
        value = multipoint(reader, start, type, srid);
        break;

    case GeographyLineString:
    case GeometryLineString:
        value = lineString(reader, start, type, srid);
        break;

    case GeographyMultiLineString:
    case GeometryMultiLineString:
        value = multiLineString(reader, start, type, srid);
        break;

    case GeographyPolygon:
    case GeometryPolygon:
        value = polygon(reader, start, type, srid);
        break;

    case GeographyMultiPolygon:
    case GeometryMultiPolygon:
        value = multiPolygon(reader, start, type, srid);
        break;

    case GeographyCollection:
    case GeometryCollection:
        value = collection(reader, start, type, srid);
        break;

    default:
        value = null;
    }

    return value;
}

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

public Geospatial deserialize(final XMLEventReader reader, final StartElement start,
        final EdmPrimitiveTypeKind type) throws XMLStreamException {

    String crs = null;//w  w w  . j  a v  a 2 s .  c  o  m
    final Attribute srsName = start.getAttributeByName(Constants.QNAME_ATTR_SRSNAME);
    if (srsName != null) {
        crs = StringUtils.substringAfterLast(srsName.getValue(), "/");
    }

    Geospatial value;

    switch (type) {
    case GeographyPoint:
    case GeometryPoint:
        value = points(reader, start, type, crs).get(0);
        break;

    case GeographyMultiPoint:
    case GeometryMultiPoint:
        value = multipoint(reader, start, type, crs);
        break;

    case GeographyLineString:
    case GeometryLineString:
        value = lineString(reader, start, type, crs);
        break;

    case GeographyMultiLineString:
    case GeometryMultiLineString:
        value = multiLineString(reader, start, type, crs);
        break;

    case GeographyPolygon:
    case GeometryPolygon:
        value = polygon(reader, start, type, crs);
        break;

    case GeographyMultiPolygon:
    case GeometryMultiPolygon:
        value = multiPolygon(reader, start, type, crs);
        break;

    case GeographyCollection:
    case GeometryCollection:
        value = collection(reader, start, type, crs);
        break;

    default:
        value = null;
    }

    return value;
}

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

public AtomPropertyImpl deserialize(final XMLEventReader reader, final StartElement start)
        throws XMLStreamException {

    final AtomPropertyImpl property = new AtomPropertyImpl();
    property.setName(start.getName().getLocalPart());

    final Attribute typeAttr = start.getAttributeByName(this.typeQName);

    Value value;/*  w w w  . j  ava  2s .c  om*/
    final Attribute nullAttr = start.getAttributeByName(this.nullQName);
    final String typeAttrValue = typeAttr == null ? null : typeAttr.getValue();

    if (nullAttr == null) {
        final EdmTypeInfo typeInfo = StringUtils.isBlank(typeAttrValue) ? null
                : new EdmTypeInfo.Builder().setTypeExpression(typeAttrValue).build();

        if (typeInfo != null) {
            property.setType(typeInfo.getTypeExpression());
        }

        final ODataPropertyType propType = typeInfo == null ? guessPropertyType(reader)
                : typeInfo.isCollection() ? ODataPropertyType.COLLECTION
                        : typeInfo.isPrimitiveType() ? ODataPropertyType.PRIMITIVE : ODataPropertyType.COMPLEX;

        switch (propType) {
        case COLLECTION:
            value = fromCollection(reader, start, typeInfo);
            break;

        case COMPLEX:
            value = fromComplex(reader, start);
            break;

        case PRIMITIVE:
            value = fromPrimitive(reader, start, typeInfo);
            break;

        case EMPTY:
        default:
            value = new PrimitiveValueImpl(StringUtils.EMPTY);
        }
    } else {
        value = new NullValueImpl();
    }

    property.setValue(value);

    return property;
}