Blame lasso/xml/sa_sasl_response.c

Packit 228f82
/* $Id$
Packit 228f82
 *
Packit 228f82
 * Lasso - A free implementation of the Liberty Alliance specifications.
Packit 228f82
 *
Packit 228f82
 * Copyright (C) 2004-2007 Entr'ouvert
Packit 228f82
 * http://lasso.entrouvert.org
Packit 228f82
 *
Packit 228f82
 * Authors: See AUTHORS file in top-level directory.
Packit 228f82
 *
Packit 228f82
 * This program is free software; you can redistribute it and/or modify
Packit 228f82
 * it under the terms of the GNU General Public License as published by
Packit 228f82
 * the Free Software Foundation; either version 2 of the License, or
Packit 228f82
 * (at your option) any later version.
Packit 228f82
 *
Packit 228f82
 * This program is distributed in the hope that it will be useful,
Packit 228f82
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 228f82
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 228f82
 * GNU General Public License for more details.
Packit 228f82
 *
Packit 228f82
 * You should have received a copy of the GNU General Public License
Packit 228f82
 * along with this program; if not, see <http://www.gnu.org/licenses/>.
Packit 228f82
 */
Packit 228f82
Packit 228f82
#include "private.h"
Packit 228f82
#include "sa_sasl_response.h"
Packit 228f82
#include "idwsf_strings.h"
Packit 228f82
Packit 228f82
/**
Packit 228f82
 * SECTION:sa_sasl_response
Packit 228f82
 * @short_description: <sa:SASLResponse>
Packit 228f82
 *
Packit 228f82
 * <figure><title>Schema fragment for sa:SASLResponse</title>
Packit 228f82
 * <programlisting>
Packit 228f82
 *
Packit 228f82
 * <xs:element name="SASLResponse">
Packit 228f82
 * <xs:complexType>
Packit 228f82
 *   <xs:sequence>
Packit 228f82
 *     <xs:element ref="Status"/>
Packit 228f82
 *     <xs:element ref="PasswordTransforms" minOccurs="0"/>
Packit 228f82
 *     <xs:element name="Data" minOccurs="0">
Packit 228f82
 *     <xs:complexType>
Packit 228f82
 *       <xs:simpleContent>
Packit 228f82
 *         <xs:extension base="xs:base64Binary"/>
Packit 228f82
 *       </xs:simpleContent>
Packit 228f82
 *     </xs:complexType>
Packit 228f82
 *     </xs:element>
Packit 228f82
 *     <xs:element ref="disco:ResourceOffering" minOccurs="0" maxOccurs="unbounded"/>
Packit 228f82
 *     <xs:element name="Credentials" minOccurs="0">
Packit 228f82
 *     <xs:complexType>
Packit 228f82
 *       <xs:sequence>
Packit 228f82
 *         <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
Packit 228f82
 *       </xs:sequence>
Packit 228f82
 *     </xs:complexType>
Packit 228f82
 *     </xs:element>
Packit 228f82
 *   </xs:sequence>
Packit 228f82
 *   <xs:attribute name="serverMechanism" type="xs:string" ="optional"/>
Packit 228f82
 *   <xs:attribute name="id" type="xs:ID" use="optional"/>
Packit 228f82
 * </xs:complexType>
Packit 228f82
 * </xs:element>
Packit 228f82
 *
Packit 228f82
 * ]]></programlisting>
Packit 228f82
 * </figure>
Packit 228f82
 */
Packit 228f82
Packit 228f82
/*****************************************************************************/
Packit 228f82
/* private methods                                                           */
Packit 228f82
/*****************************************************************************/
Packit 228f82
Packit 228f82
static struct XmlSnippet schema_snippets[] = {
Packit 228f82
	{ "Status", SNIPPET_NODE, G_STRUCT_OFFSET(LassoSaSASLResponse, Status), NULL, NULL, NULL},
Packit 228f82
	{ "PasswordTransforms", SNIPPET_LIST_NODES,
Packit 228f82
		G_STRUCT_OFFSET(LassoSaSASLResponse, PasswordTransforms), NULL, NULL, NULL},
Packit 228f82
	{ "Data", SNIPPET_LIST_CONTENT,
Packit 228f82
		G_STRUCT_OFFSET(LassoSaSASLResponse, Data), NULL, NULL, NULL},
Packit 228f82
	{ "ResourceOffering", SNIPPET_LIST_NODES,
Packit 228f82
		G_STRUCT_OFFSET(LassoSaSASLResponse, ResourceOffering), NULL, LASSO_DISCO_PREFIX,
Packit 228f82
		LASSO_DISCO_HREF},
Packit 228f82
	{ "Credentials", SNIPPET_LIST_NODES, G_STRUCT_OFFSET(LassoSaSASLResponse, Credentials), NULL, NULL, NULL},
Packit 228f82
	{ "serverMechanism", SNIPPET_ATTRIBUTE,
Packit 228f82
		G_STRUCT_OFFSET(LassoSaSASLResponse, serverMechanism), NULL, NULL, NULL},
Packit 228f82
	{ "id", SNIPPET_ATTRIBUTE,
Packit 228f82
		G_STRUCT_OFFSET(LassoSaSASLResponse, id), NULL, NULL, NULL},
Packit 228f82
	{NULL, 0, 0, NULL, NULL, NULL}
Packit 228f82
};
Packit 228f82
Packit 228f82
static LassoNodeClass *parent_class = NULL;
Packit 228f82
Packit 228f82
static void
Packit 228f82
insure_namespace(xmlNode *xmlnode, xmlNs *ns)
Packit 228f82
{
Packit 228f82
	xmlNode *t = xmlnode->children;
Packit 228f82
Packit 228f82
	xmlSetNs(xmlnode, ns);
Packit 228f82
	while (t) {
Packit 228f82
		if (t->type == XML_ELEMENT_NODE && t->ns == NULL)
Packit 228f82
			insure_namespace(t, ns);
Packit 228f82
		t = t->next;
Packit 228f82
	}
Packit 228f82
}
Packit 228f82
Packit 228f82
static xmlNode*
Packit 228f82
get_xmlNode(LassoNode *node, gboolean lasso_dump)
Packit 228f82
{
Packit 228f82
	xmlNode *xmlnode;
Packit 228f82
	xmlNs *ns;
Packit 228f82
Packit 228f82
	xmlnode = parent_class->get_xmlNode(node, lasso_dump);
Packit 228f82
	ns = xmlNewNs(xmlnode, (xmlChar*)LASSO_SA_HREF, (xmlChar*)LASSO_SA_PREFIX);
Packit 228f82
	insure_namespace(xmlnode, ns);
Packit 228f82
Packit 228f82
	return xmlnode;
Packit 228f82
}
Packit 228f82
Packit 228f82
/*****************************************************************************/
Packit 228f82
/* instance and class init functions                                         */
Packit 228f82
/*****************************************************************************/
Packit 228f82
Packit 228f82
Packit 228f82
static void
Packit 228f82
class_init(LassoSaSASLResponseClass *klass)
Packit 228f82
{
Packit 228f82
	LassoNodeClass *nodeClass = LASSO_NODE_CLASS(klass);
Packit 228f82
Packit 228f82
	parent_class = g_type_class_peek_parent(klass);
Packit 228f82
	nodeClass->get_xmlNode = get_xmlNode;
Packit 228f82
	nodeClass->node_data = g_new0(LassoNodeClassData, 1);
Packit 228f82
	lasso_node_class_set_nodename(nodeClass, "SASLResponse");
Packit 228f82
	lasso_node_class_add_snippets(nodeClass, schema_snippets);
Packit 228f82
}
Packit 228f82
Packit 228f82
GType
Packit 228f82
lasso_sa_sasl_response_get_type()
Packit 228f82
{
Packit 228f82
	static GType this_type = 0;
Packit 228f82
Packit 228f82
	if (!this_type) {
Packit 228f82
		static const GTypeInfo this_info = {
Packit 228f82
			sizeof (LassoSaSASLResponseClass),
Packit 228f82
			NULL,
Packit 228f82
			NULL,
Packit 228f82
			(GClassInitFunc) class_init,
Packit 228f82
			NULL,
Packit 228f82
			NULL,
Packit 228f82
			sizeof(LassoSaSASLResponse),
Packit 228f82
			0,
Packit 228f82
			NULL,
Packit 228f82
			NULL
Packit 228f82
		};
Packit 228f82
Packit 228f82
		this_type = g_type_register_static(LASSO_TYPE_NODE,
Packit 228f82
				"LassoSaSASLResponse", &this_info, 0);
Packit 228f82
	}
Packit 228f82
	return this_type;
Packit 228f82
}
Packit 228f82
Packit 228f82
LassoSaSASLResponse*
Packit 228f82
lasso_sa_sasl_response_new(LassoUtilityStatus *status)
Packit 228f82
{
Packit 228f82
	LassoSaSASLResponse *node;
Packit 228f82
Packit 228f82
	node = g_object_new(LASSO_TYPE_SA_SASL_RESPONSE, NULL);
Packit 228f82
Packit 228f82
	g_object_ref(status);
Packit 228f82
	node->Status = status;
Packit 228f82
Packit 228f82
	return node;
Packit 228f82
}