Пример #1
0
AXIS2_EXTERN axiom_soap_fault_text_t *AXIS2_CALL
axiom_soap_fault_text_create_with_parent(
    const axutil_env_t * env,
    axiom_soap_fault_reason_t * parent)
{
    axiom_soap_fault_text_t *fault_text = NULL;
    axiom_element_t *this_ele = NULL;
    int soap_version = -1;
    axiom_node_t *this_node = NULL;
    axiom_namespace_t *parent_ns = NULL;
    axiom_node_t *parent_node = NULL;
    axiom_element_t *parent_ele = NULL;

    AXIS2_PARAM_CHECK(env->error, parent, NULL);

    fault_text = axiom_soap_fault_text_create(env);

    if(!fault_text)
    {
        return NULL;
    }

    parent_node = axiom_soap_fault_reason_get_base_node(parent, env);
    if(!parent_node)
    {
        axiom_soap_fault_text_free(fault_text, env);
        return NULL;
    }

    parent_ele = (axiom_element_t *)axiom_node_get_data_element(parent_node, env);
    if(!parent_ele)
    {
        axiom_soap_fault_text_free(fault_text, env);
        return NULL;
    }

    soap_version = axiom_soap_fault_reason_get_soap_version(parent, env);
    if(AXIOM_SOAP12 == soap_version)
    {
        parent_ns = axiom_element_get_namespace(parent_ele, env, parent_node);
    }
    this_ele = axiom_element_create(env, parent_node, AXIOM_SOAP12_SOAP_FAULT_TEXT_LOCAL_NAME,
        parent_ns, &this_node);

    if(!this_ele)
    {
        axiom_soap_fault_text_free(fault_text, env);
        return NULL;
    }

    fault_text->om_ele_node = this_node;

    axiom_soap_fault_reason_add_soap_fault_text(parent, env, fault_text);

    return fault_text;
}
AXIS2_EXTERN void AXIS2_CALL
axiom_soap_fault_reason_free(
    axiom_soap_fault_reason_t * fault_reason,
    const axutil_env_t * env)
{

    if (fault_reason->fault_texts)
    {
        int size = 0;
        int i = 0;
        size = axutil_array_list_size(fault_reason->fault_texts, env);

        for (i = 0; i < size; i++)
        {
            axiom_soap_fault_text_t *fault_text = NULL;
            void *value = NULL;
            value = axutil_array_list_get(fault_reason->fault_texts, env, i);
            if (value)
            {
                fault_text = (axiom_soap_fault_text_t *) value;
                axiom_soap_fault_text_free(fault_text, env);
                fault_text = NULL;
            }
        }
        axutil_array_list_free(fault_reason->fault_texts, env);
        fault_reason->fault_texts = NULL;
    }

    AXIS2_FREE(env->allocator, fault_reason);

    fault_reason = NULL;

    return;
}