AXIS2_EXTERN axiom_soap_fault_text_t *AXIS2_CALL
    axiom_soap_fault_reason_get_soap_fault_text(
    axiom_soap_fault_reason_t * fault_reason,
    const axutil_env_t * env,
    axis2_char_t * lang)
{
    int status = AXIS2_SUCCESS;
    int size = 0;
    int i = 0;

    AXIS2_PARAM_CHECK(env->error, fault_reason, NULL);
    if (!lang || (axutil_strcmp(lang, "") == 0))
    {
        return NULL;
    }
    /** Here we have to build the soap fault reason element completly */
    if (!fault_reason->fault_texts)
    {

        if (fault_reason->soap_builder &&
            !(axiom_node_is_complete(fault_reason->om_ele_node, env)))
        {
            while (!(axiom_node_is_complete(fault_reason->om_ele_node, env)))
            {
                status =
                    axiom_soap_builder_next(fault_reason->soap_builder, env);
                if (status == AXIS2_FAILURE)
                {
                    return NULL;
                }
            }
        }
    }

    if (!fault_reason->fault_texts)
    {
        return NULL;
    }
    /** iterate the array list */
    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)
        {
            axis2_char_t *fault_lang = NULL;
            fault_text = (axiom_soap_fault_text_t *) value;
            fault_lang = axiom_soap_fault_text_get_lang(fault_text, env);
            if (fault_lang && axutil_strcmp(lang, fault_lang) == 0)
            {
                return fault_text;
            }
        }
    }
    return NULL;
}
示例#2
0
AXIS2_EXTERN axiom_soap_fault_value_t *AXIS2_CALL
axiom_soap_fault_code_get_value(
    axiom_soap_fault_code_t * fault_code,
    const axutil_env_t * env)
{
    int status = AXIS2_SUCCESS;

    if(fault_code->value)
    {
        return fault_code->value;
    }
    else if(fault_code->builder)
    {
        while(!(fault_code->value) && !(axiom_node_is_complete(fault_code->om_ele_node, env)))
        {
            status = axiom_soap_builder_next(fault_code->builder, env);
            if(status == AXIS2_FAILURE)
            {
                break;
            }
        }
    }
    return fault_code->value;
}
示例#3
0
AXIS2_EXTERN axis2_status_t AXIS2_CALL
axiom_soap_body_build(
    axiom_soap_body_t * soap_body,
    const axutil_env_t * env)
{
    int status = AXIS2_SUCCESS;
    axiom_node_t *xop_node = NULL;
    axis2_bool_t is_replaced = AXIS2_FALSE;
    axiom_element_t *xop_element = NULL;

    if(soap_body->om_ele_node && soap_body->soap_builder)
    {
        xop_node
            = axiom_util_get_node_by_local_name(env, soap_body->om_ele_node, AXIS2_XOP_INCLUDE);

        if(xop_node)
        {
            xop_element = (axiom_element_t *)axiom_node_get_data_element(xop_node, env);
            if(xop_element)
            {
                is_replaced = axiom_soap_builder_replace_xop(soap_body->soap_builder, env,
                    xop_node, xop_element);
            }
        }

        while(axiom_node_is_complete(soap_body->om_ele_node, env) != AXIS2_TRUE)
        {
            status = axiom_soap_builder_next(soap_body->soap_builder, env);
            if(status == AXIS2_FAILURE)
            {
                return AXIS2_FAILURE;
            }
        }
    }
    return AXIS2_SUCCESS;
}
AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL
    axiom_soap_fault_reason_get_all_soap_fault_texts(
    axiom_soap_fault_reason_t * fault_reason,
    const axutil_env_t * env)
{
    int status = AXIS2_SUCCESS;

    if (!(fault_reason->fault_texts) && (fault_reason->soap_builder))
    {
        if (!(axiom_node_is_complete(fault_reason->om_ele_node, env)))
        {
            while (!(axiom_node_is_complete(fault_reason->om_ele_node, env)))
            {
                status =
                    axiom_soap_builder_next(fault_reason->soap_builder, env);
                if (status == AXIS2_FAILURE)
                {
                    return NULL;
                }
            }
        }
    }
    return fault_reason->fault_texts;
}