diff options
author | Nicolas Clapies <nclapies@entrouvert.com> | 2004-12-21 13:57:59 +0000 |
---|---|---|
committer | Nicolas Clapies <nclapies@entrouvert.com> | 2004-12-21 13:57:59 +0000 |
commit | 55e63b64b3b2afaa62a264a4d290cf3064d80930 (patch) | |
tree | 169db53aa07baea387cf3bf3ce3705ace61bfb21 /lasso/xml | |
parent | 24421834eb051fa311f820c057da8c8b66aebcf5 (diff) | |
download | lasso-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.c | 31 | ||||
-rw-r--r-- | lasso/xml/disco_query_response.c | 44 |
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; +} |