diff options
author | shankar | 2010-05-24 04:31:26 +0000 |
---|---|---|
committer | shankar | 2010-05-24 04:31:26 +0000 |
commit | c41d927309c586ab215f8fa681243482ae9792e0 (patch) | |
tree | bcc811b78b8f9aadbe5969d1df895ccc20858266 | |
parent | a0bca08c822c80039b3f3d543b09d41c45610607 (diff) | |
download | axis2c-c41d927309c586ab215f8fa681243482ae9792e0.tar.gz axis2c-c41d927309c586ab215f8fa681243482ae9792e0.tar.bz2 |
adding axiom_element_declare_namespace_assume_param_ownership method
git-svn-id: http://svn.apache.org/repos/asf/axis/axis2/c/core/trunk@947536 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | axiom/include/axiom_element.h | 27 | ||||
-rw-r--r-- | axiom/src/om/om_element.c | 101 |
2 files changed, 72 insertions, 56 deletions
diff --git a/axiom/include/axiom_element.h b/axiom/include/axiom_element.h index cd1de06..90e4881 100644 --- a/axiom/include/axiom_element.h +++ b/axiom/include/axiom_element.h @@ -432,6 +432,21 @@ extern "C" const axutil_env_t * env, axiom_node_t * element_node); + /** + * 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) + * @param om_element pointer to om_element + * @param env environment MUST not be NULL + * @param om_node pointer to this element node + * @return satus of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE. + * + */ + AXIS2_EXTERN axis2_status_t AXIS2_CALL + axiom_element_declare_namespace_assume_param_ownership( + axiom_element_t * om_element, + const axutil_env_t * env, + axiom_namespace_t * ns); + #if 0 /** * builds this om_element_node completely, This is only possible @@ -508,18 +523,6 @@ extern "C" const axutil_env_t * env, axiom_namespace_t * om_ns); - /** - * @param om_element pointer to om_element - * @param env environment MUST not be NULL - * @param om_node pointer to this element node - * @return satus of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE. - * - */ - AXIS2_EXTERN axis2_status_t AXIS2_CALL - axiom_element_declare_namespace_assume_param_ownership( - axiom_element_t * om_element, - const axutil_env_t * env, - axiom_namespace_t * ns); /** * unconditionally set the namespace of the element diff --git a/axiom/src/om/om_element.c b/axiom/src/om/om_element.c index f02b9a2..7a56b54 100644 --- a/axiom/src/om/om_element.c +++ b/axiom/src/om/om_element.c @@ -1565,6 +1565,63 @@ axiom_element_set_is_empty( om_element->is_empty = 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) + * @param om_element pointer to om_element + * @param env environment MUST not be NULL + * @param om_node pointer to this element node + * @return satus of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE. + * + */ +AXIS2_EXTERN axis2_status_t AXIS2_CALL +axiom_element_declare_namespace_assume_param_ownership( + axiom_element_t * om_element, + const axutil_env_t * env, + axiom_namespace_t * ns) +{ + axis2_char_t *prefix = NULL; + + if(!ns || !om_element) + { + AXIS2_ERROR_SET(env->error, AXIS2_ERROR_INVALID_NULL_PARAM, AXIS2_FAILURE); + AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "namespace or om_element is NULL"); + return AXIS2_FAILURE; + } + + if(!(om_element->namespaces)) + { + om_element->namespaces = axutil_hash_make(env); + if(!(om_element->namespaces)) + { + AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Unable to create namespaces hash map"); + return AXIS2_FAILURE; + } + } + + prefix = axiom_namespace_get_prefix(ns, env); + if(prefix) + { + axutil_hash_set(om_element->namespaces, prefix, AXIS2_HASH_KEY_STRING, ns); + } + else + { + /* create a key with empty string */ + axis2_char_t *key; + key = AXIS2_MALLOC(env->allocator, sizeof(char) * 1); + if(!key) + { + AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); + AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, + "Insufficient memory to create key to store namespace"); + } + key[0] = '\0'; + axutil_hash_set(om_element->namespaces, key, AXIS2_HASH_KEY_STRING, ns); + } + axiom_namespace_increment_ref(ns, env); + return AXIS2_SUCCESS; +} + #if 0 AXIS2_EXTERN axis2_status_t AXIS2_CALL axiom_element_build( @@ -1685,50 +1742,6 @@ axiom_element_set_namespace_with_no_find_in_current_scope( } AXIS2_EXTERN axis2_status_t AXIS2_CALL -axiom_element_declare_namespace_assume_param_ownership( - axiom_element_t * om_element, - const axutil_env_t * env, - axiom_namespace_t * ns) -{ - axis2_char_t *prefix = NULL; - axis2_char_t *uri = NULL; - - if(!ns || !om_element) - { - AXIS2_ERROR_SET(env->error, AXIS2_ERROR_INVALID_NULL_PARAM, AXIS2_FAILURE); - AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "namespace or om_element is NULL"); - return AXIS2_FAILURE; - } - - uri = axiom_namespace_get_uri(ns, env); - prefix = axiom_namespace_get_prefix(ns, env); - - if(!(om_element->namespaces)) - { - om_element->namespaces = axutil_hash_make(env); - if(!(om_element->namespaces)) - { - return AXIS2_FAILURE; - } - } - if(prefix) - { - axutil_hash_set(om_element->namespaces, prefix, AXIS2_HASH_KEY_STRING, ns); - } - else - { - axis2_char_t *key = NULL; - key = AXIS2_MALLOC(env->allocator, sizeof(char) * 10); - memset(key, 0, sizeof(char) * 10); - key[0] = '\0'; - axutil_hash_set(om_element->namespaces, key, AXIS2_HASH_KEY_STRING, ns); - } - axiom_namespace_increment_ref(ns, env); - - return AXIS2_SUCCESS; -} - -AXIS2_EXTERN axis2_status_t AXIS2_CALL axiom_element_set_namespace_assume_param_ownership( axiom_element_t * om_element, const axutil_env_t * env, |