summaryrefslogtreecommitdiffstats
path: root/lasso/xml
diff options
context:
space:
mode:
authorNicolas Clapies <nclapies@entrouvert.com>2004-12-21 13:57:59 +0000
committerNicolas Clapies <nclapies@entrouvert.com>2004-12-21 13:57:59 +0000
commit55e63b64b3b2afaa62a264a4d290cf3064d80930 (patch)
tree169db53aa07baea387cf3bf3ce3705ace61bfb21 /lasso/xml
parent24421834eb051fa311f820c057da8c8b66aebcf5 (diff)
downloadlasso-55e63b64b3b2afaa62a264a4d290cf3064d80930.tar.gz
lasso-55e63b64b3b2afaa62a264a4d290cf3064d80930.tar.xz
lasso-55e63b64b3b2afaa62a264a4d290cf3064d80930.zip
fixed name space in dump message of LassoDiscoQueryResponse and LassoDiscoModifyResponse : every element children inerit the discovery name space.
Diffstat (limited to 'lasso/xml')
-rw-r--r--lasso/xml/disco_modify_response.c31
-rw-r--r--lasso/xml/disco_query_response.c44
2 files changed, 73 insertions, 2 deletions
diff --git a/lasso/xml/disco_modify_response.c b/lasso/xml/disco_modify_response.c
index 4a976f7a..678417d3 100644
--- a/lasso/xml/disco_modify_response.c
+++ b/lasso/xml/disco_modify_response.c
@@ -65,6 +65,34 @@ static struct XmlSnippet schema_snippets[] = {
{ NULL, 0, 0}
};
+static LassoNodeClass *parent_class = NULL;
+
+static void
+insure_namespace(xmlNode *xmlnode, xmlNs *ns)
+{
+ xmlNode *t = xmlnode->children;
+
+ xmlSetNs(xmlnode, ns);
+ while (t) {
+ if (t->type == XML_ELEMENT_NODE && t->ns == NULL)
+ insure_namespace(t, ns);
+ t = t->next;
+ }
+}
+
+static xmlNode*
+get_xmlNode(LassoNode *node, gboolean lasso_dump)
+{
+ xmlNode *xmlnode;
+ xmlNs *ns;
+
+ xmlnode = parent_class->get_xmlNode(node, lasso_dump);
+ ns = xmlNewNs(xmlnode, LASSO_DISCO_HREF, LASSO_DISCO_PREFIX);
+ insure_namespace(xmlnode, ns);
+
+ return xmlnode;
+}
+
/*****************************************************************************/
/* instance and class init functions */
/*****************************************************************************/
@@ -82,9 +110,10 @@ class_init(LassoDiscoModifyResponseClass *klass)
{
LassoNodeClass *nclass = LASSO_NODE_CLASS(klass);
+ parent_class = g_type_class_peek_parent(klass);
+ nclass->get_xmlNode = get_xmlNode;
nclass->node_data = g_new0(LassoNodeClassData, 1);
lasso_node_class_set_nodename(nclass, "ModifyResponse");
- lasso_node_class_set_ns(nclass, LASSO_DISCO_HREF, LASSO_DISCO_PREFIX);
lasso_node_class_add_snippets(nclass, schema_snippets);
}
diff --git a/lasso/xml/disco_query_response.c b/lasso/xml/disco_query_response.c
index 340db1b0..b65aded8 100644
--- a/lasso/xml/disco_query_response.c
+++ b/lasso/xml/disco_query_response.c
@@ -61,6 +61,34 @@ static struct XmlSnippet schema_snippets[] = {
{ NULL, 0, 0}
};
+static LassoNodeClass *parent_class = NULL;
+
+static void
+insure_namespace(xmlNode *xmlnode, xmlNs *ns)
+{
+ xmlNode *t = xmlnode->children;
+
+ xmlSetNs(xmlnode, ns);
+ while (t) {
+ if (t->type == XML_ELEMENT_NODE && t->ns == NULL)
+ insure_namespace(t, ns);
+ t = t->next;
+ }
+}
+
+static xmlNode*
+get_xmlNode(LassoNode *node, gboolean lasso_dump)
+{
+ xmlNode *xmlnode;
+ xmlNs *ns;
+
+ xmlnode = parent_class->get_xmlNode(node, lasso_dump);
+ ns = xmlNewNs(xmlnode, LASSO_DISCO_HREF, LASSO_DISCO_PREFIX);
+ insure_namespace(xmlnode, ns);
+
+ return xmlnode;
+}
+
/*****************************************************************************/
/* instance and class init functions */
/*****************************************************************************/
@@ -80,9 +108,10 @@ class_init(LassoDiscoQueryResponseClass *class)
{
LassoNodeClass *nclass = LASSO_NODE_CLASS(class);
+ parent_class = g_type_class_peek_parent(class);
+ nclass->get_xmlNode = get_xmlNode;
nclass->node_data = g_new0(LassoNodeClassData, 1);
lasso_node_class_set_nodename(nclass, "QueryResponse");
- lasso_node_class_set_ns(nclass, LASSO_DISCO_HREF, LASSO_DISCO_PREFIX);
lasso_node_class_add_snippets(nclass, schema_snippets);
}
@@ -123,3 +152,16 @@ lasso_disco_query_response_new(LassoUtilityStatus *status)
return node;
}
+
+LassoDiscoQueryResponse*
+lasso_disco_query_response_new_from_message(const gchar *message)
+{
+ LassoDiscoQueryResponse *response;
+
+ g_return_val_if_fail(message != NULL, NULL);
+
+ response = g_object_new(LASSO_TYPE_DISCO_QUERY_RESPONSE, NULL);
+ lasso_node_init_from_message(LASSO_NODE(response), message);
+
+ return response;
+}