axis-c-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From nand...@apache.org
Subject svn commit: r954982 - /axis/axis2/c/core/trunk/src/modules/mod_addr/addr_out_handler.c
Date Tue, 15 Jun 2010 17:49:56 GMT
Author: nandika
Date: Tue Jun 15 17:49:55 2010
New Revision: 954982

URL: http://svn.apache.org/viewvc?rev=954982&view=rev
Log:
added new property to add must understand attribute to addressing headers.

Modified:
    axis/axis2/c/core/trunk/src/modules/mod_addr/addr_out_handler.c

Modified: axis/axis2/c/core/trunk/src/modules/mod_addr/addr_out_handler.c
URL: http://svn.apache.org/viewvc/axis/axis2/c/core/trunk/src/modules/mod_addr/addr_out_handler.c?rev=954982&r1=954981&r2=954982&view=diff
==============================================================================
--- axis/axis2/c/core/trunk/src/modules/mod_addr/addr_out_handler.c (original)
+++ axis/axis2/c/core/trunk/src/modules/mod_addr/addr_out_handler.c Tue Jun 15 17:49:55 2010
@@ -60,7 +60,8 @@ axis2_addr_out_handler_process_string_in
     const axis2_char_t * value,
     const axis2_char_t * type,
     axiom_soap_header_t ** soap_header,
-    const axis2_char_t * addr_ns);
+    const axis2_char_t * addr_ns,
+	axis2_bool_t set_must_understand);
 
 AXIS2_EXTERN axis2_handler_t *AXIS2_CALL
 axis2_addr_out_handler_create(
@@ -104,6 +105,8 @@ axis2_addr_out_handler_invoke(
     axis2_endpoint_ref_t *epr_fault_to = NULL;
     axutil_property_t *property = NULL;
     const axis2_char_t *wsa_action = NULL;
+	axis2_bool_t set_must_understand = AXIS2_FALSE;
+	axutil_property_t *must_understand_prop;
 
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, msg_ctx, AXIS2_FAILURE);
@@ -135,6 +138,7 @@ axis2_addr_out_handler_invoke(
         return AXIS2_SUCCESS; /* If no action present, assume no addressing in use */
     }
 
+
     ctx = axis2_msg_ctx_get_base(msg_ctx, env);
     property = axis2_ctx_get_property(ctx, env, AXIS2_WSA_VERSION);
 
@@ -144,6 +148,14 @@ axis2_addr_out_handler_invoke(
         property = NULL;
     }
 
+	must_understand_prop = axis2_msg_ctx_get_property(msg_ctx, env, AXIS2_ADDR_ADD_MUST_UNDERSTAND_TO_ADDR_HEADERS);
+	if(must_understand_prop)
+	{
+		axis2_char_t *value = axutil_property_get_value(must_understand_prop, env);
+		if(axutil_strcmp(value, AXIS2_VALUE_TRUE) == 0)
+			set_must_understand = AXIS2_TRUE;
+	}
+
     /* Setting version 1.0 as the default addressing namespace */
     addr_ns = AXIS2_WSA_NAMESPACE;
 
@@ -254,7 +266,11 @@ axis2_addr_out_handler_invoke(
 
                 to_header_block = axiom_soap_header_add_header_block(soap_header, env,
                     AXIS2_WSA_TO, addressing_namespace);
-                to_header_block_node = axiom_soap_header_block_get_base_node(to_header_block,
env);
+				if(set_must_understand == AXIS2_TRUE)
+				{
+					axiom_soap_header_block_set_must_understand_with_bool(to_header_block, env, AXIS2_TRUE);
+				}
+				to_header_block_node = axiom_soap_header_block_get_base_node(to_header_block, env);
                 if(to_header_block_node)
                 {
                     axiom_element_t *to_header_block_element = NULL;
@@ -291,6 +307,10 @@ axis2_addr_out_handler_invoke(
                                 reference_header_block = axiom_soap_header_add_header_block(
                                     soap_header, env, axiom_element_get_localname(temp_ele,
env),
                                     axiom_element_get_namespace(temp_ele, env, temp_node));
+								if(set_must_understand)
+								{
+									axiom_soap_header_block_set_must_understand_with_bool(reference_header_block, env,
AXIS2_TRUE);
+								}
 
                                 reference_node = axiom_soap_header_block_get_base_node(
                                     reference_header_block, env);
@@ -331,7 +351,7 @@ axis2_addr_out_handler_invoke(
         if(action && *action)
         {
             axis2_addr_out_handler_process_string_info(env, action, AXIS2_WSA_ACTION, &soap_header,
-                addr_ns);
+				addr_ns, set_must_understand);
         }
 
         epr_reply_to = axis2_msg_info_headers_get_reply_to(msg_info_headers, env);
@@ -435,7 +455,7 @@ axis2_addr_out_handler_invoke(
         if(message_id)
         {
             axis2_addr_out_handler_process_string_info(env, message_id, AXIS2_WSA_MESSAGE_ID,
-                &soap_header, addr_ns);
+				&soap_header, addr_ns, set_must_understand);
         }
 
         relates_to = axis2_msg_info_headers_get_relates_to(msg_info_headers, env);
@@ -445,7 +465,7 @@ axis2_addr_out_handler_invoke(
             const axis2_char_t *value = NULL;
             value = axis2_relates_to_get_value(relates_to, env);
             relates_to_header_node = axis2_addr_out_handler_process_string_info(env, value,
-                AXIS2_WSA_RELATES_TO, &soap_header, addr_ns);
+				AXIS2_WSA_RELATES_TO, &soap_header, addr_ns, set_must_understand);
         }
 
         if(relates_to_header_node)
@@ -517,7 +537,8 @@ axis2_addr_out_handler_process_string_in
     const axis2_char_t * value,
     const axis2_char_t * type,
     axiom_soap_header_t ** soap_header_p,
-    const axis2_char_t * addr_ns)
+    const axis2_char_t * addr_ns,
+	axis2_bool_t set_must_understand)
 {
     axiom_soap_header_t *soap_header = NULL;
     axiom_soap_header_block_t *header_block = NULL;
@@ -551,6 +572,10 @@ axis2_addr_out_handler_process_string_in
                 addr_ns_obj = NULL;
             }
         }
+		if(set_must_understand)
+		{
+			axiom_soap_header_block_set_must_understand_with_bool(header_block, env, AXIS2_TRUE);
+		}
     }
     return header_block_node;
 }
@@ -581,7 +606,6 @@ axis2_addr_out_handler_add_to_soap_heade
 
     addr_ns_obj = axiom_namespace_create(env, addr_ns, AXIS2_WSA_DEFAULT_PREFIX);
     header_block = axiom_soap_header_add_header_block(soap_header, env, type, addr_ns_obj);
-
     if(addr_ns_obj)
     {
         axiom_namespace_free(addr_ns_obj, env);



Mime
View raw message