AXIS2_EXTERN int AXIS2_CALL saml_status_build()

in src/omxmlsec/saml/response.c [53:104]


AXIS2_EXTERN int AXIS2_CALL saml_status_build(saml_status_t *status, 
											  axiom_node_t *node, 
											  const axutil_env_t *env)
{
	
	axiom_element_t *element = NULL;
	axiom_child_element_iterator_t *iterator = NULL;
	axiom_node_t *child_node;
	axis2_char_t *qname = NULL;

	if (axiom_node_get_node_type(node, env) != AXIOM_ELEMENT)
	{
		return AXIS2_FAILURE;
	}
	
	if ((element = axiom_node_get_data_element(node, env)) == NULL)
	{
		return AXIS2_FAILURE;
	}
	iterator = axiom_element_get_child_elements(element, env, node);
	if(iterator)
	{
		while(axiom_child_element_iterator_has_next(iterator, env))
		{
		
			child_node = axiom_child_element_iterator_next(iterator, env);
			element = (axiom_element_t *)axiom_node_get_data_element(child_node, env);

			if(element != NULL && !(axutil_strcmp(axiom_element_get_localname(element, env), 
																		SAML_STATUS_CODE)))
			{
				qname = axiom_element_get_attribute_value_by_name(element, env, SAML_STATUS_VALUE);
				if(qname)
					status->status_value = axutil_qname_create_from_string(env, qname); 

			}
			else if(element != NULL && !(axutil_strcmp(axiom_element_get_localname(element, env), 
																		SAML_STATUS_MESSAGE)))
			{
				status->status_msg = 	axiom_element_get_text(element, env, child_node);
			}
			else if(element != NULL && !(axutil_strcmp(axiom_element_get_localname(element, env), 
																		SAML_STATUS_DETAIL)))
			{
				status->status_detail = child_node;
			}
		}
		return AXIS2_SUCCESS;
	}
	return AXIS2_FAILURE;

}