in openmeetings-service/src/main/java/org/apache/openmeetings/service/scheduler/AtomReader.java [81:140]
public static void load(String url, JSONArray feed) {
HttpURLConnection con = null;
try {
con = getFeedConnection(url);
try (InputStream is = con.getInputStream()) {
XMLEventReader reader = inputFactory.createXMLEventReader(is);
int i = 0;
JSONObject obj = null;
StringBuilder val = new StringBuilder(); // for NPE safety
Spec spec = new Spec(""); // for NPE safety
Field f = null;
while (reader.hasNext()) {
XMLEvent evt = reader.nextEvent();
if (obj == null && evt.isStartElement()) {
StartElement start = (StartElement)evt;
String name = start.getName().getLocalPart();
if (specs.containsKey(name)) {
spec = specs.get(name);
obj = new JSONObject();
i++;
}
} else if (obj != null) {
if (evt.isStartElement()) {
StartElement start = (StartElement)evt;
String name = start.getName().getLocalPart();
if (spec.contains(name)) {
f = spec.get(name);
val = new StringBuilder();
if (f.getAttr() != null) {
Attribute a = start.getAttributeByName(new QName(f.getAttr()));
if (a != null) {
val.append(a.getValue());
}
}
}
} else if (f != null && evt.isCharacters()) {
val.append(escapeXml11(((Characters)evt).getData()));
} else if (f != null && evt.isEndElement() && f.getName().equals(((EndElement)evt).getName().getLocalPart())) {
if (!obj.has(f.getAlias())) {
obj.put(f.getAlias(), val.toString());
}
f = null;
} else if (evt.isEndElement() && spec.getName().equals(((EndElement)evt).getName().getLocalPart())) {
feed.put(obj);
obj = null;
}
}
if (i > MAX_ITEM_COUNT) {
break;
}
}
}
} catch (IOException|XMLStreamException e) {
log.error("Unexpected error while getting RSS", e);
} finally {
if (con != null) {
con.disconnect();
}
}
}