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 2005/12/23 02:58:32 UTC

svn commit: r358681 - in /webservices/axis2/trunk/c: include/ modules/xml/soap/src/

Author: nandika
Date: Thu Dec 22 17:58:13 2005
New Revision: 358681

URL: http://svn.apache.org/viewcvs?rev=358681&view=rev
Log:
soap_fault added 

Added:
    webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault.c
Modified:
    webservices/axis2/trunk/c/include/axis2_om_element.h
    webservices/axis2/trunk/c/include/axis2_soap_fault.h
    webservices/axis2/trunk/c/include/axis2_soap_fault_code.h
    webservices/axis2/trunk/c/include/axis2_soap_fault_detail.h
    webservices/axis2/trunk/c/include/axis2_soap_fault_node.h
    webservices/axis2/trunk/c/include/axis2_soap_fault_reason.h
    webservices/axis2/trunk/c/include/axis2_soap_fault_role.h
    webservices/axis2/trunk/c/include/axis2_soap_header_block.h
    webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_code.c
    webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_detail.c
    webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_node.c
    webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_reason.c
    webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_role.c
    webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_sub_code.c
    webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_text.c

Modified: webservices/axis2/trunk/c/include/axis2_om_element.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_om_element.h?rev=358681&r1=358680&r2=358681&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_om_element.h (original)
+++ webservices/axis2/trunk/c/include/axis2_om_element.h Thu Dec 22 17:58:13 2005
@@ -172,7 +172,7 @@
                                                              
                                                         
        /**
-        *   returns the localname of this element
+        * returns the localname of this element
         * @param om_element om_element struct
         * @param env environment struct
         * @returns localname of element, returns NULL on error.
@@ -285,7 +285,7 @@
         /**
          * Sets the text of the given element.
          *caution - This method will wipe out all the text elements (and hence any
-         * moxed content) before setting the text
+         * mixed content) before setting the text
          */
         axis2_status_t (AXIS2_CALL *set_text)(axis2_om_element_t *om_element,
                                               axis2_env_t **env,

Modified: webservices/axis2/trunk/c/include/axis2_soap_fault.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_soap_fault.h?rev=358681&r1=358680&r2=358681&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_soap_fault.h (original)
+++ webservices/axis2/trunk/c/include/axis2_soap_fault.h Thu Dec 22 17:58:13 2005
@@ -87,51 +87,72 @@
                                               axis2_soap_fault_code_t *code);
                                               
         axis2_soap_fault_code_t * (AXIS2_CALL *get_code)
-                                            (axis2_soap_fault_t *fault,
-                                             axis2_env_t **env);
+                                             (axis2_soap_fault_t *fault,
+                                              axis2_env_t **env);
                                          
-        axis2_status_t (AXIS2_CALL *set_reason)(axis2_soap_fault_t *fault,
-                                                axis2_env_t **env,
-                                                axis2_soap_fault_reason_t *reason);
+        axis2_status_t (AXIS2_CALL *set_reason)
+                                             (axis2_soap_fault_t *fault,
+                                              axis2_env_t **env,
+                                              axis2_soap_fault_reason_t *reason);
                                               
         axis2_soap_fault_reason_t* (AXIS2_CALL *get_reason)
-                                            (axis2_soap_fault_t *fault,
-                                             axis2_env_t **env);
+                                             (axis2_soap_fault_t *fault,
+                                              axis2_env_t **env);
                                              
         axis2_status_t (AXIS2_CALL *set_node)(axis2_soap_fault_t *fault,
                                               axis2_env_t **env,
                                               axis2_soap_fault_node_t *node);
                                               
         axis2_soap_fault_node_t* (AXIS2_CALL *get_node)
-                                            (axis2_soap_fault_t *fault,
-                                             axis2_env_t **env);
+                                             (axis2_soap_fault_t *fault,
+                                              axis2_env_t **env);
                                              
         axis2_status_t (AXIS2_CALL *set_role)(axis2_soap_fault_t *fault,
                                               axis2_env_t **env,
                                               axis2_soap_fault_role_t *role);
                                               
         axis2_soap_fault_role_t* (AXIS2_CALL *get_role)
-                                            (axis2_soap_fault_t *fault,
-                                             axis2_env_t **env);
+                                             (axis2_soap_fault_t *fault,
+                                              axis2_env_t **env);
 
-        axis2_status_t (AXIS2_CALL *set_detail)(axis2_soap_fault_t *fault,
+        axis2_status_t (AXIS2_CALL *set_detail)
+                                             (axis2_soap_fault_t *fault,
                                               axis2_env_t **env,
                                               axis2_soap_fault_detail_t *detail);
                                         
         axis2_soap_fault_detail_t* (AXIS2_CALL *get_detail)
-                                            (axis2_soap_fault_t *fault,
-                                             axis2_env_t **env);   
+                                             (axis2_soap_fault_t *fault,
+                                              axis2_env_t **env);  
+                                              
+        axis2_char_t * (AXIS2_CALL *get_exception)
+                                             (axis2_soap_fault_t *fault,
+                                              axis2_env_t **env);
+                                              
+        axis2_status_t (AXIS2_CALL *set_exception)
+                                             (axis2_soap_fault_t *fault,
+                                              axis2_env_t **env,
+                                              axis2_char_t *exception);                                                                                             
         
        /**
         * This is only intended to be used by the builder,
         * do not use this function in other places
         */
-        axis2_status_t (AXIS2_CALL *set_base_node)(axis2_soap_fault_t *fault,
-                                                   axis2_env_t **env,
-                                                   axis2_om_node_t *node);
+        axis2_status_t (AXIS2_CALL *set_base_node)
+                                             (axis2_soap_fault_t *fault,
+                                              axis2_env_t **env,
+                                              axis2_om_node_t *node);
                                               
-        axis2_om_node_t* (AXIS2_CALL *get_base_node)(axis2_soap_fault_t *fault,
-                                                     axis2_env_t **env);                                                                                                                                                          
+        axis2_om_node_t* (AXIS2_CALL *get_base_node)
+                                             (axis2_soap_fault_t *fault,
+                                              axis2_env_t **env);  
+                                                     
+        axis2_status_t (AXIS2_CALL *set_soap_version)
+                                             (axis2_soap_fault_t *fault,
+                                              axis2_env_t **env,
+                                              int soap_version);
+                                           
+        int (AXIS2_CALL *get_soap_version)(axis2_soap_fault_t *fault,
+                                           axis2_env_t **env);                                                                                                                                                                                                                                                           
                                          
     };
 
@@ -150,19 +171,17 @@
     * creates a soap struct 
     * @param env Environment. MUST NOT be NULL
     */
-    AXIS2_DECLARE(axis2_soap_fault_t *)
-    axis2_soap_fault_create_with_parent(axis2_env_t **env,
-                                        axis2_soap_body_t *parent);
-                               
-    
-    AXIS2_DECLARE(axis2_soap_fault_t *)
-    axis2_soap_fault_create(axis2_env_t **env);
-    
-    
-    AXIS2_DECLARE(axis2_soap_fault_t *)
-    axis2_soap_fault_create_with_error(axis2_env_t **env,
-                                         axis2_soap_body_t *parent,  
-                                         void* exception);
+AXIS2_DECLARE(axis2_soap_fault_t *)
+axis2_soap_fault_create(axis2_env_t **env);
+
+AXIS2_DECLARE(axis2_soap_fault_t *)
+axis2_soap_fault_create_with_parent(axis2_env_t **env,
+                                    axis2_soap_body_t *parent);
+
+AXIS2_DECLARE(axis2_soap_fault_t *)
+axis2_soap_fault_create_with_exception(axis2_env_t **env,
+                                        axis2_soap_body_t *parent,  
+                                        axis2_char_t* exception);
 /******************** Macros **************************************************/
     
     
@@ -204,10 +223,21 @@
         ((fault)->ops->get_node(fault, env)) 
         
 #define AXIS2_SOAP_FAULT_GET_BASE_NODE(fault, env) \
-        ((fault)->ops->get_base_node(fault, env))                       
-
+        ((fault)->ops->get_base_node(fault, env)) 
+        
+#define AXIS2_SOAP_FAULT_GET_SOAP_VERSION(fault, env) \
+        ((fault)->ops->get_soap_version(fault, env))
+        
+#define AXIS2_SOAP_FAULT_SET_SOAP_VERSION(fault, env) \
+        ((fault)->ops->set_soap_version(fault, env))
+        
+#define AXIS2_SOAP_FAULT_GET_EXCEPTION(fault, env) \
+        ((fault)->ops->get_exception(fault, env))
+        
+#define AXIS2_SOAP_FAULT_SET_EXCEPTION(fault, env, exception) \
+        ((fault)->ops->set_exception(fault, env, exception))        
+                                              
 /** @} */
-
 #ifdef __cplusplus
 }
 #endif

Modified: webservices/axis2/trunk/c/include/axis2_soap_fault_code.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_soap_fault_code.h?rev=358681&r1=358680&r2=358681&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_soap_fault_code.h (original)
+++ webservices/axis2/trunk/c/include/axis2_soap_fault_code.h Thu Dec 22 17:58:13 2005
@@ -108,6 +108,10 @@
     * creates a soap struct 
     * @param env Environment. MUST NOT be NULL
     */
+
+AXIS2_DECLARE(axis2_soap_fault_code_t *)
+axis2_soap_fault_code_create(axis2_env_t **env);    
+    
 AXIS2_DECLARE(axis2_soap_fault_code_t *)
 axis2_soap_fault_code_create_with_parent(axis2_env_t **env,
                             axis2_soap_fault_t *fault,
@@ -115,7 +119,12 @@
                             
 
 AXIS2_DECLARE(axis2_soap_fault_code_t *)
-axis2_soap_fault_code_create(axis2_env_t **env);
+axis2_soap11_fault_code_create(axis2_env_t **env,
+                             axis2_soap_fault_t *fault);
+
+AXIS2_DECLARE(axis2_soap_fault_code_t *)
+axis2_soap12_fault_code_create(axis2_env_t **env,
+                             axis2_soap_fault_t *fault);
 
 /******************** Macros **************************************************/
     

Modified: webservices/axis2/trunk/c/include/axis2_soap_fault_detail.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_soap_fault_detail.h?rev=358681&r1=358680&r2=358681&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_soap_fault_detail.h (original)
+++ webservices/axis2/trunk/c/include/axis2_soap_fault_detail.h Thu Dec 22 17:58:13 2005
@@ -110,7 +110,15 @@
 axis2_soap_fault_detail_create_with_parent
                         (axis2_env_t **env,
                          axis2_soap_fault_t *fault,
-                         axis2_bool_t *extract_ns_from_parent);
+                         axis2_bool_t extract_ns_from_parent);
+                         
+AXIS2_DECLARE(axis2_soap_fault_detail_t *)
+axis2_soap11_fault_detail_create(axis2_env_t **env,
+                               axis2_soap_fault_t *fault); 
+
+AXIS2_DECLARE(axis2_soap_fault_detail_t *)
+axis2_soap12_fault_detail_create(axis2_env_t **env,
+                               axis2_soap_fault_t *fault);                                                       
 
 /******************** Macros **************************************************/
     
@@ -128,7 +136,7 @@
 #define AXIS2_SOAP_FAULT_DETAIL_GET_BASE_NODE(fault_detail, env) \
         ((fault_detail)->ops->get_base_node(fault_detail, env))         
 
-#define AXIS2_SOAP_FAULT_DETAIL_SET_BASE(fault_detail, env, node) \
+#define AXIS2_SOAP_FAULT_DETAIL_SET_BASE_NODE(fault_detail, env, node) \
         ((fault_detail)->ops->set_base_node(fault_detail, env, node))
         
 #define AXIS2_SOAP_FAULT_DETAIL_GET_SOAP_VERSION(fault_detail, env) \

Modified: webservices/axis2/trunk/c/include/axis2_soap_fault_node.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_soap_fault_node.h?rev=358681&r1=358680&r2=358681&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_soap_fault_node.h (original)
+++ webservices/axis2/trunk/c/include/axis2_soap_fault_node.h Thu Dec 22 17:58:13 2005
@@ -124,7 +124,7 @@
 #define AXIS2_SOAP_FAULT_NODE_GET_BASE_NODE(fault_node, env) \
         ((fault_node)->ops->get_base_node(fault_node, env))         
 
-#define AXIS2_SOAP_FAULT_NODE_SET_BASE(fault_node, env, node) \
+#define AXIS2_SOAP_FAULT_NODE_SET_BASE_NODE(fault_node, env, node) \
         ((fault_node)->ops->set_base_node(fault_node, env, node))
         
 #define AXIS2_SOAP_FAULT_NODE_SET_SOAP_VERSION(fault_node, env, soap_version) \

Modified: webservices/axis2/trunk/c/include/axis2_soap_fault_reason.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_soap_fault_reason.h?rev=358681&r1=358680&r2=358681&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_soap_fault_reason.h (original)
+++ webservices/axis2/trunk/c/include/axis2_soap_fault_reason.h Thu Dec 22 17:58:13 2005
@@ -100,13 +100,20 @@
     * @param env Environment. MUST NOT be NULL
     */
 AXIS2_DECLARE(axis2_soap_fault_reason_t *)
+axis2_soap_fault_reason_create(axis2_env_t **env);    
+    
+AXIS2_DECLARE(axis2_soap_fault_reason_t *)
 axis2_soap_fault_reason_create_with_parent(axis2_env_t **env,
                             axis2_soap_fault_t *fault,
                             axis2_bool_t extact_ns_from_parent);
                             
+AXIS2_DECLARE(axis2_soap_fault_reason_t *)
+axis2_soap11_fault_reason_create_with_parent(axis2_env_t **env,
+                            axis2_soap_fault_t *fault);
 
 AXIS2_DECLARE(axis2_soap_fault_reason_t *)
-axis2_soap_fault_reason_create(axis2_env_t **env);
+axis2_soap12_fault_reason_create_with_parent(axis2_env_t **env,
+                            axis2_soap_fault_t *fault);
 
 /******************** Macros **************************************************/
     
@@ -124,7 +131,7 @@
 #define AXIS2_SOAP_FAULT_REASON_GET_BASE_NODE(fault_reason, env) \
         ((fault_reason)->ops->get_base_node(fault_reason, env))         
 
-#define AXIS2_SOAP_FAULT_REASON_SET_BASE(fault_reason, env, node) \
+#define AXIS2_SOAP_FAULT_REASON_SET_BASE_NODE(fault_reason, env, node) \
         ((fault_reason)->ops->set_base_node(fault_reason, env, node))  
         
 #define AXIS2_SOAP_FAULT_REASON_GET_SOAP_VERSION(fault_reason, env) \

Modified: webservices/axis2/trunk/c/include/axis2_soap_fault_role.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_soap_fault_role.h?rev=358681&r1=358680&r2=358681&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_soap_fault_role.h (original)
+++ webservices/axis2/trunk/c/include/axis2_soap_fault_role.h Thu Dec 22 17:58:13 2005
@@ -101,13 +101,21 @@
     * @param env Environment. MUST NOT be NULL
     */
 AXIS2_DECLARE(axis2_soap_fault_role_t *)
+axis2_soap_fault_role_create(axis2_env_t **env);
+    
+AXIS2_DECLARE(axis2_soap_fault_role_t *)
 axis2_soap_fault_role_create_with_parent(axis2_env_t **env,
                             axis2_soap_fault_t *fault,
                             axis2_bool_t extract_ns_from_parent);
                             
 
 AXIS2_DECLARE(axis2_soap_fault_role_t *)
-axis2_soap_fault_role_create(axis2_env_t **env);
+axis2_soap11_fault_role_create_with_parent(axis2_env_t **env,
+                            axis2_soap_fault_t *fault);
+
+AXIS2_DECLARE(axis2_soap_fault_role_t *)
+axis2_soap12_fault_role_create_with_parent(axis2_env_t **env,
+                            axis2_soap_fault_t *fault);
 
 /******************** Macros **************************************************/
     
@@ -125,7 +133,7 @@
 #define AXIS2_SOAP_FAULT_ROLE_GET_BASE_NODE(fault_role, env) \
         ((fault_role)->ops->get_base_node(fault_role, env))         
 
-#define AXIS2_SOAP_FAULT_ROLE_SET_BASE(fault_role, env, node) \
+#define AXIS2_SOAP_FAULT_ROLE_SET_BASE_NODE(fault_role, env, node) \
         ((fault_role)->ops->set_base_node(fault_role, env, node)) 
 
 #define AXIS2_SOAP_FAULT_ROLE_GET_SOAP_VRESION(fault_role, env) \

Modified: webservices/axis2/trunk/c/include/axis2_soap_header_block.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_soap_header_block.h?rev=358681&r1=358680&r2=358681&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_soap_header_block.h (original)
+++ webservices/axis2/trunk/c/include/axis2_soap_header_block.h Thu Dec 22 17:58:13 2005
@@ -102,8 +102,15 @@
                                               
         axis2_om_node_t* (AXIS2_CALL *get_base_node)
                             (axis2_soap_header_block_t *header_block,
-                             axis2_env_t **env);                                                                                                                                                          
-                                         
+                             axis2_env_t **env);
+                                                                                                                                                                                       
+        int (AXIS2_CALL *get_soap_version)  
+                            (axis2_soap_header_block_t *header_block,
+                             axis2_env_t **env);
+        int (AXIS2_CALL *set_soap_version)  
+                            (axis2_soap_header_block_t *header_block,
+                             axis2_env_t **env,
+                             int soap_version);                                                                     
     };
 
   /**
@@ -162,8 +169,13 @@
         ((header_block)->ops->set_base_node(header_block, env, node))
         
 #define AXIS2_SOAP_HEADER_BLOCK_GET_BASE_NODE(header_block, env) \
-        ((header_block)->ops->get_base_node(header_block, env))                       
-
+        ((header_block)->ops->get_base_node(header_block, env))   
+        
+#define AXIS2_SOAP_HEADER_BLOCK_SET_SOAP_VERSION(header_block, env, version) \
+        ((header_block)->ops->set_soap_version(header_block, env, version))
+        
+#define AXIS2_SOAP_HEADER_BLOCK_GET_SOAP_VERSION(header_block, env) \
+        ((header_block)->ops->get_soap_version(header_block, env))
 /** @} */
 
 #ifdef __cplusplus

Added: webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault.c?rev=358681&view=auto
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault.c (added)
+++ webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault.c Thu Dec 22 17:58:13 2005
@@ -0,0 +1,745 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ #include <axis2_soap_fault.h>
+ #include <axis2_soap.h>
+ #include <axis2_soap_body.h>
+ #include <axis2_om_node.h>
+ #include <axis2_om_element.h>
+ #include <axis2_soap_fault_code.h>
+ #include <axis2_soap_fault_detail.h>
+ #include <axis2_soap_fault_reason.h>
+ #include <axis2_soap_fault_role.h>
+ #include <axis2_soap_fault_node.h>
+ #include <axis2_soap_utils.h>
+ 
+/**************** impl struct ************************************************/
+
+typedef struct axis2_soap_fault_impl_t
+{
+    axis2_soap_fault_t soap_fault;
+    
+    axis2_om_node_t *om_ele_node;
+    
+    axis2_om_element_t *om_ele;
+
+    axis2_soap_body_t *parent;
+
+    axis2_soap_fault_code_t *fcode;
+    
+    axis2_soap_fault_reason_t *freason;
+
+    axis2_soap_fault_node_t *fnode;
+    
+    axis2_soap_fault_role_t *frole;
+    
+    axis2_soap_fault_detail_t *fdetail;
+    
+    axis2_char_t *exception;
+    
+    int soap_version;
+    
+}axis2_soap_fault_impl_t;
+
+/************************* Macro **********************************************/
+
+#define AXIS2_INTF_TO_IMPL(fault) ((axis2_soap_fault_impl_t*)fault)
+
+/************************ function prototype **********************************/
+
+
+axis2_status_t AXIS2_CALL 
+axis2_soap_fault_free(axis2_soap_fault_t *fault,
+                      axis2_env_t **env);
+
+axis2_status_t AXIS2_CALL 
+axis2_soap_fault_set_code(axis2_soap_fault_t *fault,
+                          axis2_env_t **env,
+                          axis2_soap_fault_code_t *code);
+                                        
+axis2_soap_fault_code_t * AXIS2_CALL 
+axis2_soap_fault_get_code(axis2_soap_fault_t *fault,
+                          axis2_env_t **env);
+                                    
+axis2_status_t AXIS2_CALL 
+axis2_soap_fault_set_reason(axis2_soap_fault_t *fault,
+                            axis2_env_t **env,
+                            axis2_soap_fault_reason_t *reason);
+                                        
+axis2_soap_fault_reason_t* AXIS2_CALL 
+axis2_soap_fault_get_reason(axis2_soap_fault_t *fault,
+                            axis2_env_t **env);
+                                        
+axis2_status_t AXIS2_CALL 
+axis2_soap_fault_set_node(axis2_soap_fault_t *fault,
+                          axis2_env_t **env,
+                          axis2_soap_fault_node_t *node);
+                                        
+axis2_soap_fault_node_t* AXIS2_CALL 
+axis2_soap_fault_get_node(axis2_soap_fault_t *fault,
+                          axis2_env_t **env);
+                                        
+axis2_status_t AXIS2_CALL 
+axis2_soap_fault_set_role(axis2_soap_fault_t *fault,
+                          axis2_env_t **env,
+                          axis2_soap_fault_role_t *role);
+                                        
+axis2_soap_fault_role_t* AXIS2_CALL 
+axis2_soap_fault_get_role(axis2_soap_fault_t *fault,
+                          axis2_env_t **env);
+
+axis2_status_t AXIS2_CALL 
+axis2_soap_fault_set_detail(axis2_soap_fault_t *fault,
+                            axis2_env_t **env,
+                            axis2_soap_fault_detail_t *detail);
+                                
+axis2_soap_fault_detail_t* AXIS2_CALL 
+axis2_soap_fault_get_detail(axis2_soap_fault_t *fault,
+                            axis2_env_t **env);   
+
+axis2_status_t AXIS2_CALL 
+axis2_soap_fault_set_base_node(axis2_soap_fault_t *fault,
+                               axis2_env_t **env,
+                               axis2_om_node_t *node);
+                                        
+axis2_om_node_t* AXIS2_CALL 
+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,
+                               axis2_env_t **env);
+                                        
+axis2_status_t AXIS2_CALL 
+axis2_soap_fault_set_exception(axis2_soap_fault_t *fault,
+                               axis2_env_t **env,
+                               axis2_char_t *exception);                                                                                                                                                                                                                                                                                         
+
+/***************** function implementations ***********************************/
+
+AXIS2_DECLARE(axis2_soap_fault_t *)
+axis2_soap_fault_create(axis2_env_t **env)
+{
+    axis2_soap_fault_impl_t *fault_impl = NULL;
+    AXIS2_ENV_CHECK(env, NULL);
+    fault_impl = (axis2_soap_fault_impl_t*)AXIS2_MALLOC(
+                    (*env)->allocator,
+                    sizeof(axis2_soap_fault_impl_t));
+    if(!fault_impl)
+    {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
+    }
+    fault_impl->exception = NULL;
+    fault_impl->fcode = NULL;
+    fault_impl->fdetail = NULL;
+    fault_impl->fnode = NULL;
+    fault_impl->freason = NULL;
+    fault_impl->frole = NULL;
+    fault_impl->om_ele = NULL;
+    fault_impl->om_ele_node = NULL;
+    fault_impl->parent = NULL;
+    fault_impl->soap_fault.ops = NULL;
+    fault_impl->soap_version = AXIS2_SOAP_VERSION_NOT_SET;
+
+    fault_impl->soap_fault.ops = (axis2_soap_fault_ops_t*)AXIS2_MALLOC(
+                                 (*env)->allocator,
+                                 sizeof(axis2_soap_fault_ops_t));
+
+    if(!(fault_impl->soap_fault.ops))
+    {
+        AXIS2_FREE((*env)->allocator, fault_impl);
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        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 =
+        axis2_soap_fault_get_base_node;
+    fault_impl->soap_fault.ops->set_base_node =
+        axis2_soap_fault_set_base_node;
+    fault_impl->soap_fault.ops->set_code =
+        axis2_soap_fault_set_code;
+    fault_impl->soap_fault.ops->get_code =
+        axis2_soap_fault_get_code;
+    fault_impl->soap_fault.ops->set_reason =
+        axis2_soap_fault_set_reason;
+    fault_impl->soap_fault.ops->get_reason =
+        axis2_soap_fault_get_reason;        
+    fault_impl->soap_fault.ops->set_role =
+        axis2_soap_fault_set_role;
+    fault_impl->soap_fault.ops->get_role =
+        axis2_soap_fault_get_role;
+    fault_impl->soap_fault.ops->get_node =
+        axis2_soap_fault_get_node;
+    fault_impl->soap_fault.ops->set_node =
+        axis2_soap_fault_set_node;
+    fault_impl->soap_fault.ops->get_detail =
+        axis2_soap_fault_get_detail;
+    fault_impl->soap_fault.ops->set_detail =
+        axis2_soap_fault_set_detail; 
+    fault_impl->soap_fault.ops->get_exception =
+        axis2_soap_fault_get_exception;
+    fault_impl->soap_fault.ops->set_exception =
+        axis2_soap_fault_set_exception;                    
+                                                                                               
+    return &(fault_impl->soap_fault);
+}
+
+
+AXIS2_DECLARE(axis2_soap_fault_t *)
+axis2_soap_fault_create_with_parent(axis2_env_t **env,
+                                    axis2_soap_body_t *body)
+{
+    axis2_soap_fault_impl_t *fault_impl = NULL;
+    axis2_soap_fault_t *fault = NULL;
+    axis2_om_element_t *this_ele = NULL;
+    axis2_om_node_t *this_node = NULL;
+    axis2_om_node_t *parent_node = NULL;
+    axis2_om_element_t *parent_ele = NULL;
+    axis2_om_namespace_t *parent_ns = NULL;
+    
+    AXIS2_ENV_CHECK(env, NULL);
+    AXIS2_PARAM_CHECK((*env)->error, body, NULL);
+    
+    fault = axis2_soap_fault_create(env);
+    if(!fault)
+        return NULL;
+        
+    fault_impl = AXIS2_INTF_TO_IMPL(fault);
+    
+    fault_impl->parent = body;
+    
+    parent_node = AXIS2_SOAP_FAULT_GET_BASE_NODE(fault, env);
+    
+    parent_ele  = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(
+                        parent_node, env);
+    
+    parent_ns = AXIS2_OM_ELEMENT_GET_NAMESPACE(parent_ele, env);
+    
+    this_ele = axis2_om_element_create(env, 
+                                       parent_node,                             
+                                       AXIS2_SOAP_FAULT_LOCAL_NAME,
+                                       parent_ns,
+                                       &this_node);
+    fault_impl->om_ele = this_ele;
+    fault_impl->om_ele_node = this_node;                                       
+    return  &(fault_impl->soap_fault);  
+
+}
+
+
+AXIS2_DECLARE(axis2_soap_fault_t *)
+axis2_soap_fault_create_with_exception(axis2_env_t **env,
+                                        axis2_soap_body_t *body,  
+                                        axis2_char_t* exception)
+{
+    axis2_soap_fault_t *fault = NULL;
+    AXIS2_ENV_CHECK(env, NULL);
+    AXIS2_PARAM_CHECK((*env)->error, body, NULL);
+    AXIS2_PARAM_CHECK((*env)->error, exception, NULL);
+    fault = axis2_soap_fault_create_with_parent(env, body);
+    if(!fault)
+        return NULL;
+    axis2_soap_fault_set_exception(fault, env, exception);
+    return fault;
+}
+
+
+axis2_status_t AXIS2_CALL 
+axis2_soap_fault_free(axis2_soap_fault_t *fault,
+                      axis2_env_t **env)
+{
+    axis2_soap_fault_impl_t *fault_impl = NULL;
+    AXIS2_FUNC_PARAM_CHECK(fault, env, AXIS2_FAILURE);
+    fault_impl = AXIS2_INTF_TO_IMPL(fault);
+    
+    if(fault_impl->fcode)
+    {
+        AXIS2_SOAP_FAULT_CODE_FREE(fault_impl->fcode, env);
+        fault_impl->fcode = NULL;
+    }
+    if(fault_impl->fdetail)
+    {
+        AXIS2_SOAP_FAULT_DETAIL_FREE(fault_impl->fdetail, env);
+        fault_impl->fdetail = NULL;
+    }
+    if(fault_impl->fnode)
+    {
+        AXIS2_SOAP_FAULT_NODE_FREE(fault_impl->fnode, env);
+        fault_impl->fnode = NULL;
+    }    
+    if(fault_impl->freason)
+    {
+        AXIS2_SOAP_FAULT_REASON_FREE(fault_impl->freason, env);
+        fault_impl->freason = NULL;
+    }
+    if(fault_impl->frole)
+    {
+        AXIS2_SOAP_FAULT_ROLE_FREE(fault_impl->frole, env);
+        fault_impl->frole = NULL;
+    }
+    if(fault->ops)
+    {
+        AXIS2_FREE((*env)->allocator, fault->ops);
+        fault->ops = NULL;
+    }
+    AXIS2_FREE((*env)->allocator, fault_impl);
+    fault_impl = NULL;
+    return AXIS2_SUCCESS;
+}
+
+axis2_status_t AXIS2_CALL 
+axis2_soap_fault_set_code(axis2_soap_fault_t *fault,
+                          axis2_env_t **env,
+                          axis2_soap_fault_code_t *code)
+{
+    axis2_soap_fault_impl_t *fault_impl = NULL;
+    axis2_om_node_t *code_node = NULL;
+    axis2_om_node_t *this_node = NULL;
+    axis2_om_node_t *my_node = NULL;
+    
+    AXIS2_FUNC_PARAM_CHECK(fault, 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)
+    {
+        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;
+    }
+    
+    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;  
+}
+                                        
+axis2_soap_fault_code_t * AXIS2_CALL 
+axis2_soap_fault_get_code(axis2_soap_fault_t *fault,
+                          axis2_env_t **env)
+{
+    axis2_soap_fault_impl_t *fault_impl = NULL;
+    axis2_om_node_t *code_node = NULL;
+    axis2_om_node_t *this_node = NULL;
+    axis2_soap_fault_code_t* code = NULL;
+    
+    AXIS2_FUNC_PARAM_CHECK(fault, env, NULL);
+    fault_impl = AXIS2_INTF_TO_IMPL(fault);
+    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; 
+}
+                                    
+axis2_status_t AXIS2_CALL 
+axis2_soap_fault_set_reason(axis2_soap_fault_t *fault,
+                            axis2_env_t **env,
+                            axis2_soap_fault_reason_t *reason)
+{
+    axis2_soap_fault_impl_t *fault_impl = NULL;
+    axis2_om_node_t *reason_node = NULL;
+    axis2_om_node_t *this_node = NULL;
+    axis2_om_node_t *my_node = NULL;
+    
+    AXIS2_FUNC_PARAM_CHECK(fault, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, reason, AXIS2_FAILURE);
+    
+    fault_impl = AXIS2_INTF_TO_IMPL(fault);
+   /* axis2_soap_fault_get_reason(fault_reason, env); */
+    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;
+    }
+    
+    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;  
+
+}
+                                        
+axis2_soap_fault_reason_t* AXIS2_CALL 
+axis2_soap_fault_get_reason(axis2_soap_fault_t *fault,
+                            axis2_env_t **env)
+{
+    axis2_soap_fault_impl_t *fault_impl = NULL;
+    axis2_om_node_t *reason_node = NULL;
+    axis2_om_node_t *this_node = NULL;
+    axis2_soap_fault_reason_t* reason = NULL;
+    
+    AXIS2_FUNC_PARAM_CHECK(fault, env, NULL);
+    fault_impl = AXIS2_INTF_TO_IMPL(fault);
+    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; 
+}
+                                        
+axis2_status_t AXIS2_CALL 
+axis2_soap_fault_set_node(axis2_soap_fault_t *fault,
+                          axis2_env_t **env,
+                          axis2_soap_fault_node_t *node)
+{
+    axis2_soap_fault_impl_t *fault_impl = NULL;
+    axis2_om_node_t *node_node = NULL;
+    axis2_om_node_t *this_node = NULL;
+    axis2_om_node_t *my_node = NULL;
+    
+    AXIS2_FUNC_PARAM_CHECK(fault, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, node, AXIS2_FAILURE);
+    
+    fault_impl = AXIS2_INTF_TO_IMPL(fault);
+   /* axis2_soap_fault_get_node(fault_node, env); */
+    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;
+    }
+    
+    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;
+
+}
+                                        
+axis2_soap_fault_node_t* AXIS2_CALL 
+axis2_soap_fault_get_node(axis2_soap_fault_t *fault,
+                          axis2_env_t **env)
+{
+    axis2_soap_fault_impl_t *fault_impl = NULL;
+    axis2_om_node_t *node_node = NULL;
+    axis2_om_node_t *this_node = NULL;
+    axis2_soap_fault_node_t* node = NULL;
+    
+    AXIS2_FUNC_PARAM_CHECK(fault, env, NULL);
+    fault_impl = AXIS2_INTF_TO_IMPL(fault);
+    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; 
+
+}
+                                        
+axis2_status_t AXIS2_CALL 
+axis2_soap_fault_set_role(axis2_soap_fault_t *fault,
+                          axis2_env_t **env,
+                          axis2_soap_fault_role_t *role)
+{
+    axis2_soap_fault_impl_t *fault_impl = NULL;
+    axis2_om_node_t *role_node = NULL;
+    axis2_om_node_t *this_node = NULL;
+    axis2_om_node_t *my_node = NULL;
+    
+    AXIS2_FUNC_PARAM_CHECK(fault, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, role, AXIS2_FAILURE);
+    
+    fault_impl = AXIS2_INTF_TO_IMPL(fault);
+   /* axis2_soap_fault_get_role(fault_role, env); */
+    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;
+    }
+    
+    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;  
+
+}
+                                        
+axis2_soap_fault_role_t* AXIS2_CALL 
+axis2_soap_fault_get_role(axis2_soap_fault_t *fault,
+                          axis2_env_t **env)
+{
+    axis2_soap_fault_impl_t *fault_impl = NULL;
+    axis2_om_node_t *role_node = NULL;
+    axis2_om_node_t *this_node = NULL;
+    axis2_soap_fault_role_t* role = NULL;
+    
+    AXIS2_FUNC_PARAM_CHECK(fault, env, NULL);
+    fault_impl = AXIS2_INTF_TO_IMPL(fault);
+    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; 
+}
+
+axis2_status_t AXIS2_CALL 
+axis2_soap_fault_set_detail(axis2_soap_fault_t *fault,
+                            axis2_env_t **env,
+                            axis2_soap_fault_detail_t *detail)
+{
+    axis2_soap_fault_impl_t *fault_impl = NULL;
+    axis2_om_node_t *detail_node = NULL;
+    axis2_om_node_t *this_node = NULL;
+    axis2_om_node_t *my_node = NULL;
+    
+    AXIS2_FUNC_PARAM_CHECK(fault, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, detail, AXIS2_FAILURE);
+    
+    fault_impl = AXIS2_INTF_TO_IMPL(fault);
+   /* axis2_soap_fault_get_detail(fault_detail, env); */
+    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;
+    }
+    
+    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;  
+
+
+}
+                                
+axis2_soap_fault_detail_t* AXIS2_CALL 
+axis2_soap_fault_get_detail(axis2_soap_fault_t *fault,
+                            axis2_env_t **env)
+{
+    axis2_soap_fault_impl_t *fault_impl = NULL;
+    axis2_om_node_t *detail_node = NULL;
+    axis2_om_node_t *this_node = NULL;
+    axis2_soap_fault_detail_t* detail = NULL;
+    
+    AXIS2_FUNC_PARAM_CHECK(fault, env, NULL);
+    fault_impl = AXIS2_INTF_TO_IMPL(fault);
+    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; 
+}   
+
+axis2_status_t AXIS2_CALL 
+axis2_soap_fault_set_base_node(axis2_soap_fault_t *fault,
+                               axis2_env_t **env,
+                               axis2_om_node_t *node)
+{
+   axis2_soap_fault_impl_t *fault_impl = NULL;
+   AXIS2_FUNC_PARAM_CHECK(fault, env, AXIS2_FAILURE);
+   AXIS2_PARAM_CHECK((*env)->error, node, AXIS2_FAILURE);
+   fault_impl = AXIS2_INTF_TO_IMPL(fault);
+   
+   if(AXIS2_OM_NODE_GET_NODE_TYPE(node, env) != AXIS2_OM_ELEMENT)
+   {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_INVALID_BASE_TYPE, AXIS2_FAILURE);
+        return AXIS2_FAILURE;
+   }
+   fault_impl->om_ele_node = node;
+   fault_impl->om_ele = (axis2_om_element_t *)
+            AXIS2_OM_NODE_GET_DATA_ELEMENT(node, env);
+   return AXIS2_SUCCESS;
+
+}
+                                        
+axis2_om_node_t* AXIS2_CALL 
+axis2_soap_fault_get_base_node(axis2_soap_fault_t *fault,
+                               axis2_env_t **env)
+{
+    AXIS2_FUNC_PARAM_CHECK(fault, env, NULL);
+    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_FUNC_PARAM_CHECK(fault, 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_FUNC_PARAM_CHECK(fault, 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,
+                               axis2_env_t **env)
+{
+    axis2_soap_fault_detail_t *detail = NULL;
+    axis2_om_node_t *detail_node = NULL;
+    axis2_om_element_t *detail_ele = NULL;
+    axis2_om_node_t *exception_node = NULL;
+    axis2_om_element_t *exception_ele = NULL;
+    axis2_qname_t *qn = NULL;
+    axis2_char_t *excep = NULL;
+    
+    AXIS2_FUNC_PARAM_CHECK(fault, env, NULL);
+    detail = axis2_soap_fault_get_detail(fault, env);
+    if(!detail)
+        return NULL;
+    detail_node = AXIS2_SOAP_FAULT_DETAIL_GET_BASE_NODE(detail, env);
+    detail_ele = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(
+                    detail_node, env);
+    qn = axis2_qname_create(env,
+             AXIS2_SOAP_FAULT_DETAIL_EXCEPTION_ENTRY, NULL, NULL);
+    
+    exception_ele = AXIS2_OM_ELEMENT_GET_FIRST_CHILD_WITH_QNAME(
+                        detail_ele, env,
+                        qn, detail_node, &exception_node);
+    AXIS2_QNAME_FREE(qn, env);                        
+    if(exception_ele && 
+           (excep = AXIS2_OM_ELEMENT_GET_TEXT(exception_ele, env, exception_node)))
+    {
+        return excep;
+    }
+        return NULL;
+}
+                                        
+axis2_status_t AXIS2_CALL 
+axis2_soap_fault_set_exception(axis2_soap_fault_t *fault,
+                               axis2_env_t **env,
+                               axis2_char_t *exception)
+{
+    axis2_soap_fault_impl_t *fault_impl = NULL;
+    axis2_soap_fault_detail_t *detail = NULL;
+    axis2_om_node_t *fault_detail_entry_node = NULL;
+    axis2_om_element_t *fault_detail_ele = NULL;
+    AXIS2_FUNC_PARAM_CHECK(fault, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, exception, AXIS2_FAILURE);
+    fault_impl = AXIS2_INTF_TO_IMPL(fault);
+    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);
+    }
+    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);
+
+    AXIS2_OM_ELEMENT_SET_TEXT(fault_detail_ele,
+         env, exception, fault_detail_entry_node);
+
+    AXIS2_SOAP_FAULT_DETAIL_ADD_DETAIL_ENTRY(detail, env, fault_detail_entry_node);             
+    return AXIS2_SUCCESS;
+}                                                                                                                                                                                                                                                                                        
+                                  

Modified: webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_code.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_code.c?rev=358681&r1=358680&r2=358681&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_code.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_code.c Thu Dec 22 17:58:13 2005
@@ -176,7 +176,7 @@
     parent_node = AXIS2_SOAP_FAULT_GET_BASE_NODE(fault, env);
     
     parent_ele  = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(
-                        fault_code_impl->om_ele_node, env);
+                        parent_node, env);
     
     if(extract_ns_from_parent)
     {
@@ -235,6 +235,7 @@
     AXIS2_PARAM_CHECK((*env)->error, fault_val, AXIS2_FAILURE);
     
     fault_code_impl = AXIS2_INTF_TO_IMPL(fault_code);
+   /* axis2_soap_fault_code_get_value(fault_code, env); */
     if(fault_code_impl->value)
     {
         my_node = AXIS2_SOAP_FAULT_VALUE_GET_BASE_NODE(
@@ -269,6 +270,7 @@
     AXIS2_PARAM_CHECK((*env)->error, fault_subcode, AXIS2_FAILURE);
     
     fault_code_impl = AXIS2_INTF_TO_IMPL(fault_code);
+   /* axis2_soap_fault_code_get_sub_code(fault_code, env); */
     if(fault_code_impl->subcode)
     {
         my_node = AXIS2_SOAP_FAULT_SUB_CODE_GET_BASE_NODE(
@@ -299,7 +301,6 @@
     axis2_soap_fault_sub_code_t* subcode = NULL;
     
     AXIS2_FUNC_PARAM_CHECK(fault_code, env, NULL);
-    AXIS2_PARAM_CHECK((*env)->error, fault_code, NULL);
     fault_code_impl = AXIS2_INTF_TO_IMPL(fault_code);
     this_node = fault_code_impl->om_ele_node;
     
@@ -395,3 +396,26 @@
      AXIS2_FUNC_PARAM_CHECK(fault_code, env, AXIS2_FAILURE);
      return AXIS2_INTF_TO_IMPL(fault_code)->soap_version;
 }                            
+/*********************** soap11 create function *******************************/
+
+AXIS2_DECLARE(axis2_soap_fault_code_t *)
+axis2_soap11_fault_code_create(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_FALSE);
+
+}                             
+
+/********************** soap12 create function ********************************/
+AXIS2_DECLARE(axis2_soap_fault_code_t *)
+axis2_soap12_fault_code_create(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);
+
+}                             
+

Modified: webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_detail.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_detail.c?rev=358681&r1=358680&r2=358681&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_detail.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_detail.c Thu Dec 22 17:58:13 2005
@@ -141,7 +141,7 @@
 axis2_soap_fault_detail_create_with_parent
                         (axis2_env_t **env,
                          axis2_soap_fault_t *fault,
-                         axis2_bool_t *extract_ns_from_parent)
+                         axis2_bool_t extract_ns_from_parent)
 {
     axis2_soap_fault_detail_impl_t *fault_detail_impl = NULL;
     axis2_soap_fault_detail_t *fault_detail = NULL;
@@ -165,7 +165,7 @@
     parent_node = AXIS2_SOAP_FAULT_GET_BASE_NODE(fault, env);
     
     parent_ele  = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(
-                        fault_detail_impl->om_ele_node, env);
+                        parent_node, env);
     
     if(extract_ns_from_parent)
     {
@@ -283,4 +283,25 @@
      AXIS2_PARAM_CHECK((*env)->error, soap_version, AXIS2_FAILURE);
      AXIS2_INTF_TO_IMPL(fault_detail)->soap_version = soap_version;
      return AXIS2_SUCCESS;
-}                                              
\ No newline at end of file
+}                                              
+/********************** soap11 ************************************************/
+
+AXIS2_DECLARE(axis2_soap_fault_detail_t *)
+axis2_soap11_fault_detail_create(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_detail_create_with_parent(env, fault, AXIS2_FALSE);
+}                               
+/************************* soap12 *********************************************/
+
+AXIS2_DECLARE(axis2_soap_fault_detail_t *)
+axis2_soap12_fault_detail_create(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_detail_create_with_parent(env, fault, AXIS2_TRUE);
+
+}                               
\ No newline at end of file

Modified: webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_node.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_node.c?rev=358681&r1=358680&r2=358681&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_node.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_node.c Thu Dec 22 17:58:13 2005
@@ -156,7 +156,7 @@
     parent_node = AXIS2_SOAP_FAULT_GET_BASE_NODE(fault, env);
     
     parent_ele  = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(
-                        fault_node_impl->om_ele_node, env);
+                        parent_node, env);
     
     parent_ns = AXIS2_OM_ELEMENT_GET_NAMESPACE(parent_ele, env);
     this_ele = axis2_om_element_create(env, 

Modified: webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_reason.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_reason.c?rev=358681&r1=358680&r2=358681&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_reason.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_reason.c Thu Dec 22 17:58:13 2005
@@ -167,7 +167,7 @@
     parent_node = AXIS2_SOAP_FAULT_GET_BASE_NODE(fault, env);
     
     parent_ele  = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(
-                        fault_reason_impl->om_ele_node, env);
+                        parent_node, env);
     
     if(extract_ns_from_parent)
     {
@@ -223,6 +223,7 @@
     AXIS2_PARAM_CHECK((*env)->error, soap_text, AXIS2_FAILURE);
     
     fault_reason_impl = AXIS2_INTF_TO_IMPL(fault_reason);
+    
     if(fault_reason_impl->text)
     {
         my_node = AXIS2_SOAP_FAULT_TEXT_GET_BASE_NODE(
@@ -329,3 +330,22 @@
     return AXIS2_SUCCESS;
 }                            
 
+/************************** soap11 ********************************************/
+AXIS2_DECLARE(axis2_soap_fault_reason_t *)
+axis2_soap11_fault_reason_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_reason_create_with_parent(env, fault, AXIS2_FALSE);
+}                            
+
+AXIS2_DECLARE(axis2_soap_fault_reason_t *)
+axis2_soap12_fault_reason_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_reason_create_with_parent(env, fault, AXIS2_TRUE);
+
+}

Modified: webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_role.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_role.c?rev=358681&r1=358680&r2=358681&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_role.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_role.c Thu Dec 22 17:58:13 2005
@@ -162,7 +162,7 @@
     parent_node = AXIS2_SOAP_FAULT_GET_BASE_NODE(fault, env);
     
     parent_ele  = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(
-                        fault_role_impl->om_ele_node, env);
+                        parent_node, env);
     
     if(extract_ns_from_parent)
     {
@@ -283,3 +283,25 @@
     AXIS2_INTF_TO_IMPL(fault_role)->soap_version = soap_version;
     return AXIS2_SUCCESS;
 } 
+
+/********************* soap11 *************************************************/
+AXIS2_DECLARE(axis2_soap_fault_role_t *)
+axis2_soap11_fault_role_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_role_create_with_parent(env, fault, AXIS2_FALSE);
+}                            
+
+/****************** soap12 ****************************************************/
+AXIS2_DECLARE(axis2_soap_fault_role_t *)
+axis2_soap12_fault_role_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_role_create_with_parent(env, fault, AXIS2_TRUE);
+
+}                            
+

Modified: webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_sub_code.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_sub_code.c?rev=358681&r1=358680&r2=358681&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_sub_code.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_sub_code.c Thu Dec 22 17:58:13 2005
@@ -180,7 +180,7 @@
     fault_sub_code_impl->parent = fault_code;
     parent_node = AXIS2_SOAP_FAULT_CODE_GET_BASE_NODE(fault_code, env);
     parent_ele  = (axis2_om_element_t *)AXIS2_OM_NODE_GET_DATA_ELEMENT(
-                        fault_sub_code_impl->om_ele_node, env);
+                        parent_node, env);
                         
     this_ele = axis2_om_element_create(env, 
                                     parent_node,

Modified: webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_text.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_text.c?rev=358681&r1=358680&r2=358681&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_text.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/src/axis2_soap_fault_text.c Thu Dec 22 17:58:13 2005
@@ -109,8 +109,8 @@
     fault_text_impl->soap_version = AXIS2_SOAP_VERSION_NOT_SET;
     
     fault_text_impl->lang_namespace = axis2_om_namespace_create(env,
-                                        AXIS2_SOAP12_SOAP_FAULT_TEXT_LANG_ATTR_NS_URI,
-                                        AXIS2_SOAP12_SOAP_FAULT_TEXT_LANG_ATTR_NS_PREFIX);
+                        AXIS2_SOAP12_SOAP_FAULT_TEXT_LANG_ATTR_NS_URI,
+                        AXIS2_SOAP12_SOAP_FAULT_TEXT_LANG_ATTR_NS_PREFIX);
                                         
     if(!(fault_text_impl->lang_namespace))
             return NULL;