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

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

Introduction

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

Prototype

public boolean isStartElement();

Source Link

Document

A utility function to check if this event is a StartElement.

Usage

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

private LinkCollection linkCollection(final XMLEventReader reader) throws XMLStreamException {

    final LinkCollectionImpl linkCollection = new LinkCollectionImpl();

    boolean isURI = false;
    boolean isNext = false;
    while (reader.hasNext()) {
        final XMLEvent event = reader.nextEvent();
        if (event.isStartElement()) {
            isURI = uriQName.equals(event.asStartElement().getName());
            isNext = nextQName.equals(event.asStartElement().getName());
        }//from   w  ww .  java2 s .co m

        if (event.isCharacters() && !event.asCharacters().isWhiteSpace()) {
            if (isURI) {
                linkCollection.getLinks().add(URI.create(event.asCharacters().getData()));
                isURI = false;
            } else if (isNext) {
                linkCollection.setNext(URI.create(event.asCharacters().getData()));
                isNext = false;
            }
        }
    }

    return linkCollection;
}

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

private void properties(final XMLEventReader reader, final StartElement start, final EntityImpl entity)
        throws XMLStreamException, EdmPrimitiveTypeException {

    final Map<String, List<Annotation>> annotations = new HashMap<String, List<Annotation>>();

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

        if (event.isStartElement()) {
            if (annotationQName.equals(event.asStartElement().getName())) {
                final String target = event.asStartElement()
                        .getAttributeByName(QName.valueOf(Constants.ATTR_TARGET)).getValue();
                if (!annotations.containsKey(target)) {
                    annotations.put(target, new ArrayList<Annotation>());
                }/*  ww w  .  j a  v  a2  s  .  c om*/
                annotations.get(target).add(annotation(reader, event.asStartElement()));
            } else {
                entity.getProperties().add(property(reader, event.asStartElement()));
            }
        }

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

    for (Property property : entity.getProperties()) {
        if (annotations.containsKey(property.getName())) {
            property.getAnnotations().addAll(annotations.get(property.getName()));
        }
    }
}

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

private Entity entity(final XMLEventReader reader, final StartElement start)
        throws XMLStreamException, EdmPrimitiveTypeException {
    final EntityImpl entity;
    if (entryRefQName.equals(start.getName())) {
        entity = entityRef(start);/*from w  w  w  .j a  v a 2  s  .co m*/
    } else if (Constants.QNAME_ATOM_ELEM_ENTRY.equals(start.getName())) {
        entity = new EntityImpl();
        final Attribute xmlBase = start.getAttributeByName(Constants.QNAME_ATTR_XML_BASE);
        if (xmlBase != null) {
            entity.setBaseURI(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 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 (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(
                            version.getNamespace(ODataServiceVersion.NamespaceKey.NAVIGATION_LINK_REL))) {

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

                        entity.getAssociationLinks().add(link);
                    } else if (link.getRel().startsWith(
                            version.getNamespace(ODataServiceVersion.NamespaceKey.MEDIA_EDIT_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 ODataOperation operation = new ODataOperation();
                    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.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.commons.core.serialization.AtomDeserializer.java

private EntitySet entitySet(final XMLEventReader reader, final StartElement start)
        throws XMLStreamException, EdmPrimitiveTypeException {
    if (!Constants.QNAME_ATOM_ELEM_FEED.equals(start.getName())) {
        return null;
    }/*from   w ww  .  jav a2 s  . com*/
    final EntitySetImpl entitySet = new EntitySetImpl();
    final Attribute xmlBase = start.getAttributeByName(Constants.QNAME_ATTR_XML_BASE);
    if (xmlBase != null) {
        entitySet.setBaseURI(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 (ODataServiceVersion.V40.getNamespace(NamespaceKey.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.fit.metadata.Metadata.java

public Metadata(final InputStream is) {
    DEF_NS = Constants.get(ConstantKey.EDM_NS);
    schemas = new HashMap<String, Schema>();

    try {/*w w w . ja va  2s  .  c  o m*/
        final XMLInputFactory ifactory = XMLInputFactory.newInstance();
        final XMLEventReader reader = ifactory.createXMLEventReader(is,
                org.apache.olingo.commons.api.Constants.UTF8);

        try {
            while (reader.hasNext()) {
                final XMLEvent event = reader.nextEvent();

                if (event.isStartElement()
                        && event.asStartElement().getName().equals(new QName(DEF_NS, "Schema"))) {
                    final Schema schema = getSchema(event.asStartElement(), reader);
                    schemas.put(schema.getNamespace(), schema);
                }
            }

        } catch (Exception ignore) {
            // ignore
        } finally {
            reader.close();
            IOUtils.closeQuietly(is);
        }
    } catch (Exception e) {
        LOG.error("Error parsing metadata", e);
    }

    for (Map.Entry<String, Schema> schemaEntry : schemas.entrySet()) {
        for (EntityType entityType : schemaEntry.getValue().getEntityTypes()) {
            for (NavigationProperty property : entityType.getNavigationProperties()) {
                property.setFeed(property.getType().startsWith("Collection("));

                final Collection<EntitySet> entitySets = schemaEntry.getValue().getContainers().iterator()
                        .next().getEntitySets(schemaEntry.getKey(), entityType.getName());

                final Iterator<EntitySet> iter = entitySets.iterator();
                boolean found = false;

                while (!found && iter.hasNext()) {
                    final EntitySet entitySet = iter.next();
                    final String target = entitySet.getTarget(property.getName());
                    if (StringUtils.isNotBlank(target)) {
                        property.setTarget(entitySet.getTarget(property.getName()));
                        found = true;
                    }
                }
            }
        }
    }
}

From source file:org.apache.olingo.fit.metadata.Metadata.java

private Schema getSchema(final StartElement start, final XMLEventReader reader) throws XMLStreamException {
    final Schema schema = new Schema(start.getAttributeByName(new QName("Namespace")).getValue());

    boolean completed = false;

    while (!completed && reader.hasNext()) {
        XMLEvent event = reader.nextEvent();

        if (event.isStartElement() && event.asStartElement().getName().equals(new QName(DEF_NS, "EntityType"))
                || event.isStartElement()
                        && event.asStartElement().getName().equals(new QName(DEF_NS, "ComplexType"))) {
            final EntityType entityType = getEntityType(event.asStartElement(), reader);
            schema.addEntityType(entityType.getName(), entityType);
        } else if (event.isStartElement()
                && event.asStartElement().getName().equals(new QName(DEF_NS, "EntityContainer"))) {
            final org.apache.olingo.fit.metadata.Container container = getContainer(event.asStartElement(),
                    reader);/*from  w  w w  .  j a va  2 s  . com*/
            schema.addContainer(container.getName(), container);
        } else if (event.isEndElement() && event.asEndElement().getName().equals(start.getName())) {
            completed = true;
        }
    }

    return schema;
}

From source file:org.apache.olingo.fit.metadata.Metadata.java

private org.apache.olingo.fit.metadata.Container getContainer(final StartElement start,
        final XMLEventReader reader) throws XMLStreamException {
    final org.apache.olingo.fit.metadata.Container container = new org.apache.olingo.fit.metadata.Container(
            start.getAttributeByName(new QName("Name")).getValue());

    boolean completed = false;

    while (!completed && reader.hasNext()) {
        XMLEvent event = reader.nextEvent();

        if (event.isStartElement() && (event.asStartElement().getName().equals(new QName(DEF_NS, "EntitySet"))
                || event.asStartElement().getName().equals(new QName(DEF_NS, "Singleton")))) {
            final EntitySet entitySet = getEntitySet(event.asStartElement(), reader);
            container.addEntitySet(entitySet.getName(), entitySet);
        } else if (event.isEndElement() && event.asEndElement().getName().equals(start.getName())) {
            completed = true;/*from   w  w  w.j a v  a2 s .com*/
        }
    }

    return container;
}

From source file:org.apache.olingo.fit.metadata.Metadata.java

private EntityType getEntityType(final StartElement start, final XMLEventReader reader)
        throws XMLStreamException {
    final EntityType entityType = new EntityType(start.getAttributeByName(new QName("Name")).getValue());
    final Attribute baseType = start.getAttributeByName(new QName("BaseType"));
    if (baseType != null) {
        entityType.setBaseType(baseType.getValue());
    }/*  w w w  . ja  v a 2  s .c o m*/
    final Attribute openType = start.getAttributeByName(new QName("OpenType"));
    if (openType != null) {
        entityType.setOpenType(BooleanUtils.toBoolean(openType.getValue()));
    }

    boolean completed = false;

    while (!completed && reader.hasNext()) {
        XMLEvent event = reader.nextEvent();

        if (event.isStartElement() && event.asStartElement().getName().equals(new QName(DEF_NS, "Property"))) {
            final org.apache.olingo.fit.metadata.Property property = getProperty(event.asStartElement());
            entityType.addProperty(property.getName(), property);
        } else if (event.isStartElement()
                && event.asStartElement().getName().equals(new QName(DEF_NS, "NavigationProperty"))) {
            final NavigationProperty property = getNavigationProperty(event.asStartElement());
            entityType.addNavigationProperty(property.getName(), property);
        } else if (event.isEndElement() && event.asEndElement().getName().equals(start.getName())) {
            completed = true;
        }
    }

    return entityType;
}

From source file:org.apache.olingo.fit.metadata.Metadata.java

private EntitySet getEntitySet(final StartElement start, final XMLEventReader reader)
        throws XMLStreamException {
    final EntitySet entitySet = "Singleton".equals(start.getName().getLocalPart())
            ? new EntitySet(start.getAttributeByName(new QName("Name")).getValue(), true)
            : new EntitySet(start.getAttributeByName(new QName("Name")).getValue());

    Attribute type = start.getAttributeByName(new QName("EntityType"));
    if (type == null) {
        type = start.getAttributeByName(new QName("Type"));
        entitySet.setType(type == null ? null : type.getValue());
    } else {//from www.  ja  v a 2 s  .c  o m
        entitySet.setType(type.getValue());
    }

    boolean completed = false;

    while (!completed && reader.hasNext()) {
        XMLEvent event = reader.nextEvent();

        if (event.isStartElement()
                && event.asStartElement().getName().equals(new QName(DEF_NS, "NavigationPropertyBinding"))) {
            final String path = event.asStartElement().getAttributeByName(new QName("Path")).getValue();
            final String target = event.asStartElement().getAttributeByName(new QName("Target")).getValue();
            entitySet.addBinding(path, target);
        } else if (event.isEndElement() && event.asEndElement().getName().equals(start.getName())) {
            completed = true;
        }
    }

    return entitySet;
}

From source file:org.apache.olingo.fit.utils.XMLUtilities.java

@Override
public InputStream replaceProperty(final InputStream src, final InputStream replacement,
        final List<String> path, final boolean justValue) throws Exception {

    final List<String> pathElements = new ArrayList<String>();

    for (String element : path) {
        pathElements.add(Constants.get(ConstantKey.ATOM_PROPERTY_PREFIX) + element);
    }/*from  w w w.j  av a2 s .c  o  m*/

    final XMLEventReader reader = getEventReader(src);

    final ByteArrayOutputStream bos = new ByteArrayOutputStream();
    final XMLEventWriter writer = getEventWriter(bos);

    final Map.Entry<Integer, XMLElement> element = extractElement(reader, writer, pathElements, 0, 3, 4);

    if (justValue) {
        writer.add(element.getValue().getStart());
    }

    final XMLEventReader changesReader = new XMLEventReaderWrapper(replacement);

    while (changesReader.hasNext()) {
        final XMLEvent event = changesReader.nextEvent();
        if (event.isStartElement()
                && event.asStartElement().getName().equals(element.getValue().getStart().getName())) {
            writer.add(element.getValue().getStart());
            writer.add(changesReader);
        } else {
            writer.add(event);
        }
    }

    changesReader.close();
    IOUtils.closeQuietly(replacement);

    if (justValue) {
        writer.add(element.getValue().getEnd());
    }

    writer.add(reader);

    reader.close();
    IOUtils.closeQuietly(src);

    writer.flush();
    writer.close();

    return new ByteArrayInputStream(bos.toByteArray());
}