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 2007/07/13 10:16:26 UTC
svn commit: r555905 - in /webservices/axis2/trunk/c/axiom/src/om: om_node.c
om_stax_builder.c
Author: nandika
Date: Fri Jul 13 01:16:25 2007
New Revision: 555905
URL: http://svn.apache.org/viewvc?view=rev&rev=555905
Log:
axiom_stax_builder_free_self function modified
Modified:
webservices/axis2/trunk/c/axiom/src/om/om_node.c
webservices/axis2/trunk/c/axiom/src/om/om_stax_builder.c
Modified: webservices/axis2/trunk/c/axiom/src/om/om_node.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/axiom/src/om/om_node.c?view=diff&rev=555905&r1=555904&r2=555905
==============================================================================
--- webservices/axis2/trunk/c/axiom/src/om/om_node.c (original)
+++ webservices/axis2/trunk/c/axiom/src/om/om_node.c Fri Jul 13 01:16:25 2007
@@ -947,7 +947,6 @@
{
AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
AXIS2_PARAM_CHECK(env->error, om_node, AXIS2_FAILURE);
- AXIS2_PARAM_CHECK(env->error, om_doc, AXIS2_FAILURE);
om_node->om_doc = om_doc;
return AXIS2_SUCCESS;
}
@@ -963,7 +962,6 @@
axiom_stax_builder_t* builder)
{
AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- AXIS2_PARAM_CHECK(env->error, builder, AXIS2_FAILURE);
AXIS2_PARAM_CHECK(env->error, om_node, AXIS2_FAILURE);
om_node->builder = builder;
return AXIS2_SUCCESS;
Modified: webservices/axis2/trunk/c/axiom/src/om/om_stax_builder.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/axiom/src/om/om_stax_builder.c?view=diff&rev=555905&r1=555904&r2=555905
==============================================================================
--- webservices/axis2/trunk/c/axiom/src/om/om_stax_builder.c (original)
+++ webservices/axis2/trunk/c/axiom/src/om/om_stax_builder.c Fri Jul 13 01:16:25 2007
@@ -827,11 +827,59 @@
axiom_stax_builder_free_self(axiom_stax_builder_t *om_builder,
const axutil_env_t *env)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- if (!om_builder)
- {
- return;
- }
+
+ int status = AXIS2_SUCCESS;
+ axiom_node_t *temp_node = NULL;
+ axiom_node_t *nodes[256];
+ axiom_node_t *om_node = NULL;
+ int count = 0;
+
+ om_node = om_builder->root_node;
+
+ nodes[count++] = om_node;
+
+ if(om_node){
+ do {
+
+ axiom_node_set_builder(om_node, env, NULL);
+ axiom_node_set_document(om_node, env, NULL);
+
+ temp_node = axiom_node_get_first_child(om_node, env);
+ /* serialize children of this node */
+ if (temp_node)
+ {
+ om_node = temp_node;
+ nodes[count++] = om_node;
+ }
+ else
+ {
+ temp_node = axiom_node_get_next_sibling(om_node, env);
+ if (temp_node)
+ {
+ om_node = temp_node;
+ nodes[count -1] = om_node;
+ }
+ else
+ {
+ while (count > 1 && !temp_node)
+ {
+ count--;
+ om_node = nodes[count -1];
+ temp_node = axiom_node_get_next_sibling(om_node, env);
+ }
+ if (temp_node && count > 1)
+ {
+ om_node = temp_node;
+ nodes[count -1] = om_node;
+ }
+ else
+ {
+ count--;
+ }
+ }
+ }
+ } while(count > 0);
+ }
if (om_builder->declared_namespaces)
{
axutil_hash_free(om_builder->declared_namespaces, env);
@@ -848,9 +896,7 @@
axiom_document_free_self(om_builder->document, env);
om_builder->document = NULL;
}
-
AXIS2_FREE(env->allocator, om_builder);
-
return;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org