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 sh...@apache.org on 2010/02/02 13:48:17 UTC

svn commit: r905612 - /webservices/axis2/trunk/c/axiom/src/om/om_node.c

Author: shankar
Date: Tue Feb  2 12:48:16 2010
New Revision: 905612

URL: http://svn.apache.org/viewvc?rev=905612&view=rev
Log:
fixing the issue AXIS2C-1445

Modified:
    webservices/axis2/trunk/c/axiom/src/om/om_node.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?rev=905612&r1=905611&r2=905612&view=diff
==============================================================================
--- webservices/axis2/trunk/c/axiom/src/om/om_node.c (original)
+++ webservices/axis2/trunk/c/axiom/src/om/om_node.c Tue Feb  2 12:48:16 2010
@@ -16,6 +16,7 @@
  */
 
 #include "axiom_node_internal.h"
+#include "axiom_stax_builder_internal.h"
 #include <axiom_element.h>
 #include <axiom_text.h>
 #include <axiom_data_source.h>
@@ -268,8 +269,6 @@
 {
     axiom_node_t *parent = NULL;
 
-    AXIS2_ENV_CHECK(env, NULL);
-
     parent = om_node->parent;
     if(!parent)
     {
@@ -278,7 +277,7 @@
         return om_node;
     }
 
-    if(!(om_node->prev_sibling))
+    if(!om_node->prev_sibling)
     {
         parent->first_child = om_node->next_sibling;
     }
@@ -302,11 +301,24 @@
         }
     }
 
-    if((parent->last_child) && ((parent->last_child) == om_node))
+    if(parent->last_child && (parent->last_child == om_node))
     {
         parent->last_child = om_node->prev_sibling;
     }
 
+    if(om_node->builder && (axiom_stax_builder_get_lastnode(om_node->builder, env) == om_node))
+    {
+        axiom_node_t *lastnode = parent;
+
+        /* if previous sibling is available, set that as the builder's last node. Else set the
+         * parent as the last node */
+        if(om_node->prev_sibling)
+        {
+            lastnode = om_node->prev_sibling;
+        }
+        axiom_stax_builder_set_lastnode(om_node->builder, env, lastnode);
+    }
+
     om_node->parent = NULL;
     om_node->prev_sibling = NULL;
     om_node->next_sibling = NULL;
@@ -1302,7 +1314,6 @@
     const axutil_env_t * env,
     struct axiom_document * om_doc)
 {
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, om_node, AXIS2_FAILURE);
     om_node->om_doc = om_doc;
     return AXIS2_SUCCESS;
@@ -1312,18 +1323,15 @@
  internal function only sets the builder reference ,
  should not be used by user
  */
-
 AXIS2_EXTERN axis2_status_t AXIS2_CALL
 axiom_node_set_builder(
     axiom_node_t * om_node,
     const axutil_env_t * env,
     axiom_stax_builder_t * builder)
 {
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, om_node, AXIS2_FAILURE);
     om_node->builder = builder;
     return AXIS2_SUCCESS;
-
 }
 
 /**