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