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

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

Introduction

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

Prototype

public StartElement asStartElement();

Source Link

Document

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

Usage

From source file:org.codice.ddf.spatial.ogc.wfs.transformer.handlebars.HandlebarsWfsFeatureTransformer.java

/**
 * Reads in the FeatureMember from the input stream, populating the contextMap with the XML tag
 * names and values//from   w  w w  .  j  a va  2 s .c o m
 *
 * @param inputStream the stream containing the FeatureMember xml document
 */
private void populateContextMap(InputStream inputStream, Map<String, String> contextMap) {
    Map<String, String> namespaces = new HashMap<>();
    boolean canHandleFeatureType = false;
    try {
        XMLEventReader xmlEventReader = getXmlEventReader(inputStream);

        String elementName = null;
        while (xmlEventReader.hasNext()) {
            XMLEvent xmlEvent = xmlEventReader.nextEvent();
            if (xmlEvent.isStartElement()) {
                StartElement startElement = xmlEvent.asStartElement();
                elementName = startElement.getName().getLocalPart();
                canHandleFeatureType |= processStartElement(xmlEventReader, startElement, namespaces,
                        contextMap, canHandleFeatureType);
                addXmlAttributesToContextMap(startElement, contextMap);
            } else if (xmlEvent.isCharacters()) {
                contextMap.put(elementName, xmlEvent.asCharacters().getData());
            }
        }
        if (!canHandleFeatureType) {
            contextMap.clear();
        }
    } catch (XMLStreamException e) {
        LOGGER.debug("Error transforming feature to metacard.", e);
    }
}

From source file:org.codice.ddf.spatial.ogc.wfs.transformer.handlebars.HandlebarsWfsFeatureTransformer.java

private boolean processStartElement(XMLEventReader xmlEventReader, StartElement startElement,
        Map<String, String> namespaces, Map<String, String> contextMap, boolean featureTypeFound)
        throws XMLStreamException {
    mapNamespaces(startElement, namespaces);
    if (!featureTypeFound) {
        if (canHandleFeatureType(startElement)) {
            String id = getIdAttributeValue(startElement, namespaces,
                    getNamespaceAlias(GML_NAMESPACE, namespaces));
            contextMap.put(METACARD_ID, id);
            return true;
        }// w w w .  j  a  v a2  s  . c  o m
    } else {
        XMLEvent eventPeek = xmlEventReader.peek();
        if (eventPeek.isStartElement() && isGmlElement(eventPeek.asStartElement(), namespaces)) {
            readGmlData(xmlEventReader, startElement.getName().getLocalPart(), contextMap);
        }
    }
    return false;
}

From source file:org.codice.ddf.spatial.ogc.wfs.transformer.handlebars.HandlebarsWfsFeatureTransformer.java

private void readGmlData(XMLEventReader xmlEventReader, String elementName, Map<String, String> contextMap)
        throws XMLStreamException {

    if (!xmlEventReader.peek().isStartElement()) {
        LOGGER.debug("Problem reading gml data for element: {}. Invalid xml element provided.", elementName);
        return;//from  w w  w.  j a v a  2s .  c  o  m
    }

    StringWriter stringWriter = new StringWriter();
    XMLEventWriter eventWriter = XML_OUTPUT_FACTORY.createXMLEventWriter(stringWriter);

    if (eventWriter == null) {
        LOGGER.debug("Problem reading gml data for element: {}. Event writer is null", elementName);
        return;
    }

    int count = 0;
    boolean addEvent = true;

    try {
        while (addEvent) {
            XMLEvent xmlEvent = xmlEventReader.nextEvent();

            // populate the start element with the namespaces
            if (xmlEvent.isStartElement()) {
                xmlEvent = addNamespacesToStartElement(xmlEvent.asStartElement());
                count++;
            } else if (xmlEvent.isEndElement()) {
                if (count == 0) {
                    addEvent = false;
                    eventWriter.flush();
                    LOGGER.debug("String writer: {}", stringWriter);
                    contextMap.put(elementName, stringWriter.toString());
                }
                count--;
            }

            if (addEvent) {
                eventWriter.add(xmlEvent);
            }
        }
    } finally {
        eventWriter.close();
    }
}

From source file:org.dataconservancy.model.builder.WrappingEventReaderTest.java

private void commonWrappedEventTypeTest(WrappingEventReader reader) throws XMLStreamException {
    assertTrue(reader.hasNext()); // START_DOC
    XMLEvent e = reader.nextEvent();
    assertEquals(START_DOCUMENT, e.getEventType());

    assertTrue(reader.hasNext()); // START_ELEMENT dcp
    e = reader.nextEvent();//from w ww .j a  v a2  s.c o  m
    assertEquals(START_ELEMENT, e.getEventType());
    assertEquals(Q_DCP, e.asStartElement().getName());

    assertTrue(reader.hasNext()); // START_ELEMENT Files
    e = reader.nextEvent();
    assertEquals(START_ELEMENT, e.getEventType());
    assertEquals(E_FILES, e.asStartElement().getName().getLocalPart());

    commonFileWrappingTest(reader);

    assertTrue(reader.hasNext()); // END_ELEMENT Files
    assertEquals(END_ELEMENT, reader.nextEvent().getEventType());

    assertTrue(reader.hasNext()); // END_ELEMENT dcp
    assertEquals(END_ELEMENT, reader.nextEvent().getEventType());
}

From source file:org.dataconservancy.model.builder.WrappingEventReaderTest.java

private void commonFileWrappingTest(XMLEventReader reader) throws XMLStreamException {
    assertTrue(reader.hasNext()); // START_ELEMENT File
    XMLEvent e = reader.nextEvent();
    assertEquals(START_ELEMENT, e.getEventType());
    assertEquals(E_FILE, e.asStartElement().getName().getLocalPart());

    assertTrue(reader.hasNext()); // START_ELEMENT doc
    e = reader.nextEvent();/*from w  w w .  j a  v  a  2  s  .  c  o m*/
    assertEquals(START_ELEMENT, e.getEventType());
    assertEquals("doc", e.asStartElement().getName().getLocalPart());

    assertTrue(reader.hasNext()); // CHARACTERS
    e = reader.nextEvent();
    assertEquals(CHARACTERS, e.getEventType());

    assertTrue(reader.hasNext()); // END_ELEMENT doc
    e = reader.nextEvent();
    assertEquals(END_ELEMENT, e.getEventType());
    assertEquals("doc", e.asEndElement().getName().getLocalPart());

    assertTrue(reader.hasNext()); // END_ELEMENT File
    e = reader.nextEvent();
    assertEquals(END_ELEMENT, e.getEventType());
    assertEquals(E_FILE, e.asEndElement().getName().getLocalPart());
}

From source file:org.dataconservancy.model.builder.WrappingEventReaderTest.java

private void commonPeekFileTest(XMLEventReader reader) throws XMLStreamException {
    // The input XML is:
    // <File><doc> </doc></File>

    // <File>
    XMLEvent peekEvent = reader.peek();
    assertEquals(START_ELEMENT, peekEvent.getEventType());
    assertEquals(E_FILE, peekEvent.asStartElement().getName().getLocalPart());
    // idempotent
    assertEquals(peekEvent, reader.peek());
    XMLEvent actualEvent = reader.nextEvent();
    assertEquals(peekEvent, actualEvent);

    // <doc>
    peekEvent = reader.peek();//from ww w.  j  a v  a  2 s  .  co  m
    assertEquals(START_ELEMENT, peekEvent.getEventType());
    assertEquals("doc", peekEvent.asStartElement().getName().getLocalPart());
    // idempotent
    assertEquals(peekEvent, reader.peek());
    actualEvent = reader.nextEvent();
    assertEquals(peekEvent, actualEvent);

    peekEvent = reader.peek();
    assertEquals(CHARACTERS, peekEvent.getEventType());
    // idempotent
    assertEquals(peekEvent, reader.peek());
    actualEvent = reader.nextEvent();
    assertEquals(peekEvent, actualEvent);

    // </doc>
    peekEvent = reader.peek();
    assertEquals(END_ELEMENT, peekEvent.getEventType());
    assertEquals("doc", peekEvent.asEndElement().getName().getLocalPart());
    // idempotent
    assertEquals(peekEvent, reader.peek());
    actualEvent = reader.nextEvent();
    assertEquals(peekEvent, actualEvent);

    // </File>
    peekEvent = reader.peek();
    assertEquals(END_ELEMENT, peekEvent.getEventType());
    assertEquals(E_FILE, peekEvent.asEndElement().getName().getLocalPart());
    // idempotent
    assertEquals(peekEvent, reader.peek());
    actualEvent = reader.nextEvent();
    // fails, bc we are preserving namespaces? assertEquals(peekEvent, actualEvent);
    // do this instead
    assertEquals(peekEvent.asEndElement().getName().getLocalPart(),
            actualEvent.asEndElement().getName().getLocalPart());
}

From source file:org.dataconservancy.model.builder.WrappingEventReaderTest.java

@Test
public void testDeliverableUnitWithWrappingEventReader() throws XMLStreamException {
    final XMLEventReader reader = new WrappingEventReader(
            readerFactory.createXMLEventReader(IOUtils.toInputStream(DU_XML)));

    XMLEvent e = reader.nextEvent();
    assertEquals(START_DOCUMENT, e.getEventType());

    e = reader.nextEvent();//from  www. ja va 2 s  . c  om
    assertEquals(COMMENT, e.getEventType());

    e = reader.nextEvent();
    assertEquals(START_ELEMENT, e.getEventType());
    assertEquals(Q_DCP, e.asStartElement().getName());

    e = reader.nextEvent();
    assertEquals(START_ELEMENT, e.getEventType());
    assertEquals(Q_DUS, e.asStartElement().getName());

    e = reader.nextEvent();
    assertEquals(START_ELEMENT, e.getEventType());
    assertEquals(Q_DU, e.asStartElement().getName());

    e = reader.nextEvent();
    assertEquals(CHARACTERS, e.getEventType());

    e = reader.nextEvent();
    assertEquals(START_ELEMENT, e.getEventType());
    assertEquals(new QName(NS_URI, "collection"), e.asStartElement().getName());

    // Skip to the <metadata> element
    while ((e = reader.nextTag()) != null) {
        if (e.isStartElement() && e.asStartElement().getName().getLocalPart().equals("metadata")) {
            break;
        }
    }

    e = reader.nextTag();
    assertEquals(START_ELEMENT, e.getEventType());
    assertEquals(new QName("http://www.amazon.com", "md"), e.asStartElement().getName());

    e = reader.nextTag();
    assertEquals(START_ELEMENT, e.getEventType());
    assertEquals(new QName("http://www.amazon.com", "origReleaseDate"), e.asStartElement().getName());
}

From source file:org.eclipse.smila.utils.xml.stax.XmlSnippetSplitter.java

/**
 * Checks if the current tag is the begin of a snippet.
 * //from  ww  w  .j  a  va  2  s .co  m
 * @param event
 *          the XMLEvent
 * @return true if the tag name and the start/end tag settings of the _begin MarkerTag match the current events
 *         properties.
 */
private boolean isSnippetBegin(final XMLEvent event) {
    boolean condition = false;
    if (_begin.isEndTag()) {
        condition = event.isEndElement();
    } else {
        condition = event.isStartElement();
    }
    return condition && _begin.getName().equals(event.asStartElement().getName().getLocalPart());
}

From source file:org.jasig.portal.layout.TransientUserLayoutXMLEventReader.java

@Override
protected Deque<XMLEvent> getAdditionalEvents(XMLEvent event) {
    if (event.isStartElement()) {
        final StartElement startElement = event.asStartElement();

        //All following logic requires an ID attribute, ignore any element without one
        final Attribute idAttribute = startElement.getAttributeByName(IUserLayoutManager.ID_ATTR_NAME);
        if (idAttribute == null) {
            return null;
        }/*from w w  w  .  j a va  2s .c  o  m*/

        //Handle adding a transient folder to the root element
        if (this.rootFolderId.equals(idAttribute.getValue())) {
            final QName name = startElement.getName();
            final String namespaceURI = name.getNamespaceURI();
            final String prefix = name.getPrefix();

            final Deque<XMLEvent> transientEventBuffer = new LinkedList<XMLEvent>();

            final Collection<Attribute> transientFolderAttributes = new LinkedList<Attribute>();
            transientFolderAttributes.add(
                    EVENT_FACTORY.createAttribute("ID", TransientUserLayoutManagerWrapper.TRANSIENT_FOLDER_ID));
            transientFolderAttributes.add(EVENT_FACTORY.createAttribute("type", "regular"));
            transientFolderAttributes.add(EVENT_FACTORY.createAttribute("hidden", "true"));
            transientFolderAttributes.add(EVENT_FACTORY.createAttribute("unremovable", "true"));
            transientFolderAttributes.add(EVENT_FACTORY.createAttribute("immutable", "true"));
            transientFolderAttributes.add(EVENT_FACTORY.createAttribute("name", "Transient Folder"));

            final StartElement transientFolder = EVENT_FACTORY.createStartElement(prefix, namespaceURI,
                    IUserLayoutManager.FOLDER, transientFolderAttributes.iterator(), null);
            transientEventBuffer.add(transientFolder);

            //append channel element iff subscribeId describes a transient channel, and not a regular layout channel
            final String subscribeId = this.userLayoutManager.getFocusedId();
            if (null != subscribeId && !subscribeId.equals("")
                    && this.userLayoutManager.isTransientChannel(subscribeId)) {
                IPortletDefinition chanDef = null;
                try {
                    chanDef = this.userLayoutManager.getChannelDefinition(subscribeId);
                } catch (Exception e) {
                    this.logger.error("Could not obtain IChannelDefinition for subscribe id: " + subscribeId,
                            e);
                }

                if (chanDef != null) {
                    //TODO Move IChannelDefinition/IPortletDefinition -> StAX events code somewhere reusable
                    final Collection<Attribute> channelAttrs = new LinkedList<Attribute>();
                    channelAttrs.add(EVENT_FACTORY.createAttribute("ID", subscribeId));
                    channelAttrs.add(EVENT_FACTORY.createAttribute("typeID",
                            Integer.toString(chanDef.getType().getId())));
                    channelAttrs.add(EVENT_FACTORY.createAttribute("hidden", "false"));
                    channelAttrs.add(EVENT_FACTORY.createAttribute("unremovable", "true"));
                    channelAttrs.add(EVENT_FACTORY.createAttribute("name", chanDef.getName()));
                    channelAttrs.add(EVENT_FACTORY.createAttribute("description", chanDef.getDescription()));
                    channelAttrs.add(EVENT_FACTORY.createAttribute("title", chanDef.getTitle()));
                    channelAttrs.add(EVENT_FACTORY.createAttribute("chanID",
                            chanDef.getPortletDefinitionId().getStringId()));
                    channelAttrs.add(EVENT_FACTORY.createAttribute("fname", chanDef.getFName()));
                    channelAttrs.add(
                            EVENT_FACTORY.createAttribute("timeout", Integer.toString(chanDef.getTimeout())));
                    channelAttrs.add(EVENT_FACTORY.createAttribute("transient", "true"));

                    final StartElement startChannel = EVENT_FACTORY.createStartElement(prefix, namespaceURI,
                            IUserLayoutManager.CHANNEL, channelAttrs.iterator(), null);
                    transientEventBuffer.offer(startChannel);

                    // add channel parameter elements
                    for (final IPortletDefinitionParameter parm : chanDef.getParameters()) {
                        final Collection<Attribute> parameterAttrs = new LinkedList<Attribute>();
                        parameterAttrs.add(EVENT_FACTORY.createAttribute("name", parm.getName()));
                        parameterAttrs.add(EVENT_FACTORY.createAttribute("value", parm.getValue()));

                        final StartElement startParameter = EVENT_FACTORY.createStartElement(prefix,
                                namespaceURI, IUserLayoutManager.PARAMETER, parameterAttrs.iterator(), null);
                        transientEventBuffer.offer(startParameter);

                        final EndElement endParameter = EVENT_FACTORY.createEndElement(prefix, namespaceURI,
                                IUserLayoutManager.PARAMETER, null);
                        transientEventBuffer.offer(endParameter);
                    }

                    final EndElement endChannel = EVENT_FACTORY.createEndElement(prefix, namespaceURI,
                            IUserLayoutManager.CHANNEL, null);
                    transientEventBuffer.offer(endChannel);
                }
            }

            final EndElement endFolder = EVENT_FACTORY.createEndElement(prefix, namespaceURI,
                    IUserLayoutManager.FOLDER, null);
            transientEventBuffer.offer(endFolder);

            return transientEventBuffer;
        }
    }

    return null;
}

From source file:org.jonross.coercion.v2.BinderBase.java

/**
 * Called from each {@link BlockHandler} to check an {@link XMLEvent}
 * against a set of QNames./*from   www  . ja  v a  2s  . c  om*/
 * <p>
 * For a start element, return the index of the matching name, or -1 if no
 * match and push a suppression handler (ignore that entire block of XML and
 * all enclosed elements.)
 * </p>
 * <p>
 * For an end element, pop the handler.
 * </p>
 */

protected int match(XMLEvent event, QName[] qnames) {
    if (event.isStartElement()) {
        StartElement start = event.asStartElement();
        QName name = start.getName();

        for (int i = 0; i < qnames.length - 1; i++)
            if (qnames[i].equals(name)) {
                if (log.isDebugEnabled())
                    log.debug(event + " matches " + qnames[i] + ", index = " + i);
                return i;
            }

        start(new SuppressionHandler());
    } else if (event.isEndElement()) {
        end();
    }

    return -1;
}