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);
}
}
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();
}
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;
}
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();
}
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;
}
Aggregations