From 3a8df2069eba3a5a4174749fc46a6698c1877ec1 Mon Sep 17 00:00:00 2001 From: fiaxh Date: Tue, 30 May 2017 22:17:41 +0200 Subject: MUC config form (data forms), MUC room info --- xmpp-vala/src/core/stanza_node.vala | 16 ++++++++-------- xmpp-vala/src/core/stanza_reader.vala | 11 ++++++----- 2 files changed, 14 insertions(+), 13 deletions(-) (limited to 'xmpp-vala/src/core') diff --git a/xmpp-vala/src/core/stanza_node.vala b/xmpp-vala/src/core/stanza_node.vala index fd44c925..026b8ddb 100644 --- a/xmpp-vala/src/core/stanza_node.vala +++ b/xmpp-vala/src/core/stanza_node.vala @@ -45,8 +45,8 @@ public abstract class StanzaEntry { } public class StanzaNode : StanzaEntry { - public ArrayList sub_nodes = new ArrayList(); - public ArrayList attributes = new ArrayList(); + public Gee.List sub_nodes = new ArrayList(); + public Gee.List attributes = new ArrayList(); public bool has_nodes = false; public bool pseudo = false; @@ -129,7 +129,7 @@ public class StanzaNode : StanzaEntry { return null; } - public ArrayList get_attributes_by_ns_uri(string ns_uri) { + public Gee.List get_attributes_by_ns_uri(string ns_uri) { ArrayList ret = new ArrayList (); foreach (var attr in attributes) { if (attr.ns_uri == ns_uri) ret.add(attr); @@ -181,7 +181,7 @@ public class StanzaNode : StanzaEntry { return null; } - public ArrayList get_subnodes(string name, string? ns_uri = null, bool recurse = false) { + public Gee.List get_subnodes(string name, string? ns_uri = null, bool recurse = false) { ArrayList ret = new ArrayList(); string _name = name; string? _ns_uri = ns_uri; @@ -220,12 +220,12 @@ public class StanzaNode : StanzaEntry { return node; } - public ArrayList get_deep_subnodes(...) { + public Gee.List get_deep_subnodes(...) { va_list l = va_list(); return get_deep_subnodes_(va_list.copy(l)); } - public ArrayList get_deep_subnodes_(va_list l) { + public Gee.List get_deep_subnodes_(va_list l) { StanzaNode node = this; string? subnode_name = l.arg(); if (subnode_name == null) return new ArrayList(); @@ -240,11 +240,11 @@ public class StanzaNode : StanzaEntry { return node.get_subnodes((!)subnode_name); } - public ArrayList get_all_subnodes() { + public Gee.List get_all_subnodes() { return sub_nodes; } - public ArrayList get_deep_all_subnodes(...) { + public Gee.List get_deep_all_subnodes(...) { va_list l = va_list(); StanzaNode? node = get_deep_subnode_(va_list.copy(l)); if (node != null) return ((!)node).get_all_subnodes(); diff --git a/xmpp-vala/src/core/stanza_reader.vala b/xmpp-vala/src/core/stanza_reader.vala index f1ce5c19..dd284fa6 100644 --- a/xmpp-vala/src/core/stanza_reader.vala +++ b/xmpp-vala/src/core/stanza_reader.vala @@ -230,13 +230,13 @@ public class StanzaReader { skip_single(); if (desc.contains(":")) { var split = desc.split(":"); - assert(split[0] == ns_state.find_name((!)res.ns_uri)); - assert(split[1] == res.name); + if (split[0] != ns_state.find_name((!)res.ns_uri)) throw new XmlError.BAD_XML(""); + if (split[1] != res.name) throw new XmlError.BAD_XML(""); } else { - assert(ns_state.current_ns_uri == res.ns_uri); - assert(desc == res.name); + if (ns_state.current_ns_uri != res.ns_uri) throw new XmlError.BAD_XML(""); + if (desc != res.name) throw new XmlError.BAD_XML(""); } - return res; + finishNodeSeen = true; } else { res.sub_nodes.add(read_stanza_node(ns_state.clone())); ns_state = baseNs ?? new NamespaceState.for_stanza(); @@ -245,6 +245,7 @@ public class StanzaReader { res.sub_nodes.add(read_text_node()); } } while (!finishNodeSeen); + if (res.sub_nodes.size == 0) res.has_nodes = false; } return res; } -- cgit v1.2.3-70-g09d2