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 axis2_status_t AXIS2_CALL axiom_soap_body_convert_fault_to_soap11( axiom_soap_body_t * soap_body, const axutil_env_t * env) { if(soap_body) { axiom_soap_fault_t *soap_fault = NULL; if(axiom_soap_body_has_fault(soap_body, env)) { soap_fault = axiom_soap_body_get_fault(soap_body, env); if(soap_fault) { axiom_soap_fault_code_t *fault_code = NULL; axiom_soap_fault_reason_t *fault_reason = NULL; axiom_soap_fault_detail_t *fault_detail = NULL; axiom_soap_fault_role_t *fault_role = NULL; fault_code = axiom_soap_fault_get_code(soap_fault, env); if(fault_code) { axiom_node_t *fault_code_om_node = NULL; axiom_element_t *fault_code_om_ele = NULL; axiom_node_t *fault_value_om_node = NULL; axiom_element_t *fault_value_om_ele = NULL; axiom_soap_fault_value_t *fault_value = NULL; axis2_char_t *text = NULL; fault_code_om_node = axiom_soap_fault_code_get_base_node(fault_code, env); if(fault_code_om_node) { fault_code_om_ele = (axiom_element_t *)axiom_node_get_data_element( fault_code_om_node, env); if(fault_code_om_ele) { axiom_element_set_localname(fault_code_om_ele, env, AXIOM_SOAP11_SOAP_FAULT_CODE_LOCAL_NAME); fault_value = axiom_soap_fault_code_get_value(fault_code, env); if(fault_value) { fault_value_om_node = axiom_soap_fault_value_get_base_node( fault_value, env); if(fault_value_om_node) { fault_value_om_ele = (axiom_element_t *)axiom_node_get_data_element( fault_value_om_node, env); if(fault_value_om_ele) { text = axiom_element_get_text(fault_value_om_ele, env, fault_value_om_node); if(text) { axiom_element_set_text(fault_code_om_ele, env, text, fault_code_om_node); } } axiom_node_free_tree(fault_value_om_node, env); axiom_soap_fault_value_set_base_node(fault_value, env, NULL); } } } } } fault_reason = axiom_soap_fault_get_reason(soap_fault, env); if(fault_reason) { axiom_node_t *fault_reason_om_node = NULL; axiom_element_t *fault_reason_om_ele = NULL; axiom_node_t *fault_text_om_node = NULL; axiom_element_t *fault_text_om_ele = NULL; axiom_soap_fault_text_t *fault_text = NULL; axis2_char_t *text = NULL; fault_reason_om_node = axiom_soap_fault_reason_get_base_node(fault_reason, env); if(fault_reason_om_node) { fault_reason_om_ele = (axiom_element_t *)axiom_node_get_data_element( fault_reason_om_node, env); if(fault_reason_om_ele) { axiom_element_set_localname(fault_reason_om_ele, env, AXIOM_SOAP11_SOAP_FAULT_STRING_LOCAL_NAME); fault_text = axiom_soap_fault_reason_get_first_soap_fault_text( fault_reason, env); if(fault_text) { fault_text_om_node = axiom_soap_fault_text_get_base_node( fault_text, env); if(fault_text_om_node) { fault_text_om_ele = (axiom_element_t *)axiom_node_get_data_element( fault_text_om_node, env); if(fault_text_om_ele) { text = axiom_element_get_text(fault_text_om_ele, env, fault_text_om_node); if(text) { axiom_element_set_text(fault_reason_om_ele, env, text, fault_reason_om_node); } } axiom_node_free_tree(fault_text_om_node, env); axiom_soap_fault_text_set_base_node(fault_text, env, NULL); } } } } } fault_role = axiom_soap_fault_get_role(soap_fault, env); if(fault_role) { axiom_node_t *fault_role_om_node = NULL; axiom_element_t *fault_role_om_ele = NULL; fault_role_om_node = axiom_soap_fault_role_get_base_node(fault_role, env); if(fault_role_om_node) { fault_role_om_ele = (axiom_element_t *)axiom_node_get_data_element( fault_role_om_node, env); if(fault_role_om_ele) { axiom_element_set_localname(fault_role_om_ele, env, AXIOM_SOAP11_SOAP_FAULT_ACTOR_LOCAL_NAME); } } } fault_detail = axiom_soap_fault_get_detail(soap_fault, env); if(fault_detail) { axiom_node_t *fault_detail_om_node = NULL; axiom_element_t *fault_detail_om_ele = NULL; fault_detail_om_node = axiom_soap_fault_detail_get_base_node(fault_detail, env); if(fault_detail_om_node) { fault_detail_om_ele = (axiom_element_t *)axiom_node_get_data_element( fault_detail_om_node, env); if(fault_detail_om_ele) { axiom_element_set_localname(fault_detail_om_ele, env, AXIOM_SOAP11_SOAP_FAULT_DETAIL_LOCAL_NAME); } } } } } } return AXIS2_SUCCESS; }