summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar shankar2011-10-06 05:44:18 +0000
committerGravatar shankar2011-10-06 05:44:18 +0000
commit62bcb27c130942a84160eac1893f3cdd1ab7b0ed (patch)
tree156a0333880eadc79fec760ca1fbe399436b77aa
parent55d1494e751f0af363948fde72db6bd3bc5b55ea (diff)
downloadaxis2c-62bcb27c130942a84160eac1893f3cdd1ab7b0ed.tar.gz
axis2c-62bcb27c130942a84160eac1893f3cdd1ab7b0ed.tar.bz2
Some frameworks (e.g WSE) sends empty faultstring. Hence checking for empty and continue without failing.
git-svn-id: http://svn.apache.org/repos/asf/axis/axis2/c/core/trunk@1179506 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--axiom/src/om/axiom_element_internal.h5
-rw-r--r--axiom/src/om/om_element.c16
-rw-r--r--axiom/src/soap/soap11_builder_helper.c16
3 files changed, 23 insertions, 14 deletions
diff --git a/axiom/src/om/axiom_element_internal.h b/axiom/src/om/axiom_element_internal.h
index df515f9..81c9721 100644
--- a/axiom/src/om/axiom_element_internal.h
+++ b/axiom/src/om/axiom_element_internal.h
@@ -144,4 +144,9 @@ extern "C"
const axutil_env_t * env,
axis2_bool_t is_empty);
+ AXIS2_EXTERN axis2_bool_t AXIS2_CALL
+ axiom_element_get_is_empty(
+ axiom_element_t * om_element,
+ const axutil_env_t * env);
+
#endif /* AXIOM_ELEMENT_INTERNAL_H_ */
diff --git a/axiom/src/om/om_element.c b/axiom/src/om/om_element.c
index 7a56b54..1e92a2d 100644
--- a/axiom/src/om/om_element.c
+++ b/axiom/src/om/om_element.c
@@ -1565,6 +1565,14 @@ axiom_element_set_is_empty(
om_element->is_empty = is_empty;
}
+AXIS2_EXTERN axis2_bool_t AXIS2_CALL
+axiom_element_get_is_empty(
+ axiom_element_t * om_element,
+ const axutil_env_t * env)
+{
+ return om_element->is_empty;
+}
+
/**
* This method will declare the namespace without checking whether it is already declared.
* (This method is only used by codegen. We have to remove this method in future)
@@ -1859,14 +1867,6 @@ axiom_element_create_str(
return element;
}
-AXIS2_EXTERN axis2_bool_t AXIS2_CALL
-axiom_element_get_is_empty(
- axiom_element_t * om_element,
- const axutil_env_t * env)
-{
- return om_element->is_empty;
-}
-
AXIS2_EXTERN axis2_status_t AXIS2_CALL
axiom_element_remove_attribute(
axiom_element_t * om_element,
diff --git a/axiom/src/soap/soap11_builder_helper.c b/axiom/src/soap/soap11_builder_helper.c
index ab2e4d8..f6c4c65 100644
--- a/axiom/src/soap/soap11_builder_helper.c
+++ b/axiom/src/soap/soap11_builder_helper.c
@@ -29,6 +29,7 @@
#include "_axiom_soap_fault_role.h"
#include <axiom_stax_builder_internal.h>
#include <axiom_node_internal.h>
+#include <axiom_element_internal.h>
static axis2_status_t
axiom_soap11_builder_helper_process_text(
@@ -223,12 +224,15 @@ axiom_soap11_builder_helper_handle_event(
return AXIS2_FAILURE;
}
axiom_stax_builder_set_lastnode(builder_helper->om_builder, env, fault_text_node);
-
- status = axiom_soap11_builder_helper_process_text(builder_helper, env);
- if(status == AXIS2_FAILURE)
- {
- return AXIS2_FAILURE;
- }
+
+ if (axiom_element_get_is_empty(om_ele, env) != AXIS2_TRUE)
+ {
+ status = axiom_soap11_builder_helper_process_text(builder_helper, env);
+ if(status == AXIS2_FAILURE)
+ {
+ return AXIS2_FAILURE;
+ }
+ }
axiom_stax_builder_set_lastnode(builder_helper->om_builder, env, om_element_node);
axiom_node_set_complete(om_element_node, env, AXIS2_TRUE);