summaryrefslogtreecommitdiffstats
path: root/axiom
diff options
context:
space:
mode:
authorGravatar shankar2010-05-24 04:31:26 +0000
committerGravatar shankar2010-05-24 04:31:26 +0000
commitc41d927309c586ab215f8fa681243482ae9792e0 (patch)
treebcc811b78b8f9aadbe5969d1df895ccc20858266 /axiom
parenta0bca08c822c80039b3f3d543b09d41c45610607 (diff)
downloadaxis2c-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
Diffstat (limited to 'axiom')
-rw-r--r--axiom/include/axiom_element.h27
-rw-r--r--axiom/src/om/om_element.c101
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,