You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by na...@apache.org on 2006/04/21 08:14:15 UTC

svn commit: r395791 - in /webservices/axis2/trunk/c/modules/xml/soap: soap_header.c soap_header_block.c

Author: nandika
Date: Thu Apr 20 23:14:13 2006
New Revision: 395791

URL: http://svn.apache.org/viewcvs?rev=395791&view=rev
Log:
soap_header changed to fix jira issue 133

Modified:
    webservices/axis2/trunk/c/modules/xml/soap/soap_header.c
    webservices/axis2/trunk/c/modules/xml/soap/soap_header_block.c

Modified: webservices/axis2/trunk/c/modules/xml/soap/soap_header.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/soap/soap_header.c?rev=395791&r1=395790&r2=395791&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/soap_header.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/soap_header.c Thu Apr 20 23:14:13 2006
@@ -173,7 +173,7 @@
     
     axis2_om_element_t *this_ele = NULL;
     axis2_om_node_t *this_node = NULL;
-    
+    axis2_om_node_t *body_node = NULL;    
     axis2_om_node_t *parent_node = NULL;
     axis2_om_element_t *parent_ele = NULL;
     
@@ -193,21 +193,27 @@
         
     parent_node = AXIS2_SOAP_ENVELOPE_GET_BASE_NODE(envelope, env);
     
-    if(!parent_node || AXIS2_OM_NODE_GET_NODE_TYPE(parent_node, env) != AXIS2_OM_ELEMENT)
+    if(!parent_node || 
+            AXIS2_OM_NODE_GET_NODE_TYPE(parent_node, env) != AXIS2_OM_ELEMENT)
     {
         AXIS2_SOAP_HEADER_FREE(header, env);
         return NULL;
     }        
 
-    parent_ele = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(parent_node, env);
+    parent_ele = (axis2_om_element_t *)
+                    AXIS2_OM_NODE_GET_DATA_ELEMENT(parent_node, env);
     if(!parent_ele)
     {
         AXIS2_SOAP_HEADER_FREE(header, env);
         return NULL;
     }
-    
+    if(NULL != AXIS2_OM_NODE_GET_FIRST_CHILD(parent_node, env))
+    {
+        body_node = AXIS2_OM_NODE_GET_FIRST_CHILD(parent_node, env);
+        AXIS2_OM_NODE_DETACH(body_node, env);
+    }
+
     parent_ns = AXIS2_OM_ELEMENT_GET_NAMESPACE(parent_ele, env, parent_node);
-    
     this_ele = axis2_om_element_create(env, parent_node,
                  AXIS2_SOAP_HEADER_LOCAL_NAME, parent_ns, &this_node);
     if(!this_ele)
@@ -217,9 +223,12 @@
     }
                            
     header_impl->om_ele_node = this_node;
-    
     axis2_soap_envelope_set_header(envelope, env, header);
     
+    if(NULL != body_node)
+    {
+        AXIS2_OM_NODE_ADD_CHILD(parent_node, env, body_node);
+    }
     return &(header_impl->soap_header);                 
 }
 

Modified: webservices/axis2/trunk/c/modules/xml/soap/soap_header_block.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/soap/soap_header_block.c?rev=395791&r1=395790&r2=395791&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/soap_header_block.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/soap_header_block.c Thu Apr 20 23:14:13 2006
@@ -412,6 +412,10 @@
 {
     axis2_soap_header_block_impl_t *header_block_impl = NULL;
     axis2_om_attribute_t* om_attr = NULL;
+    axis2_om_node_t *header_node = NULL;
+    axis2_om_element_t *header_ele = NULL;
+    axis2_om_namespace_t *header_ns = NULL;
+    axis2_char_t *prefix = NULL;
     axis2_qname_t *qn = NULL;
     axis2_om_namespace_t *om_ns = NULL;
     axis2_om_element_t *om_ele = NULL;
@@ -420,8 +424,26 @@
     AXIS2_PARAM_CHECK((*env)->error, attr_name, AXIS2_FAILURE);
     
     header_block_impl = AXIS2_INTF_TO_IMPL(header_block);
+        
+    header_node = AXIS2_OM_NODE_GET_PARENT(header_block_impl->om_ele_node, env);
+    if(!header_node)
+    {
+        return AXIS2_FAILURE;    
+    }
+    if(AXIS2_OM_NODE_GET_NODE_TYPE(header_node, env) == AXIS2_OM_ELEMENT)
+    {
+        header_ele = (axis2_om_element_t*)AXIS2_OM_NODE_GET_DATA_ELEMENT(header_node, env);        
+        if(!header_ele)
+        {
+            return AXIS2_FAILURE;
+        }
+        header_ns = AXIS2_OM_ELEMENT_GET_NAMESPACE(header_ele, env, header_node); 
+        if(!header_ns)
+            return AXIS2_FAILURE;
+        prefix = AXIS2_OM_NAMESPACE_GET_PREFIX(header_ns, env);            
+    }
     
-    qn = axis2_qname_create(env, attr_name, soap_envelope_namespace_uri, NULL);
+    qn = axis2_qname_create(env, attr_name, soap_envelope_namespace_uri, prefix);
     
     if(!qn)
         return AXIS2_FAILURE;
@@ -470,6 +492,10 @@
     axis2_soap_header_block_impl_t *header_block_impl = NULL;
     axis2_om_attribute_t* om_attr = NULL;
     axis2_char_t *attr_value = NULL;
+    axis2_om_node_t *header_node = NULL;
+    axis2_om_element_t *header_ele = NULL;
+    axis2_om_namespace_t *header_ns = NULL;
+    axis2_char_t *prefix = NULL;
     axis2_qname_t *qn = NULL;
     axis2_om_element_t *om_ele = NULL;
     AXIS2_ENV_CHECK(env, NULL);
@@ -477,7 +503,24 @@
     AXIS2_PARAM_CHECK((*env)->error, soap_envelope_namespace_uri, NULL);
     header_block_impl = AXIS2_INTF_TO_IMPL(header_block);
     
-    qn = axis2_qname_create(env, attr_name, soap_envelope_namespace_uri, NULL);
+    header_node = AXIS2_OM_NODE_GET_PARENT(header_block_impl->om_ele_node, env);
+    if(!header_node)
+    {
+        return AXIS2_FAILURE;    
+    }
+    if(AXIS2_OM_NODE_GET_NODE_TYPE(header_node, env) == AXIS2_OM_ELEMENT)
+    {
+        header_ele = (axis2_om_element_t*)AXIS2_OM_NODE_GET_DATA_ELEMENT(header_node, env);        
+        if(!header_ele)
+        {
+            return AXIS2_FAILURE;
+        }
+        header_ns = AXIS2_OM_ELEMENT_GET_NAMESPACE(header_ele, env, header_node); 
+        if(!header_ns)
+            return AXIS2_FAILURE;
+        prefix = AXIS2_OM_NAMESPACE_GET_PREFIX(header_ns, env);            
+    }
+    qn = axis2_qname_create(env, attr_name, soap_envelope_namespace_uri, prefix);
     if(!qn)
         return NULL;
     om_ele = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(