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/03/13 09:11:06 UTC

svn commit: r385453 [3/4] - in /webservices/axis2/trunk/c: include/ modules/xml/om/ modules/xml/soap/ test/unit/xml/om/ test/xml/om/ test/xml/soap/

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=385453&r1=385452&r2=385453&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 Mon Mar 13 00:11:01 2006
@@ -84,7 +84,7 @@
                              
 /******************** function implementations ********************************/
 
- AXIS2_DECLARE(axis2_soap12_builder_helper_t*)
+AXIS2_DECLARE(axis2_soap12_builder_helper_t*)
 axis2_soap12_builder_helper_create(axis2_env_t **env, 
                                    axis2_soap_builder_t *soap_builder)
 {
@@ -115,8 +115,10 @@
     builder_helper_impl->value_present = AXIS2_FALSE;
     builder_helper_impl->subcode_value_present = AXIS2_FALSE;
     builder_helper_impl->builder_helper.ops = NULL; 
+
     builder_helper_impl->builder_helper.ops = (axis2_soap12_builder_helper_ops_t*) AXIS2_MALLOC(
                                                 (*env)->allocator, sizeof(axis2_soap12_builder_helper_ops_t));
+    
     if(!(builder_helper_impl->builder_helper.ops))
     {
         AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
@@ -163,27 +165,42 @@
                              int element_level)
 {
     axis2_soap12_builder_helper_impl_t *builder_helper_impl = NULL;
+    
     axis2_char_t* ele_localname = NULL;
     axis2_om_element_t *om_ele = NULL;
+    
     axis2_soap_body_t *soap_body = NULL;
     axis2_soap_fault_t *soap_fault = NULL;
     axis2_soap_envelope_t *soap_envelope = NULL;    
     
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, om_ele_node, AXIS2_FAILURE);
-
     builder_helper_impl = AXIS2_INTF_TO_IMPL(builder_helper);
+    
     om_ele = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(om_ele_node, env);
+    if(!om_ele)
+        return AXIS2_FAILURE;
+        
     ele_localname = AXIS2_OM_ELEMENT_GET_LOCALNAME(om_ele, env);
+    if(!ele_localname)
+        return AXIS2_FAILURE;
+    
     soap_envelope = AXIS2_SOAP_BUILDER_GET_SOAP_ENVELOPE(builder_helper_impl->soap_builder, env);
+    if(!soap_envelope)
+        return AXIS2_FAILURE;
+        
     soap_body = AXIS2_SOAP_ENVELOPE_GET_BODY(soap_envelope, env);
-    soap_fault = AXIS2_SOAP_BODY_GET_FAULT(soap_body, env);   
-   
-    if(element_level == 4)
+    if(!soap_body)
+        return AXIS2_FAILURE;
+
+    soap_fault = AXIS2_SOAP_BODY_GET_FAULT(soap_body, env);
+    if(!soap_fault)
+        return AXIS2_FAILURE;
+        
+   if(element_level == 4)
     {
         if(AXIS2_STRCMP(AXIS2_SOAP12_SOAP_FAULT_CODE_LOCAL_NAME, ele_localname) == 0)
         {
-           
             if(builder_helper_impl->code_present)
             {
                 AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_MULTIPLE_CODE_ELEMENTS_ENCOUNTERED, AXIS2_FAILURE);
@@ -193,12 +210,18 @@
             {
                 axis2_soap_fault_code_t* soap_fault_code = NULL;
                 soap_fault_code = axis2_soap_fault_code_create(env);
+                if(!soap_fault_code)
+                    return AXIS2_FAILURE;
+   
                 AXIS2_SOAP_FAULT_CODE_SET_BASE_NODE(soap_fault_code , env, om_ele_node);            
-                AXIS2_SOAP_FAULT_CODE_SET_SOAP_VERSION(soap_fault_code, env, AXIS2_SOAP12);
+                
+       /*         AXIS2_SOAP_FAULT_CODE_SET_SOAP_VERSION(soap_fault_code, env, AXIS2_SOAP12); */
                 
                 AXIS2_SOAP_FAULT_CODE_SET_BUILDER(soap_fault_code, env, 
                     builder_helper_impl->soap_builder);
+                    
                 AXIS2_SOAP_FAULT_SET_CODE(soap_fault, env, soap_fault_code);
+                
                 builder_helper_impl->code_present = AXIS2_TRUE;
                 builder_helper_impl->code_processing = AXIS2_TRUE;
             }
@@ -220,9 +243,14 @@
                     {
                         axis2_soap_fault_reason_t *fault_reason = NULL;
                         fault_reason = axis2_soap_fault_reason_create(env);
+                        if(!fault_reason)
+                            return AXIS2_FAILURE;
+                 
                         AXIS2_SOAP_FAULT_REASON_SET_BASE_NODE(fault_reason, env, om_ele_node);
-                        AXIS2_SOAP_FAULT_SET_SOAP_VERSION(fault_reason, env, AXIS2_SOAP12);
+                     /*   AXIS2_SOAP_FAULT_SET_SOAP_VERSION(fault_reason, env, AXIS2_SOAP12); */
+                     
                         AXIS2_SOAP_FAULT_SET_REASON(soap_fault, env, fault_reason);
+                     
                         AXIS2_SOAP_FAULT_REASON_SET_BUILDER(soap_fault, env, 
                                 builder_helper_impl->soap_builder); 
                                 
@@ -271,10 +299,15 @@
                     {
                         axis2_soap_fault_node_t *soap_fault_node = NULL;
                         soap_fault_node = axis2_soap_fault_node_create(env);
+                        if(!soap_fault_node)
+                            return AXIS2_FAILURE;
                         
                         AXIS2_SOAP_FAULT_NODE_SET_BASE_NODE(soap_fault_node, env, om_ele_node);
-                        AXIS2_SOAP_FAULT_NODE_SET_SOAP_VERSION(soap_fault_node, env, AXIS2_SOAP12);
+                        
+                /*        AXIS2_SOAP_FAULT_NODE_SET_SOAP_VERSION(soap_fault_node, env, AXIS2_SOAP12); */
+                
                         AXIS2_SOAP_FAULT_SET_NODE(soap_fault, env, soap_fault_node);                    
+                
                         builder_helper_impl->node_present = AXIS2_TRUE;                    
                     }
                 }else
@@ -311,8 +344,12 @@
                     {
                         axis2_soap_fault_role_t *soap_fault_role = NULL;
                         soap_fault_role = axis2_soap_fault_role_create(env);
+                        if(!soap_fault_role)
+                            return AXIS2_FAILURE;
+                        
                         AXIS2_SOAP_FAULT_ROLE_SET_BASE_NODE(soap_fault_role, env, om_ele_node);
-                        AXIS2_SOAP_FAULT_ROLE_SET_SOAP_VRESION(soap_fault_role, env, AXIS2_SOAP12);
+                    /*    AXIS2_SOAP_FAULT_ROLE_SET_SOAP_VRESION(soap_fault_role, env, AXIS2_SOAP12); */
+                    
                         AXIS2_SOAP_FAULT_SET_ROLE(soap_fault, env, soap_fault_role);
                         builder_helper_impl->role_present = AXIS2_TRUE;                    
                     }
@@ -348,8 +385,12 @@
                         
                         axis2_soap_fault_detail_t *soap_fault_detail = NULL;
                         soap_fault_detail = axis2_soap_fault_detail_create(env);
+                        if(!soap_fault_detail)
+                            return AXIS2_FAILURE;
+                            
                         AXIS2_SOAP_FAULT_DETAIL_SET_BASE_NODE(soap_fault_detail, env, om_ele_node);
-                        AXIS2_SOAP_FAULT_SET_SOAP_VERSION(soap_fault_detail, env, AXIS2_SOAP12);
+                   /*     AXIS2_SOAP_FAULT_SET_SOAP_VERSION(soap_fault_detail, env, AXIS2_SOAP12); */
+                   
                         AXIS2_SOAP_FAULT_SET_DETAIL(soap_fault, env, soap_fault_detail);
                         builder_helper_impl->detail_present = AXIS2_TRUE;
                     }                        
@@ -383,8 +424,17 @@
         axis2_om_element_t *parent_ele = NULL;
         axis2_char_t *parent_localname = NULL;
         parent_node = AXIS2_OM_NODE_GET_PARENT(om_ele_node, env);
+        if(!parent_node)
+            return AXIS2_FAILURE;
+       
         parent_ele = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(parent_node, env);
+        if(!parent_ele)
+            return AXIS2_FAILURE;
+
         parent_localname = AXIS2_OM_ELEMENT_GET_LOCALNAME(parent_ele, env);
+        if(!parent_localname)
+            return AXIS2_FAILURE;
+            
         if(AXIS2_STRCMP(parent_localname, 
             AXIS2_SOAP12_SOAP_FAULT_CODE_LOCAL_NAME) == 0)
         {
@@ -394,10 +444,18 @@
                 {
                     axis2_soap_fault_value_t *soap_fault_value = NULL;
                     axis2_soap_fault_code_t *parent_fcode = NULL;
+                    
                     soap_fault_value = axis2_soap_fault_value_create(env);
+                    if(!soap_fault_value)
+                        return AXIS2_FAILURE;
+                        
                     AXIS2_SOAP_FAULT_VALUE_SET_BASE_NODE(soap_fault_value, env, om_ele_node);
-                    AXIS2_SOAP_FAULT_VALUE_SET_SOAP_VERSION(soap_fault_value, env, AXIS2_SOAP12);                    
+             /*       AXIS2_SOAP_FAULT_VALUE_SET_SOAP_VERSION(soap_fault_value, env, AXIS2_SOAP12);  */
+             
                     parent_fcode = AXIS2_SOAP_FAULT_GET_CODE(soap_fault, env);
+                    if(!parent_fcode)
+                        return AXIS2_FAILURE;
+                        
                     AXIS2_SOAP_FAULT_CODE_SET_VALUE(parent_fcode, env, soap_fault_value);
                     
                     builder_helper_impl->value_present = AXIS2_TRUE;
@@ -412,7 +470,7 @@
                 }            
             }
             else if(AXIS2_STRCMP(ele_localname, 
-                AXIS2_SOAP12_SOAP_FAULT_SUB_CODE_LOCAL_NAME) == 0)
+                        AXIS2_SOAP12_SOAP_FAULT_SUB_CODE_LOCAL_NAME) == 0)
             {
                 if(!(builder_helper_impl->sub_code_present))
                 {
@@ -421,10 +479,19 @@
                         
                         axis2_soap_fault_sub_code_t *fault_subcode = NULL;
                         axis2_soap_fault_code_t *fault_code = NULL;
+        
                         fault_subcode = axis2_soap_fault_sub_code_create(env);
+                        if(!fault_subcode)
+                            return AXIS2_FAILURE;
+                        
                         AXIS2_SOAP_FAULT_SUB_CODE_SET_BASE_NODE(fault_subcode, env, om_ele_node);
-                        AXIS2_SOAP_FAULT_SUB_CODE_SET_SOAP_VRESION(fault_subcode, env, AXIS2_SOAP12);
+                        
+              /*          AXIS2_SOAP_FAULT_SUB_CODE_SET_SOAP_VRESION(fault_subcode, env, AXIS2_SOAP12); */
+              
                         fault_code = AXIS2_SOAP_FAULT_GET_CODE(soap_fault, env);
+                        if(!fault_code)
+                            return AXIS2_FAILURE;
+                            
                         AXIS2_SOAP_FAULT_CODE_SET_SUB_CODE(fault_code, env, fault_subcode);
                         
                         AXIS2_SOAP_FAULT_SUB_CODE_SET_BUILDER(fault_subcode, env,
@@ -459,15 +526,24 @@
             {
                 axis2_soap_fault_text_t *soap_fault_text = NULL;
                 axis2_soap_fault_reason_t *fault_reason = NULL;
+
                 soap_fault_text = axis2_soap_fault_text_create(env);
+                if(!soap_fault_text)
+                    return AXIS2_FAILURE;
+                               
                 AXIS2_SOAP_FAULT_TEXT_SET_BASE_NODE(soap_fault_text, env, om_ele_node);
-                AXIS2_SOAP_FAULT_TEXT_SET_SOAP_VERSION(soap_fault_text, env, AXIS2_SOAP12);
+            /*    AXIS2_SOAP_FAULT_TEXT_SET_SOAP_VERSION(soap_fault_text, env, AXIS2_SOAP12); */
+            
                 fault_reason = AXIS2_SOAP_FAULT_GET_REASON(soap_fault, env);
+                if(!fault_reason)
+                    return AXIS2_FAILURE;
+                    
                 AXIS2_SOAP_FAULT_REASON_SET_SOAP_FAULT_TEXT(fault_reason, env, soap_fault_text);
                 /*****************
                 AXIS2_OM_NODE_SET_BUILD_STATUS(om_ele_node, env, AXIS2_FALSE);
                 ******************/
                 builder_helper_impl->reason_processing = AXIS2_FALSE;
+                
                 AXIS2_SOAP_BUILDER_SET_BOOL_PROCESSING_MANDATORY_FAULT_ELEMENTS(builder_helper_impl->soap_builder, env, AXIS2_FALSE );
                 
             }
@@ -480,6 +556,7 @@
         }else if(AXIS2_STRCMP(parent_localname, AXIS2_SOAP12_SOAP_FAULT_DETAIL_LOCAL_NAME) == 0)
         {
             AXIS2_SOAP_BUILDER_SET_PROCESSING_DETAIL_ELEMENTS(builder_helper_impl->soap_builder, env, AXIS2_TRUE);
+            
             if(!(builder_helper_impl->detail_element_names))
             {
                 builder_helper_impl->detail_element_names = axis2_array_list_create(env, 20);
@@ -499,9 +576,20 @@
         axis2_om_node_t *parent_node = NULL;
         axis2_om_element_t *parent_ele = NULL;
         axis2_char_t *parent_localname = NULL;
+        
         parent_node = AXIS2_OM_NODE_GET_PARENT(om_ele_node, env);
+        if(!parent_node)
+            return AXIS2_FAILURE;
+               
         parent_ele = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(parent_node, env);
+        if(!parent_ele)
+            return AXIS2_FAILURE;
+            
         parent_localname = AXIS2_OM_ELEMENT_GET_LOCALNAME(parent_ele, env);   
+        if(!parent_localname)
+            return AXIS2_FAILURE;
+
+
         
         if(AXIS2_STRCMP(parent_localname, AXIS2_SOAP12_SOAP_FAULT_SUB_CODE_LOCAL_NAME) == 0)
         {
@@ -519,10 +607,25 @@
                     axis2_soap_fault_code_t *code = NULL;
                     axis2_soap_fault_value_t *value = NULL;
                     code = AXIS2_SOAP_FAULT_GET_CODE(soap_fault, env);
+                    
+                    if(!code)
+                    {
+                        AXIS2_LOG_DEBUG((*env)->log , AXIS2_LOG_SI, "fault code null when it should not be null");
+                        return AXIS2_FAILURE;
+                    }
+                    
                     sub_code = AXIS2_SOAP_FAULT_CODE_GET_SUB_CODE(code, env);
+                    if(!sub_code)
+                    {
+                        AXIS2_LOG_DEBUG((*env)->log , AXIS2_LOG_SI, "fault subcode null when it should not be null");
+                        return AXIS2_FAILURE;
+                    }
                     value = axis2_soap_fault_value_create(env);
+                    if(!value)
+                        return AXIS2_FAILURE;
+                        
                     AXIS2_SOAP_FAULT_VALUE_SET_BASE_NODE(value, env, om_ele_node);
-                    AXIS2_SOAP_FAULT_VALUE_SET_SOAP_VERSION(value, env, AXIS2_SOAP12);
+                    
                     AXIS2_SOAP_FAULT_SUB_CODE_SET_VALUE(sub_code, env, value);
              
                     builder_helper_impl->subcode_value_present = AXIS2_TRUE;
@@ -539,12 +642,28 @@
                         axis2_soap_fault_code_t *fault_code = NULL;
                         axis2_soap_fault_sub_code_t *parent_subcode = NULL;
                         axis2_soap_fault_sub_code_t *subcode = NULL;
+
                         subcode = axis2_soap_fault_sub_code_create(env);
+                        if(!subcode)
+                            return AXIS2_FAILURE;
+                            
                         AXIS2_SOAP_FAULT_SUB_CODE_SET_BASE_NODE(subcode, env, om_ele_node);
-                        AXIS2_SOAP_FAULT_SUB_CODE_SET_SOAP_VRESION(subcode, env, AXIS2_SOAP12);
+                  
                         fault_code = AXIS2_SOAP_FAULT_GET_CODE(soap_fault, env);
+                        if(!fault_code)
+                        {
+                            AXIS2_LOG_DEBUG((*env)->log , AXIS2_LOG_SI, "fault code null when it should not be null");
+                            return AXIS2_FAILURE;
+                        }
                         parent_subcode = AXIS2_SOAP_FAULT_CODE_GET_SUB_CODE(fault_code, env);
+                        if(!parent_subcode)
+                        {
+                            AXIS2_LOG_DEBUG((*env)->log , AXIS2_LOG_SI, "fault subcode null when it should not be null");
+                            return AXIS2_FAILURE;
+                        }
+                        
                         AXIS2_SOAP_FAULT_SUB_CODE_SET_SUB_CODE(parent_subcode, env, subcode);
+                        
                         builder_helper_impl->subcode_value_present = AXIS2_FALSE;
                         builder_helper_impl->sub_sub_code_present = AXIS2_TRUE;
                         builder_helper_impl->sub_code_processing = AXIS2_TRUE;                        
@@ -577,6 +696,9 @@
             int detail_element_level = 0;
             axis2_bool_t local_name_exists = AXIS2_FALSE;
             int i = 0;
+            if(!(builder_helper_impl->detail_element_names))
+                return AXIS2_FAILURE;
+                
             for(i =0; i < AXIS2_ARRAY_LIST_SIZE(builder_helper_impl->detail_element_names, env) ; i++)
             {
                 if(AXIS2_STRCMP(parent_localname, AXIS2_ARRAY_LIST_GET(builder_helper_impl->detail_element_names, env, i)) == 0)

Modified: webservices/axis2/trunk/c/modules/xml/soap/soap_body.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/soap/soap_body.c?rev=385453&r1=385452&r2=385453&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/soap_body.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/soap_body.c Mon Mar 13 00:11:01 2006
@@ -107,7 +107,7 @@
     body_impl->soap_body.ops = NULL;
     body_impl->om_ele_node = NULL;
     body_impl->soap_builder = NULL;
-    body_impl->soap_version = AXIS2_SOAP_VERSION_NOT_SET;    
+    body_impl->soap_version = AXIS2_SOAP12;    
     body_impl->has_fault = AXIS2_FALSE;
     body_impl->soap_fault = NULL; 
 
@@ -161,19 +161,23 @@
    
     
     /*get parent node from SOAP envelope */
-    if (envelope)
+    parent = AXIS2_SOAP_ENVELOPE_GET_BASE_NODE(envelope, env);
+    if(!parent)
     {
-        parent = AXIS2_SOAP_ENVELOPE_GET_BASE_NODE(envelope, env);
-        if(parent)
-        {
-            parent_ele = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(
-                        parent, env);
-        }            
+        AXIS2_SOAP_BODY_FREE(&(body_impl->soap_body), env);
+        return NULL;        
     }
-    if(parent_ele)
-        om_ns = AXIS2_OM_ELEMENT_GET_NAMESPACE(parent_ele, env);
-    
+    parent_ele = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(
+                        parent, env);
+
+    if(!parent_ele)
+    {
+        AXIS2_SOAP_BODY_FREE(&(body_impl->soap_body), env);
+        return NULL;        
+    }  
     
+    om_ns = AXIS2_OM_ELEMENT_GET_NAMESPACE(parent_ele, env);
+
     ele = axis2_om_element_create(env, parent, 
                                   AXIS2_SOAP_BODY_LOCAL_NAME, om_ns, 
                                   &(body_impl->om_ele_node));
@@ -183,6 +187,7 @@
         axis2_soap_body_free(&(body_impl->soap_body), env);
         return NULL;
     }
+    
     AXIS2_SOAP_ENVELOPE_SET_BODY(envelope, env, &(body_impl->soap_body));
     body_impl->soap_version = 
         AXIS2_SOAP_ENVELOPE_GET_SOAP_VERSION(envelope, env);
@@ -196,7 +201,10 @@
 {
     axis2_soap_body_impl_t *body_impl = NULL;
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, body, AXIS2_FAILURE);
+    
     body_impl = AXIS2_INTF_TO_IMPL(body);
+    
     if(body_impl->soap_fault)
     {
         AXIS2_SOAP_FAULT_FREE(body_impl->soap_fault, env);
@@ -213,10 +221,10 @@
 }
     
 /**
- * Indicates whether a <code>SOAPFault</code> object exists in
- * this <code>SOAPBody</code> object.
+ * Indicates whether a object exists in
+ * this SOAPBody object.
  *
- * @return <code>true</code> if a <code>SOAPFault</code> object exists in
+ * @return true</code> if a <code>SOAPFault</code> object exists in
  *         this <code>SOAPBody</code> object; <code>false</code>
  *         otherwise
  */
@@ -241,22 +249,27 @@
                 if(status == AXIS2_FAILURE)
                     return AXIS2_FALSE;
             }
+            if(body_impl->soap_fault)
+            {
+                body_impl->has_fault = AXIS2_TRUE;
+                return AXIS2_TRUE;
+            }
         }
     }
-    if(body_impl->soap_fault)
-        return AXIS2_TRUE;
+   
     return AXIS2_FALSE;
 }
 
 /**
- * Returns the <code>SOAPFault</code> object in this <code>SOAPBody</code>
- * object.
+ * Returns the axis2_soap_fault_t struct in this axis2_soap_bodY_t
+ * struct
  *
  * @return the <code>SOAPFault</code> object in this <code>SOAPBody</code>
  *         object
  */
-axis2_soap_fault_t* AXIS2_CALL axis2_soap_body_get_fault(axis2_soap_body_t *body,
-    axis2_env_t **env) 
+axis2_soap_fault_t* AXIS2_CALL 
+axis2_soap_body_get_fault(axis2_soap_body_t *body,
+                          axis2_env_t **env) 
 {
     axis2_soap_body_impl_t *body_impl = NULL;
     AXIS2_ENV_CHECK(env, NULL);
@@ -265,7 +278,7 @@
     {
         return body_impl->soap_fault;
     }
-    else if(body_impl->soap_builder != NULL)
+    else if(NULL != body_impl->soap_builder )
     {
         while(!(body_impl->soap_fault) && !(AXIS2_OM_NODE_GET_BUILD_STATUS(body_impl->om_ele_node, env)))
         {
@@ -274,38 +287,12 @@
             if(status == AXIS2_FAILURE)
                 return NULL;
         }
-    }
-    
-    /*
-    else
-    {
-        axis2_om_node_t *first_node = NULL;
-        axis2_om_element_t *first_ele = NULL;
-        axis2_om_namespace_t *om_ns = NULL;
-        axis2_char_t *ns_uri = NULL;
-        axis2_char_t *localname = NULL;        
-        first_node = AXIS2_OM_NODE_GET_FIRST_CHILD(body_impl->om_ele_node, env);
-        if(first_node)
+        if(body_impl->soap_fault)
         {
-                
-            first_ele = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(first_node, env);
-            localname = AXIS2_OM_ELEMENT_GET_LOCALNAME(first_ele, env);
-            om_ns = AXIS2_OM_ELEMENT_GET_NAMESPACE(first_ele, env);
-            ns_uri = AXIS2_OM_NAMESPACE_GET_URI(om_ns, env);
-            if(first_ele && AXIS2_STRCMP(AXIS2_SOAP_FAULT_LOCAL_NAME, localname) == 0 &&
-                (AXIS2_STRCMP(ns_uri, AXIS2_SOAP11_SOAP_ENVELOPE_NAMESPACE_URI) == 0 ||
-                 AXIS2_STRCMP(ns_uri, AXIS2_SOAP12_SOAP_ENVELOPE_NAMESPACE_URI) == 0))
-            {
-                body_impl->has_fault = AXIS2_TRUE;
-                body_impl->soap_fault = axis2_soap_fault_create(env);
-                AXIS2_SOAP_FAULT_SET_SOAP_VERSION(body_impl->soap_fault, 
-                        env, body_impl->soap_version);
-                AXIS2_SOAP_FAULT_SET_BASE_NODE(body_impl->soap_fault, env, first_node);
-                return body_impl->soap_fault;                            
-            }                 
+            body_impl->has_fault = AXIS2_TRUE;
+            return body_impl->soap_fault;            
         }
     }
-    */
     return NULL;
 }
 

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=385453&r1=385452&r2=385453&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/soap_builder.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/soap_builder.c Mon Mar 13 00:11:01 2006
@@ -23,7 +23,7 @@
  #include <axis2_soap.h>
  #include <axis2_soap_body.h>
  #include <axis2_soap_header_block.h>
- 
+ #include <axis2_om_stax_builder_internal.h>
  /*********************** impl struct *****************************************/
  
  typedef struct axis2_soap_builder_impl_t
@@ -66,8 +66,7 @@
 typedef enum axis2_builder_last_node_states
 {
     AXIS2_BUILDER_LAST_NODE_NULL = 0,
-    AXIS2_BUILDER_LAST_NODE_DONE_TRUE,
-    AXIS2_BUILDER_LAST_NODE_DONE_FALSE
+    AXIS2_BUILDER_LAST_NODE_NOT_NULL
 }axis2_builder_last_node_states;
 
 #define AXIS2_MAX_EVENT 100
@@ -240,16 +239,21 @@
 {
     axis2_soap_builder_impl_t *builder_impl = NULL;
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    if(!builder)
+        return AXIS2_FAILURE;
+        
     builder_impl = AXIS2_INTF_TO_IMPL(builder);
     if(builder_impl->builder_helper)
     {
         if(builder_impl->soap_version == AXIS2_SOAP11 && builder_impl->builder_helper)
         {
             AXIS2_SOAP11_BUILDER_HELPER_FREE((axis2_soap11_builder_helper_t *)(builder_impl->builder_helper), env);
+            builder_impl->builder_helper = NULL;
         }
         else if(builder_impl->soap_version == AXIS2_SOAP12 && builder_impl->builder_helper)
         {
             AXIS2_SOAP12_BUILDER_HELPER_FREE((axis2_soap12_builder_helper_t *)(builder_impl->builder_helper), env);
+            builder_impl->builder_helper = NULL;
         }
     }
     if(builder_impl->om_builder)
@@ -260,6 +264,7 @@
     if(builder->ops)
     {
         AXIS2_FREE((*env)->allocator, builder->ops);
+        builder->ops = NULL;
     }
     AXIS2_FREE((*env)->allocator, builder_impl);
     return AXIS2_SUCCESS;
@@ -297,8 +302,15 @@
  {
     axis2_soap_builder_impl_t *builder_impl = NULL;
     AXIS2_ENV_CHECK(env, NULL);
+    if(!builder)
+        return NULL;
     builder_impl = AXIS2_INTF_TO_IMPL(builder);
-    return AXIS2_OM_STAX_BUILDER_GET_DOCUMENT(builder_impl->om_builder, env);
+    if(builder_impl->om_builder)
+    {
+        return AXIS2_OM_STAX_BUILDER_GET_DOCUMENT(builder_impl->om_builder, env);
+    }
+    else
+        return NULL;
  }
                                 
 axis2_status_t AXIS2_CALL
@@ -311,32 +323,27 @@
     axis2_om_node_t *current_node =  NULL;
     int status = AXIS2_SUCCESS;
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    if(!builder)
+        return AXIS2_FAILURE;
     builder_impl = AXIS2_INTF_TO_IMPL(builder);
     if(builder_impl->done)
     {
         return AXIS2_FAILURE;   
     }
-    
-    lastnode = AXIS2_OM_STAX_BUILDER_GET_LAST_NODE(builder_impl->om_builder, env);
+    if(!(builder_impl->om_builder))
+        return AXIS2_FAILURE;
+   
+    lastnode = axis2_om_stax_builder_get_lastnode(builder_impl->om_builder, env);
     
     if(!lastnode)
     {
         builder_impl->last_node_status = AXIS2_BUILDER_LAST_NODE_NULL;
-    }/*else if(AXIS2_OM_NODE_GET_BUILD_STATUS(lastnode, env))
-    {
-        builder_impl->last_node_status = AXIS2_BUILDER_LAST_NODE_DONE_TRUE;
-    }*/
+    }
     else
     {
-        builder_impl->last_node_status = AXIS2_BUILDER_LAST_NODE_DONE_FALSE;
+        builder_impl->last_node_status = AXIS2_BUILDER_LAST_NODE_NOT_NULL;
     }
-    /*
-    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 == -1)
     {
         builder_impl->done = AXIS2_TRUE;
@@ -345,9 +352,11 @@
     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);
+      current_node = axis2_om_stax_builder_get_lastnode(builder_impl->om_builder, env);
+      if(current_node) 
+          status = axis2_soap_builder_create_om_element(builder, env, current_node);
+      else
+        return AXIS2_FAILURE;
     }
    
     return status;
@@ -361,7 +370,12 @@
     axis2_soap_builder_impl_t *builder_impl = NULL;
     AXIS2_ENV_CHECK(env, NULL);
     builder_impl = AXIS2_INTF_TO_IMPL(builder);
-    return AXIS2_SOAP_ENVELOPE_GET_BASE_NODE(builder_impl->soap_envelope, env);
+    if(builder_impl->soap_envelope)
+    {
+        return AXIS2_SOAP_ENVELOPE_GET_BASE_NODE(builder_impl->soap_envelope, env);
+    }
+    else
+        return NULL;
 } 
                                        
                                                           
@@ -376,22 +390,24 @@
     int ret_val = AXIS2_SUCCESS;
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, current_node, AXIS2_FAILURE);
+    if(!builder)
+        return AXIS2_FAILURE;
+        
     builder_impl = AXIS2_INTF_TO_IMPL(builder);
     if(builder_impl->last_node_status == AXIS2_BUILDER_LAST_NODE_NULL)
     {
-       
        ret_val =  axis2_soap_builder_construct_node(builder, env, NULL, current_node, AXIS2_TRUE);
-         
-    }/*else if(builder_impl->last_node_status == AXIS2_BUILDER_LAST_NODE_DONE_TRUE)
-    {
-      ret_val =  axis2_soap_builder_construct_node(builder, env, 
-            AXIS2_OM_NODE_GET_PARENT(current_node, env), current_node, AXIS2_FALSE);
-    
-    }*/
+    }
     else
     {
-       ret_val = axis2_soap_builder_construct_node(builder, env, 
-            AXIS2_OM_NODE_GET_PARENT(current_node, env), current_node, AXIS2_FALSE);
+       axis2_om_node_t *parent_node = NULL;
+       parent_node = AXIS2_OM_NODE_GET_PARENT(current_node, env);
+       if(parent_node)
+       {
+           ret_val = axis2_soap_builder_construct_node(builder, env, parent_node , current_node, AXIS2_FALSE);
+       }
+       else
+            return AXIS2_FAILURE;
     }
     return ret_val;
 }   
@@ -416,40 +432,51 @@
     
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, om_element_node, AXIS2_FAILURE);
-    
+    if(!builder)
+        return AXIS2_FAILURE;
+   
     builder_impl = AXIS2_INTF_TO_IMPL(builder);
-    
-    
-    element_level = AXIS2_OM_STAX_BUILDER_GET_ELEMENT_LEVEL(
+    if(!builder_impl->om_builder)
+        return AXIS2_FAILURE;
+    /** get element level of this om element */
+    element_level = axis2_om_stax_builder_get_element_level(
                         builder_impl->om_builder, env);
-    
+    /* get om element struct from node */
     om_element = (axis2_om_element_t *)
                 AXIS2_OM_NODE_GET_DATA_ELEMENT(om_element_node, env);
-     
+    if(!om_element)
+        return AXIS2_FAILURE;
+    /* get element localname */    
     ele_localname = AXIS2_OM_ELEMENT_GET_LOCALNAME(om_element, env);
-    
+    if(!ele_localname)
+        return AXIS2_FAILURE;
     
     if(parent)
     {
+        /** a parent node exist , so not soap envelope element */
         parent_ele = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(parent, env);
-        parent_localname = AXIS2_OM_ELEMENT_GET_LOCALNAME(parent_ele, env);
+        if(parent_ele)
+            parent_localname = AXIS2_OM_ELEMENT_GET_LOCALNAME(parent_ele, env);
     }
     if(!parent && is_soap_envelope)
     {   
-        
+        /** this is the soap envelope element */
         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);
             return AXIS2_FAILURE;   
         }
+        
+        /** create a null soap envelope struct */
         builder_impl->soap_envelope = axis2_soap_envelope_create_null(env);
-       
+        if(!builder_impl->soap_envelope)
+            return AXIS2_FAILURE;
+        /** wrap this om node in it */
         status = AXIS2_SOAP_ENVELOPE_SET_BASE_NODE(builder_impl->soap_envelope, 
                     env, om_element_node);
         
         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);
         if(status == AXIS2_FAILURE)
             return AXIS2_FAILURE;
@@ -457,7 +484,8 @@
     else if(element_level == 2)
     {
         if(AXIS2_STRCMP(ele_localname, AXIS2_SOAP_HEADER_LOCAL_NAME) == 0)
-        {   
+        {  
+            /** this is the soap header element */
             axis2_soap_header_t *soap_header = NULL;
             if(builder_impl->header_present)
             {
@@ -471,12 +499,21 @@
                     AXIS2_ERROR_SOAP_BUILDER_HEADER_BODY_WRONG_ORDER, AXIS2_FAILURE);
                 return  AXIS2_FAILURE;                                              
             }
+            
             builder_impl->header_present = AXIS2_TRUE;
+            
             soap_header = axis2_soap_header_create(env);
+            if(!soap_header)
+                return AXIS2_FAILURE;
+                
             AXIS2_SOAP_HEADER_SET_BASE_NODE(soap_header, env, om_element_node);
 
             AXIS2_SOAP_ENVELOPE_SET_HEADER(builder_impl->soap_envelope, env, soap_header);
+            
             AXIS2_SOAP_HEADER_SET_BUILDER(soap_header, env, builder);
+           
+            AXIS2_SOAP_HEADER_SET_SOAP_VERSION(soap_header, env, builder_impl->soap_version);
+           
             status = axis2_soap_builder_process_namespace_data(builder, env, 
                                 om_element_node, AXIS2_TRUE);
             if(status == AXIS2_FAILURE)
@@ -495,12 +532,20 @@
             
             }
             builder_impl->body_present = AXIS2_TRUE;                
+            
             soap_body = axis2_soap_body_create(env);
+            if(!soap_body)
+                return AXIS2_FAILURE;
+                
             AXIS2_SOAP_BODY_SET_BASE_NODE(soap_body, env, om_element_node);
+            
             AXIS2_SOAP_BODY_SET_BUILDER(soap_body, env, builder);
+            
             AXIS2_SOAP_ENVELOPE_SET_BODY(builder_impl->soap_envelope, env, soap_body);
+            
             status = axis2_soap_builder_process_namespace_data(builder, env, 
                         om_element_node, AXIS2_TRUE);
+            
             if(status == AXIS2_FAILURE)
                 return AXIS2_FAILURE;
         }
@@ -511,57 +556,69 @@
             return AXIS2_FAILURE;                                            
         }
     }
-    else if((element_level == 3) && AXIS2_STRCASECMP(parent_localname, 
-            AXIS2_SOAP_HEADER_LOCAL_NAME) == 0)
+    else if((element_level == 3) &&  parent_localname &&  
+                AXIS2_STRCASECMP(parent_localname, AXIS2_SOAP_HEADER_LOCAL_NAME) == 0)
     {
             axis2_soap_header_block_t *header_block = NULL;
             axis2_soap_header_t *soap_header = NULL;
+            
+            soap_header = AXIS2_SOAP_ENVELOPE_GET_HEADER(builder_impl->soap_envelope, env);
+            if(!soap_header)
+                return AXIS2_FAILURE;
+                
             header_block = axis2_soap_header_block_create(env);
+            if(!header_block)
+                return AXIS2_FAILURE;
+                
             AXIS2_SOAP_HEADER_BLOCK_SET_BASE_NODE(header_block, env, om_element_node);
            
-            soap_header = AXIS2_SOAP_ENVELOPE_GET_HEADER(builder_impl->soap_envelope, env);
             AXIS2_SOAP_HEADER_SET_HEADER_BLOCK(soap_header, env, header_block);
 
+            AXIS2_SOAP_HEADER_BLOCK_SET_SOAP_VERSION(header_block, env, builder_impl->soap_version);
+            
+
     }
-    else if((element_level == 3) && 
+    else if((element_level == 3) && parent_localname &&
             AXIS2_STRCASECMP(parent_localname, AXIS2_SOAP_BODY_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;
-            axis2_om_node_t *envelope_node = NULL;
-            axis2_om_element_t *envelope_ele = NULL;
             axis2_om_namespace_t *env_ns = NULL;
-            envelope_node = AXIS2_SOAP_ENVELOPE_GET_BASE_NODE(
-                builder_impl->soap_envelope, env);
-            envelope_ele = (axis2_om_element_t *)
-                AXIS2_OM_NODE_GET_DATA_ELEMENT(envelope_node, env);
-            env_ns = AXIS2_OM_ELEMENT_GET_NAMESPACE(envelope_ele, env);
-                       
+            
+            env_ns = AXIS2_SOAP_ENVELOPE_GET_NAMESPACE(builder_impl->soap_envelope, env);
+            if(!env_ns)
+                return AXIS2_FAILURE;
+           
             soap_body = AXIS2_SOAP_ENVELOPE_GET_BODY(builder_impl->soap_envelope, env);
+            
             if(!soap_body )
                 return AXIS2_FAILURE;
+            
             soap_fault = axis2_soap_fault_create(env);
             if(!soap_fault) 
                 return AXIS2_FAILURE;
-            AXIS2_SOAP_FAULT_SET_BASE_NODE(soap_fault, env, om_element_node);
             
-            AXIS2_SOAP_FAULT_SET_SOAP_VERSION(soap_fault, env, builder_impl->soap_version);
+            AXIS2_SOAP_FAULT_SET_BASE_NODE(soap_fault, env, om_element_node);
             
             AXIS2_SOAP_BODY_SET_FAULT(soap_body, env, soap_fault);                    
                                 
             builder_impl->processing_fault = AXIS2_TRUE;
+            
             builder_impl->processing_mandatory_fault_elements = AXIS2_TRUE; 
+            
             if(AXIS2_STRCMP(AXIS2_SOAP12_SOAP_ENVELOPE_NAMESPACE_URI, 
                 AXIS2_OM_NAMESPACE_GET_URI(env_ns , env)) == 0)
             {
-                builder_impl->builder_helper = axis2_soap12_builder_helper_create(env, builder); 
-             
+                builder_impl->builder_helper = axis2_soap12_builder_helper_create(env, builder);
+                if(!(builder_impl->builder_helper))
+                    return AXIS2_FAILURE;
             }
             else if(AXIS2_STRCMP(AXIS2_SOAP11_SOAP_ENVELOPE_NAMESPACE_URI, 
                 AXIS2_OM_NAMESPACE_GET_URI(env_ns , env)) == 0)
             {   
-                builder_impl->builder_helper = axis2_soap11_builder_helper_create(env, builder, builder_impl->om_builder);            
+                builder_impl->builder_helper = axis2_soap11_builder_helper_create(env, builder, builder_impl->om_builder);                 if(!(builder_impl->builder_helper))
+                    return AXIS2_FAILURE;
             }
              
     }
@@ -569,14 +626,16 @@
     {
         if(builder_impl->soap_version == AXIS2_SOAP11)
         {   
-             status = AXIS2_SOAP11_BUILDER_HELPER_HANDLE_EVENT(((axis2_soap11_builder_helper_t*)(builder_impl->builder_helper)), 
+            status = AXIS2_SOAP11_BUILDER_HELPER_HANDLE_EVENT(
+                ((axis2_soap11_builder_helper_t*)(builder_impl->builder_helper)),
                 env,  om_element_node , element_level);
         
         }
-        if(builder_impl->soap_version == AXIS2_SOAP12)
+        else if(builder_impl->soap_version == AXIS2_SOAP12)
         {
-            status = AXIS2_SOAP12_BUILDER_HELPER_HANDLE_EVENT(((axis2_soap12_builder_helper_t *)
-            (builder_impl->builder_helper)), env,  om_element_node , element_level);
+            status = AXIS2_SOAP12_BUILDER_HELPER_HANDLE_EVENT(
+                ((axis2_soap12_builder_helper_t *)(builder_impl->builder_helper)), 
+                env,  om_element_node , element_level);
         }
         
     }
@@ -595,8 +654,10 @@
     axis2_char_t *ns_uri = NULL;
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, om_node, AXIS2_FAILURE);
+
     if(!is_soap_element)
         return AXIS2_SUCCESS;
+    
     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);
@@ -604,15 +665,18 @@
         {
             om_ns = AXIS2_OM_ELEMENT_GET_NAMESPACE(om_ele, env);
             if(om_ns)
+            {
                 ns_uri = AXIS2_OM_NAMESPACE_GET_URI(om_ns, env);
-        }
-        if(ns_uri && 
-                (AXIS2_STRCMP(ns_uri, AXIS2_SOAP11_SOAP_ENVELOPE_NAMESPACE_URI) != 0) &&
-                (AXIS2_STRCMP(ns_uri, AXIS2_SOAP12_SOAP_ENVELOPE_NAMESPACE_URI) != 0))
-        {
-            AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_INVALID_SOAP_NAMESPACE_URI, AXIS2_FAILURE);                
-            AXIS2_LOG_DEBUG((*env)->log, AXIS2_LOG_SI, "AXIS2_ERROR_INVALID_SOAP_NAMESPACE_URI");
-            return AXIS2_FAILURE;
+                if(ns_uri && 
+                    (AXIS2_STRCMP(ns_uri, AXIS2_SOAP11_SOAP_ENVELOPE_NAMESPACE_URI) != 0) &&
+                    (AXIS2_STRCMP(ns_uri, AXIS2_SOAP12_SOAP_ENVELOPE_NAMESPACE_URI) != 0))
+                {
+                    AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_INVALID_SOAP_NAMESPACE_URI, AXIS2_FAILURE);                
+                    AXIS2_LOG_DEBUG((*env)->log, AXIS2_LOG_SI, "AXIS2_ERROR_INVALID_SOAP_NAMESPACE_URI");
+                    return AXIS2_FAILURE;
+                }
+                
+            }
         }
     }        
     return AXIS2_SUCCESS;
@@ -628,12 +692,14 @@
     axis2_om_node_t *envelope_node = NULL;
     axis2_om_element_t *om_ele = NULL;
     axis2_char_t *ns_uri = NULL;
-    AXIS2_PARAM_CHECK((*env)->error, soap_version_uri_from_transport, AXIS2_FAILURE);    
     
+    AXIS2_PARAM_CHECK((*env)->error, soap_version_uri_from_transport, AXIS2_FAILURE);    
+    if(!builder)
+        return AXIS2_FAILURE;
     
     builder_impl = AXIS2_INTF_TO_IMPL(builder);
-    builder_impl->soap_envelope = 
-        axis2_soap_builder_get_soap_envelope(builder, env);
+    
+    builder_impl->soap_envelope = axis2_soap_builder_get_soap_envelope(builder, env);
     if(builder_impl->soap_envelope == NULL)
     {
         AXIS2_ERROR_SET((*env)->error, 
@@ -641,34 +707,54 @@
         AXIS2_LOG_CRITICAL((*env)->log, AXIS2_LOG_SI, "SOAP message does not have a SOAP envelope element ");        
         return AXIS2_FAILURE;
     }
+    
     envelope_node = AXIS2_SOAP_ENVELOPE_GET_BASE_NODE(builder_impl->soap_envelope, env);
+    if(!envelope_node)
+        return AXIS2_FAILURE;
+        
     om_ele = (axis2_om_element_t *) AXIS2_OM_NODE_GET_DATA_ELEMENT(envelope_node, env);
-    
+    if(!om_ele)
+        return AXIS2_FAILURE;
+        
     om_ns = AXIS2_OM_ELEMENT_GET_NAMESPACE(om_ele, env);
-    
+    if(!om_ns)
+        return AXIS2_FAILURE;
+        
     ns_uri = AXIS2_OM_NAMESPACE_GET_URI(om_ns, env);
+    
     if(ns_uri != NULL)
     {        
        if(soap_version_uri_from_transport && AXIS2_STRCMP(soap_version_uri_from_transport, ns_uri) != 0)
         {
-            AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_TRANSPORT_LEVEL_INFORMATION_DOES_NOT_MATCH_WITH_SOAP, AXIS2_FAILURE);
-            AXIS2_LOG_ERROR((*env)->log , AXIS2_LOG_SI, "AXIS2_ERROR_TRANSPORT_LEVEL_INFORMATION_DOES_NOT_MATCH_WITH_SOAP");            
+            AXIS2_ERROR_SET((*env)->error, 
+                AXIS2_ERROR_TRANSPORT_LEVEL_INFORMATION_DOES_NOT_MATCH_WITH_SOAP, AXIS2_FAILURE);
+            
+            AXIS2_LOG_ERROR((*env)->log , AXIS2_LOG_SI, 
+                "AXIS2_ERROR_TRANSPORT_LEVEL_INFORMATION_DOES_NOT_MATCH_WITH_SOAP");            
             return AXIS2_FAILURE;
         }            
         if(AXIS2_STRCMP(AXIS2_SOAP11_SOAP_ENVELOPE_NAMESPACE_URI, ns_uri) == 0)
         {
             builder_impl->soap_version = AXIS2_SOAP11;        
+      
             AXIS2_LOG_DEBUG((*env)->log, AXIS2_LOG_SI, "Identified soap version is soap11");
+
+            AXIS2_SOAP_ENVELOPE_SET_SOAP_VERSION(builder_impl->soap_envelope, 
+                env, builder_impl->soap_version);        
+
+            return AXIS2_SUCCESS;
         }
         else if(AXIS2_STRCMP(AXIS2_SOAP12_SOAP_ENVELOPE_NAMESPACE_URI, ns_uri) == 0)
         {
             builder_impl->soap_version = AXIS2_SOAP12;          
+        
             AXIS2_LOG_DEBUG((*env)->log, AXIS2_LOG_SI, "identified soap version is soap12");
             
+            AXIS2_SOAP_ENVELOPE_SET_SOAP_VERSION(builder_impl->soap_envelope, 
+                env, builder_impl->soap_version);        
+
+            return AXIS2_SUCCESS;                
         }
-        AXIS2_SOAP_ENVELOPE_SET_SOAP_VERSION(builder_impl->soap_envelope, env, builder_impl->soap_version);        
-       
-        return AXIS2_SUCCESS;
     }
     return AXIS2_FAILURE;
 } 
@@ -681,17 +767,29 @@
     axis2_om_node_t *om_node = NULL;
     axis2_soap_header_t *soap_header = NULL;
     int status = AXIS2_SUCCESS;
+    if(!builder)
+    {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_INVALID_NULL_PARAM, AXIS2_FAILURE);
+        return AXIS2_FAILURE;
+    }
     builder_impl = AXIS2_INTF_TO_IMPL(builder);
+    
+    if(!builder_impl->soap_envelope)
+        return AXIS2_FAILURE;
+        
     soap_header = AXIS2_SOAP_ENVELOPE_GET_HEADER(builder_impl->soap_envelope, env);
+    
     if(soap_header != NULL)
     {
         om_node = AXIS2_SOAP_HEADER_GET_BASE_NODE(soap_header, env);
-        while(!AXIS2_OM_NODE_GET_BUILD_STATUS(om_node, env))
-        {
-            status = axis2_soap_builder_next(builder, env);
-            if(status == AXIS2_FAILURE)
-                return AXIS2_FAILURE;
-        }
+        if(om_node)
+        {        while(!AXIS2_OM_NODE_GET_BUILD_STATUS(om_node, env))
+                {
+                    status = axis2_soap_builder_next(builder, env);
+                    if(status == AXIS2_FAILURE)
+                        return AXIS2_FAILURE;
+                }
+        }                
     }
     return AXIS2_SUCCESS;
 } 

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=385453&r1=385452&r2=385453&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/soap_envelope.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/soap_envelope.c Mon Mar 13 00:11:01 2006
@@ -25,7 +25,7 @@
  #include <axis2_soap_fault_reason.h>
  #include <axis2_soap_fault_detail.h>
  #include <axis2_soap_fault_role.h>
- 
+ #include <axis2_soap_fault_value.h> 
  /******************* impl struct *********************************************/
  
  typedef struct axis2_soap_envelope_impl_t
@@ -51,7 +51,7 @@
  /****************** Function prototypes **************************************/
 
 axis2_soap_header_t* AXIS2_CALL
- axis2_soap_envelope_get_header(axis2_soap_envelope_t *envelope,
+axis2_soap_envelope_get_header(axis2_soap_envelope_t *envelope,
                                 axis2_env_t **env);
                                 
                                 
@@ -111,7 +111,11 @@
                                 axis2_env_t **env,
                                 axis2_soap_builder_t *soap_builder);                                  
 
-                                   
+static axis2_status_t
+check_and_set_soap_version(axis2_soap_envelope_t *env_impl, 
+                           axis2_env_t **env, 
+                           axis2_om_namespace_t *ns);
+
 /*************** function implementations *************************************/
 
 AXIS2_DECLARE(axis2_soap_envelope_t*)
@@ -181,8 +185,10 @@
 {
     axis2_soap_envelope_impl_t *envelope_impl = NULL;
     axis2_om_element_t *ele = NULL;
-    
+    int status = AXIS2_SUCCESS;
     AXIS2_ENV_CHECK(env, NULL);
+    AXIS2_PARAM_CHECK((*env)->error, ns, NULL);
+    
     envelope_impl = (axis2_soap_envelope_impl_t*)AXIS2_MALLOC(
                     (*env)->allocator,
                     sizeof(axis2_soap_envelope_impl_t));
@@ -198,6 +204,13 @@
     envelope_impl->body = NULL;
     envelope_impl->soap_builder =  NULL;
     
+    status =  check_and_set_soap_version(&(envelope_impl->soap_envelope), env, ns);
+    if(status == AXIS2_FAILURE)
+    {
+        AXIS2_FREE((*env)->allocator, envelope_impl); 
+        return NULL; 
+    }
+ 
     ele = axis2_om_element_create(env, NULL, 
                                   AXIS2_SOAP_ENVELOPE_LOCAL_NAME, ns, 
                                   &(envelope_impl->om_ele_node));
@@ -395,7 +408,9 @@
     envelope_impl = AXIS2_INTF_TO_IMPL(envelope);
     
     /* TODO : cache SOAP header and envelope instead of looking them up?*/
-
+    if(!envelope_impl->header)
+        return NULL;
+    
     if (namespace_uri)
     {
         ns = axis2_om_namespace_create(env, namespace_uri, NULL);
@@ -439,6 +454,9 @@
 {
     axis2_soap_envelope_impl_t *envelope_impl = NULL;
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, envelope, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, om_output, AXIS2_FAILURE);
+    
     envelope_impl = AXIS2_INTF_TO_IMPL(envelope);
 /*
    if soap version is soap11 we modify the soap fault part.
@@ -469,42 +487,86 @@
                         axis2_om_element_t *fault_code_om_ele = NULL;
                         axis2_om_node_t *fault_value_om_node = NULL;
                         axis2_om_element_t *fault_value_om_ele = NULL;
+                        axis2_soap_fault_value_t *fault_value = NULL;
                         axis2_char_t *text = NULL;
+
                         fault_code_om_node = AXIS2_SOAP_FAULT_CODE_GET_BASE_NODE(fault_code, env);
-                        fault_code_om_ele = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(fault_code_om_node, env);
-                        AXIS2_OM_ELEMENT_SET_LOCALNAME(fault_code_om_ele, env, AXIS2_SOAP11_SOAP_FAULT_CODE_LOCAL_NAME); 
-                        fault_value_om_node = AXIS2_OM_NODE_GET_FIRST_CHILD(fault_code_om_node, env);
-                        AXIS2_OM_NODE_DETACH(fault_value_om_node, env);
-                        fault_value_om_ele = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(fault_value_om_node, env);
-                        text = AXIS2_OM_ELEMENT_GET_TEXT(fault_value_om_ele, env, fault_value_om_node);
-                        AXIS2_OM_ELEMENT_SET_TEXT(fault_code_om_ele, env, text, fault_code_om_node);
-                        AXIS2_FREE((*env)->allocator, text);
-                        AXIS2_OM_NODE_FREE_TREE(fault_value_om_node, env);                                                                                              
+                        if(fault_code_om_node)
+                        {
+                           fault_code_om_ele = (axis2_om_element_t *)
+                           AXIS2_OM_NODE_GET_DATA_ELEMENT(fault_code_om_node, env);
+                           if(fault_code_om_ele)
+                           {                               
+                                AXIS2_OM_ELEMENT_SET_LOCALNAME(fault_code_om_ele, 
+                                    env, AXIS2_SOAP11_SOAP_FAULT_CODE_LOCAL_NAME); 
+                                
+                                fault_value = AXIS2_SOAP_FAULT_VALUE_GET_BASE_NODE(fault_code, env);
+                                if(fault_value)
+                               {
+                                fault_value_om_node = AXIS2_OM_NODE_GET_FIRST_CHILD(fault_code_om_node, env);
+                                if(fault_value_om_node)
+                                {
+                                   fault_value_om_node =  AXIS2_OM_NODE_DETACH(fault_value_om_node, env);
+                                    fault_value_om_ele = (axis2_om_element_t *)
+                                        AXIS2_OM_NODE_GET_DATA_ELEMENT(fault_value_om_node, env);
+                                    if(fault_value_om_ele)
+                                    {
+                                        text = AXIS2_OM_ELEMENT_GET_TEXT(fault_value_om_ele, env, fault_value_om_node);
+                                        if(NULL != text)
+                                        {
+                                            AXIS2_OM_ELEMENT_SET_TEXT(fault_code_om_ele, env, text, fault_code_om_node);
+                                            AXIS2_FREE((*env)->allocator, text);
+                                        }
+                                    }
+                                }
+                               }
+                            }
+                        }                            
                     }
                     fault_reason = AXIS2_SOAP_FAULT_GET_REASON(soap_fault, env);
                     if(fault_reason)
                     {
                         axis2_om_node_t *fault_reason_om_node = NULL;
                         axis2_om_element_t *fault_reason_om_ele = NULL;
-                        
                         axis2_om_node_t *fault_text_om_node = NULL;
                         axis2_om_element_t *fault_text_om_ele = NULL;
 
                         axis2_char_t *text =  NULL;                        
                     
                         fault_reason_om_node = AXIS2_SOAP_FAULT_REASON_GET_BASE_NODE(fault_reason, env);
-                        fault_reason_om_ele  = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(fault_reason_om_node, env);
-                        AXIS2_OM_ELEMENT_SET_LOCALNAME(fault_reason_om_ele, env, AXIS2_SOAP11_SOAP_FAULT_STRING_LOCAL_NAME);
+                        if(fault_reason_om_node)
+                        {
+                            fault_reason_om_ele  = (axis2_om_element_t *)
+                                AXIS2_OM_NODE_GET_DATA_ELEMENT(fault_reason_om_node, env);
                         
+                            if(fault_reason_om_ele)
+                            {
+                                AXIS2_OM_ELEMENT_SET_LOCALNAME(fault_reason_om_ele, 
+                                    env, AXIS2_SOAP11_SOAP_FAULT_STRING_LOCAL_NAME);
                         
-                        fault_text_om_node = AXIS2_OM_NODE_GET_FIRST_CHILD(fault_reason_om_node, env);
-                        fault_text_om_ele  = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(fault_text_om_node, env);
-                        AXIS2_OM_NODE_DETACH(fault_text_om_node, env);                        
+                                
+                                fault_text_om_node =  AXIS2_OM_NODE_GET_FIRST_CHILD(fault_reason_om_node, env);
+                                if(fault_text_om_node)
+                                {
+                                    
+                                     fault_text_om_node = AXIS2_OM_NODE_DETACH(fault_text_om_node, env);                        
+                                    fault_text_om_ele  = (axis2_om_element_t *)
+                                        AXIS2_OM_NODE_GET_DATA_ELEMENT(fault_text_om_node, env);
+                                    if(fault_text_om_ele)
+                                    {
                         
-                        text = AXIS2_OM_ELEMENT_GET_TEXT(fault_text_om_ele, env, fault_text_om_node);
-                        AXIS2_OM_ELEMENT_SET_TEXT( fault_reason_om_ele, env, text, fault_reason_om_node);   
-                        AXIS2_FREE((*env)->allocator, text); 
-                        AXIS2_OM_NODE_FREE_TREE(fault_text_om_node, env);
+                                        text = AXIS2_OM_ELEMENT_GET_TEXT(fault_text_om_ele, env, fault_text_om_node);
+                                        if(NULL != text)
+                                        {
+                                            AXIS2_OM_ELEMENT_SET_TEXT( fault_reason_om_ele, 
+                                                env, text, fault_reason_om_node);   
+                                
+                                            AXIS2_FREE((*env)->allocator, text); 
+                                        }                        
+                                    }
+                                }
+                            }
+                        }
                     }
                    
                     fault_role = AXIS2_SOAP_FAULT_GET_ROLE(soap_fault, env);
@@ -514,8 +576,16 @@
                         axis2_om_element_t *fault_role_om_ele = NULL;
                         
                         fault_role_om_node = AXIS2_SOAP_FAULT_ROLE_GET_BASE_NODE(fault_role, env);
-                        fault_role_om_ele = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(fault_role_om_node, env);
-                        AXIS2_OM_ELEMENT_SET_LOCALNAME(fault_role_om_ele, env, AXIS2_SOAP11_SOAP_FAULT_ACTOR_LOCAL_NAME);
+                        if(fault_role_om_node)
+                        {
+                            fault_role_om_ele = (axis2_om_element_t *)
+                                AXIS2_OM_NODE_GET_DATA_ELEMENT(fault_role_om_node, env);
+                            if(fault_role_om_ele)
+                            {
+                                AXIS2_OM_ELEMENT_SET_LOCALNAME(fault_role_om_ele, env, 
+                                    AXIS2_SOAP11_SOAP_FAULT_ACTOR_LOCAL_NAME);
+                            }                                
+                        }
                     }
                 
                     fault_detail = AXIS2_SOAP_FAULT_GET_DETAIL(soap_fault, env);
@@ -523,10 +593,17 @@
                     {
                         axis2_om_node_t *fault_detail_om_node = NULL;
                         axis2_om_element_t *fault_detail_om_ele = NULL;
-                        
                         fault_detail_om_node = AXIS2_SOAP_FAULT_DETAIL_GET_BASE_NODE(fault_detail, env);
-                        fault_detail_om_ele = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(fault_detail_om_node, env);
-                        AXIS2_OM_ELEMENT_SET_LOCALNAME(fault_detail_om_ele, env, AXIS2_SOAP11_SOAP_FAULT_DETAIL_LOCAL_NAME);
+                        if(fault_detail_om_node)
+                        {
+                            fault_detail_om_ele = (axis2_om_element_t *)
+                                AXIS2_OM_NODE_GET_DATA_ELEMENT(fault_detail_om_node, env);
+                            if(fault_detail_om_ele)
+                            {
+                            AXIS2_OM_ELEMENT_SET_LOCALNAME(fault_detail_om_ele, 
+                                env, AXIS2_SOAP11_SOAP_FAULT_DETAIL_LOCAL_NAME);
+                            }
+                        }
                     }
                 }  
             }
@@ -555,7 +632,8 @@
     }
     else
     {
-        AXIS2_LOG_ERROR((*env)->log, AXIS2_LOG_SI, "trying to set a soap bedy to envelope when a soap body alrady exists");
+        AXIS2_LOG_ERROR((*env)->log, AXIS2_LOG_SI, 
+            "trying to set a soap bedy to envelope when a soap body alrady exists");
         return AXIS2_FAILURE;
     }
     return AXIS2_SUCCESS;
@@ -574,7 +652,8 @@
     }
     else
     {
-       AXIS2_LOG_ERROR((*env)->log, AXIS2_LOG_SI, " trying to set a soap header to envelope when a soap header alrady exists");
+       AXIS2_LOG_ERROR((*env)->log, AXIS2_LOG_SI, 
+        " trying to set a soap header to envelope when a soap header alrady exists");
         return AXIS2_FAILURE;
     }
     return AXIS2_SUCCESS;
@@ -706,3 +785,39 @@
     AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_INVALID_SOAP_VERSION, AXIS2_FAILURE);
     return NULL;    
 }
+
+static axis2_status_t
+check_and_set_soap_version(axis2_soap_envelope_t *envelope,
+                           axis2_env_t **env,
+                           axis2_om_namespace_t *ns)
+{
+    axis2_soap_envelope_impl_t *envelope_impl = NULL;
+    axis2_char_t *uri = NULL;
+    if(!envelope)
+        return AXIS2_FAILURE;
+    if(!ns)
+        return AXIS2_FAILURE;
+         
+    envelope_impl = AXIS2_INTF_TO_IMPL(envelope);
+    
+    uri = AXIS2_OM_NAMESPACE_GET_URI(ns, env);
+    if(!uri)
+        return AXIS2_FAILURE;
+        
+    if(AXIS2_STRCMP(uri, AXIS2_SOAP11_SOAP_ENVELOPE_NAMESPACE_URI) == 0)
+    {
+        envelope_impl->soap_version = AXIS2_SOAP11;
+        return AXIS2_SUCCESS;
+    }
+    else if(AXIS2_STRCMP(uri, AXIS2_SOAP12_SOAP_ENVELOPE_NAMESPACE_URI) == 0)
+    {
+        envelope_impl->soap_version = AXIS2_SOAP12;
+        return AXIS2_SUCCESS;
+    }
+    else
+    {
+        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_fault.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/soap/soap_fault.c?rev=385453&r1=385452&r2=385453&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/soap_fault.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/soap_fault.c Mon Mar 13 00:11:01 2006
@@ -48,8 +48,6 @@
     axis2_soap_fault_detail_t *fdetail;
     
     axis2_char_t *exception;
-    /* soap version */
-    int soap_version;
     /* reference to soap builder */
     axis2_soap_builder_t *soap_builder;
     
@@ -120,14 +118,6 @@
 axis2_soap_fault_get_base_node(axis2_soap_fault_t *fault,
                                axis2_env_t **env);  
                                                 
-axis2_status_t AXIS2_CALL 
-axis2_soap_fault_set_soap_version(axis2_soap_fault_t *fault,
-                                  axis2_env_t **env,
-                                  int soap_version);
-                                    
-int AXIS2_CALL 
-axis2_soap_fault_get_soap_version(axis2_soap_fault_t *fault,
-                                  axis2_env_t **env);    
                                   
 axis2_char_t * AXIS2_CALL 
 axis2_soap_fault_get_exception(axis2_soap_fault_t *fault,
@@ -166,8 +156,7 @@
     fault_impl->frole = NULL;
     fault_impl->om_ele_node = NULL;
     fault_impl->soap_fault.ops = NULL;
-    fault_impl->soap_version = AXIS2_SOAP_VERSION_NOT_SET;
-
+    fault_impl->soap_builder = NULL;
     fault_impl->soap_fault.ops = (axis2_soap_fault_ops_t*)AXIS2_MALLOC(
                                  (*env)->allocator,
                                  sizeof(axis2_soap_fault_ops_t));
@@ -179,10 +168,6 @@
         return NULL;    
     }
 
-    fault_impl->soap_fault.ops->get_soap_version =
-        axis2_soap_fault_get_soap_version;
-    fault_impl->soap_fault.ops->set_soap_version =
-        axis2_soap_fault_set_soap_version;
     fault_impl->soap_fault.ops->free_fn =
         axis2_soap_fault_free;
     fault_impl->soap_fault.ops->get_base_node =
@@ -324,22 +309,16 @@
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, code, AXIS2_FAILURE);
     fault_impl = AXIS2_INTF_TO_IMPL(fault);
-    /* axis2_soap_fault_get_code(fault_code, env); 
-    if(fault_impl->fcode)
+    if(!(fault_impl->fcode))
     {
-        my_node = AXIS2_SOAP_FAULT_CODE_GET_BASE_NODE(
-                            fault_impl->fcode, env);
-        AXIS2_SOAP_FAULT_CODE_FREE(fault_impl->fcode, env);
-        fault_impl->fcode = NULL;
+        fault_impl->fcode = code;
+        return AXIS2_SUCCESS;
+    }
+    else
+    {
+        AXIS2_LOG_DEBUG((*env)->log,  AXIS2_LOG_SI, "tring to set multiple code elements to fault ");
+       
     }
-    code_node = AXIS2_SOAP_FAULT_CODE_GET_BASE_NODE(
-                            code, env);
-    axis2_soap_utils_set_new_node(env, 
-                    fault_impl->om_ele_node,
-                    &my_node, 
-                    code_node);
-    */                    
-    fault_impl->fcode = code;
     return AXIS2_SUCCESS;  
 }
                                         
@@ -364,21 +343,6 @@
                 break;
         }            
     }
-    /*
-    axis2_om_node_t *code_node = NULL;
-    axis2_om_node_t *this_node = NULL;
-    axis2_soap_fault_code_t* code = NULL;
-    this_node = fault_impl->om_ele_node;
-    if(!(fault_impl->fcode))
-    {
-        code_node = axis2_soap_utils_get_child_with_name(env, 
-                                            this_node, 
-                                            AXIS2_SOAP12_SOAP_FAULT_CODE_LOCAL_NAME);
-        code = axis2_soap_fault_code_create(env);
-        AXIS2_SOAP_FAULT_CODE_SET_BASE_NODE(code , env, code_node);
-        fault_impl->fcode = code;
-    }
-    */
     return fault_impl->fcode; 
 }
                                     
@@ -391,26 +355,16 @@
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, reason, AXIS2_FAILURE);
     fault_impl = AXIS2_INTF_TO_IMPL(fault);
-   /*
-    axis2_om_node_t *reason_node = NULL;
-    axis2_om_node_t *my_node = NULL;
-    axis2_soap_fault_get_reason(fault_reason, env); 
-    if(fault_impl->freason)
+    if(!(fault_impl->freason))
     {
-        my_node = AXIS2_SOAP_FAULT_REASON_GET_BASE_NODE(
-                            fault_impl->freason, env);
-        AXIS2_SOAP_FAULT_REASON_FREE(fault_impl->freason, env);
-        fault_impl->freason = NULL;
+        fault_impl->freason = reason;
+        return AXIS2_SUCCESS;
     }
-    reason_node = AXIS2_SOAP_FAULT_REASON_GET_BASE_NODE(
-                            reason, env);
-    axis2_soap_utils_set_new_node(env, 
-                    fault_impl->om_ele_node,
-                    &my_node, 
-                    reason_node);
-    */                    
-    fault_impl->freason = reason;
-    return AXIS2_SUCCESS;  
+    else
+    {
+        AXIS2_LOG_DEBUG((*env)->log, AXIS2_LOG_SI, "tring to set fault reason twice");
+    }
+    return AXIS2_FAILURE;  
 }
                                         
 axis2_soap_fault_reason_t* AXIS2_CALL 
@@ -434,21 +388,6 @@
                 break;
         }            
     }
-    /*
-    axis2_om_node_t *reason_node = NULL;
-    axis2_om_node_t *this_node = NULL;
-    axis2_soap_fault_reason_t* reason = NULL;
-    this_node = fault_impl->om_ele_node;
-    if(!(fault_impl->freason))
-    {
-        reason_node = axis2_soap_utils_get_child_with_name(env, 
-                                            this_node, 
-                                            AXIS2_SOAP12_SOAP_FAULT_REASON_LOCAL_NAME);
-        reason = axis2_soap_fault_reason_create(env);
-        AXIS2_SOAP_FAULT_REASON_SET_BASE_NODE(reason , env, reason_node);
-        fault_impl->freason = reason;
-    }
-    */
     return fault_impl->freason; 
 }
                                         
@@ -461,26 +400,16 @@
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, node, AXIS2_FAILURE);
     fault_impl = AXIS2_INTF_TO_IMPL(fault);
-   /* 
-    axis2_om_node_t *node_node = NULL;
-    axis2_om_node_t *my_node = NULL;
-    axis2_soap_fault_get_node(fault_node, env); 
-    if(fault_impl->fnode)
+    if(!(fault_impl->fnode))
     {
-        my_node = AXIS2_SOAP_FAULT_NODE_GET_BASE_NODE(
-                            fault_impl->fnode, env);
-        AXIS2_SOAP_FAULT_NODE_FREE(fault_impl->fnode, env);
-        fault_impl->fnode = NULL;
+        fault_impl->fnode = node;
+        return AXIS2_SUCCESS;
     }
-    node_node = AXIS2_SOAP_FAULT_NODE_GET_BASE_NODE(
-                            node, env);
-    axis2_soap_utils_set_new_node(env, 
-                    fault_impl->om_ele_node,
-                    &my_node, 
-                    node_node);
-    */                    
-    fault_impl->fnode = node;
-    return AXIS2_SUCCESS;
+    else
+    {
+        AXIS2_LOG_DEBUG((*env)->log, AXIS2_LOG_SI, "tring to set fault node more than once");
+    }
+    return AXIS2_FAILURE;
 }
                                         
 axis2_soap_fault_node_t* AXIS2_CALL 
@@ -505,21 +434,6 @@
                 break;
         }            
     }
-    /*
-    axis2_om_node_t *node_node = NULL;
-    axis2_om_node_t *this_node = NULL;
-    axis2_soap_fault_node_t* node = NULL;
-    this_node = fault_impl->om_ele_node;
-    if(!(fault_impl->fnode))
-    {
-        node_node = axis2_soap_utils_get_child_with_name(env, 
-                                            this_node, 
-                                            AXIS2_SOAP12_SOAP_FAULT_NODE_LOCAL_NAME);
-        node = axis2_soap_fault_node_create(env);
-        AXIS2_SOAP_FAULT_NODE_SET_BASE_NODE(node , env, node_node);
-        fault_impl->fnode = node;
-    }
-    */
     return fault_impl->fnode; 
 }
                                         
@@ -534,26 +448,16 @@
     AXIS2_PARAM_CHECK((*env)->error, role, AXIS2_FAILURE);
     
     fault_impl = AXIS2_INTF_TO_IMPL(fault);
-   /* 
-    axis2_om_node_t *role_node = NULL;
-    axis2_om_node_t *my_node = NULL;
-    axis2_soap_fault_get_role(fault_role, env); 
-    if(fault_impl->frole)
+    if(!(fault_impl->frole))
     {
-        my_node = AXIS2_SOAP_FAULT_ROLE_GET_BASE_NODE(
-                            fault_impl->frole, env);
-        AXIS2_SOAP_FAULT_ROLE_FREE(fault_impl->frole, env);
-        fault_impl->frole = NULL;
+        fault_impl->frole = role;
+        return AXIS2_FAILURE;
     }
-    role_node = AXIS2_SOAP_FAULT_ROLE_GET_BASE_NODE(
-                            role, env);
-    axis2_soap_utils_set_new_node(env, 
-                    fault_impl->om_ele_node,
-                    &my_node, 
-                    role_node);
-    */                    
-    fault_impl->frole = role;
-    return AXIS2_SUCCESS;  
+    else
+    {
+        AXIS2_LOG_DEBUG((*env)->log, AXIS2_LOG_SI, "tring to set fault role more than once ");
+    }
+    return AXIS2_FAILURE;  
 
 }
                                         
@@ -578,22 +482,6 @@
                 break;
         }            
     }
-    /*
-    axis2_om_node_t *role_node = NULL;
-    axis2_om_node_t *this_node = NULL;
-    axis2_soap_fault_role_t* role = NULL;
-    this_node = fault_impl->om_ele_node;
-    if(!(fault_impl->frole))
-    {
-        role_node = axis2_soap_utils_get_child_with_name(env, 
-                                            this_node, 
-                                            AXIS2_SOAP12_SOAP_FAULT_ROLE_LOCAL_NAME);
-                                                    
-        role = axis2_soap_fault_role_create(env);
-        AXIS2_SOAP_FAULT_ROLE_SET_BASE_NODE(role , env, role_node);
-        fault_impl->frole = role;
-    }
-    */
     return fault_impl->frole; 
 }
 
@@ -608,30 +496,17 @@
     AXIS2_PARAM_CHECK((*env)->error, detail, AXIS2_FAILURE);
     
     fault_impl = AXIS2_INTF_TO_IMPL(fault);
-   /* 
-    axis2_om_node_t *detail_node = NULL;
-    axis2_om_node_t *my_node = NULL;
-    axis2_soap_fault_get_detail(fault_detail, env); 
-    if(fault_impl->fdetail)
+    if(!(fault_impl->fdetail))
     {
-        my_node = AXIS2_SOAP_FAULT_DETAIL_GET_BASE_NODE(
-                            fault_impl->fdetail, env);
-        AXIS2_SOAP_FAULT_DETAIL_FREE(fault_impl->fdetail, env);
-        fault_impl->fdetail = NULL;
+        fault_impl->fdetail = detail;
+        return AXIS2_SUCCESS;  
     }
+    else
+    {
+        AXIS2_LOG_DEBUG((*env)->log, AXIS2_LOG_SI," tring to set fault detail more than once");
     
-    detail_node = AXIS2_SOAP_FAULT_DETAIL_GET_BASE_NODE(
-                            detail, env);
-    
-    axis2_soap_utils_set_new_node(env, 
-                    fault_impl->om_ele_node,
-                    &my_node, 
-                    detail_node);
-    */                    
-    fault_impl->fdetail = detail;
-    return AXIS2_SUCCESS;  
-
-
+    }
+    return AXIS2_FAILURE;
 }
                                 
 axis2_soap_fault_detail_t* AXIS2_CALL 
@@ -655,23 +530,6 @@
                 break;
         }            
     }
-    /*
-    axis2_om_node_t *detail_node = NULL;
-    axis2_om_node_t *this_node = NULL;
-    axis2_soap_fault_detail_t* detail = NULL;
-    this_node = fault_impl->om_ele_node;
-    
-    if(!(fault_impl->fdetail))
-    {
-        detail_node = axis2_soap_utils_get_child_with_name(env, 
-                                            this_node, 
-                                            AXIS2_SOAP12_SOAP_FAULT_DETAIL_LOCAL_NAME);
-                                                    
-        detail = axis2_soap_fault_detail_create(env);
-        AXIS2_SOAP_FAULT_DETAIL_SET_BASE_NODE(detail , env, detail_node);
-        fault_impl->fdetail = detail;
-    }
-    */
     return fault_impl->fdetail; 
 }   
 
@@ -703,25 +561,6 @@
     return AXIS2_INTF_TO_IMPL(fault)->om_ele_node;
 }  
                                                 
-axis2_status_t AXIS2_CALL 
-axis2_soap_fault_set_soap_version(axis2_soap_fault_t *fault,
-                                  axis2_env_t **env,
-                                  int soap_version)
-{
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    AXIS2_PARAM_CHECK((*env)->error, soap_version, AXIS2_FAILURE);
-    AXIS2_INTF_TO_IMPL(fault)->soap_version = soap_version;
-    return AXIS2_SUCCESS;
-
-}
-                                    
-int AXIS2_CALL 
-axis2_soap_fault_get_soap_version(axis2_soap_fault_t *fault,
-                                  axis2_env_t **env)
-{
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    return AXIS2_INTF_TO_IMPL(fault)->soap_version;
-}
                                   
 axis2_char_t * AXIS2_CALL 
 axis2_soap_fault_get_exception(axis2_soap_fault_t *fault,
@@ -772,17 +611,17 @@
     detail = axis2_soap_fault_get_detail(fault, env);
     if(!detail)
     {
-        if(fault_impl->soap_version == AXIS2_SOAP11)
-            detail = axis2_soap11_fault_detail_create(env, fault);
-        if(fault_impl->soap_version == AXIS2_SOAP12)
-            detail = axis2_soap12_fault_detail_create(env, fault);
+            detail = axis2_soap_fault_detail_create_with_parent(env, fault);
     }
-    axis2_soap_fault_set_detail(fault, env, detail);
 
     fault_detail_ele = axis2_om_element_create(env, NULL, 
                             AXIS2_SOAP_FAULT_DETAIL_EXCEPTION_ENTRY,
                             NULL, &fault_detail_entry_node);
-
+    if(!fault_detail_ele)
+    {
+        return AXIS2_FAILURE;
+    }
+    
     AXIS2_OM_ELEMENT_SET_TEXT(fault_detail_ele,
          env, exception, fault_detail_entry_node);
 
@@ -825,29 +664,49 @@
     AXIS2_PARAM_CHECK((*env)->error, reason_text, NULL);
 
     soap_fault = axis2_soap_fault_create_with_parent(env, parent);
-    if(soap_fault)
+    if(!soap_fault)
+        return NULL;
+
+    soap_fault_code = axis2_soap_fault_code_create_with_parent(env, soap_fault);
+    if(!soap_fault_code)
     {
-        AXIS2_SOAP_FAULT_SET_SOAP_VERSION(soap_fault, env, soap_version);
-        if(soap_version == AXIS2_SOAP11)
-        {
-            soap_fault_code = axis2_soap11_fault_code_create_with_parent(env, soap_fault);
-            soap_fault_reason = axis2_soap11_fault_reason_create_with_parent(env, soap_fault);
-        }
-        else if(soap_version == AXIS2_SOAP12)
-        {
-            soap_fault_code = axis2_soap12_fault_code_create_with_parent(env, soap_fault);
-            soap_fault_reason = axis2_soap12_fault_reason_create_with_parent(env, soap_fault);    
-        }
+        return NULL;
+    }
+    soap_fault_reason = axis2_soap_fault_reason_create_with_parent(env, soap_fault);
+    if(!soap_fault_reason)
+    {
+        return NULL;
+    }
         
-        soap_fault_value = axis2_soap_fault_value_create_with_code( env,soap_fault_code);
-        value_node = AXIS2_SOAP_FAULT_VALUE_GET_BASE_NODE(soap_fault_value, env);
-        value_ele  = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(value_node, env);
-        AXIS2_OM_ELEMENT_SET_TEXT(value_ele, env, code_value, value_node);
-    
-        soap_fault_text = axis2_soap_fault_text_create_with_parent( env, soap_fault_reason);
-        text_node = AXIS2_SOAP_FAULT_TEXT_GET_BASE_NODE(soap_fault_text, env);
-        text_ele  = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(text_node, env);
-        AXIS2_OM_ELEMENT_SET_TEXT(text_ele, env, reason_text, text_node);
+    soap_fault_value = axis2_soap_fault_value_create_with_code( env,soap_fault_code);
+    if(!soap_fault_value)
+    {
+        return NULL;
+    }
+    
+    value_node = AXIS2_SOAP_FAULT_VALUE_GET_BASE_NODE(soap_fault_value, env);
+    if(!value_node)
+    {
+        return NULL;
+    }
+    value_ele  = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(value_node, env);
+    
+    AXIS2_OM_ELEMENT_SET_TEXT(value_ele, env, code_value, value_node);
+    
+    soap_fault_text = axis2_soap_fault_text_create_with_parent( env, soap_fault_reason);
+    if(!soap_fault_text)
+    {
+        return NULL;
     }
+    
+    text_node = AXIS2_SOAP_FAULT_TEXT_GET_BASE_NODE(soap_fault_text, env);
+    if(!text_node)
+    {
+        return NULL;
+    }
+    text_ele  = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(text_node, env);
+    
+    AXIS2_OM_ELEMENT_SET_TEXT(text_ele, env, reason_text, text_node);
+    
     return soap_fault;
 }

Modified: webservices/axis2/trunk/c/modules/xml/soap/soap_fault_code.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/soap/soap_fault_code.c?rev=385453&r1=385452&r2=385453&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/soap_fault_code.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/soap_fault_code.c Mon Mar 13 00:11:01 2006
@@ -30,8 +30,6 @@
     
     axis2_om_node_t *om_ele_node;
     
-    int soap_version;
-    
     axis2_soap_fault_sub_code_t *subcode;
     
     axis2_soap_fault_value_t *value;
@@ -77,14 +75,6 @@
 axis2_soap_fault_code_get_base_node(axis2_soap_fault_code_t *fault_code,
                                     axis2_env_t **env);
  
-axis2_status_t AXIS2_CALL
-axis2_soap_fault_code_set_soap_version(axis2_soap_fault_code_t *fault_code,
-                                  axis2_env_t **env,
-                                  int soap_version);
-
-axis2_status_t AXIS2_CALL
-axis2_soap_fault_code_get_soap_version(axis2_soap_fault_code_t *fault_code,
-                                  axis2_env_t **env);
                                   
 axis2_status_t AXIS2_CALL
 axis2_soap_fault_code_set_builder(axis2_soap_fault_code_t *fault_code,
@@ -112,7 +102,6 @@
     fault_code_impl->om_ele_node = NULL;
     fault_code_impl->subcode = NULL;
     fault_code_impl->value = NULL;
-    fault_code_impl->soap_version = AXIS2_SOAP_VERSION_NOT_SET;
     fault_code_impl->builder = NULL;
     
     fault_code_impl->fault_code.ops = 
@@ -147,11 +136,6 @@
     fault_code_impl->fault_code.ops->get_base_node =
         axis2_soap_fault_code_get_base_node;
         
-    fault_code_impl->fault_code.ops->get_soap_version =
-        axis2_soap_fault_code_get_soap_version; 
-        
-    fault_code_impl->fault_code.ops->set_soap_version =
-        axis2_soap_fault_code_set_soap_version;   
     fault_code_impl->fault_code.ops->set_builder =
         axis2_soap_fault_code_set_builder;                         
                                 
@@ -160,8 +144,7 @@
 
 AXIS2_DECLARE(axis2_soap_fault_code_t *)
 axis2_soap_fault_code_create_with_parent(axis2_env_t **env,
-                            axis2_soap_fault_t *fault,
-                            axis2_bool_t extract_ns_from_parent)
+                            axis2_soap_fault_t *fault)
 {
     axis2_soap_fault_code_impl_t *fault_code_impl = NULL;
     axis2_soap_fault_code_t *fault_code = NULL;
@@ -181,21 +164,27 @@
     fault_code_impl = AXIS2_INTF_TO_IMPL(fault_code);
     
     parent_node = AXIS2_SOAP_FAULT_GET_BASE_NODE(fault, env);
-    
+    if(!parent_node)
+        return NULL;
+
     parent_ele  = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(
                         parent_node, env);
     
-    if(extract_ns_from_parent)
-    {
-        parent_ns = AXIS2_OM_ELEMENT_GET_NAMESPACE(parent_ele, env);
-    }
+    if(!parent_ele)
+        return NULL;
+    
+    parent_ns = AXIS2_OM_ELEMENT_GET_NAMESPACE(parent_ele, env);
     
     this_ele = axis2_om_element_create(env, 
                                        parent_node,                             
                                        AXIS2_SOAP12_SOAP_FAULT_CODE_LOCAL_NAME,
                                        parent_ns,
                                        &this_node);
-    fault_code_impl->om_ele = this_ele;
+
+    if(!this_ele)
+    {
+        return NULL;
+    }
     fault_code_impl->om_ele_node = this_node;    
     AXIS2_SOAP_FAULT_SET_CODE(fault, env, fault_code);
     return  &(fault_code_impl->fault_code);            
@@ -237,31 +226,21 @@
     axis2_soap_fault_code_impl_t *fault_code_impl = NULL;
     
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+   
     AXIS2_PARAM_CHECK((*env)->error, fault_val, AXIS2_FAILURE);
     
     fault_code_impl = AXIS2_INTF_TO_IMPL(fault_code);
-   /* 
-    axis2_om_node_t *value_node = NULL;
-    axis2_om_node_t *my_node = NULL;
-    axis2_soap_fault_code_get_value(fault_code, env); 
-    if(fault_code_impl->value)
+    if(!(fault_code_impl->value))
     {
-        my_node = AXIS2_SOAP_FAULT_VALUE_GET_BASE_NODE(
-                            fault_code_impl->value, env);
-        AXIS2_SOAP_FAULT_VALUE_FREE(fault_code_impl->value, env);
-        fault_code_impl->value = NULL;
+        fault_code_impl->value = fault_val;
+        return AXIS2_SUCCESS;    
     }
-    
-    value_node = AXIS2_SOAP_FAULT_VALUE_GET_BASE_NODE(
-                            fault_val, env);
-    
-    axis2_soap_utils_set_new_node(env, 
-                    fault_code_impl->om_ele_node,
-                    &my_node, 
-                    value_node);
-    */                    
-    fault_code_impl->value = fault_val;
-    return AXIS2_SUCCESS;    
+    else
+    {
+        AXIS2_LOG_DEBUG((*env)->log , AXIS2_LOG_SI, 
+        "trying to set fault value to fault code more than once");
+    }
+    return AXIS2_FAILURE;    
 }
 
 axis2_status_t AXIS2_CALL 
@@ -273,28 +252,16 @@
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, fault_subcode, AXIS2_FAILURE);
     fault_code_impl = AXIS2_INTF_TO_IMPL(fault_code);
-   /* 
-    axis2_om_node_t *subcode_node = NULL;
-    axis2_om_node_t *my_node = NULL;
-    
-    axis2_soap_fault_code_get_sub_code(fault_code, env); 
-    if(fault_code_impl->subcode)
+    if(!(fault_code_impl->subcode))
     {
-        my_node = AXIS2_SOAP_FAULT_SUB_CODE_GET_BASE_NODE(
-                            fault_code_impl->subcode, env);
-        AXIS2_SOAP_FAULT_SUB_CODE_FREE(fault_code_impl->subcode, env);
-        fault_code_impl->subcode = NULL;
+        fault_code_impl->subcode = fault_subcode;
+        return AXIS2_SUCCESS;    
     }
-    subcode_node = AXIS2_SOAP_FAULT_SUB_CODE_GET_BASE_NODE(
-                            fault_subcode, env);
-    
-    axis2_soap_utils_set_new_node(env, 
-                    fault_code_impl->om_ele_node,
-                    &my_node, 
-                    subcode_node);
-    */               
-    fault_code_impl->subcode = fault_subcode;
-    return AXIS2_SUCCESS;    
+    else
+    {
+        AXIS2_LOG_DEBUG((*env)->log , AXIS2_LOG_SI, "trying to set fault subcode to fault code more than once ");
+    }
+    return AXIS2_FAILURE;
 }                                                                         
         
 axis2_soap_fault_sub_code_t* AXIS2_CALL 
@@ -321,23 +288,6 @@
             }
         }
     }
-    
-   /*
-    axis2_om_node_t *subcode_node = NULL;
-    axis2_om_node_t *this_node = NULL;
-    axis2_soap_fault_sub_code_t* subcode = NULL;
-    this_node = fault_code_impl->om_ele_node;
-    if(!(fault_code_impl->subcode))
-    {
-        subcode_node = axis2_soap_utils_get_child_with_name(env, 
-                                            this_node, 
-                                            AXIS2_SOAP12_SOAP_FAULT_SUB_CODE_LOCAL_NAME);
-                                                    
-        subcode = axis2_soap_fault_sub_code_create(env);
-        AXIS2_SOAP_FAULT_SUB_CODE_SET_BASE_NODE(subcode , env, subcode_node);
-        fault_code_impl->subcode = subcode;
-    }
-    */
     return fault_code_impl->subcode;
 }
                                      
@@ -366,24 +316,6 @@
             }
         }
     }
-    /*
-    
-    axis2_om_node_t *value_node = NULL;
-    axis2_om_node_t *this_node = NULL;
-    axis2_soap_fault_value_t* fault_value = NULL;
-    this_node = AXIS2_SOAP_FAULT_SUB_CODE_GET_BASE_NODE(fault_code, env);
-    if(!(fault_code_impl->value))
-    {
-        value_node = axis2_soap_utils_get_child_with_name(env, 
-                                            this_node, 
-                                            AXIS2_SOAP12_SOAP_FAULT_VALUE_LOCAL_NAME);
-                                                    
-        fault_value = axis2_soap_fault_value_create(env);
-        AXIS2_SOAP_FAULT_VALUE_SET_BASE_NODE(fault_value, env, value_node);
-        AXIS2_SOAP_FAULT_VALUE_SET_SOAP_VERSION(fault_value, env, AXIS2_SOAP11);
-        fault_code_impl->value = fault_value;
-    }
-    */
     return fault_code_impl->value;    
 }
                                      
@@ -416,25 +348,6 @@
 }
  
 axis2_status_t AXIS2_CALL
-axis2_soap_fault_code_set_soap_version(axis2_soap_fault_code_t *fault_code,
-                                  axis2_env_t **env,
-                                  int soap_version)
-{
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    AXIS2_PARAM_CHECK((*env)->error, soap_version, AXIS2_FAILURE);
-    AXIS2_INTF_TO_IMPL(fault_code)->soap_version = soap_version;
-    return AXIS2_SUCCESS;
-}
-
-axis2_status_t AXIS2_CALL
-axis2_soap_fault_code_get_soap_version(axis2_soap_fault_code_t *fault_code,
-                                  axis2_env_t **env)
-{
-     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-     return AXIS2_INTF_TO_IMPL(fault_code)->soap_version;
-} 
-
-axis2_status_t AXIS2_CALL
 axis2_soap_fault_code_set_builder(axis2_soap_fault_code_t *fault_code,
                                   axis2_env_t **env,
                                   axis2_soap_builder_t *soap_builder)
@@ -446,24 +359,4 @@
     fault_code_impl->builder = soap_builder;
     return AXIS2_SUCCESS;
 }                                                             
-/*********************** soap11 create function *******************************/
-
-AXIS2_DECLARE(axis2_soap_fault_code_t *)
-axis2_soap11_fault_code_create_with_parent(axis2_env_t **env,
-                             axis2_soap_fault_t *fault)
-{
-    AXIS2_ENV_CHECK(env, NULL);
-    AXIS2_PARAM_CHECK((*env)->error, fault, NULL);
-    return axis2_soap_fault_code_create_with_parent(env, fault, AXIS2_TRUE);
 
-}                             
-
-/********************** soap12 create function ********************************/
-AXIS2_DECLARE(axis2_soap_fault_code_t *)
-axis2_soap12_fault_code_create_with_parent(axis2_env_t **env,
-                             axis2_soap_fault_t *fault)
-{
-    AXIS2_ENV_CHECK(env, NULL);
-    AXIS2_PARAM_CHECK((*env)->error, fault, NULL);
-    return axis2_soap_fault_code_create_with_parent(env, fault, AXIS2_TRUE);
-}