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 sa...@apache.org on 2005/10/11 11:52:08 UTC
svn commit: r312851 - in /webservices/axis2/trunk/c: include/
modules/common/src/ modules/xml/om/src/
Author: samisa
Date: Tue Oct 11 02:51:49 2005
New Revision: 312851
URL: http://svn.apache.org/viewcvs?rev=312851&view=rev
Log:
Used the new environment stuff in OM text
Modified:
webservices/axis2/trunk/c/include/axis2_allocator.h
webservices/axis2/trunk/c/include/axis2_defines.h
webservices/axis2/trunk/c/include/axis2_errno.h
webservices/axis2/trunk/c/include/axis2_error.h
webservices/axis2/trunk/c/include/axis2_log.h
webservices/axis2/trunk/c/include/axis2_om_node.h
webservices/axis2/trunk/c/include/axis2_om_text.h
webservices/axis2/trunk/c/modules/common/src/axis2_allocator.c
webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_text.c
Modified: webservices/axis2/trunk/c/include/axis2_allocator.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_allocator.h?rev=312851&r1=312850&r2=312851&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_allocator.h (original)
+++ webservices/axis2/trunk/c/include/axis2_allocator.h Tue Oct 11 02:51:49 2005
@@ -17,7 +17,6 @@
#ifndef AXIS2_MEMORY_ALLOCATOR_H
#define AXIS2_MEMORY_ALLOCATOR_H
-#include <stdlib.h>
#include <axis2_defines.h>
typedef struct
@@ -25,6 +24,7 @@
void *(*malloc)(size_t size);
void *(*realloc)(void *ptr,size_t size);
void (*free)(void *ptr);
+ void* (*strdup)(const void *ptr);
}axis2_allocator_t;
/**
@@ -40,5 +40,6 @@
#define axis2_malloc(allocator, size) ((allocator)->malloc(size))
#define axis2_realloc(allocator, ptr, size) ((allocator)->realloc(ptr, size))
#define axis2_free(allocator, ptr) ((allocator)->free(ptr))
+#define axis2_strdup(allocator, ptr) ((allocator)->strdup(ptr))
#endif /* AXIS2_MEMORY_ALLOCATOR_H */
Modified: webservices/axis2/trunk/c/include/axis2_defines.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_defines.h?rev=312851&r1=312850&r2=312851&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_defines.h (original)
+++ webservices/axis2/trunk/c/include/axis2_defines.h Tue Oct 11 02:51:49 2005
@@ -2,10 +2,14 @@
#define AXIS2_H
/**
- * @file axis2.h
- * @brief Axis2c specific global declarations
+ * @file axis2_defines.h
+ * @brief Useful definitions, which may have platform concerns
*/
+
+#include <stddef.h>
typedef char axis2_char;
+#define AXIS2_TRUE 1
+#define AXIS2_FALSE 0
#endif /* AXIS2_H */
Modified: webservices/axis2/trunk/c/include/axis2_errno.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_errno.h?rev=312851&r1=312850&r2=312851&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_errno.h (original)
+++ webservices/axis2/trunk/c/include/axis2_errno.h Tue Oct 11 02:51:49 2005
@@ -6,14 +6,14 @@
* @brief Axis2c Error Codes
*/
-#include <apr_errno.h>
+//#include <apr_errno.h>
/**
* AXIS2_START_ERROR is where the AXIS2 specific error values start.
* In apr_errno.h APR_OS_START_USERERR is defined as start of the
* error codes for applications using apr.
*/
-#define AXIS2_START_ERROR APR_OS_START_USERERR
+#define AXIS2_START_ERROR 20000
#define AXIS2_ERROR_SPACE 50000
@@ -54,7 +54,7 @@
*/
#define AXIS2_SUCCESS (AXIS2_START_STATUS + 1)
-#define AXIS2_FAILURE (APR_OS_START_STATUS + 2)
+#define AXIS2_FAILURE (AXIS2_START_STATUS + 2)
/** @} */
Modified: webservices/axis2/trunk/c/include/axis2_error.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_error.h?rev=312851&r1=312850&r2=312851&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_error.h (original)
+++ webservices/axis2/trunk/c/include/axis2_error.h Tue Oct 11 02:51:49 2005
@@ -42,7 +42,8 @@
typedef enum axis2_error_codes {
AXIS2_ERROR_NONE = 0,
- AXIS2_ERROR_NO_MEMORY
+ AXIS2_ERROR_NO_MEMORY,
+ AXIS2_ERROR_INVALID_NULL_PARAMETER
} axis2_error_codes_t;
Modified: webservices/axis2/trunk/c/include/axis2_log.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_log.h?rev=312851&r1=312850&r2=312851&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_log.h (original)
+++ webservices/axis2/trunk/c/include/axis2_log.h Tue Oct 11 02:51:49 2005
@@ -31,17 +31,20 @@
struct axis2_log;
struct axis2_log_ops;
-typedef struct axis2_log_ops {
- int (*write)(const void *buffer, size_t count);
+typedef struct axis2_log_ops
+{
+ int (*write) (const void *buffer, size_t count);
} axis2_log_ops_t;
-typedef struct axis2_log {
+typedef struct axis2_log
+{
struct axis2_log_ops *ops;
axis2_log_levels_t level;
- int enabled; /*boolean*/
+ int enabled; /*boolean */
} axis2_log_t;
-axis2_log_t *axis2_log_create(axis2_allocator_t* allocator, axis2_log_ops_t* operations);
+axis2_log_t *axis2_log_create (axis2_allocator_t * allocator,
+ axis2_log_ops_t * operations);
#define axis2_log_write(log, buffer, count) ((log)->ops->write(buffer, count))
Modified: webservices/axis2/trunk/c/include/axis2_om_node.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_om_node.h?rev=312851&r1=312850&r2=312851&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_om_node.h (original)
+++ webservices/axis2/trunk/c/include/axis2_om_node.h Tue Oct 11 02:51:49 2005
@@ -26,9 +26,9 @@
#include <axis2.h>
#include <axis2_errno.h>
-#include <apr.h>
-#include <apr_pools.h>
-#include <xmlpullparser.h>
+//#include <apr.h>
+//#include <apr_pools.h>
+
typedef struct axis2_stax_om_builder_s axis2_stax_om_builder_t;
typedef struct axis2_om_output_s axis2_om_output_t;
Modified: webservices/axis2/trunk/c/include/axis2_om_text.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_om_text.h?rev=312851&r1=312850&r2=312851&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_om_text.h (original)
+++ webservices/axis2/trunk/c/include/axis2_om_text.h Tue Oct 11 02:51:49 2005
@@ -19,59 +19,80 @@
/**
* @file axis2_om_attribute.h
- * @brief represents xml text element
+ * @brief Represents XML text element
*/
+#include <axis2_environment.h>
+#include <axis2_om_node.h>
-#include <axis2_om_attribute.h>
-
-typedef struct axis2_om_text_t
+struct axis2_om_text;
+struct axis2_om_text_ops;
+
+/** \struct axis2_om_text_ops_t
+ \brief OM Text operations struct
+
+ Encapsulator struct for operations of axis2_om_text_t
+*/
+typedef struct axis2_om_text_ops
{
- char *value;
- // The following fields are for MTOM
- axis2_om_namespace_t *ns;
-
+ /**
+ * Free an axis2_om_text_t structure
+ * @return Status code
+ */
+ int (*free)(axis2_environment_t *environment, struct axis2_om_text *om_text);
+
+ /**
+ * Serialize operation
+ * @param om_output OM output handler to be used in serializing
+ * @return Status code
+ */
+ int (*serialize)(axis2_environment_t *environment, const struct axis2_om_text *om_text, axis2_om_output_t* om_output);
+} axis2_om_text_ops_t;
+
+/** \struct axis2_om_text_t
+ \brief OM Text struct
+
+ Handles the XML text in OM
+*/
+typedef struct axis2_om_text
+{
+ /**
+ * OM text related operations
+ */
+ axis2_om_text_ops_t* ops;
+
+ /**
+ * Text value
+ */
+ char *value;
+
+ /**
+ * The following fields are for MTOM
+ */
+ //axis2_om_namespace_t *ns;
char *mime_type;
int optimize;
char *localname;
int is_binary;
char *content_id;
- axis2_om_attribute_t *attribute;
-}axis2_om_text_t;
-
-
-/**
- * Create a text struct and stores in in a node struct and returns a pointer
- * to the axis2_om_text_t struct
- * the data_element field of node struct points to the acctual axis2_text_t struct
- * The element type of axis2_om_node_t struct will be of type AXIS2_OM_TEXT
- * @param parent This can be null The parent element should be of type AXIS2_OM_ELEMENT
- * @return pointer to a axis2_om_text_t struct
- */
-
-axis2_om_text_t *axis2_om_text_create(axis2_om_node_t *parent,const char *value
- ,axis2_om_node_t *node);
+ //axis2_om_attribute_t *attribute;
+} axis2_om_text_t;
/**
- * access the value of the text struct
- * @param textnode node
- * @return char * to the value
+ * Create a text struct and stores it in a node struct and returns a pointer
+ * to the newly created text struct
+ * @param parent Parent of the new node. If null newly created node becomes a root node
+ * The parent element must be of type AXIS2_OM_ELEMENT
+ * @param value Text value
+ * @param node Out parameter to store the newly created node
+ * @return pointer to newly created text struct
*/
-char* axis2_om_text_get_text(axis2_om_text_t *textnode);
-
-/**
- * free an axis2_om_text_t structure
- */
-
-void axis2_om_text_free(axis2_om_text_t *text);
-/**
- * axis2
- *
- */
-
-int axis2_om_text_serialize(axis2_om_text_t *om_text, axis2_om_output_t* om_output);
+axis2_om_text_t *axis2_om_text_create(axis2_environment_t *environment, axis2_om_node_t *parent,const char *value
+ ,axis2_om_node_t **node);
+#define axis2_om_text_serialize(environment, om_text, om_output) ((om_text)->ops->serialize(environment, om_text, om_output))
+#define axis2_om_text_free(environment, om_text) ((om_text)->ops->free(environment, om_text))
-#endif // AXIS2_OM_TEXT_H
+#endif /* AXIS2_OM_TEXT_H */
Modified: webservices/axis2/trunk/c/modules/common/src/axis2_allocator.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/common/src/axis2_allocator.c?rev=312851&r1=312850&r2=312851&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/common/src/axis2_allocator.c (original)
+++ webservices/axis2/trunk/c/modules/common/src/axis2_allocator.c Tue Oct 11 02:51:49 2005
@@ -15,6 +15,16 @@
*/
#include <axis2_allocator.h>
+#include <stdlib.h>
+#include <string.h>
+
+void* axis2_allocator_strdup(void* ptr)
+{
+ if (ptr)
+ return strdup(ptr);
+ else
+ return NULL;
+}
axis2_allocator_t *axis2_allocator_init(
axis2_allocator_t *allocator)
@@ -30,7 +40,7 @@
allocator->malloc = malloc;
allocator->realloc = realloc;
allocator->free = free;
-
+ allocator->strdup = axis2_allocator_strdup;
return allocator;
}
}
Modified: webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_text.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_text.c?rev=312851&r1=312850&r2=312851&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_text.c (original)
+++ webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_text.c Tue Oct 11 02:51:49 2005
@@ -15,64 +15,102 @@
*/
#include <axis2_om_text.h>
-#include <string.h>
+/*#include <string.h>
#include <axis2_om_node.h>
#include <axis2_errno.h>
+*/
-axis2_om_text_t *axis2_om_text_create(axis2_om_node_t *parent,const char *value
- ,axis2_om_node_t *text_node)
+/* operations */
+int axis2_om_text_ops_free(axis2_environment_t *environment, axis2_om_text_t *om_text);
+int axis2_om_text_ops_serialize(axis2_environment_t *environment, const axis2_om_text_t *om_text, axis2_om_output_t* om_output);
+
+axis2_om_text_t *axis2_om_text_create(axis2_environment_t *environment, axis2_om_node_t *parent,const char *value
+ ,axis2_om_node_t **node)
{
- axis2_om_text_t *text;
- axis2_om_node_t *node = axis2_om_node_create();
+ axis2_om_text_t *om_text = NULL;
+
if (!node)
{
- fprintf(stderr,"%d Error",AXIS2_ERROR_OM_MEMORY_ALLOCATION);
+ environment->error->errorno = AXIS2_ERROR_INVALID_NULL_PARAMETER;
+ return NULL;
+ }
+
+ *node = axis2_om_node_create();
+
+ if (!(*node))
+ {
+ environment->error->errorno = AXIS2_ERROR_NO_MEMORY;
return NULL;
}
- text = (axis2_om_text_t *) malloc(sizeof(axis2_om_text_t));
- if (!text)
+
+ om_text = (axis2_om_text_t*) axis2_malloc(environment->allocator, sizeof(axis2_om_text_t));
+
+ if (!om_text)
{
- fprintf(stderr,"%d Error",AXIS2_ERROR_OM_MEMORY_ALLOCATION);
+ axis2_free(environment->allocator, *node);
+ environment->error->errorno = AXIS2_ERROR_NO_MEMORY;
return NULL;
}
- text->value = strdup(value);
- text->attribute = NULL;
- text->content_id = NULL;
- text->mime_type = NULL;
- node->data_element = text;
- node->element_type = AXIS2_OM_TEXT;
+
+ om_text->value = NULL;
+ if (value)
+ om_text->value = (char*) axis2_strdup(environment->allocator, value);
+
+ //om_text->attribute = NULL;
+ om_text->content_id = NULL;
+ om_text->mime_type = NULL;
+
+ (*node)->data_element = om_text;
+ (*node)->element_type = AXIS2_OM_TEXT;
+ (*node)->done = AXIS2_FALSE;
+
if(parent && parent->element_type == AXIS2_OM_ELEMENT)
{
- node->done = TRUE;
- node->parent = parent;
- axis2_om_node_add_child(parent,node);
+ (*node)->parent = parent;
+ axis2_om_node_add_child(parent,*node);
}
- text_node = node;
- return text;
-}
+
+ /* operations */
+ om_text->ops = NULL;
+ om_text->ops = (axis2_om_text_ops_t*) axis2_malloc(environment->allocator, sizeof(axis2_om_text_ops_t));
+
+ if (!om_text->ops)
+ {
+ axis2_free(environment->allocator, *node);
+ axis2_free(environment->allocator, om_text);
+ environment->error->errorno = AXIS2_ERROR_NO_MEMORY;
+ return NULL;
+ }
+
+ om_text->ops->free = axis2_om_text_ops_free;
+ om_text->ops->serialize = axis2_om_text_ops_serialize;
+ return om_text;
+}
-char *axis2_om_text_get_text(axis2_om_text_t * text)
+int axis2_om_text_ops_free(axis2_environment_t *environment, axis2_om_text_t *om_text)
{
- if (!text)
+ if (!om_text)
{
- return NULL;
- }
- if (text->value)
- {
- return text->value;
- }
- else
- {
- //MTOM handling logic should go hear
-
+ environment->error->errorno = AXIS2_ERROR_INVALID_NULL_PARAMETER;
+ return AXIS2_FAILURE;
}
- return NULL;
+
+ if (om_text->value)
+ axis2_free(environment->allocator, om_text->value);
+
+ if (om_text->ops)
+ axis2_free(environment->allocator, om_text->ops);
+
+ if (om_text)
+ axis2_free(environment->allocator, om_text);
+
+ return AXIS2_SUCCESS;
}
-int axis2_om_text_serialize(axis2_om_text_t *om_text, axis2_om_output_t* om_output)
+int axis2_om_text_ops_serialize(axis2_environment_t *environment, const axis2_om_text_t *om_text, axis2_om_output_t* om_output)
{
int status = AXIS2_SUCCESS;
// TODO : handle null pointer errors
@@ -80,4 +118,4 @@
status = axis2_om_output_write (om_output, AXIS2_OM_TEXT, 1,
om_text->value);
return status;
-}
\ No newline at end of file
+}