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; }
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; }
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; }