You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by sa...@apache.org on 2005/11/16 05:36:45 UTC

svn commit: r344883 - /webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_stax_builder.c

Author: samisa
Date: Tue Nov 15 20:36:39 2005
New Revision: 344883

URL: http://svn.apache.org/viewcvs?rev=344883&view=rev
Log:
changed using wrapper functions

Modified:
    webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_stax_builder.c

Modified: webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_stax_builder.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_stax_builder.c?rev=344883&r1=344882&r2=344883&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_stax_builder.c (original)
+++ webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_stax_builder.c Tue Nov 15 20:36:39 2005
@@ -18,12 +18,9 @@
 #include <axis2_om_element.h>
 #include <axis2_om_text.h>
 #include <axis2_string.h>
-#include <guththila_xml_pull_parser.h>
+#include <axis2_pull_parser.h>
 
 
-guththila_environment_t *om_stax_builder_guththila_environment = NULL;
-guththila_allocator_t *om_stax_builder_guththila_allocator = NULL;
-axis2_bool_t parser_created_locally = AXIS2_FALSE;
 
 const axis2_char_t XMLNS_URI[] = "http://www.w3.org/XML/1998/namespace";
 const axis2_char_t XMLNS_PREFIX[] = "xml";
@@ -66,7 +63,7 @@
 {
     axis2_om_stax_builder_t om_stax_builder;
     /** pull parser instance used by the builder */
-    void *parser;
+    axis2_pull_parser_t *parser;
     /** last node the builder found */
     axis2_om_node_t *lastnode;
     /** document associated with the builder */
@@ -77,6 +74,9 @@
     axis2_bool_t parser_accessed;
     /** caching enabled? */
     axis2_bool_t cache;
+    
+    
+    
 
 }axis2_om_stax_builder_impl_t;
 
@@ -86,7 +86,7 @@
 
 /******************************************************************************/													
 axis2_om_stax_builder_t *AXIS2_CALL 
-axis2_om_stax_builder_create (axis2_env_t **env, void *parser, void* parser_env)
+axis2_om_stax_builder_create (axis2_env_t **env,void* stream)
 {
     axis2_om_stax_builder_impl_t *builder = NULL;
     AXIS2_ENV_CHECK(env, NULL);
@@ -96,45 +96,23 @@
 
     if (!builder)
         AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
-
-    builder->parser = NULL;
-    if (parser)
-	{
-        builder->parser = parser;
-		if (parser_env)
-			om_stax_builder_guththila_environment =  (guththila_environment_t*) parser_env;
-	}
-    else
-    {
-        /* create the default Guththila pull parser */
-        guththila_reader_t *reader = NULL;
-		om_stax_builder_guththila_allocator = guththila_allocator_init(NULL);
-  		om_stax_builder_guththila_environment = 
-  		        guththila_environment_create(om_stax_builder_guththila_allocator,
-  		                                    NULL, NULL, NULL, NULL);
-        reader = guththila_reader_create (om_stax_builder_guththila_environment, stdin);
-		
-        if (!reader){
-            AXIS2_FREE((*env)->allocator, builder);
-            AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
-        }
-        builder->parser = guththila_xml_pull_parser_create (
-                            om_stax_builder_guththila_environment, reader);
-
-        if (!builder->parser)
-        {
-            AXIS2_FREE((*env)->allocator, builder);
-            AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
-        }
-		parser_created_locally = AXIS2_TRUE;
-    }
-
+    
+    
+   
     builder->cache = AXIS2_TRUE;
     builder->parser_accessed = AXIS2_FALSE;
     builder->done = AXIS2_FALSE;
     builder->lastnode = NULL;
     builder->document = NULL;
 
+    builder->parser = axis2_pull_parser_create(env,stream);
+    if(!builder->parser)
+    {
+        AXIS2_FREE((*env)->allocator, builder);
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+    }
+    
+    
     /* operations */
     builder->om_stax_builder.ops = NULL;
     builder->om_stax_builder.ops = (axis2_om_stax_builder_ops_t *) AXIS2_MALLOC(
@@ -142,7 +120,7 @@
 
     if (!builder->om_stax_builder.ops)
     {
-        guththila_xml_pull_parser_free (om_stax_builder_guththila_environment, builder->parser);
+        AXIS2_PULL_PARSER_FREE (builder->parser, env);
         AXIS2_FREE ((*env)->allocator, builder);
         AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
     }
@@ -178,18 +156,17 @@
     builder = AXIS2_INTF_TO_IMPL(om_builder);
     
 
-    attribute_count = guththila_xml_pull_parser_get_attribute_count (
-                                om_stax_builder_guththila_environment,
-                                builder->parser);
+    attribute_count = AXIS2_PULL_PARSER_GET_ATTRIBUTE_COUNT(
+                               builder->parser,env);
     
     for (i=1; i <= attribute_count ; i++)
     {
         
-        uri =  guththila_xml_pull_parser_get_attribute_namespace_by_number
-              (om_stax_builder_guththila_environment, builder->parser, i);
+        uri =  AXIS2_PULL_PARSER_GET_ATTRIBUTE_NAMESPACE_BY_NUMBER(
+                       builder->parser, env, i);
               
-        prefix = guththila_xml_pull_parser_get_attribute_prefix_by_number
-                 (om_stax_builder_guththila_environment, builder->parser, i);
+        prefix = AXIS2_PULL_PARSER_GET_ATTRIBUTE_PREFIX_BY_NUMBER(
+                        builder->parser, env, i);
 
         if (uri)
         {
@@ -224,10 +201,10 @@
         }
         attribute = axis2_om_attribute_create (
                             env,
-                            guththila_xml_pull_parser_get_attribute_name_by_number
-                            (om_stax_builder_guththila_environment, builder->parser, i),
-                            guththila_xml_pull_parser_get_attribute_value_by_number
-                            (om_stax_builder_guththila_environment, builder->parser, i), ns);
+                            AXIS2_PULL_PARSER_GET_ATTRIBUTE_NAME_BY_NUMBER(
+                                 builder->parser, env, i),
+                            AXIS2_PULL_PARSER_GET_ATTRIBUTE_VALUE_BY_NUMBER(
+                                 builder->parser, env, i), ns);
                             
         status = AXIS2_OM_ELEMENT_ADD_ATTRIBUTE (
                         (axis2_om_element_t*)AXIS2_OM_NODE_GET_DATA_ELEMENT(element_node,env),
@@ -258,8 +235,7 @@
 
     
     
-    temp_value = guththila_xml_pull_parser_get_value (
-                    om_stax_builder_guththila_environment, builder->parser);
+    temp_value = AXIS2_PULL_PARSER_GET_VALUE (builder->parser, env);
 
     if (!temp_value)
     {
@@ -268,7 +244,7 @@
     else
     {
         value = (axis2_char_t*)AXIS2_STRDUP ( temp_value,env);
-        guththila_free (om_stax_builder_guththila_environment->allocator, temp_value);
+        AXIS2_FREE((*env)->allocator, temp_value);
     }
 
     if (AXIS2_OM_NODE_GET_BUILD_STATUS(builder->lastnode, env))
@@ -314,8 +290,8 @@
     builder->cache = AXIS2_FALSE;
     do
     {
-        while (guththila_xml_pull_parser_next (
-                om_stax_builder_guththila_environment, builder->parser) != GUTHTHILA_END_ELEMENT);
+        while (AXIS2_PULL_PARSER_NEXT (builder->parser, env)
+                != AXIS2_PULL_PARSER_END_ELEMENT);
     }
     while (!(AXIS2_OM_NODE_GET_BUILD_STATUS(element, env)));
 
@@ -350,24 +326,23 @@
     axis2_om_namespace_t *om_ns = NULL;
     axis2_char_t *temp_prefix = NULL;
     axis2_om_stax_builder_impl_t *builder = NULL;
-    
+    int i=0;
     AXIS2_FUNC_PARAM_CHECK(om_stax_builder, env, AXIS2_FAILURE);
     
     builder = AXIS2_INTF_TO_IMPL(om_stax_builder);
     
-    namespace_count = guththila_xml_pull_parser_get_namespace_count (
-                      om_stax_builder_guththila_environment, builder->parser);
+    namespace_count = AXIS2_PULL_PARSER_GET_NAMESPACE_COUNT (builder->parser, env);
 
     
     
-    for (; namespace_count > 0; namespace_count--)
+    for (i = 1; i <= namespace_count; i++)
     {
         om_ns = axis2_om_namespace_create (
                 env,
-                guththila_xml_pull_parser_get_namespace_uri_by_number
-                (om_stax_builder_guththila_environment, builder->parser, namespace_count),
-                guththila_xml_pull_parser_get_namespace_prefix_by_number
-                (om_stax_builder_guththila_environment, builder->parser, namespace_count));
+                AXIS2_PULL_PARSER_GET_NAMESPACE_URI_BY_NUMBER(
+                builder->parser, env , i),
+                AXIS2_PULL_PARSER_GET_NAMESPACE_PREFIX_BY_NUMBER(
+                 builder->parser, env, i));
                 
         if (om_ns)
         {
@@ -382,8 +357,7 @@
         }
     }
     /* set own namespace */
-    temp_prefix = guththila_xml_pull_parser_get_prefix (
-                  om_stax_builder_guththila_environment, builder->parser);
+    temp_prefix = AXIS2_PULL_PARSER_GET_PREFIX ( builder->parser, env);
 
     if (temp_prefix)
     {
@@ -419,8 +393,7 @@
     
     builder = AXIS2_INTF_TO_IMPL(om_stax_builder);
     
-    temp_localname  = guththila_xml_pull_parser_get_name (
-                        om_stax_builder_guththila_environment, builder->parser);
+    temp_localname  = AXIS2_PULL_PARSER_GET_NAME (builder->parser, env);
 
     if (!temp_localname)
     {
@@ -551,7 +524,7 @@
         if (builder->done)
             AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_BUILDER_DONE_CANNOT_PULL, NULL);
 
-        token = guththila_xml_pull_parser_next (om_stax_builder_guththila_environment, builder->parser);
+        token = AXIS2_PULL_PARSER_NEXT (builder->parser, env);
 
         if (!(builder->cache))
         {
@@ -561,30 +534,48 @@
 
         switch (token)
         {
-        case GUTHTHILA_START_DOCUMENT:
-            /*axis2_om_stax_builder_process_start_document(builder); */
+        case AXIS2_PULL_PARSER_START_DOCUMENT:
             /*Do nothing */
             break;
-        case GUTHTHILA_START_ELEMENT:
-           
+        
+        case AXIS2_PULL_PARSER_START_ELEMENT:
            node = axis2_om_stax_builder_create_om_element (
-                        om_stax_builder, env); 
+                         om_stax_builder, env); 
             break;
-        case GUTHTHILA_EMPTY_ELEMENT:
+        
+        case AXIS2_PULL_PARSER_EMPTY_ELEMENT:
             node = axis2_om_stax_builder_create_om_element (
-                        om_stax_builder, env); 
-        case GUTHTHILA_END_ELEMENT:
+                        om_stax_builder, env);
+        
+        case AXIS2_PULL_PARSER_END_ELEMENT:
             axis2_om_stax_builder_end_element (om_stax_builder, env);
             break;
-        case GUTHTHILA_SPACE:
+        
+        
+        case AXIS2_PULL_PARSER_SPACE:
             /* Do nothing */
             break;
-        case GUTHTHILA_CHARACTER:
+        
+        case AXIS2_PULL_PARSER_CHARACTER:
             node =
                 axis2_om_stax_builder_create_om_text (om_stax_builder, env);
             break;
-        case GUTHTHILA_COMMENT:
+                
+        case AXIS2_PULL_PARSER_ENTITY_REFERANCE:
+            break;
+        
+        case AXIS2_PULL_PARSER_COMMENT:
             break;
+        
+        case AXIS2_PULL_PARSER_PROCESSING_INSTRUCTION:
+            break;
+        
+        case AXIS2_PULL_PARSER_CDATA:
+            break;
+        
+        case AXIS2_PULL_PARSER_DOCUMENT_TYPE:
+            break;
+        
         default:
             break;
         }
@@ -600,13 +591,9 @@
                                       axis2_env_t **env)
 {
     AXIS2_FUNC_PARAM_CHECK(builder, env, AXIS2_FAILURE);
- 	if(AXIS2_INTF_TO_IMPL(builder)->parser &&
-		parser_created_locally)
+ 	if(AXIS2_INTF_TO_IMPL(builder)->parser)
     {
-		guththila_xml_pull_parser_free(om_stax_builder_guththila_environment,
-			                            AXIS2_INTF_TO_IMPL(builder)->parser);
-			                            
-        parser_created_locally = AXIS2_FALSE;
+		AXIS2_PULL_PARSER_FREE(AXIS2_INTF_TO_IMPL(builder)->parser, env);
     }   
 	if(builder->ops)
 		AXIS2_FREE ((*env)->allocator,builder->ops);