You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by na...@apache.org on 2006/01/20 11:24:00 UTC

svn commit: r370775 - in /webservices/axis2/trunk/c: include/ modules/xml/om/ modules/xml/soap/ test/xml/soap/

Author: nandika
Date: Fri Jan 20 02:23:42 2006
New Revision: 370775

URL: http://svn.apache.org/viewcvs?rev=370775&view=rev
Log:
errors corrected 

Modified:
    webservices/axis2/trunk/c/include/axis2_soap_builder.h
    webservices/axis2/trunk/c/include/axis2_soap_fault_sub_code.h
    webservices/axis2/trunk/c/modules/xml/om/om_children_qname_iterator.c
    webservices/axis2/trunk/c/modules/xml/om/om_element.c
    webservices/axis2/trunk/c/modules/xml/om/om_node.c
    webservices/axis2/trunk/c/modules/xml/soap/soap12_builder_helper.c
    webservices/axis2/trunk/c/modules/xml/soap/soap_builder.c
    webservices/axis2/trunk/c/modules/xml/soap/soap_envelope.c
    webservices/axis2/trunk/c/modules/xml/soap/soap_fault_sub_code.c
    webservices/axis2/trunk/c/modules/xml/soap/soap_header.c
    webservices/axis2/trunk/c/modules/xml/soap/soap_header_block.c
    webservices/axis2/trunk/c/test/xml/soap/test_soap.c

Modified: webservices/axis2/trunk/c/include/axis2_soap_builder.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_soap_builder.h?rev=370775&r1=370774&r2=370775&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_soap_builder.h (original)
+++ webservices/axis2/trunk/c/include/axis2_soap_builder.h Fri Jan 20 02:23:42 2006
@@ -58,9 +58,10 @@
                                          (axis2_soap_builder_t *builder,
                                           axis2_env_t **env);
                                           
-        axis2_om_node_t * (AXIS2_CALL *next)(axis2_soap_builder_t *builder,
-                                             axis2_env_t **env);
-                                             
+        axis2_status_t (AXIS2_CALL *next)(axis2_soap_builder_t *builder,
+                                axis2_env_t **env);
+                                
+                                                     
         axis2_om_node_t* (AXIS2_CALL *get_document_element)
                                             (axis2_soap_builder_t *builder,
                                              axis2_env_t **env); 
@@ -145,7 +146,8 @@
         ((builder)->ops->get_soap_version(builder, env))
         
 #define AXIS2_SOAP_BUILDER_SET_ELEMENT_LEVEL(builder, env, ele_level) \
-        ((builder)->ops->set_element_level(builder, env, ele_level))        
+        ((builder)->ops->set_element_level(builder, env, ele_level))
+                
 /** @} */
 #ifdef __cplusplus
 }

Modified: webservices/axis2/trunk/c/include/axis2_soap_fault_sub_code.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_soap_fault_sub_code.h?rev=370775&r1=370774&r2=370775&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_soap_fault_sub_code.h (original)
+++ webservices/axis2/trunk/c/include/axis2_soap_fault_sub_code.h Fri Jan 20 02:23:42 2006
@@ -33,6 +33,7 @@
     typedef struct axis2_soap_fault_sub_code_ops axis2_soap_fault_sub_code_ops_t;
     typedef struct axis2_soap_fault_sub_code axis2_soap_fault_sub_code_t;
     struct axis2_soap_fault_value;
+    struct axis2_soap_builder;
 /**
  * @defgroup axis2_soap_fault_sub_code
  * @ingroup axis2_soap
@@ -91,7 +92,13 @@
         int (AXIS2_CALL *set_soap_version)
                         (axis2_soap_fault_sub_code_t *fault_sub_code,
                          axis2_env_t **env,
-                         int soap_version);                                                                                           
+                         int soap_version);      
+                         
+        axis2_status_t (AXIS2_CALL *set_builder)
+                        (axis2_soap_fault_sub_code_t *fault_sub_code,
+                         axis2_env_t **env,
+                         struct axis2_soap_builder* builder);
+                                                                                                                      
                                                                                                                 
     };      
 
@@ -152,6 +159,8 @@
 #define AXIS2_SOAP_FAULT_SUB_CODE_SET_SOAP_VRESION(fault_sub_code, env, version) \
         ((fault_sub_code)->ops->set_soap_version(fault_sub_code, env, version))        
       
+#define AXIS2_SOAP_FAULT_SUB_CODE_SET_BUILDER(fault_sub_code, env, builder) \
+        ((fault_sub_code)->ops->set_builder(fault_sub_code, env, builder))      
 /** @} */
 
 #ifdef __cplusplus

Modified: webservices/axis2/trunk/c/modules/xml/om/om_children_qname_iterator.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/om/om_children_qname_iterator.c?rev=370775&r1=370774&r2=370775&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/om/om_children_qname_iterator.c (original)
+++ webservices/axis2/trunk/c/modules/xml/om/om_children_qname_iterator.c Fri Jan 20 02:23:42 2006
@@ -76,7 +76,6 @@
     
     AXIS2_ENV_CHECK(env, NULL);
     AXIS2_PARAM_CHECK((*env)->error, current_child, NULL);
-    AXIS2_PARAM_CHECK((*env)->error, given_qname, NULL);
     
     iterator_impl = (axis2_om_children_qname_iterator_impl_t*)AXIS2_MALLOC(
                         (*env)->allocator,
@@ -95,6 +94,7 @@
     iterator_impl->matching_node_found = AXIS2_FALSE;
     iterator_impl->next_called = AXIS2_FALSE;
     iterator_impl->remove_called = AXIS2_FALSE;
+    iterator_impl->given_qname = NULL;
     
     
     iterator_impl->iterator.ops = 
@@ -109,8 +109,10 @@
     }
                                     
     iterator_impl->current_child = current_child;
-    iterator_impl->given_qname = AXIS2_QNAME_CLONE(given_qname, env);  
-    
+    if(given_qname)
+    {
+        iterator_impl->given_qname = AXIS2_QNAME_CLONE(given_qname, env);  
+    }
     iterator_impl->iterator.ops->free_fn = 
             axis2_om_children_qname_iterator_free;
     iterator_impl->iterator.ops->remove = 

Modified: webservices/axis2/trunk/c/modules/xml/om/om_element.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/om/om_element.c?rev=370775&r1=370774&r2=370775&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/om/om_element.c (original)
+++ webservices/axis2/trunk/c/modules/xml/om/om_element.c Fri Jan 20 02:23:42 2006
@@ -954,7 +954,6 @@
 {
     AXIS2_FUNC_PARAM_CHECK(om_element, env, NULL);
     AXIS2_PARAM_CHECK((*env)->error, element_node, NULL);
-    AXIS2_PARAM_CHECK((*env)->error, element_qname, NULL);
     
     return axis2_om_children_qname_iterator_create(env,
                 AXIS2_OM_NODE_GET_FIRST_CHILD(element_node, env),

Modified: webservices/axis2/trunk/c/modules/xml/om/om_node.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/om/om_node.c?rev=370775&r1=370774&r2=370775&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/om/om_node.c (original)
+++ webservices/axis2/trunk/c/modules/xml/om/om_node.c Fri Jan 20 02:23:42 2006
@@ -598,7 +598,7 @@
     while(!(om_node_impl->first_child) && !(om_node_impl->done) 
         && om_node_impl->builder)
     {
-        AXIS2_OM_STAX_BUILDER_NEXT(om_node_impl->builder, env);
+        AXIS2_OM_STAX_BUILDER_NEXT_WITH_TOKEN(om_node_impl->builder, env);
     }
     /**********************************************************/
     return om_node_impl->first_child;
@@ -632,7 +632,7 @@
     while(!(om_node_impl->next_sibling) && om_node_impl->parent &&
     om_node_impl->builder && !(AXIS2_OM_NODE_GET_BUILD_STATUS(om_node_impl->parent, env)))
     {
-        AXIS2_OM_STAX_BUILDER_NEXT(om_node_impl->builder, env);
+        AXIS2_OM_STAX_BUILDER_NEXT_WITH_TOKEN(om_node_impl->builder, env);
     }
     /*******************************************************/
     return om_node_impl->next_sibling;

Modified: webservices/axis2/trunk/c/modules/xml/soap/soap12_builder_helper.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/soap/soap12_builder_helper.c?rev=370775&r1=370774&r2=370775&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/soap12_builder_helper.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/soap12_builder_helper.c Fri Jan 20 02:23:42 2006
@@ -269,7 +269,6 @@
                         AXIS2_SOAP_FAULT_NODE_SET_SOAP_VERSION(soap_fault_node, env, AXIS2_SOAP12);
                         AXIS2_SOAP_FAULT_SET_NODE(soap_fault, env, soap_fault_node);                    
                         */
-                        printf("node create");                           
                         builder_helper_impl->node_present = AXIS2_TRUE;                    
                     }
                 }else

Modified: webservices/axis2/trunk/c/modules/xml/soap/soap_builder.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/soap/soap_builder.c?rev=370775&r1=370774&r2=370775&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/soap_builder.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/soap_builder.c Fri Jan 20 02:23:42 2006
@@ -90,7 +90,7 @@
                                 (axis2_soap_builder_t *builder,
                                  axis2_env_t **env);
                                 
-axis2_om_node_t * AXIS2_CALL
+axis2_status_t AXIS2_CALL
 axis2_soap_builder_next(axis2_soap_builder_t *builder,
                               axis2_env_t **env);
                                     
@@ -256,7 +256,7 @@
                                  axis2_env_t **env)
 {
     axis2_soap_builder_impl_t *builder_impl = NULL;
-    void *value = NULL;
+    int status = AXIS2_SUCCESS;
     AXIS2_FUNC_PARAM_CHECK(builder, env, NULL);
     builder_impl = AXIS2_INTF_TO_IMPL(builder);
     
@@ -266,7 +266,7 @@
     while(!(builder_impl->soap_envelope) && 
         !AXIS2_OM_STAX_BUILDER_IS_COMPLETE(builder_impl->om_builder, env))
     {
-       value = axis2_soap_builder_next(builder, env); 
+       status = axis2_soap_builder_next(builder, env); 
     }        
     
     return builder_impl->soap_envelope;
@@ -283,7 +283,7 @@
     return AXIS2_OM_STAX_BUILDER_GET_DOCUMENT(builder_impl->om_builder, env);
  }
                                 
-axis2_om_node_t * AXIS2_CALL
+axis2_status_t AXIS2_CALL
 axis2_soap_builder_next(axis2_soap_builder_t *builder,
                               axis2_env_t **env)
 {
@@ -292,7 +292,7 @@
     int current_event = -1;
     axis2_om_node_t *current_node =  NULL;
     int status = AXIS2_SUCCESS;
-    AXIS2_FUNC_PARAM_CHECK(builder, env, NULL);
+    AXIS2_FUNC_PARAM_CHECK(builder, env, AXIS2_FAILURE);
     builder_impl = AXIS2_INTF_TO_IMPL(builder);
     lastnode = AXIS2_OM_STAX_BUILDER_GET_LAST_NODE(builder_impl->om_builder, env);
     
@@ -307,20 +307,22 @@
     {
         builder_impl->last_node_status = AXIS2_BUILDER_LAST_NODE_DONE_FALSE;
     }
-    
+    /*
     current_node = AXIS2_OM_STAX_BUILDER_NEXT(builder_impl->om_builder, env);
-    
-    
+    */
+    current_event = AXIS2_OM_STAX_BUILDER_NEXT_WITH_TOKEN(builder_impl->om_builder, env);
+    /*
     current_event = AXIS2_OM_STAX_BUILDER_GET_CURRENT_EVENT(builder_impl->om_builder, env);
+    */
     if(current_event == AXIS2_XML_READER_EMPTY_ELEMENT ||
         current_event ==  AXIS2_XML_READER_START_ELEMENT)
     {
+      current_node = AXIS2_OM_STAX_BUILDER_GET_LAST_NODE(builder_impl->om_builder, env);
+    
       status = axis2_soap_builder_create_om_element(builder, env, current_node);
     }
    
-    if(status == AXIS2_FAILURE)
-            return NULL;
-    return current_node;
+    return status;
 }
                                     
 axis2_om_node_t* AXIS2_CALL
@@ -374,24 +376,30 @@
                                 axis2_bool_t is_soap_envelope)
 {
     axis2_soap_builder_impl_t *builder_impl = NULL;
+    
     axis2_om_element_t *parent_ele  = NULL;
     axis2_char_t *parent_localname = NULL;
-    axis2_char_t *element_name = NULL;
+    
+    axis2_om_element_t *om_element = NULL;
+    axis2_char_t *ele_localname = NULL;
+    
     int element_level = 0;
     int status = AXIS2_SUCCESS;
-    axis2_om_element_t *om_element = NULL;
+    
     AXIS2_FUNC_PARAM_CHECK(builder, env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, om_element_node, AXIS2_FAILURE);
     
     builder_impl = AXIS2_INTF_TO_IMPL(builder);
     
     
-    element_level = AXIS2_OM_STAX_BUILDER_GET_ELEMENT_LEVEL(builder_impl->om_builder, env);
+    element_level = AXIS2_OM_STAX_BUILDER_GET_ELEMENT_LEVEL(
+                        builder_impl->om_builder, env);
     
     om_element = (axis2_om_element_t *)
                 AXIS2_OM_NODE_GET_DATA_ELEMENT(om_element_node, env);
     
-    element_name = AXIS2_OM_ELEMENT_GET_LOCALNAME(om_element, env);
+    ele_localname = AXIS2_OM_ELEMENT_GET_LOCALNAME(om_element, env);
+    
     
     if(parent)
     {
@@ -402,31 +410,38 @@
     {   
         int status = AXIS2_SUCCESS;
         
-        if(AXIS2_STRCASECMP(element_name, AXIS2_SOAP_ENVELOPE_LOCAL_NAME) != 0)
+        if(AXIS2_STRCASECMP(ele_localname, AXIS2_SOAP_ENVELOPE_LOCAL_NAME) != 0)
         {
-            AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SOAP_MESSAGE_FIRST_ELEMENT_MUST_CONTAIN_LOCAL_NAME, AXIS2_FAILURE);
+            AXIS2_ERROR_SET((*env)->error, 
+                AXIS2_ERROR_SOAP_MESSAGE_FIRST_ELEMENT_MUST_CONTAIN_LOCAL_NAME, AXIS2_FAILURE);
             return AXIS2_FAILURE;   
         }
         builder_impl->soap_envelope = axis2_soap_envelope_create_null(env);
        
-        status = AXIS2_SOAP_ENVELOPE_SET_BASE_NODE(builder_impl->soap_envelope, env, om_element_node);
+        status = AXIS2_SOAP_ENVELOPE_SET_BASE_NODE(builder_impl->soap_envelope, 
+                    env, om_element_node);
+        
         AXIS2_SOAP_ENVELOPE_SET_SOAP_VERSION(builder_impl->soap_envelope, env, builder_impl->soap_version);
-        axis2_soap_builder_process_namespace_data(builder, env, om_element_node, AXIS2_TRUE);
         
+        AXIS2_SOAP_ENVELOPE_SET_BUILDER(builder_impl->soap_envelope, env, builder);
+        
+        status = axis2_soap_builder_process_namespace_data(builder, env, om_element_node, AXIS2_TRUE);
     }
     else if(element_level == 2)
     {
-        axis2_soap_header_t *soap_header = NULL;
-        if(AXIS2_STRCMP(element_name, AXIS2_SOAP_HEADER_LOCAL_NAME) == 0)
-        {
+        if(AXIS2_STRCMP(ele_localname, AXIS2_SOAP_HEADER_LOCAL_NAME) == 0)
+        {   
+            axis2_soap_header_t *soap_header = NULL;
             if(builder_impl->header_present)
             {
+                printf("AXIS2_ERROR_SOAP_BUILDER_MULTIPLE_HEADERS_ENCOUNTERED");
                 AXIS2_ERROR_SET((*env)->error, 
                     AXIS2_ERROR_SOAP_BUILDER_MULTIPLE_HEADERS_ENCOUNTERED, AXIS2_FAILURE);
                     return AXIS2_FAILURE;
             }
             if(builder_impl->body_present)
             {
+                printf("AXIS2_ERROR_SOAP_BUILDER_HEADER_BODY_WRONG_ORDER");
                 AXIS2_ERROR_SET((*env)->error,
                     AXIS2_ERROR_SOAP_BUILDER_HEADER_BODY_WRONG_ORDER, AXIS2_FAILURE);
                 return  AXIS2_FAILURE;                                              
@@ -436,13 +451,16 @@
             AXIS2_SOAP_HEADER_SET_BASE_NODE(soap_header, env, om_element_node);
             AXIS2_SOAP_HEADER_SET_SOAP_VERSION(soap_header, env, builder_impl->soap_version);
             AXIS2_SOAP_ENVELOPE_SET_HEADER(builder_impl->soap_envelope, env, soap_header);
-            axis2_soap_builder_process_namespace_data(builder, env, om_element_node, AXIS2_TRUE);
+            status = axis2_soap_builder_process_namespace_data(builder, env, 
+                                om_element_node, AXIS2_TRUE);
         }
-        else if(AXIS2_STRCMP(element_name, AXIS2_SOAP_BODY_LOCAL_NAME))
+        else if(AXIS2_STRCMP(ele_localname, AXIS2_SOAP_BODY_LOCAL_NAME) == 0)
         {
+           
             axis2_soap_body_t *soap_body = NULL;
             if(builder_impl->body_present)
             {
+                printf("AXIS2_ERROR_SOAP_BUILDER_MULTIPLE_BODY_ELEMENTS_ENCOUNTERED");
                 AXIS2_ERROR_SET((*env)->error, 
                     AXIS2_ERROR_SOAP_BUILDER_MULTIPLE_BODY_ELEMENTS_ENCOUNTERED, AXIS2_FAILURE);
                 return AXIS2_FAILURE;                   
@@ -453,10 +471,13 @@
             AXIS2_SOAP_BODY_SET_BASE_NODE(soap_body, env, om_element_node);
             AXIS2_SOAP_BODY_SET_SOAP_VERSION(soap_body, env, builder_impl->soap_version);
             AXIS2_SOAP_ENVELOPE_SET_BODY(builder_impl->soap_envelope, env, soap_body);
-            axis2_soap_builder_process_namespace_data(builder, env, om_element_node, AXIS2_TRUE);
-                    
-        }else
+            status = axis2_soap_builder_process_namespace_data(builder, env, 
+                        om_element_node, AXIS2_TRUE);
+            printf("body create");                        
+        }
+        else
         {
+            printf("AXIS2_ERROR_SOAP_BUILDER_ENVELOPE_CAN_HAVE_ONLY_HEADER_AND_BODY");
             AXIS2_ERROR_SET((*env)->error,
                     AXIS2_ERROR_SOAP_BUILDER_ENVELOPE_CAN_HAVE_ONLY_HEADER_AND_BODY, AXIS2_FAILURE);
             return AXIS2_FAILURE;                                            
@@ -476,7 +497,7 @@
     }
     else if((element_level == 3) && 
             AXIS2_STRCASECMP(parent_localname, AXIS2_SOAP_BODY_LOCAL_NAME) == 0 &&
-                AXIS2_STRCASECMP(element_name, AXIS2_SOAP_BODY_FAULT_LOCAL_NAME) == 0)
+                AXIS2_STRCASECMP(ele_localname, AXIS2_SOAP_BODY_FAULT_LOCAL_NAME) == 0)
     {
             axis2_soap_body_t *soap_body = NULL;
             axis2_soap_fault_t *soap_fault = NULL;
@@ -490,10 +511,6 @@
             env_ns = AXIS2_OM_ELEMENT_GET_NAMESPACE(envelope_ele, env);
                        
             soap_body = AXIS2_SOAP_ENVELOPE_GET_BODY(builder_impl->soap_envelope, env);
-            /*
-            printf("________________%s", AXIS2_OM_ELEMENT_GET_LOCALNAME(
-                    (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(AXIS2_SOAP_BODY_GET_BASE_NODE(soap_body,env), env), env));
-            */
             soap_fault = axis2_soap_fault_create(env);
             
             AXIS2_SOAP_FAULT_SET_BASE_NODE(soap_fault, env, om_element_node);
@@ -530,6 +547,7 @@
             status = AXIS2_SOAP12_BUILDER_HELPER_HANDLE_EVENT(((axis2_soap12_builder_helper_t *)
             (builder_impl->builder_helper)), env,  om_element_node , element_level);
         }
+        
     }
     return status;
 }
@@ -541,7 +559,6 @@
                                  axis2_om_node_t *om_node,
                                  int is_soap_element)
 {
-    axis2_soap_builder_impl_t *builder_impl = NULL;
     axis2_om_element_t *om_ele = NULL;
     axis2_om_namespace_t *om_ns = NULL;
     axis2_char_t *ns_uri = NULL;
@@ -549,16 +566,17 @@
     AXIS2_PARAM_CHECK((*env)->error, om_node, AXIS2_FAILURE);
     if(!is_soap_element)
         return AXIS2_SUCCESS;
-    builder_impl = AXIS2_INTF_TO_IMPL(builder);
     if(AXIS2_OM_NODE_GET_NODE_TYPE(om_node, env) == AXIS2_OM_ELEMENT)
     {
         om_ele = (axis2_om_element_t *) AXIS2_OM_NODE_GET_DATA_ELEMENT(om_node, env);
         om_ns = AXIS2_OM_ELEMENT_GET_NAMESPACE(om_ele, env);
         ns_uri = AXIS2_OM_NAMESPACE_GET_URI(om_ns, env);
         if(om_ns && 
-                (AXIS2_STRCMP(ns_uri, AXIS2_SOAP11_SOAP_ENVELOPE_NAMESPACE_URI) != 0 ||
-                 AXIS2_STRCMP(ns_uri, AXIS2_SOAP12_SOAP_ENVELOPE_NAMESPACE_URI) != 0))
+                (AXIS2_STRCMP(ns_uri, AXIS2_SOAP11_SOAP_ENVELOPE_NAMESPACE_URI) != 0) &&
+                (AXIS2_STRCMP(ns_uri, AXIS2_SOAP12_SOAP_ENVELOPE_NAMESPACE_URI) != 0))
         {
+            printf("AXIS2_ERROR_INVALID_SOAP_NAMESPACE_URI");
+            
             AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_INVALID_SOAP_NAMESPACE_URI, AXIS2_FAILURE);                
             return AXIS2_FAILURE;
         }

Modified: webservices/axis2/trunk/c/modules/xml/soap/soap_envelope.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/soap/soap_envelope.c?rev=370775&r1=370774&r2=370775&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/soap_envelope.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/soap_envelope.c Fri Jan 20 02:23:42 2006
@@ -319,23 +319,35 @@
  *                     object
  * @throws OMException
  */
-axis2_soap_header_t* AXIS2_CALL axis2_soap_envelope_get_header(axis2_soap_envelope_t *envelope,
-    axis2_env_t **env)
+axis2_soap_header_t* AXIS2_CALL 
+axis2_soap_envelope_get_header(axis2_soap_envelope_t *envelope,
+                                axis2_env_t **env)
 {
     axis2_soap_envelope_impl_t *envelope_impl = NULL;
     axis2_qname_t *header_qn = NULL;
     axis2_om_node_t *header_node = NULL;
     axis2_om_element_t *header_ele = NULL;
     axis2_om_element_t *envelope_ele = NULL;
-    
+    int status = AXIS2_SUCCESS;
     
     AXIS2_FUNC_PARAM_CHECK(envelope, env, NULL);
     envelope_impl = AXIS2_INTF_TO_IMPL(envelope);
     
     if(envelope_impl->header)
     {
+        printf("header already there ");
         return envelope_impl->header;
+    }
+    if(envelope_impl->soap_builder)
+    {   printf("header pulled");
+        while(!(envelope_impl->header) && !AXIS2_OM_NODE_GET_BUILD_STATUS(envelope_impl->om_ele_node, env))
+        {
+            status = AXIS2_SOAP_BUILDER_NEXT(envelope_impl->soap_builder, env);  
+            if(status == AXIS2_FAILURE)
+                return NULL;
+        }
     }        
+    /*
     else
     {
         envelope_impl->header = axis2_soap_header_create(env);
@@ -361,9 +373,10 @@
         }
         if(envelope_impl->header)
             return envelope_impl->header;                         
-    }            
+    } 
+    */           
     if(!(envelope_impl->header))
-    {
+    {    printf(" create new");
         envelope_impl->header = axis2_soap_header_create_with_parent(env, envelope);
         if(envelope_impl->soap_version == AXIS2_SOAP12)
         {
@@ -424,20 +437,32 @@
     axis2_om_element_t *envelope_ele = NULL;
     axis2_om_node_t *first_node = NULL;
     axis2_om_element_t *first_ele = NULL;
-    
+    int status = AXIS2_SUCCESS;
     axis2_om_node_t *next_node = NULL;
     axis2_om_element_t *next_ele = NULL;
     
     AXIS2_FUNC_PARAM_CHECK(envelope, env, NULL);
     envelope_impl = AXIS2_INTF_TO_IMPL(envelope);
     
-    
     if(envelope_impl->body)
     {
         return envelope_impl->body;
     }
+    else if(envelope_impl->soap_builder)
+    {
+        while(!(envelope_impl->body)  && !AXIS2_OM_NODE_GET_BUILD_STATUS(envelope_impl->om_ele_node, env))
+        {
+            status = AXIS2_SOAP_BUILDER_NEXT(envelope_impl->soap_builder, env);
+            if(status == AXIS2_FAILURE)
+            {
+                return NULL;
+            }                
+        }
+        if(envelope_impl->body)
+            return envelope_impl->body;
+    }
     
-    
+    /*
     envelope_ele = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(
                         envelope_impl->om_ele_node, env);
                             
@@ -480,13 +505,15 @@
         }               
     
     }
+    */
     return envelope_impl->body;
 }
 
-axis2_status_t AXIS2_CALL axis2_soap_envelope_serialize(axis2_soap_envelope_t *envelope,
-    axis2_env_t **env,
-    axis2_om_output_t *om_output, 
-    axis2_bool_t cache)
+axis2_status_t AXIS2_CALL 
+axis2_soap_envelope_serialize(axis2_soap_envelope_t *envelope,
+                              axis2_env_t **env,
+                              axis2_om_output_t *om_output, 
+                              axis2_bool_t cache)
 {
     axis2_soap_envelope_impl_t *envelope_impl = NULL;
     AXIS2_FUNC_PARAM_CHECK(envelope, env, AXIS2_FAILURE);

Modified: webservices/axis2/trunk/c/modules/xml/soap/soap_fault_sub_code.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/soap/soap_fault_sub_code.c?rev=370775&r1=370774&r2=370775&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/soap_fault_sub_code.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/soap_fault_sub_code.c Fri Jan 20 02:23:42 2006
@@ -17,7 +17,8 @@
  #include <axis2_soap_fault_sub_code.h>
  #include <axis2_soap_fault_code.h>
  #include <axis2_soap_fault_value.h>
- #include <axis2_soap_utils.h> 
+ #include <axis2_soap_utils.h>
+ #include <axis2_soap_builder.h> 
  /********************** impl struct ******************************************/
  
  typedef struct axis2_soap_fault_sub_code_impl_t
@@ -34,7 +35,9 @@
     
     axis2_soap_fault_code_t *parent;
     
-    int soap_version;    
+    int soap_version; 
+    
+    axis2_soap_builder_t *builder;   
  
 }axis2_soap_fault_sub_code_impl_t;
 
@@ -89,7 +92,12 @@
 axis2_soap_fault_sub_code_set_soap_version
                              (axis2_soap_fault_sub_code_t *fault_sub_code,
                               axis2_env_t **env,
-                              int soap_version);                              
+                              int soap_version); 
+
+axis2_status_t AXIS2_CALL
+axis2_soap_fault_sub_code_set_builder(axis2_soap_fault_sub_code_t *fault_sub_code,
+                                     axis2_env_t **env,
+                                     axis2_soap_builder_t *builder);                                                           
                                 
 
 /********************** function implementations ******************************/
@@ -116,6 +124,7 @@
     fault_subcode_impl->value = NULL;
     fault_subcode_impl->subcode = NULL;
     fault_subcode_impl->parent = NULL;
+    fault_subcode_impl->builder = NULL;
     
     fault_subcode_impl->fault_sub_code.ops = 
             (axis2_soap_fault_sub_code_ops_t*)AXIS2_MALLOC((*env)->allocator,
@@ -153,7 +162,10 @@
         axis2_soap_fault_sub_code_get_soap_version;
         
     fault_subcode_impl->fault_sub_code.ops->set_soap_version =
-        axis2_soap_fault_sub_code_set_soap_version;                    
+        axis2_soap_fault_sub_code_set_soap_version;
+        
+    fault_subcode_impl->fault_sub_code.ops->set_builder =
+        axis2_soap_fault_sub_code_set_builder;                            
                                 
   return  &(fault_subcode_impl->fault_sub_code);        
 }
@@ -393,4 +405,15 @@
      return AXIS2_SUCCESS;
 }
 
-
+axis2_status_t AXIS2_CALL
+axis2_soap_fault_sub_code_set_builder(axis2_soap_fault_sub_code_t *fault_sub_code,
+                                     axis2_env_t **env,
+                                     axis2_soap_builder_t *builder)
+{
+    axis2_soap_fault_sub_code_impl_t *subcode_impl = NULL;
+    AXIS2_FUNC_PARAM_CHECK(fault_sub_code, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, builder, AXIS2_FAILURE);
+    subcode_impl = AXIS2_INTF_TO_IMPL(fault_sub_code);    
+    subcode_impl->builder = builder;
+    return AXIS2_SUCCESS;
+}                                     

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=370775&r1=370774&r2=370775&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/soap_header.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/soap_header.c Fri Jan 20 02:23:42 2006
@@ -277,9 +277,12 @@
                                  axis2_env_t **env)
 {
     axis2_soap_header_impl_t *header_impl = NULL;
+    axis2_om_element_t *om_ele = NULL;
     AXIS2_FUNC_PARAM_CHECK(header, env, NULL);
     header_impl = AXIS2_INTF_TO_IMPL(header);
-    return AXIS2_OM_ELEMENT_GET_CHILDREN_WITH_QNAME(header_impl->om_ele,
+    printf(" header block");
+    om_ele = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(header_impl->om_ele_node, env);
+    return AXIS2_OM_ELEMENT_GET_CHILDREN_WITH_QNAME(om_ele,
                 env, NULL, header_impl->om_ele_node);
 
 }

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=370775&r1=370774&r2=370775&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 Fri Jan 20 02:23:42 2006
@@ -18,6 +18,7 @@
 #include <axis2_soap_header_block.h>
 #include <axis2_soap_header.h>
 #include <axis2_soap_envelope.h>
+#include <axis2_soap_builder.h>
 
 /******************* impl struct **********************************************/
 
@@ -35,6 +36,7 @@
 
     axis2_bool_t processed;
     
+    
 }axis2_soap_header_block_impl_t;
 
 /***************** Macro ******************************************************/
@@ -119,7 +121,8 @@
                        (axis2_soap_header_block_t *header_block,
                         axis2_env_t **env,
                         axis2_char_t *attr_name,
-                        axis2_char_t *soap_envelope_namespace_uri);                             
+                        axis2_char_t *soap_envelope_namespace_uri);  
+                        
                          
 /*************** function implementations *************************************/                                                                                             
 

Modified: webservices/axis2/trunk/c/test/xml/soap/test_soap.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/test/xml/soap/test_soap.c?rev=370775&r1=370774&r2=370775&view=diff
==============================================================================
--- webservices/axis2/trunk/c/test/xml/soap/test_soap.c (original)
+++ webservices/axis2/trunk/c/test/xml/soap/test_soap.c Fri Jan 20 02:23:42 2006
@@ -29,12 +29,22 @@
 {
     axis2_om_element_t *om_ele = NULL;
     axis2_char_t *localname = NULL;
+    axis2_om_namespace_t *om_ns =  NULL;
+    axis2_char_t *uri = NULL;
+    axis2_char_t *prefix = NULL;
     AXIS2_FUNC_PARAM_CHECK(om_node, env, AXIS2_FAILURE);
     if(AXIS2_OM_NODE_GET_NODE_TYPE(om_node, env) == AXIS2_OM_ELEMENT)
     {
         om_ele = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(om_node, env);
         localname = AXIS2_OM_ELEMENT_GET_LOCALNAME(om_ele, env);
         printf("\n %s \n", localname);
+        om_ns = AXIS2_OM_ELEMENT_GET_NAMESPACE(om_ele, env);
+        if(om_ns)
+        {
+            prefix = AXIS2_OM_NAMESPACE_GET_PREFIX(om_ns, env);
+            uri    = AXIS2_OM_NAMESPACE_GET_URI(om_ns, env);
+            printf("\n uri %s \n prefix %s \n",uri, prefix);
+        }
     }
     return 0;
 }
@@ -52,8 +62,10 @@
     axis2_om_output_t *om_output = NULL;
     axis2_soap_body_t *soap_body = NULL;
     axis2_soap_header_t *soap_header = NULL;
-    void *ret_value = NULL;
-    
+    axis2_soap_header_block_t *header_block = NULL;
+    axis2_om_children_iterator_t *children_iter = NULL;
+    axis2_hash_t *hbs = NULL;
+    int status = AXIS2_SUCCESS;    
     
     if(!filename)
         return -1;
@@ -75,12 +87,28 @@
     soap_envelope = AXIS2_SOAP_BUILDER_GET_SOAP_ENVELOPE(soap_builder, env);
           
     om_node = AXIS2_SOAP_ENVELOPE_GET_BASE_NODE(soap_envelope, env);
-    /*    
     printnode(om_node, env);
     
     soap_header = AXIS2_SOAP_ENVELOPE_GET_HEADER(soap_envelope, env);
-    om_node = AXIS2_SOAP_HEADER_GET_BASE_NODE(soap_header, env);
-    printnode(om_node, env);
+    if(soap_header)
+    {
+        om_node = AXIS2_SOAP_HEADER_GET_BASE_NODE(soap_header, env);
+        printnode(om_node, env);
+    }
+    
+    
+    children_iter = AXIS2_SOAP_HEADER_EXAMINE_ALL_HEADER_BLOCKS(soap_header, env);
+    if(children_iter)
+    {
+        while(AXIS2_OM_CHILDREN_ITERATOR_HAS_NEXT(children_iter, env))
+        {   
+            om_node = AXIS2_OM_CHILDREN_ITERATOR_NEXT(children_iter, env);
+            printnode(om_node, env);
+        }
+    }
+    
+    
+    
     
     soap_body = AXIS2_SOAP_ENVELOPE_GET_BODY(soap_envelope, env);
     if (soap_body)
@@ -95,39 +123,16 @@
         printf ("\n\n ERROR soap_body NULL.\n\n");
         return AXIS2_FAILURE;
     }
-    */
-    while(!(AXIS2_OM_STAX_BUILDER_IS_COMPLETE(om_builder, env)) && !(AXIS2_OM_NODE_GET_BUILD_STATUS(om_node, env)))
+    
+    
+    /*
+    while(!(AXIS2_OM_NODE_GET_BUILD_STATUS(om_node, env)) && !(AXIS2_OM_STAX_BUILDER_IS_COMPLETE(om_builder, env)))
     {
-        ret_value = AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);
-        if(!ret_value)
+        status = AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);
+        if(status == AXIS2_FAILURE)
                printf("%s" ,AXIS2_ERROR_GET_MESSAGE((*env)->error));
     }
-    /*
-    AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);
-    AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);
-    AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);
-    AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);
-    AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);
-    AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);
-    AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);
-    AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);
-    AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);
-    AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);
-    AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);
-    AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);
-    AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);
-    AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);
-    AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);
-    AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);
-    AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);
-    AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);
-    AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);
-    AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);
-    AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);
-    AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);
-    AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);
-    AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);
-    AXIS2_SOAP_BUILDER_NEXT(soap_builder, env);*/
+    */
     xml_writer = axis2_xml_writer_create_for_memory(env, NULL, AXIS2_FALSE, AXIS2_FALSE);
     
     om_output = axis2_om_output_create( env, xml_writer);  
@@ -198,5 +203,6 @@
     */
     build_soap(&env, filename,uri);
     printf("\n");
+    getchar();
     return 0;        
 }