You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rampart-dev@ws.apache.org by ma...@apache.org on 2008/06/06 12:04:35 UTC
svn commit: r663877 -
/webservices/rampart/trunk/c/src/util/rampart_handler_util.c
Author: manjula
Date: Fri Jun 6 03:04:35 2008
New Revision: 663877
URL: http://svn.apache.org/viewvc?rev=663877&view=rev
Log:
Fixing sending subcodes in the fault envelope case for SOAP11.
Modified:
webservices/rampart/trunk/c/src/util/rampart_handler_util.c
Modified: webservices/rampart/trunk/c/src/util/rampart_handler_util.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/util/rampart_handler_util.c?rev=663877&r1=663876&r2=663877&view=diff
==============================================================================
--- webservices/rampart/trunk/c/src/util/rampart_handler_util.c (original)
+++ webservices/rampart/trunk/c/src/util/rampart_handler_util.c Fri Jun 6 03:04:35 2008
@@ -162,48 +162,72 @@
axutil_array_list_t *sub_codes = NULL;
axiom_soap_body_t *body = NULL;
- sub_codes = axutil_array_list_create(env, 1);
- axutil_array_list_add(sub_codes, env, sub_code);
+ /* Creating the detailed node in the fault envelope*/
ns1 = axiom_namespace_create(env, RAMPART_WSSE_XMLNS, RAMPART_WSSE);
text_om_ele = axiom_element_create(env, NULL, "ProblemSecurityHeader", ns1, &text_om_node);
axiom_element_set_text(text_om_ele, env, detail_node_text, text_om_node);
- /*In case of SOAP v 1.1 we change the default version*/
+ /* In SOAP11 sub code is the faultcode and no soapenv:sender*/
+
if(axis2_msg_ctx_get_is_soap_11(msg_ctx, env))
{
- soap_version = AXIOM_SOAP11;
+ soap_version = AXIOM_SOAP11;
+ envelope = axiom_soap_envelope_create_default_soap_fault_envelope(env,
+ sub_code,
+ reason_text,
+ soap_version, NULL, text_om_node);
}
- envelope = axiom_soap_envelope_create_default_soap_fault_envelope(env,
+ /* In SOAP12 we need to create subcodes. subcode/value is the faultcode
+ in SOAP11 and fault/code/value is soapenv:Sender*/
+
+ else
+ {
+ sub_codes = axutil_array_list_create(env, 1);
+ axutil_array_list_add(sub_codes, env, sub_code);
+
+ envelope = axiom_soap_envelope_create_default_soap_fault_envelope(env,
"soapenv:Sender",
reason_text,
soap_version, sub_codes, text_om_node);
- body = axiom_soap_envelope_get_body(envelope, env);
- if(body)
- {
- axiom_node_t *body_node = NULL;
- body_node = axiom_soap_body_get_base_node(body, env);
- if(body_node)
+ if(envelope)
{
- axiom_node_t *subcode_node = NULL;
- subcode_node = oxs_axiom_get_node_by_local_name(env, body_node, AXIOM_SOAP12_SOAP_FAULT_SUB_CODE_LOCAL_NAME);
- if(subcode_node)
+ body = axiom_soap_envelope_get_body(envelope, env);
+ if(body)
{
- axiom_element_t *subcode_ele = NULL;
- subcode_ele = axiom_node_get_data_element(subcode_node, env);
- if(subcode_ele)
+ axiom_node_t *body_node = NULL;
+ body_node = axiom_soap_body_get_base_node(body, env);
+ if(body_node)
{
- axiom_element_declare_namespace(subcode_ele, env, subcode_node, ns1);
+ axiom_node_t *subcode_node = NULL;
+ subcode_node = oxs_axiom_get_node_by_local_name(env, body_node, AXIOM_SOAP12_SOAP_FAULT_SUB_CODE_LOCAL_NAME);
+ if(subcode_node)
+ {
+ axiom_element_t *subcode_ele = NULL;
+ subcode_ele = axiom_node_get_data_element(subcode_node, env);
+ if(subcode_ele)
+ {
+ axiom_element_declare_namespace(subcode_ele, env, subcode_node, ns1);
+ }
+ }
}
}
}
}
- axis2_msg_ctx_set_fault_soap_envelope(msg_ctx, env, envelope);
+ if(envelope)
+ {
+ axis2_msg_ctx_set_fault_soap_envelope(msg_ctx, env, envelope);
+ }
+
/*free sub codes*/
- axutil_array_list_free(sub_codes, env);
+ if(sub_codes)
+ {
+ axutil_array_list_free(sub_codes, env);
+ }
+
return;
}