Search in sources :

Example 31 with EndElement

use of javax.xml.stream.events.EndElement in project rpki-validator-3 by RIPE-NCC.

the class RrdpParser method snapshot.

public Snapshot snapshot(final InputStream inputStream) {
    final Map<String, SnapshotObject> objects = new HashMap<>();
    try {
        final XMLInputFactory factory = XMLInputFactory.newInstance();
        final XMLEventReader eventReader = factory.createXMLEventReader(inputStream);
        String sessionId = null;
        BigInteger serial = null;
        String uri = null;
        StringBuilder base64 = new StringBuilder();
        boolean inPublishElement = false;
        final Base64.Decoder decoder = Base64.getDecoder();
        while (eventReader.hasNext()) {
            final XMLEvent event = eventReader.nextEvent();
            switch(event.getEventType()) {
                case XMLStreamConstants.START_ELEMENT:
                    final StartElement startElement = event.asStartElement();
                    final String qName = startElement.getName().getLocalPart().toLowerCase(Locale.ROOT);
                    switch(qName) {
                        case "publish":
                            uri = getAttr(startElement, "uri", "Uri is not present in 'publish' element");
                            inPublishElement = true;
                            break;
                        case "snapshot":
                            serial = new BigInteger(getAttr(startElement, "serial", "Notification serial is not present"));
                            sessionId = getAttr(startElement, "session_id", "Session id is not present");
                            break;
                    }
                    break;
                case XMLStreamConstants.CHARACTERS:
                    final Characters characters = event.asCharacters();
                    if (inPublishElement) {
                        final String thisBase64 = characters.getData();
                        base64.append(thisBase64.replaceAll("\\s", ""));
                    }
                    break;
                case XMLStreamConstants.END_ELEMENT:
                    final EndElement endElement = event.asEndElement();
                    final String qqName = endElement.getName().getLocalPart().toLowerCase(Locale.ROOT);
                    if ("publish".equals(qqName)) {
                        final byte[] decoded = decoder.decode(base64.toString());
                        objects.put(uri, new SnapshotObject(decoded, uri));
                        inPublishElement = false;
                        base64 = new StringBuilder();
                    }
                    break;
            }
        }
        return new Snapshot(objects, sessionId, serial);
    } catch (XMLStreamException e) {
        throw new RrdpException("Couldn't parse snapshot: ", e);
    }
}
Also used : Base64(java.util.Base64) HashMap(java.util.HashMap) EndElement(javax.xml.stream.events.EndElement) Characters(javax.xml.stream.events.Characters) StartElement(javax.xml.stream.events.StartElement) XMLStreamException(javax.xml.stream.XMLStreamException) XMLEvent(javax.xml.stream.events.XMLEvent) XMLEventReader(javax.xml.stream.XMLEventReader) BigInteger(java.math.BigInteger) XMLInputFactory(javax.xml.stream.XMLInputFactory)

Example 32 with EndElement

use of javax.xml.stream.events.EndElement in project service-proxy by membrane.

the class XOPReconstitutor method fillInXOPParts.

private byte[] fillInXOPParts(InputStream inputStream, HashMap<String, Part> parts) throws XMLStreamException, FactoryConfigurationError {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    XMLEventWriter writer = XMLOutputFactory.newInstance().createXMLEventWriter(baos);
    try {
        XMLEventReader parser = createEventReaderFromStream(inputStream);
        boolean xopIncludeOpen = false;
        while (parser.hasNext()) {
            XMLEvent event = parser.nextEvent();
            if (event instanceof StartElement) {
                StartElement start = (StartElement) event;
                if (XOP_NAMESPACE_URI.equals(start.getName().getNamespaceURI()) && start.getName().getLocalPart().equals("Include")) {
                    String href = start.getAttributeByName(new QName("href")).getValue();
                    if (href.startsWith("cid:"))
                        href = href.substring(4);
                    Part p = parts.get("<" + href + ">");
                    if (p == null)
                        throw new RuntimeException("Did not find multipart with id " + href);
                    writer.add(p.asXMLEvent());
                    xopIncludeOpen = true;
                    continue;
                }
            } else if (event instanceof EndElement) {
                EndElement start = (EndElement) event;
                if (XOP_NAMESPACE_URI.equals(start.getName().getNamespaceURI()) && start.getName().getLocalPart().equals("Include") && xopIncludeOpen) {
                    xopIncludeOpen = false;
                    continue;
                }
            }
            writer.add(event);
        }
        writer.flush();
    } catch (XMLStreamException e) {
        log.warn("Received not-wellformed XML.");
        return null;
    }
    return baos.toByteArray();
}
Also used : StartElement(javax.xml.stream.events.StartElement) XMLStreamException(javax.xml.stream.XMLStreamException) XMLEventWriter(javax.xml.stream.XMLEventWriter) EndElement(javax.xml.stream.events.EndElement) QName(javax.xml.namespace.QName) XMLEvent(javax.xml.stream.events.XMLEvent) XMLEventReader(javax.xml.stream.XMLEventReader) ByteArrayOutputStream(java.io.ByteArrayOutputStream)

Example 33 with EndElement

use of javax.xml.stream.events.EndElement in project S-argo by Expugn.

the class BannerParser method tryRead.

private List<Banner> tryRead(String configFile) throws FailedToReadBannerFileException {
    List<Banner> banners = new ArrayList();
    goldBanners = new ArrayList();
    goldBannersv2 = new ArrayList();
    InputStream in;
    XMLEventReader eventReader;
    Banner banner = null;
    ArrayList<Character> characters = null;
    Character character;
    ArrayList<Weapon> weapons = null;
    Weapon weapon;
    /* CREATE XMLInputFactory AND XMLEventReader */
    XMLInputFactory inputFactory = XMLInputFactory.newInstance();
    try {
        in = new FileInputStream(configFile);
    } catch (FileNotFoundException e) {
        throw new FailedToReadBannerFileException();
    }
    try {
        eventReader = inputFactory.createXMLEventReader(in);
    } catch (XMLStreamException e) {
        try {
            in.close();
        } catch (IOException ex) {
        /* IGNORED */
        }
        throw new FailedToReadBannerFileException();
    }
    /* READ XML FILE */
    while (eventReader.hasNext()) {
        XMLEvent event;
        try {
            event = eventReader.nextEvent();
        } catch (XMLStreamException e) {
            try {
                in.close();
            } catch (IOException ex) {
            /* IGNORED */
            }
            try {
                eventReader.close();
            } catch (XMLStreamException ex) {
            /* IGNORED */
            }
            throw new FailedToReadBannerFileException();
        }
        if (event.isStartElement()) {
            StartElement startElement = event.asStartElement();
            /* CREATE NEW BANNER AND CHARACTER LIST OBJECT */
            if (startElement.getName().getLocalPart().equals("Banner")) {
                banner = new Banner();
                characters = new ArrayList();
                weapons = new ArrayList<>();
                /* GET AND SAVE BANNER ID */
                Iterator<Attribute> attributes = startElement.getAttributes();
                while (attributes.hasNext()) {
                    Attribute attribute = attributes.next();
                    if (attribute.getName().toString().equals("id")) {
                        banner.setBannerID(Integer.parseInt(attribute.getValue()));
                    }
                }
            }
            /* GET AND SAVE BANNER NAME */
            if (event.isStartElement()) {
                if (event.asStartElement().getName().getLocalPart().equals("name")) {
                    try {
                        event = eventReader.nextEvent();
                    } catch (XMLStreamException e) {
                        try {
                            in.close();
                        } catch (IOException ex) {
                        /* IGNORED */
                        }
                        try {
                            eventReader.close();
                        } catch (XMLStreamException ex) {
                        /* IGNORED */
                        }
                        throw new FailedToReadBannerFileException();
                    }
                    banner.setBannerName(event.asCharacters().getData());
                    continue;
                }
            }
            /* GET AND SAVE BANNER TYPE */
            if (event.asStartElement().getName().getLocalPart().equals("type")) {
                try {
                    event = eventReader.nextEvent();
                } catch (XMLStreamException e) {
                    try {
                        in.close();
                    } catch (IOException ex) {
                    /* IGNORED */
                    }
                    try {
                        eventReader.close();
                    } catch (XMLStreamException ex) {
                    /* IGNORED */
                    }
                    throw new FailedToReadBannerFileException();
                }
                banner.setBannerType(Integer.parseInt(event.asCharacters().getData()));
                continue;
            }
            /* GET AND SAVE WEAPON BANNER TYPE */
            if (event.asStartElement().getName().getLocalPart().equals("wepType")) {
                try {
                    event = eventReader.nextEvent();
                } catch (XMLStreamException e) {
                    try {
                        in.close();
                    } catch (IOException ex) {
                    /* IGNORED */
                    }
                    try {
                        eventReader.close();
                    } catch (XMLStreamException ex) {
                    /* IGNORED */
                    }
                    throw new FailedToReadBannerFileException();
                }
                banner.setBannerWepType(Integer.parseInt(event.asCharacters().getData()));
                continue;
            }
            /* GET AND SAVE IF BANNER IS INCLUDED WITH GOLD BANNERS/GOLD BANNERS V2 */
            if (event.asStartElement().getName().getLocalPart().equals("include")) {
                try {
                    event = eventReader.nextEvent();
                } catch (XMLStreamException e) {
                    try {
                        in.close();
                    } catch (IOException ex) {
                    /* IGNORED */
                    }
                    try {
                        eventReader.close();
                    } catch (XMLStreamException ex) {
                    /* IGNORED */
                    }
                    throw new FailedToReadBannerFileException();
                }
                String includeType = event.asCharacters().getData();
                if (includeType.equals("GoldBanners")) {
                    try {
                        goldBanners.add(banner.getBannerID());
                    } catch (NullPointerException e) {
                    /* IGNORED */
                    }
                } else if (includeType.equals("GoldBannersv2")) {
                    try {
                        goldBannersv2.add(banner.getBannerID());
                    } catch (NullPointerException e) {
                    /* IGNORED */
                    }
                }
                continue;
            }
            /* GET AND SAVE CHARACTER */
            if (event.asStartElement().getName().getLocalPart().equals("Character")) {
                character = new Character();
                Iterator<Attribute> attributes = event.asStartElement().getAttributes();
                while (attributes.hasNext()) {
                    Attribute attribute = attributes.next();
                    if (attribute.getName().toString().equals("prefix")) {
                        character.setPrefix(attribute.getValue());
                    }
                    if (attribute.getName().toString().equals("char")) {
                        character.setName(attribute.getValue());
                    }
                    if (attribute.getName().toString().equals("rarity")) {
                        character.setRarity(Integer.parseInt(attribute.getValue()));
                    }
                }
                /* GENERATE IMAGE FILE PATH*/
                String characterImage = character.getPrefix() + " " + character.getName();
                character.setImagePath("images/Characters/" + characterImage.replaceAll(" ", "_") + ".png");
                /* ADD CHARACTER TO CHARACTER LIST */
                characters.add(character);
            }
            /* GET AND SAVE WEAPON */
            if (event.asStartElement().getName().getLocalPart().equals("Weapon")) {
                weapon = new Weapon();
                Iterator<Attribute> attributes = event.asStartElement().getAttributes();
                while (attributes.hasNext()) {
                    Attribute attribute = attributes.next();
                    if (attribute.getName().toString().equals("name")) {
                        weapon.setName(attribute.getValue());
                    }
                    if (attribute.getName().toString().equals("rarity")) {
                        weapon.setRarity(Integer.parseInt(attribute.getValue()));
                    }
                }
                /* GENERATE IMAGE FILE PATH*/
                weapon.setImagePath("images/Weapons/" + weapon.getName().replaceAll(" ", "_") + ".png");
                /* ADD WEAPON TO WEAPON LIST */
                weapons.add(weapon);
            }
        }
        /* END OF BANNER ELEMENT. FINALIZE CHARACTER LIST AND ADD OBJECT TO ArrayList */
        if (event.isEndElement()) {
            EndElement endElement = event.asEndElement();
            if (endElement.getName().getLocalPart().equals("Banner")) {
                banner.setCharacters(characters);
                banner.setWeapons(weapons);
                banners.add(banner);
            // System.out.println("added " + banner.getBannerName());
            }
        }
    }
    return banners;
}
Also used : FailedToReadBannerFileException(io.github.spugn.Sargo.Exceptions.FailedToReadBannerFileException) Character(io.github.spugn.Sargo.Objects.Character) Attribute(javax.xml.stream.events.Attribute) EndElement(javax.xml.stream.events.EndElement) Banner(io.github.spugn.Sargo.Objects.Banner) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) FileNotFoundException(java.io.FileNotFoundException) IOException(java.io.IOException) Weapon(io.github.spugn.Sargo.Objects.Weapon) FileInputStream(java.io.FileInputStream) StartElement(javax.xml.stream.events.StartElement) XMLStreamException(javax.xml.stream.XMLStreamException) XMLEvent(javax.xml.stream.events.XMLEvent) XMLEventReader(javax.xml.stream.XMLEventReader) XMLInputFactory(javax.xml.stream.XMLInputFactory)

Example 34 with EndElement

use of javax.xml.stream.events.EndElement in project OpenTripPlanner by opentripplanner.

the class StreamedOpenStreetMapParser method parseMap.

public static void parseMap(final InputStream in, OpenStreetMapContentHandler map, int phase) throws IOException, XMLStreamException {
    XMLInputFactory inputFactory = XMLInputFactory.newInstance();
    XMLEventReader xmlEventReader = inputFactory.createXMLEventReader(in);
    OSMRelation osmRelation = null;
    OSMNode osmNode = null;
    OSMWay osmWay = null;
    while (xmlEventReader.hasNext()) {
        XMLEvent xmlEvent = xmlEventReader.nextEvent();
        if (xmlEvent.isStartElement()) {
            StartElement element = xmlEvent.asStartElement();
            if (phase == 3 && element.getName().equals(qNode)) {
                osmNode = new OSMNode();
                osmNode.setId(Long.parseLong(element.getAttributeByName(qId).getValue()));
                osmNode.lat = Double.parseDouble(element.getAttributeByName(qLat).getValue());
                osmNode.lon = Double.parseDouble(element.getAttributeByName(qLon).getValue());
            } else if (phase == 2 && element.getName().equals(qWay)) {
                osmWay = new OSMWay();
                osmWay.setId(Long.parseLong(element.getAttributeByName(qId).getValue()));
            } else if (phase == 1 && element.getName().equals(qRelation)) {
                osmRelation = new OSMRelation();
                osmRelation.setId(Long.parseLong(element.getAttributeByName(qId).getValue()));
            } else if (osmRelation != null && element.getName().equals(qMember)) {
                OSMRelationMember relMember = new OSMRelationMember();
                relMember.setType(element.getAttributeByName(qType).getValue());
                relMember.setRole(element.getAttributeByName(qRole).getValue());
                relMember.setRef(Long.parseLong(element.getAttributeByName(qRef).getValue()));
                osmRelation.addMember(relMember);
            } else if (osmWay != null && element.getName().equals(qNd)) {
                OSMNodeRef nodeRef = new OSMNodeRef();
                nodeRef.setRef(Long.parseLong(element.getAttributeByName(qRef).getValue()));
                osmWay.addNodeRef(nodeRef);
            } else if (element.getName().equals(qTag)) {
                OSMTag tag = new OSMTag();
                String key = element.getAttributeByName(qKey).getValue();
                tag.setK(key.intern());
                String value = element.getAttributeByName(qVal).getValue();
                if (key.equals("name") || key.equals("ref") || key.equals("highway")) {
                    value = value.intern();
                }
                tag.setV(value);
                if (osmNode != null) {
                    osmNode.addTag(tag);
                } else if (osmWay != null) {
                    osmWay.addTag(tag);
                } else if (osmRelation != null) {
                    osmRelation.addTag(tag);
                }
            }
        } else if (xmlEvent.isEndElement()) {
            EndElement element = xmlEvent.asEndElement();
            if (osmNode != null && element.getName().equals(qNode)) {
                map.addNode(osmNode);
                osmNode = null;
            } else if (osmWay != null && element.getName().equals(qWay)) {
                map.addWay(osmWay);
                osmWay = null;
            } else if (osmRelation != null && element.getName().equals(qRelation)) {
                map.addRelation(osmRelation);
                osmRelation = null;
            }
        }
    }
    xmlEventReader.close();
}
Also used : StartElement(javax.xml.stream.events.StartElement) EndElement(javax.xml.stream.events.EndElement) XMLEvent(javax.xml.stream.events.XMLEvent) XMLEventReader(javax.xml.stream.XMLEventReader) XMLInputFactory(javax.xml.stream.XMLInputFactory)

Example 35 with EndElement

use of javax.xml.stream.events.EndElement in project Payara by payara.

the class ModuleXMLConfigurationFileParser method parseServiceConfiguration.

public List<ConfigBeanDefaultValue> parseServiceConfiguration(InputStream xmlDocumentStream) throws XMLStreamException {
    List<ConfigBeanDefaultValue> configBeans = new ArrayList<ConfigBeanDefaultValue>();
    XMLInputFactory inputFactory = XMLInputFactory.newInstance();
    inputFactory.setProperty(XMLInputFactory.IS_COALESCING, Boolean.TRUE);
    XMLEventReader eventReader = inputFactory.createXMLEventReader(xmlDocumentStream);
    ConfigBeanDefaultValue configValue = null;
    while (eventReader.hasNext()) {
        XMLEvent event = eventReader.nextEvent();
        if (event.isStartElement()) {
            StartElement startElement = event.asStartElement();
            // If we have a item element we create a new item
            if (startElement.getName().getLocalPart().equalsIgnoreCase(CONFIG_BUNDLE)) {
                configValue = new ConfigBeanDefaultValue();
                Iterator<Attribute> attributes = startElement.getAttributes();
                while (attributes.hasNext()) {
                    Attribute attribute = attributes.next();
                    if (attribute.getName().toString().equals(LOCATION)) {
                        configValue.setLocation(attribute.getValue());
                    } else if (attribute.getName().toString().equals(REPLACE_IF_EXISTS)) {
                        configValue.setReplaceCurrentIfExists(Boolean.parseBoolean(attribute.getValue()));
                    }
                }
                // attributes
                continue;
            }
            if (startElement.getName().getLocalPart().equalsIgnoreCase(CUSTOMIZATION_TOKEN)) {
                ConfigCustomizationToken token;
                String value = null;
                String description = null;
                String name = null;
                String title = null;
                String validationExpression = null;
                ConfigCustomizationToken.CustomizationType type = ConfigCustomizationToken.CustomizationType.STRING;
                TokenTypeDetails tokenTypeDetails = null;
                Iterator<Attribute> attributes = startElement.getAttributes();
                while (attributes.hasNext()) {
                    Attribute attribute = attributes.next();
                    if (attribute.getName().toString().equals(DEFAULT_VALUE)) {
                        value = attribute.getValue();
                    } else if (attribute.getName().toString().equals(DESCRIPTION)) {
                        description = getLocalizedValue(attribute.getValue());
                    } else if (attribute.getName().toString().equals(NAME)) {
                        name = attribute.getValue();
                    } else if (attribute.getName().toString().equals(TITLE)) {
                        title = getLocalizedValue(attribute.getValue());
                    } else if (attribute.getName().toString().equals(VALIDATION_EXPRESSION)) {
                        validationExpression = getLocalizedValue(attribute.getValue());
                    }
                }
                // attributes
                event = eventReader.nextEvent();
                while (!event.isStartElement() && !event.isEndElement()) {
                    event = eventReader.nextEvent();
                }
                if (event.isStartElement()) {
                    startElement = event.asStartElement();
                    // If we have a item element we create a new item
                    if (startElement.getName().getLocalPart().equalsIgnoreCase(FILE)) {
                        type = ConfigCustomizationToken.CustomizationType.FILE;
                        String tokVal = startElement.getAttributeByName(QName.valueOf(MUST_EXIST)).getValue();
                        FileTypeDetails.FileExistCondition cond = FileTypeDetails.FileExistCondition.NO_OP;
                        if (tokVal.equalsIgnoreCase("true")) {
                            cond = FileTypeDetails.FileExistCondition.MUST_EXIST;
                        } else if (tokVal.equalsIgnoreCase("false")) {
                            cond = FileTypeDetails.FileExistCondition.MUST_NOT_EXIST;
                        }
                        tokenTypeDetails = new FileTypeDetails(cond);
                    } else if (startElement.getName().getLocalPart().equalsIgnoreCase(PORT)) {
                        type = ConfigCustomizationToken.CustomizationType.PORT;
                        tokenTypeDetails = new PortTypeDetails(startElement.getAttributeByName(QName.valueOf(BASE_OFFSET)).getValue());
                    }
                }
                token = new ConfigCustomizationToken(name, title, description, value, validationExpression, tokenTypeDetails, type);
                // TODO check that ConfigValue is not null
                configValue.addCustomizationToken(token);
                continue;
            }
            if (startElement.getName().getLocalPart().equalsIgnoreCase(CONFIGURATION_ELEMENT)) {
                Iterator<Attribute> attributes = startElement.getAttributes();
                while (attributes.hasNext()) {
                    Attribute attribute = attributes.next();
                    if (attribute.getName().toString().equals(CONFIG_BEAN_CLASS_NAME)) {
                        configValue.setConfigBeanClassName(attribute.getValue());
                    }
                }
                // attributes
                event = eventReader.nextEvent();
                if (event.isCharacters()) {
                    String str = event.asCharacters().getData();
                    configValue.setXmlConfiguration(str);
                }
                continue;
            }
        }
        // isStartElement
        if (event.isEndElement()) {
            EndElement endElement = event.asEndElement();
            if (endElement.getName().getLocalPart().equalsIgnoreCase(CONFIG_BUNDLE)) {
                configBeans.add(configValue);
            }
        }
    }
    // eventReader
    return configBeans;
}
Also used : FileTypeDetails(com.sun.enterprise.config.modularity.customization.FileTypeDetails) Attribute(javax.xml.stream.events.Attribute) EndElement(javax.xml.stream.events.EndElement) ArrayList(java.util.ArrayList) PortTypeDetails(com.sun.enterprise.config.modularity.customization.PortTypeDetails) StartElement(javax.xml.stream.events.StartElement) ConfigBeanDefaultValue(com.sun.enterprise.config.modularity.customization.ConfigBeanDefaultValue) ConfigCustomizationToken(com.sun.enterprise.config.modularity.customization.ConfigCustomizationToken) XMLEvent(javax.xml.stream.events.XMLEvent) XMLEventReader(javax.xml.stream.XMLEventReader) TokenTypeDetails(com.sun.enterprise.config.modularity.customization.TokenTypeDetails) XMLInputFactory(javax.xml.stream.XMLInputFactory)

Aggregations

EndElement (javax.xml.stream.events.EndElement)41 XMLEvent (javax.xml.stream.events.XMLEvent)32 StartElement (javax.xml.stream.events.StartElement)30 QName (javax.xml.namespace.QName)15 XMLEventReader (javax.xml.stream.XMLEventReader)12 Attribute (javax.xml.stream.events.Attribute)12 Characters (javax.xml.stream.events.Characters)11 XMLStreamException (javax.xml.stream.XMLStreamException)10 XMLInputFactory (javax.xml.stream.XMLInputFactory)9 InputStream (java.io.InputStream)5 ArrayList (java.util.ArrayList)5 HashMap (java.util.HashMap)4 Test (org.junit.Test)4 IOException (java.io.IOException)3 Namespace (javax.xml.stream.events.Namespace)3 ByteArrayInputStream (java.io.ByteArrayInputStream)2 FileNotFoundException (java.io.FileNotFoundException)2 BigInteger (java.math.BigInteger)2 Base64 (java.util.Base64)2 Iterator (java.util.Iterator)2