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 da...@apache.org on 2005/10/24 04:16:29 UTC

svn commit: r327912 - in /webservices/axis2/trunk/c: include/ modules/core/description/src/ modules/core/engine/src/ modules/test/util/ modules/util/src/

Author: damitha
Date: Sun Oct 23 19:16:07 2005
New Revision: 327912

URL: http://svn.apache.org/viewcvs?rev=327912&view=rev
Log:
Fixed some bugs in string.h. Added file handling code to 
stream. added two files to handle file diffs

Added:
    webservices/axis2/trunk/c/include/axis2_file_diff.h
    webservices/axis2/trunk/c/modules/util/src/axis2_file_diff.c
Modified:
    webservices/axis2/trunk/c/include/axis2_core.h
    webservices/axis2/trunk/c/include/axis2_description_service.h
    webservices/axis2/trunk/c/include/axis2_description_servicegroup.h
    webservices/axis2/trunk/c/include/axis2_engine_config.h
    webservices/axis2/trunk/c/include/axis2_error.h
    webservices/axis2/trunk/c/include/axis2_stream.h
    webservices/axis2/trunk/c/include/axis2_string.h
    webservices/axis2/trunk/c/modules/core/description/src/axis2_description_operation.c
    webservices/axis2/trunk/c/modules/core/description/src/axis2_description_parameter.c
    webservices/axis2/trunk/c/modules/core/description/src/axis2_description_service.c
    webservices/axis2/trunk/c/modules/core/description/src/axis2_description_servicegroup.c
    webservices/axis2/trunk/c/modules/core/engine/src/axis2_engine_config.c
    webservices/axis2/trunk/c/modules/test/util/test_util.c
    webservices/axis2/trunk/c/modules/util/src/Makefile.am
    webservices/axis2/trunk/c/modules/util/src/Makefile.in
    webservices/axis2/trunk/c/modules/util/src/axis2_environment.c
    webservices/axis2/trunk/c/modules/util/src/axis2_stream.c
    webservices/axis2/trunk/c/modules/util/src/axis2_string.c

Modified: webservices/axis2/trunk/c/include/axis2_core.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_core.h?rev=327912&r1=327911&r2=327912&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_core.h (original)
+++ webservices/axis2/trunk/c/include/axis2_core.h Sun Oct 23 19:16:07 2005
@@ -121,7 +121,13 @@
 typedef struct axis2_engine_msg_receiver_s axis2_engine_msg_receiver_t;
 typedef struct axis2_engine_msg_receiver_ops_s axis2_engine_msg_receiver_ops_t;
 	
-
+/** @cond */
+struct axis2_engine_config_s;
+struct axis2_engine_config_ops_s;
+/** @endcond */
+typedef struct axis2_engine_config_s axis2_engine_config_t;
+typedef struct axis2_engine_config_ops_s axis2_engine_config_ops_t;
+	
 #ifdef __cplusplus
 }
 #endif

Modified: webservices/axis2/trunk/c/include/axis2_description_service.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_description_service.h?rev=327912&r1=327911&r2=327912&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_description_service.h (original)
+++ webservices/axis2/trunk/c/include/axis2_description_service.h Sun Oct 23 19:16:07 2005
@@ -87,60 +87,65 @@
 #define axis2_description_service_get_parent(env, service_desc) \
 		(axis2_description_service_get_ops(env, service_desc)->get_parent \
 		(env, service_desc));
+		
+#define axis2_description_service_get_name(env, service_desc) \
+		(axis2_description_service_get_ops(env, service_desc)->get_name(env \
+		,service_desc));
 
 /**************************** End of function macros **************************/
 /**************************** Function pointers *******************************/
 
 
-    typedef axis2_status_t (*axis2_description_service_free_t)
-        (axis2_environment_t * env,
-         axis2_description_service_t * service_desc);
-
-    typedef axis2_status_t (*axis2_description_service_add_param_t)
-        (axis2_environment_t * env,
-         axis2_description_service_t * service_desc,
-         axis2_description_param_t * param);
-
-    typedef axis2_description_param_t
-        *(*axis2_description_service_get_param_t) (axis2_environment_t * env,
-                                                   axis2_description_service_t
-                                                   * service_desc,
-                                                   const axis2_char_t * name);
-
-    typedef axis2_hash_t *(*axis2_description_service_get_params_t)
-        (axis2_environment_t * env,
-         axis2_description_service_t * service_desc);
-
-    typedef axis2_status_t (*axis2_description_service_add_operation_t)
-        (axis2_environment_t * env,
-         axis2_description_service_t * service_desc,
-         axis2_description_operation_t * operation_desc);
-
-    typedef axis2_description_operation_t
-        *(*axis2_description_service_get_operation_with_qname_t)
-        (axis2_environment_t * env,
-         axis2_description_service_t * service_desc,
-         axis2_qname_t * operation_name);
-
-    typedef axis2_description_operation_t
-        * (*axis2_description_service_get_operation_with_name_t)
-        (axis2_environment_t * env,
-         axis2_description_service_t * service_desc,
-         const axis2_char_t * operation_name);
-
-    typedef axis2_hash_t *(*axis2_description_service_get_operations_t)
-        (axis2_environment_t * env,
-         axis2_description_service_t * service_desc);
-
-    typedef axis2_status_t (*axis2_description_service_set_parent_t)
-        (axis2_environment_t * env,
-         axis2_description_service_t * service_desc,
-         axis2_description_servicegroup_t * servicegroup_desc);
-
-    typedef axis2_description_servicegroup_t
-        * (*axis2_description_service_get_parent_t)
-        (axis2_environment_t * env,
-         axis2_description_service_t * service_desc);
+typedef axis2_status_t (*axis2_description_service_free_t)
+		(axis2_environment_t * env,
+	 	axis2_description_service_t * service_desc);
+
+typedef axis2_status_t (*axis2_description_service_add_param_t)
+		(axis2_environment_t * env,
+	 	axis2_description_service_t * service_desc,
+	 	axis2_description_param_t * param);
+
+typedef axis2_description_param_t
+		*(*axis2_description_service_get_param_t) (axis2_environment_t * env,
+		axis2_description_service_t *service_desc,const axis2_char_t *name);
+
+typedef axis2_hash_t *(*axis2_description_service_get_params_t)
+		(axis2_environment_t * env,
+	 	axis2_description_service_t * service_desc);
+
+typedef axis2_status_t (*axis2_description_service_add_operation_t)
+		(axis2_environment_t * env,
+	 	axis2_description_service_t * service_desc,
+	 	axis2_description_operation_t * operation_desc);
+
+typedef axis2_description_operation_t
+		*(*axis2_description_service_get_operation_with_qname_t)
+		(axis2_environment_t * env,
+	 	axis2_description_service_t * service_desc,
+	 	axis2_qname_t * operation_name);
+
+typedef axis2_description_operation_t
+		* (*axis2_description_service_get_operation_with_name_t)
+		(axis2_environment_t * env,
+	 	axis2_description_service_t * service_desc,
+	 	const axis2_char_t * operation_name);
+
+typedef axis2_hash_t *(*axis2_description_service_get_operations_t)
+		(axis2_environment_t * env,
+	 	axis2_description_service_t * service_desc);
+
+typedef axis2_status_t (*axis2_description_service_set_parent_t)
+		(axis2_environment_t * env,
+	 	axis2_description_service_t * service_desc,
+	 	axis2_description_servicegroup_t * servicegroup_desc);
+
+typedef axis2_description_servicegroup_t
+		* (*axis2_description_service_get_parent_t)
+		(axis2_environment_t * env,
+	 	axis2_description_service_t * service_desc);
+		 
+typedef axis2_qname_t *(*axis2_description_service_get_name_t)
+		(axis2_environment_t *env, axis2_description_service_t *service_desc);
 
 /************************ End function pointers *******************************/
 
@@ -148,46 +153,47 @@
   * @brief operations for the axis2_description_service_t
   * This contain all the operations for axis2_description_service struct
   */
-    struct axis2_description_service_ops_s
-    {
-        axis2_description_service_free_t free;
+struct axis2_description_service_ops_s
+{
+	axis2_description_service_free_t free;
 
-        axis2_description_service_add_operation_t add_operation;
+	axis2_description_service_add_operation_t add_operation;
 
-        axis2_description_service_add_param_t add_param;
+	axis2_description_service_add_param_t add_param;
 
-        axis2_description_service_get_param_t get_param;
+	axis2_description_service_get_param_t get_param;
 
-        axis2_description_service_get_params_t get_params;
+	axis2_description_service_get_params_t get_params;
 
-          axis2_description_service_get_operation_with_qname_t
-            get_operation_with_qname;
+	  axis2_description_service_get_operation_with_qname_t
+		get_operation_with_qname;
 
-        axis2_description_service_get_operation_with_name_t
-            get_operation_with_name;
+	axis2_description_service_get_operation_with_name_t
+		get_operation_with_name;
 
-        axis2_description_service_get_operations_t get_operations;
+	axis2_description_service_get_operations_t get_operations;
 
-        axis2_description_service_set_parent_t set_parent;
+	axis2_description_service_set_parent_t set_parent;
 
-        axis2_description_service_get_parent_t get_parent;
+	axis2_description_service_get_parent_t get_parent;
+	
+	axis2_description_service_get_name_t get_name;
 
-    };
+};
 
 /** To get the operation struct for axis_description_service_t call this
   * function
   * @return operation struct for service
   */
-    axis2_description_service_ops_t *axis2_description_service_get_ops
-        (axis2_environment_t * env,
-         axis2_description_service_t * service_desc);
+axis2_description_service_ops_t *axis2_description_service_get_ops
+        (axis2_environment_t *env, axis2_description_service_t *service_desc);
 
 /** Create a service with qualified name
   * @param qualified name
   * @return service struct
   */
-    axis2_description_service_t *axis2_description_service_create_with_qname
-        (axis2_environment_t * env, axis2_qname_t * qname);
+axis2_description_service_t *axis2_description_service_create_with_qname
+        (axis2_environment_t *env, axis2_qname_t *qname);
 
 /** @} */
 #ifdef __cplusplus

Modified: webservices/axis2/trunk/c/include/axis2_description_servicegroup.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_description_servicegroup.h?rev=327912&r1=327911&r2=327912&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_description_servicegroup.h (original)
+++ webservices/axis2/trunk/c/include/axis2_description_servicegroup.h Sun Oct 23 19:16:07 2005
@@ -46,36 +46,88 @@
 
 /**************************** Start of function macros ************************/
 
+#define axis2_description_servicegroup_free(env, servicegroup_desc) \
+		(axis2_description_servicegroup_get_ops(env, \
+		servicegroup_desc)->free (env, servicegroup_desc));
+	
+#define axis2_description_servicegroup_set_name(env, servicegroup_desc \
+		, servicegroup_name) (axis2_description_servicegroup_get_ops(env, \
+		servicegroup_desc)->set_name (env, servicegroup_desc, servicegroup_name));
+		
+#define axis2_description_servicegroup_get_name(env, servicegroup_desc) \
+		(axis2_description_servicegroup_get_ops(env, \
+		servicegroup_desc)->get_name(env, servicegroup_desc));
+
 #define axis2_description_servicegroup_add_service(env, servicegroup_desc \
-		, service_desc) (axis2_description_service_get_ops(env, \
+		, service_desc) (axis2_description_servicegroup_get_ops(env, \
 		servicegroup_desc)->get_param (env, servicegroup_desc, service_desc));
 
+#define axis2_description_servicegroup_get_service(env, servicegroup_desc \
+		, service_desc) ((axis2_description_servicegroup_get_ops(env, \
+		servicegroup_desc)->get_service(env, servicegroup_desc, service_desc));
+
 /**************************** End of function macros **************************/
 /**************************** Function pointers *******************************/
 
+/** Deallocate memory
+  * @return status code
+  */
+typedef axis2_status_t (*axis2_description_servicegroup_free_t)
+		(axis2_environment_t *env
+		, axis2_description_servicegroup_t *servicegroup_desc);
+
+/** Set name of the service group_member
+  * @param servicegroup_name
+  * @return status_code
+  */
+typedef axis2_status_t (*axis2_description_servicegroup_set_name_t)
+		(axis2_environment_t *env
+		, axis2_description_servicegroup_t *servicegroup_desc
+		, axis2_char_t *servicegroup_name);
+		
+/** get the service group name
+  * @return service group name
+  */
+typedef axis2_char_t *(*axis2_description_servicegroup_get_name_t)
+		(axis2_environment_t *env
+		, axis2_description_servicegroup_t *servicegroup_desc);
+
 /** Add a service to the serivce group
   * @param service to be added
   * @return status code
   */
-    typedef axis2_status_t (*axis2_description_servicegroup_add_service_t)
-        (axis2_environment_t * env,
-         axis2_description_servicegroup_t * servicegroup_desc,
-         axis2_description_service_t * service_desc);
+typedef axis2_status_t (*axis2_description_servicegroup_add_service_t)
+		(axis2_environment_t * env,
+	 	axis2_description_servicegroup_t * servicegroup_desc,
+	 	axis2_description_service_t * service_desc);
+
+/** Get the service from service group_member
+  * @param service_name
+  * @return service description
+  */
+typedef axis2_description_service_t 
+		*(*axis2_description_servicegroup_get_service_t)
+		(axis2_environment_t *env
+		, axis2_description_servicegroup_t *servicegroup_desc
+		, const axis2_qname_t* service_name);		
 
 /*************************** End of function pointers *************************/
 
-    struct axis2_description_servicegroup_ops_s
-    {
-        axis2_description_servicegroup_add_service_t add_service;
-    };
-
-    axis2_description_servicegroup_ops_t
-        *axis2_description_servicegroup_get_ops (axis2_environment_t * env,
-                                                 axis2_description_servicegroup_t
-                                                 * servicegroup_desc);
+struct axis2_description_servicegroup_ops_s
+{
+	axis2_description_servicegroup_free_t free;
+	axis2_description_servicegroup_set_name_t set_name;
+	axis2_description_servicegroup_get_name_t get_name;
+	axis2_description_servicegroup_add_service_t add_service;
+	axis2_description_servicegroup_get_service_t get_service;
+};
+
+axis2_description_servicegroup_ops_t *axis2_description_servicegroup_get_ops 
+		(axis2_environment_t *env
+		, axis2_description_servicegroup_t *servicegroup_desc);
 
-    axis2_description_servicegroup_t *axis2_description_servicegroup_create
-        (axis2_environment_t * env);
+axis2_description_servicegroup_t *axis2_description_servicegroup_create
+		(axis2_environment_t *env);
 
 /** @} */
 #ifdef __cplusplus

Modified: webservices/axis2/trunk/c/include/axis2_engine_config.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_engine_config.h?rev=327912&r1=327911&r2=327912&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_engine_config.h (original)
+++ webservices/axis2/trunk/c/include/axis2_engine_config.h Sun Oct 23 19:16:07 2005
@@ -39,10 +39,45 @@
 /** @} */ 
 
 /**
- * @defgroup axis2_context_ CONTEXT engine_config
+ * @defgroup axis2_engine_ ENGINE engine_config
  * @ingroup axis2_engine_config 
  * @{
  */
+
+/************************* Start of function macros	***************************/
+	
+#define axis2_engine_config_free(env, engine_config) (axis2_engine_get_ops(env, \
+		engine_config)->free(env, engine_config);
+	
+#define axis2_engine_config_add_service_group(env, engine_config, \
+		service_group_desc) (axis2_engine_config_get_ops(env, \
+		engine_config)->add_service_group (env, engine_config, service_group_desc));
+		
+#define axis2_engine_config_get_service(env, engine_config, service_name) \
+		(axis2_engine_config_get_ops(env, engine_config)->get_service(env, \
+		engine_config, service_name));
+
+#define axis2_engine_config_remove_service(env, engine_config, service_name) \
+		(axis2_engine_config_get_ops(env, engine_config)->remove_service(env, \
+		engine_config, service_name));
+		
+/************************* End of function macros *****************************/
+/************************* Start of function pointers *************************/
+
+typedef axis2_status_t (*axis2_engine_config_free_t)(axis2_environment_t *env,
+		axis2_engine_config_t *engine_config);
+		
+typedef axis2_status_t (*axis2_engine_config_add_service_group_t)
+		(axis2_environment_t *env, axis2_engine_config_t *engine_config
+    	, axis2_description_servicegroup_t *service_group_desc);
+
+typedef axis2_description_service_t *(*axis2_engine_config_get_service_t)(
+		axis2_engine_config_t *engine_config, const axis2_char_t* service_name);
+
+typedef axis2_status_t (*axis2_engine_config_remove_service_t)
+		(axis2_engine_config_t *engine_config, const axis2_char_t *name);	
+		
+/************************* End of function pointers ***************************/
 	
 /**
  * The palce where all the global states of Axis is accessed.
@@ -52,29 +87,28 @@
  */
 
 /**
-  * @struct axis2_engine_config
-  * @brief CONTEXT engine_config operations
-  * This holds the information about engine.
+  * @struct axis2_engine_config_ops
+  * @brief ENGINE engine_config operations
+  * This holds the operations of the engine axis2_engine_config.
   */
-typedef struct
+struct axis2_engine_config_ops_s
 {
-    axis2_description_param_include_t * param_include;
-    axis2_qname_t *name;
-    axis2_hash_t *service_groups;
-    
-} axis2_engine_config_t;
-
-void axis2_engine_config_add_service_group(axis2_engine_config_t *engine_config
-    , axis2_description_servicegroup_t *service_group_desc);
-
-void axis2_engine_config_add_service(axis2_engine_config_t *engine_config, 
-    axis2_description_service_t *service_desc);
+	axis2_engine_config_free_t free;
+	axis2_engine_config_add_service_group_t add_service_group;
+	axis2_engine_config_get_service_t get_service;
+	axis2_engine_config_remove_service_t remove_service;
+};
 
-void axis2_engine_config_get_service(axis2_engine_config_t *engine_config,
-    char* service_name);
+/** function to get the operations consturct for axis2_engine_config_create
+ * @return operation struct
+ */
+axis2_engine_config_ops_t *axis2_engine_config_get_ops(axis2_environment_t *env,
+		axis2_engine_config_t *config);
 
-void axis2_engine_config_remove_service(axis2_engine_config_t *engine_config,
-    char *name);
+/** create axis_engine_config struct
+ * @return axis_engine_config struct
+ */
+axis2_engine_config_t *axis2_engine_config_create(axis2_environment_t *env);
 
 /** @} */
 #ifdef __cplusplus

Modified: webservices/axis2/trunk/c/include/axis2_error.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_error.h?rev=327912&r1=327911&r2=327912&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_error.h (original)
+++ webservices/axis2/trunk/c/include/axis2_error.h Sun Oct 23 19:16:07 2005
@@ -115,7 +115,9 @@
         /** Undefined namespace used */
         AXIS2_ERROR_INVALID_DOCUMENT_STATE_UNDEFINED_NAMESPACE,
         /** Trying to release unallocated memory */
-        AXIS2_ERROR_UNALLOCATED_MEMEORY_RELEASE_REQUESTED
+        AXIS2_ERROR_UNALLOCATED_MEMEORY_RELEASE_REQUESTED,
+		/** Struct is not properly initialized */
+		AXIS2_ERROR_STRUCT_NOT_INITIALIZED
     } axis2_error_codes_t;
 
 /** @} */

Added: webservices/axis2/trunk/c/include/axis2_file_diff.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_file_diff.h?rev=327912&view=auto
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_file_diff.h (added)
+++ webservices/axis2/trunk/c/include/axis2_file_diff.h Sun Oct 23 19:16:07 2005
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+#ifndef AXIS2_FILE_DIFF_H
+#define AXIS2_FILE_DIFF_H
+
+/**
+  * @file axis2_file_diff.h
+  * @brief to check whether two files are same.
+  *        Spaces and new lines are ignored
+  */
+
+
+#include <axis2_environment.h>
+#include <axis2_allocator.h>
+#include <axis2_string.h>
+#include <axis2_stream.h>
+#include <axis2_error.h>
+   
+/**************************** Function headers ********************************/
+
+/** Test for two files to see whether they are equal. White spaces and new lines
+  * are ignored.
+  * @param file name
+  * @param file name
+  * @return status code
+  */
+axis2_status_t axis2_file_diff(axis2_environment_t *env
+		, axis2_char_t *expected_file_name, axis2_char_t *actual_file_name);
+
+#endif /* AXIS2_FILE_DIFF_H */

Modified: webservices/axis2/trunk/c/include/axis2_stream.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_stream.h?rev=327912&r1=327911&r2=327912&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_stream.h (original)
+++ webservices/axis2/trunk/c/include/axis2_stream.h Sun Oct 23 19:16:07 2005
@@ -46,14 +46,50 @@
         * @param size size of the buffer
         * @return satus of the operation. AXIS2_SUCCESS on success else AXIS2_FAILURE
         */
-        AXIS2_DECLARE(axis2_status_t) (*axis2_stream_ops_read) (void *buffer, size_t count);
-      /**
+        AXIS2_DECLARE(axis2_status_t) (*axis2_stream_ops_read) (void *buffer
+			, size_t count);
+		/**
         * writes into stream
         * @param buffer buffer to be written
         * @param size size of the buffer
         * @return satus of the operation. AXIS2_SUCCESS on success else AXIS2_FAILURE
         */
-        AXIS2_DECLARE(axis2_status_t) (*axis2_stream_ops_write) (const void *buffer, size_t count);
+        AXIS2_DECLARE(axis2_status_t) (*axis2_stream_ops_write) 
+			(const void *buffer, size_t count);
+		
+		/**
+		 * open a file for read according to the file options given
+		 * @param file_name file to be opened
+		 * @param options file options given.
+		 * @return status code
+		 */
+		AXIS2_DECLARE(axis2_status_t) (*axis2_stream_ops_file_open)
+				(const char *file_name, const char *options);
+		
+		/**
+		 * close a file
+		 * @param file_ptr file pointer of the file need to be closed
+		 * @return status code
+		 */
+		AXIS2_DECLARE(axis2_status_t) (*axis2_stream_ops_file_close) 
+				(void *file_ptr);
+		
+		/** reads a once character from a file
+		 * @param file_ptr pointer to the file to be read from
+		 * @return char read
+		 */
+		AXIS2_DECLARE(axis2_char_t) (*axis2_stream_ops_file_get_char) 
+				(void *file_ptr);
+		
+		/** write a previously read character back to the file stream
+		 * @param chr charater to write back
+		 * @param file_ptr file pointer from which chr is read previously
+		 *        and need to be written back to
+		 * @return status code
+		 */
+		AXIS2_DECLARE(axis2_status_t) (*axis2_stream_ops_file_unget_char) 
+				(const char chr, void *file_ptr);
+				
     } axis2_stream_ops_t;
 
   /** 
@@ -65,6 +101,8 @@
     {
         /** Stream related operations */
         struct axis2_stream_ops *ops;
+		void *file;
+		int axis2_eof;
     } axis2_stream_t;
 
   /**
@@ -76,8 +114,18 @@
     AXIS2_DECLARE(axis2_stream_t *) axis2_stream_create (axis2_allocator_t * allocator,
                                          axis2_stream_ops_t * operations);
 
-#define axis2_stream_read(stream, buffer, count) ((stream)->ops->axis2_stream_ops_read(buffer, count))
-#define axis2_stream_write(stream, buffer, count) ((stream)->ops->axis2_stream_ops_write(buffer, count))
+#define axis2_stream_read(stream, buffer, count) \
+		((stream)->ops->axis2_stream_ops_read(buffer, count))
+#define axis2_stream_write(stream, buffer, count) \
+		((stream)->ops->axis2_stream_ops_write(buffer, count))
+#define axis2_stream_file_open(stream, file_name, options) \
+		((stream)->ops->axis2_stream_ops_file_open(file_name, options))
+#define axis2_stream_file_close(stream, file_ptr) \
+		((stream)->ops->axis2_stream_ops_file_close(file_ptr))
+#define axis2_stream_file_get_char(stream, file_ptr) \
+		((stream)->ops->axis2_stream_ops_file_get_char(file_ptr))
+#define axis2_stream_file_unget_char(stream, chr, file_ptr) \
+		((stream)->ops->axis2_stream_ops_file_unget_char(chr, file_ptr))	
 
 /** @} */
     

Modified: webservices/axis2/trunk/c/include/axis2_string.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_string.h?rev=327912&r1=327911&r2=327912&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_string.h (original)
+++ webservices/axis2/trunk/c/include/axis2_string.h Sun Oct 23 19:16:07 2005
@@ -18,6 +18,7 @@
 #define AXIS2_STRING_H
 
 #include <axis2_defines.h>
+#include <axis2_error.h>
 #include <axis2_allocator.h>
 
 #ifdef __cplusplus

Modified: webservices/axis2/trunk/c/modules/core/description/src/axis2_description_operation.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/description/src/axis2_description_operation.c?rev=327912&r1=327911&r2=327912&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/description/src/axis2_description_operation.c (original)
+++ webservices/axis2/trunk/c/modules/core/description/src/axis2_description_operation.c Sun Oct 23 19:16:07 2005
@@ -169,8 +169,9 @@
 axis2_status_t axis2_description_operation_ops_free (axis2_environment_t *env
 		, axis2_description_operation_t *operation_desc)
 {
-	if(operation_desc){
-		free(operation_desc);
+	if(operation_desc)
+	{
+		axis2_free(env->allocator, operation_desc);
 		return AXIS2_SUCCESS;
 	}
 	return AXIS2_ERROR_UNALLOCATED_MEMEORY_RELEASE_REQUESTED;

Modified: webservices/axis2/trunk/c/modules/core/description/src/axis2_description_parameter.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/description/src/axis2_description_parameter.c?rev=327912&r1=327911&r2=327912&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/description/src/axis2_description_parameter.c (original)
+++ webservices/axis2/trunk/c/modules/core/description/src/axis2_description_parameter.c Sun Oct 23 19:16:07 2005
@@ -164,9 +164,11 @@
 		,axis2_description_param_t * param)
 {
 	if(param)
-		free(param);
-	
-	return AXIS2_SUCCESS;
+	{
+		axis2_free(env->allocator, param);
+		return AXIS2_SUCCESS;
+	}
+	return AXIS2_ERROR_UNALLOCATED_MEMEORY_RELEASE_REQUESTED;
 }
 
 axis2_status_t axis2_description_param_ops_set_name (axis2_environment_t *env

Modified: webservices/axis2/trunk/c/modules/core/description/src/axis2_description_service.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/description/src/axis2_description_service.c?rev=327912&r1=327911&r2=327912&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/description/src/axis2_description_service.c (original)
+++ webservices/axis2/trunk/c/modules/core/description/src/axis2_description_service.c Sun Oct 23 19:16:07 2005
@@ -11,7 +11,7 @@
 	axis2_description_param_include_t *param_include;
 	axis2_description_servicegroup_t *parent;
 	axis2_hash_t *wasaction_opeartionmap;
-	axis2_qname_t *qname;    
+	axis2_qname_t *name;    
 
 };
 
@@ -55,6 +55,9 @@
 axis2_description_servicegroup_t *axis2_description_service_ops_get_parent
 		(axis2_environment_t *env, axis2_description_service_t *service_desc);
 		
+axis2_qname_t *axis2_description_service_ops_get_name
+		(axis2_environment_t *env, axis2_description_service_t *service_desc);	
+		
 /************************* End of function headers ***************************/
 
 axis2_description_service_ops_t * axis2_description_service_get_ops
@@ -119,7 +122,7 @@
 		env->error->errorno = AXIS2_ERROR_NO_MEMORY;
 		return NULL;			
 	}
-	service_desc->qname = NULL;
+	service_desc->name = NULL;
 
 	return service_desc;	
 }
@@ -134,7 +137,7 @@
 		env->error->errorno = AXIS2_ERROR_NO_MEMORY;
 		return NULL;
 	}
-	service_desc->qname = axis2_strdup(env->string, qname);
+	service_desc->name = axis2_strdup(env->string, qname);
 	
 	return service_desc;
 }
@@ -145,8 +148,11 @@
 		(axis2_environment_t *env, axis2_description_service_t *service_desc)
 {
 	if(service_desc)
+	{
 		axis2_free(env->allocator, service_desc);
-	return AXIS2_SUCCESS;
+		return AXIS2_SUCCESS;
+	}
+	return AXIS2_ERROR_UNALLOCATED_MEMEORY_RELEASE_REQUESTED;
 }
 
 axis2_status_t axis2_description_service_ops_add_param(axis2_environment_t *env
@@ -294,4 +300,15 @@
 		return NULL;	
 	}
 	return service_desc->parent;
+}
+
+axis2_qname_t *axis2_description_service_ops_get_name
+		(axis2_environment_t *env, axis2_description_service_t *service_desc)
+{
+	if(!env || !service_desc)
+	{
+		env->error->errorno = AXIS2_ERROR_INVALID_NULL_PARAMETER;
+		return NULL;	
+	}
+	return service_desc->name;
 }

Modified: webservices/axis2/trunk/c/modules/core/description/src/axis2_description_servicegroup.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/description/src/axis2_description_servicegroup.c?rev=327912&r1=327911&r2=327912&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/description/src/axis2_description_servicegroup.c (original)
+++ webservices/axis2/trunk/c/modules/core/description/src/axis2_description_servicegroup.c Sun Oct 23 19:16:07 2005
@@ -22,40 +22,163 @@
   */
 struct axis2_description_servicegroup_s
 {
+	axis2_description_servicegroup_ops_t *ops;
 	axis2_description_param_include_t *param_include;
-	axis2_qname_t *servicegroup_name;
+	axis2_char_t *servicegroup_name;
 	axis2_hash_t *services;
 	
 };
 
 /***************************** Function headers *******************************/
 
+axis2_status_t axis2_description_servicegroup_ops_free(axis2_environment_t *env
+		, axis2_description_servicegroup_t *servicegroup_desc);
+
+axis2_status_t axis2_description_servicegroup_ops_set_name
+		(axis2_environment_t *env
+		, axis2_description_servicegroup_t *servicegroup_desc
+		, axis2_char_t *name);
+
+axis2_char_t *axis2_description_servicegroup_ops_get_name
+		(axis2_environment_t *env
+		, axis2_description_servicegroup_t *servicegroup_desc);
+
 axis2_status_t axis2_description_servicegroup_ops_add_service
 		(axis2_environment_t *env
 		, axis2_description_servicegroup_t* servicegroup_desc
 		, axis2_description_service_t *service_desc);
 
+axis2_description_service_t *axis2_description_servicegroup_ops_get_service
+		(axis2_environment_t *env
+		, axis2_description_servicegroup_t *servicegroup_desc
+		, const axis2_qname_t* service_name);
+
 /***************************** End of function headers ************************/
 
 axis2_description_servicegroup_ops_t *axis2_description_servicegroup_get_ops
 		(axis2_environment_t *env
 		, axis2_description_servicegroup_t *servicegroup_desc)
 {
-	return NULL;
+	if(!env || !servicegroup_desc)
+	{
+		env->error->errorno = AXIS2_ERROR_INVALID_NULL_PARAMETER;
+		return NULL;
+	}
+	return servicegroup_desc->ops;
 }
 
 axis2_description_servicegroup_t *axis2_description_servicegroup_create
 		(axis2_environment_t *env)
 {
-	return NULL;
+	axis2_description_servicegroup_t *servicegroup_desc 
+		= (axis2_description_servicegroup_t *)
+		axis2_malloc (env->allocator, sizeof(axis2_description_servicegroup_t));
+	if(!servicegroup_desc)
+	{
+		env->error->errorno = AXIS2_ERROR_NO_MEMORY;
+		return NULL;
+	}
+	axis2_description_servicegroup_ops_t *ops 
+		= (axis2_description_servicegroup_ops_t *)
+		axis2_malloc (env->allocator, sizeof(axis2_description_servicegroup_ops_t));
+	if(!ops)
+	{
+		env->error->errorno = AXIS2_ERROR_NO_MEMORY;
+		return NULL;	
+	}
+	ops->free = axis2_description_servicegroup_ops_free;
+	ops->set_name = axis2_description_servicegroup_ops_set_name;
+	ops->get_name = axis2_description_servicegroup_ops_get_name;
+	ops->add_service = axis2_description_servicegroup_ops_add_service;
+	ops->get_service = axis2_description_servicegroup_ops_get_service;
+	
+	servicegroup_desc->ops = ops;
+	
+	axis2_description_param_include_t *param_include 
+		= (axis2_description_param_include_t *)
+		axis2_description_param_include_create(env);		
+	if(!param_include)
+	{
+		env->error->errorno = AXIS2_ERROR_NO_MEMORY;
+		return NULL;
+	}
+
+	servicegroup_desc->param_include = param_include;
+	
+	/*servicegroup_desc->parent = NULL;*/
+	
+	servicegroup_desc->services = axis2_hash_make (env);				
+	if(!servicegroup_desc->services)
+	{
+		env->error->errorno = AXIS2_ERROR_NO_MEMORY;
+		return NULL;			
+	}
+	servicegroup_desc->servicegroup_name = NULL;
+
+	return servicegroup_desc;	
 }
 
 /******************************************************************************/
 
+axis2_status_t axis2_description_servicegroup_ops_free(axis2_environment_t *env
+		, axis2_description_servicegroup_t *servicegroup_desc)
+{
+	if(!env || !servicegroup_desc)
+		return AXIS2_ERROR_INVALID_NULL_PARAMETER;
+	axis2_free(env->allocator, servicegroup_desc);
+	return AXIS2_SUCCESS;
+}
+
+axis2_status_t axis2_description_servicegroup_ops_set_name
+		(axis2_environment_t *env
+		, axis2_description_servicegroup_t *servicegroup_desc
+		, axis2_char_t *name)
+{
+	if(!env || !servicegroup_desc)
+		return AXIS2_ERROR_INVALID_NULL_PARAMETER;
+	axis2_char_t *tempname = axis2_strdup(env->string, name);
+	if(!tempname) return AXIS2_ERROR_INVALID_NULL_PARAMETER;
+	servicegroup_desc->servicegroup_name = name;
+	return AXIS2_SUCCESS;
+}
+
+axis2_char_t *axis2_description_servicegroup_ops_get_name
+		(axis2_environment_t *env
+		, axis2_description_servicegroup_t *servicegroup_desc)
+{
+	if(!servicegroup_desc)
+	{
+		env->error->errorno = AXIS2_ERROR_INVALID_NULL_PARAMETER;
+		return NULL;
+	}
+	return servicegroup_desc->servicegroup_name;
+}
+
 axis2_status_t axis2_description_servicegroup_ops_add_service
 		(axis2_environment_t *env
 		, axis2_description_servicegroup_t *servicegroup_desc
 		, axis2_description_service_t *service_desc)
 {
-	return 0;
+	if(!env || servicegroup_desc || service_desc)
+		return AXIS2_ERROR_INVALID_NULL_PARAMETER;
+	
+	axis2_qname_t *tempname = axis2_description_service_get_name(env, service_desc);
+	axis2_hash_set (servicegroup_desc->services, tempname->localpart
+		, AXIS2_HASH_KEY_STRING, service_desc);
+	return AXIS2_SUCCESS;
+}
+
+axis2_description_service_t *axis2_description_servicegroup_ops_get_service
+		(axis2_environment_t *env
+		, axis2_description_servicegroup_t *servicegroup_desc
+		, const axis2_qname_t* service_name)
+{
+	if(!servicegroup_desc || ! service_name)
+	{
+		env->error->errorno = AXIS2_ERROR_INVALID_NULL_PARAMETER;
+		return NULL;
+	}
+	return (axis2_description_service_t *) (axis2_hash_get 
+		(servicegroup_desc->services, service_name->localpart
+		, AXIS2_HASH_KEY_STRING));
 }

Modified: webservices/axis2/trunk/c/modules/core/engine/src/axis2_engine_config.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/engine/src/axis2_engine_config.c?rev=327912&r1=327911&r2=327912&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/engine/src/axis2_engine_config.c (original)
+++ webservices/axis2/trunk/c/modules/core/engine/src/axis2_engine_config.c Sun Oct 23 19:16:07 2005
@@ -15,3 +15,160 @@
  */
  
 #include <axis2_engine_config.h>
+
+/**
+  * @struct axis2_engine_config
+  * @brief ENGINE engine_config operations
+  * This holds the information about engine.
+  */
+struct axis2_engine_config_s
+{
+	axis2_engine_config_ops_t *ops;
+    axis2_description_param_include_t * param_include;
+    axis2_hash_t *service_groups;
+};
+	
+/***************************** Function prototypes ****************************/
+
+axis2_status_t axis2_engine_config_ops_free (axis2_environment_t *env
+		,axis2_engine_config_t * engine_config);
+
+axis2_status_t axis2_engine_config_ops_add_service_group
+		(axis2_environment_t *env, axis2_engine_config_t *engine_config
+    	, axis2_description_servicegroup_t *service_group_desc);
+
+axis2_description_servicegroup_t *axis2_engine_config_ops_get_servicegroup(
+		axis2_environment_t *env, axis2_engine_config_t *engine_config
+		, const axis2_char_t* servicegroup_name);
+
+axis2_description_service_t *axis2_engine_config_ops_get_service(
+		axis2_engine_config_t *engine_config, const axis2_char_t* service_name);
+
+axis2_status_t axis2_engine_config_ops_remove_service
+		(axis2_engine_config_t *engine_config, const axis2_char_t *name);
+
+/************************** End of function prototypes ************************/
+
+axis2_engine_config_ops_t *axis2_engine_config_get_ops
+	(axis2_environment_t *env, axis2_engine_config_t *engine_config)
+{
+	if(!engine_config)
+	{
+		/* set error code*/
+		env->error->errorno = AXIS2_ERROR_NO_MEMORY;
+		return NULL;
+	}
+	return (axis2_engine_config_ops_t *) engine_config->ops;	
+}
+
+
+axis2_engine_config_t *axis2_engine_config_create 
+		(axis2_environment_t *env)
+{
+	axis2_engine_config_t *engine_config
+	= (axis2_engine_config_t *) axis2_malloc (env->allocator
+	, sizeof(axis2_engine_config_t));
+	if(!engine_config)
+	{
+		/* set the error code*/
+		env->error->errorno = AXIS2_ERROR_NO_MEMORY;
+		return NULL;
+	}
+	axis2_engine_config_ops_t *ops
+		= (axis2_engine_config_ops_t *) axis2_malloc (env->allocator
+		, sizeof(axis2_engine_config_ops_t));
+	if(!ops)
+	{
+		env->error->errorno = AXIS2_ERROR_NO_MEMORY;
+		axis2_free(env->allocator, engine_config);
+		return NULL;		
+	}
+	ops->free = axis2_engine_config_ops_free;
+	ops->add_service_group = axis2_engine_config_ops_add_service_group;
+	ops->get_service = axis2_engine_config_ops_get_service;
+	ops->remove_service = axis2_engine_config_ops_remove_service;
+	
+	engine_config->ops = ops;
+
+	axis2_description_param_include_t *param_include 
+		= (axis2_description_param_include_t *)
+		axis2_description_param_include_create(env);		
+	if(!param_include)
+	{
+		env->error->errorno = AXIS2_ERROR_NO_MEMORY;
+		return NULL;
+	}
+
+	engine_config->param_include = param_include;
+	
+	engine_config->service_groups = NULL;
+	
+	return engine_config;	
+}	
+
+/**********************Start of operation impls********************************/
+
+axis2_status_t axis2_engine_config_ops_free (axis2_environment_t *env
+		,axis2_engine_config_t * engine_config)
+{
+	if(engine_config)
+	{
+		axis2_free(env->allocator, engine_config);
+	}
+	return AXIS2_ERROR_UNALLOCATED_MEMEORY_RELEASE_REQUESTED;
+}
+
+axis2_status_t axis2_engine_config_ops_add_service_group
+		(axis2_environment_t *env, axis2_engine_config_t *engine_config
+    	, axis2_description_servicegroup_t *servicegroup_desc)
+{
+	if(!engine_config || !servicegroup_desc)
+	{
+		return AXIS2_ERROR_INVALID_NULL_PARAMETER;
+	}
+	
+	axis2_char_t *tempname = axis2_description_servicegroup_get_name(env
+			, servicegroup_desc);
+	axis2_hash_set (engine_config->service_groups
+		, tempname
+		, AXIS2_HASH_KEY_STRING, servicegroup_desc);	
+	return AXIS2_SUCCESS;
+}
+
+axis2_description_servicegroup_t *axis2_engine_config_ops_get_servicegroup(
+		axis2_environment_t *env, axis2_engine_config_t *engine_config
+		, const axis2_char_t* servicegroup_name)
+{
+	if(!engine_config)
+	{
+		env->error->errorno = AXIS2_ERROR_INVALID_NULL_PARAMETER;
+		return NULL;
+	}
+	axis2_char_t *tempname = axis2_strdup(env->string, servicegroup_name);
+	if(!tempname)
+	{
+		env->error->errorno = AXIS2_ERROR_INVALID_NULL_PARAMETER;
+		return NULL;
+	}
+	return (axis2_description_servicegroup_t *) (axis2_hash_get 
+		(engine_config->service_groups, servicegroup_name
+		, AXIS2_HASH_KEY_STRING));
+}
+
+axis2_description_service_t *axis2_engine_config_ops_add_service(
+		axis2_engine_config_t *engine_config, const axis2_char_t* service_name)
+{
+		
+}
+
+axis2_description_service_t *axis2_engine_config_ops_get_service(
+		axis2_engine_config_t *engine_config, const axis2_char_t* service_name)
+{
+		
+}
+
+axis2_status_t axis2_engine_config_ops_remove_service
+		(axis2_engine_config_t *engine_config, const axis2_char_t *name)
+{
+	
+}

Modified: webservices/axis2/trunk/c/modules/test/util/test_util.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/test/util/test_util.c?rev=327912&r1=327911&r2=327912&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/test/util/test_util.c (original)
+++ webservices/axis2/trunk/c/modules/test/util/test_util.c Sun Oct 23 19:16:07 2005
@@ -17,21 +17,23 @@
 #include <stdio.h>
 #include <axis2_hash.h>
 #include <axis2_string.h>
+#include <axis2_file_diff.h>
 
 typedef struct a
 {
-    char *value;
+    axis2_char_t *value;
 } a;
 
-
-
-int test_hash_get ()
+axis2_environment_t *test_init()
 {
-    axis2_allocator_t *allocator = axis2_allocator_init (NULL);
-    axis2_string_t *string = axis2_allocator_init (NULL);
-    axis2_environment_t *environment =
-        axis2_environment_create (allocator, NULL, NULL, NULL, string);
+	axis2_allocator_t *allocator = axis2_allocator_init (NULL);
+    axis2_environment_t *env =
+    	axis2_environment_create (allocator, NULL, NULL, NULL, NULL);
+	return env;
+}
 
+int test_hash_get (axis2_environment_t *environment)
+{
     axis2_hash_t *ht;
     a *a1, *a2, *a3, *a4;
 
@@ -54,7 +56,6 @@
     a3->value = axis2_strdup(environment->string, "value3");
     a4->value = axis2_strdup(environment->string, "value4");
 
-
     ht = axis2_hash_make (environment);
 
     axis2_hash_set (ht, key1, AXIS2_HASH_KEY_STRING, a1);
@@ -85,7 +86,20 @@
     return 0;
 }
 
+/**
+  * This test is intended to test whether given two files are equal or not.
+  * Spaces and new lines are ignored in comparing
+  */
+int test_file_diff(axis2_environment_t *env)
+{
+	axis2_char_t *expected_file_name = axis2_strdup(env->string, "expected");
+    axis2_char_t *actual_file_name = axis2_strdup(env->string, "actual");	
+    axis2_file_diff(env, expected_file_name, actual_file_name);
+}
+
 int main(void)
 {
-   test_hash_get(); 
+	axis2_environment_t *env = test_init();
+	test_file_diff(env);
+	test_hash_get(env); 
 }

Modified: webservices/axis2/trunk/c/modules/util/src/Makefile.am
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/util/src/Makefile.am?rev=327912&r1=327911&r2=327912&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/util/src/Makefile.am (original)
+++ webservices/axis2/trunk/c/modules/util/src/Makefile.am Sun Oct 23 19:16:07 2005
@@ -6,7 +6,8 @@
                         axis2_error.c \
                         axis2_stream.c \
                         axis2_log.c \
-                        axis2_string.c
+                        axis2_string.c \
+                        axis2_file_diff.c
 
 libaxis2_util_la_LIBADD = $(LDFLAGS)
 INCLUDES = -I$(top_builddir)/include -I${CUTEST_HOME}/include

Modified: webservices/axis2/trunk/c/modules/util/src/Makefile.in
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/util/src/Makefile.in?rev=327912&r1=327911&r2=327912&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/util/src/Makefile.in (original)
+++ webservices/axis2/trunk/c/modules/util/src/Makefile.in Sun Oct 23 19:16:07 2005
@@ -65,7 +65,7 @@
 libaxis2_util_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am_libaxis2_util_la_OBJECTS = axis2_hash.lo axis2_allocator.lo \
 	axis2_environment.lo axis2_error.lo axis2_stream.lo \
-	axis2_log.lo axis2_string.lo
+	axis2_log.lo axis2_string.lo axis2_file_diff.lo
 libaxis2_util_la_OBJECTS = $(am_libaxis2_util_la_OBJECTS)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/conftools/depcomp
@@ -199,7 +199,8 @@
                         axis2_error.c \
                         axis2_stream.c \
                         axis2_log.c \
-                        axis2_string.c
+                        axis2_string.c \
+                        axis2_file_diff.c
 
 libaxis2_util_la_LIBADD = $(LDFLAGS)
 INCLUDES = -I$(top_builddir)/include -I${CUTEST_HOME}/include
@@ -275,6 +276,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/axis2_allocator.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/axis2_environment.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/axis2_error.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/axis2_file_diff.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/axis2_hash.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/axis2_log.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/axis2_stream.Plo@am__quote@

Modified: webservices/axis2/trunk/c/modules/util/src/axis2_environment.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/util/src/axis2_environment.c?rev=327912&r1=327911&r2=327912&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/util/src/axis2_environment.c (original)
+++ webservices/axis2/trunk/c/modules/util/src/axis2_environment.c Sun Oct 23 19:16:07 2005
@@ -39,10 +39,7 @@
     else
         environment->error = error;
 
-    if (!stream)
-        environment->stream = axis2_stream_create (allocator, NULL);
-    else
-        environment->stream = stream;
+    environment->stream = axis2_stream_create (allocator, NULL);    
 
     if (!log)
         environment->log = axis2_log_create (allocator, NULL);

Added: webservices/axis2/trunk/c/modules/util/src/axis2_file_diff.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/util/src/axis2_file_diff.c?rev=327912&view=auto
==============================================================================
--- webservices/axis2/trunk/c/modules/util/src/axis2_file_diff.c (added)
+++ webservices/axis2/trunk/c/modules/util/src/axis2_file_diff.c Sun Oct 23 19:16:07 2005
@@ -0,0 +1,138 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+#include <axis2_file_diff.h>
+
+void *expected_file, *actual_file; /* File pointers */
+
+/* private function header */
+axis2_status_t axis2_file_diff_clean(axis2_environment_t *env, int);
+
+axis2_status_t axis2_file_diff(axis2_environment_t *env
+		, axis2_char_t* expected_file_name, axis2_char_t* actual_file_name)
+{
+	expected_file = axis2_stream_file_open (env->stream
+		, expected_file_name, "rt");
+	 
+	actual_file = axis2_stream_file_open (env->stream, actual_file_name
+		, "rt");
+	
+	if( expected_file == NULL || actual_file == NULL ) {
+		printf("Unable to open one of datafile %s, %s\n", expected_file_name
+			, actual_file_name );
+		axis2_file_diff_clean(env, 1 );
+	}
+	
+   	int ch1, ch2;
+   	axis2_char_t *buffer1, *buffer2;
+   	int flag1 = 0, flag2 = 0;
+   
+   	buffer1 = (axis2_char_t*) axis2_malloc(env->allocator, 8096 * sizeof(axis2_char_t));
+   	buffer2 = (axis2_char_t*) axis2_malloc(env->allocator, 8096 * sizeof(axis2_char_t));
+   	ch1 = axis2_stream_file_get_char (env->stream, expected_file);
+   	ch2 = axis2_stream_file_get_char (env->stream, actual_file);
+	
+   	int j = 0, k = 0;
+   	while(1)
+   	{
+        
+		if(ch1 == ' ' || ch1 == '\n' )
+        {
+            flag1 = 1;    
+        }
+        if(ch2 == ' ' || ch2 == '\n')
+        {
+            flag2 = 1;
+        }
+        if(ch1 != ' ' && ch1 != '\n' && ch2 != ' ' && ch2 != '\n')
+        {
+            flag1 = 0;
+            flag2 = 0;
+        }
+            
+        if(flag1 == 1 && flag2 == 0)
+        {
+            axis2_stream_file_unget_char(env->stream, ch2, actual_file);
+            j++;
+            buffer1[j] = ch1;
+        }
+        if(flag1 == 0 && flag2 == 1)
+        {
+            axis2_stream_file_unget_char(env->stream, ch1, expected_file);
+            k++;
+            buffer2[k] = ch2;
+        }
+        if(flag1 == 0 && flag2 == 0)
+        {
+            if(ch1 != ch2)
+            {
+				axis2_stream_write(env->stream
+					, "\n****************************** TEST FAILED *********" \
+					"**************************\n", 80);
+                
+                *buffer1 = '\n';
+                *buffer2 = '\n';
+				axis2_stream_write(env->stream
+					, "\n---------------------- Expected file read upto: ----" \
+					"--------------------------\n", 80);
+                
+                 /*printf("%s\n", buffer1); */
+				axis2_stream_write(env->stream, buffer1, j);
+				axis2_stream_write(env->stream
+					, "\n---------------------- Actual file read upto: ------" \
+					"--------------------------\n", 80);
+                
+                /* printf("%s\n", buffer2); */
+				axis2_stream_write(env->stream, buffer2, k);
+				axis2_stream_write(env->stream, "\n", 1);
+
+                axis2_file_diff_clean(env, 1);
+            }
+            j++;k++;
+            buffer1[j] = ch1;
+            buffer2[k] = ch2;
+        }
+        if(flag1 == 1 && flag2 == 1)
+        {
+            flag1 = 0;
+            flag2 = 0;
+            j++; k++;
+            buffer1[j] = ch1;
+            buffer2[k] = ch2;
+        }
+
+        
+        if(ch1 == env->stream->axis2_eof || ch2 == env->stream->axis2_eof)
+            break;
+        ch1 = axis2_stream_file_get_char(env->stream, expected_file );
+		ch2 = axis2_stream_file_get_char(env->stream, actual_file);
+   	}
+   	
+   	axis2_stream_write(env->stream
+		, "\n************************* TEST PASSED **************************" \
+		"**************\n", 80);
+	
+   	return AXIS2_SUCCESS;
+}
+
+axis2_status_t axis2_file_diff_clean (axis2_environment_t *env, int exitcode )
+{
+	if(expected_file != NULL )
+    	axis2_stream_file_close(env->stream, expected_file);
+   	if(actual_file != NULL )
+    	axis2_stream_file_close(env->stream, actual_file);
+    exit(exitcode);
+}

Modified: webservices/axis2/trunk/c/modules/util/src/axis2_stream.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/util/src/axis2_stream.c?rev=327912&r1=327911&r2=327912&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/util/src/axis2_stream.c (original)
+++ webservices/axis2/trunk/c/modules/util/src/axis2_stream.c Sun Oct 23 19:16:07 2005
@@ -14,11 +14,23 @@
  * limitations under the License.
  */
 
-#include <axis2_stream.h>
+#include <string.h>
+#include <stdlib.h>
 #include <stdio.h>
 
+#include <axis2_stream.h>
+
 axis2_status_t axis2_stream_impl_write (const void *buffer, size_t count);
 axis2_status_t axis2_stream_impl_read (void *buffer, size_t count);
+
+void *axis2_stream_impl_file_open(const char *file_name, const char *options);
+		
+axis2_status_t axis2_stream_impl_file_close(void *file_ptr);
+
+axis2_char_t axis2_stream_impl_file_get_char(void *file_ptr);
+
+axis2_status_t axis2_stream_impl_file_unget_char(const char chr, void *file_ptr);
+
 axis2_stream_t *
 axis2_stream_create (axis2_allocator_t * allocator,
                      axis2_stream_ops_t * operations)
@@ -48,6 +60,13 @@
 
         stream->ops->axis2_stream_ops_read = axis2_stream_impl_read;
         stream->ops->axis2_stream_ops_write = axis2_stream_impl_write;
+		stream->ops->axis2_stream_ops_file_open = axis2_stream_impl_file_open;
+		stream->ops->axis2_stream_ops_file_close = axis2_stream_impl_file_close;
+		stream->ops->axis2_stream_ops_file_get_char = axis2_stream_impl_file_get_char;
+		stream->ops->axis2_stream_ops_file_unget_char = axis2_stream_impl_file_unget_char;
+		
+		stream->file = NULL;
+		stream->axis2_eof = EOF;
     }
 
     return stream;
@@ -79,5 +98,35 @@
     i = 0;
     for (i = 0; i < count; i++)
         printf ("%c", ((axis2_char_t *) buffer)[i]);
+		
     return 0;
+}
+
+void *axis2_stream_impl_file_open(const char *file_name, const char *options)
+{
+	char *f_name = (char*) strdup(file_name);
+	if(!f_name) return NULL;
+	char *f_opt = (char*) strdup(options);
+	if(!f_opt) return NULL;
+	
+	FILE *file_ptr = fopen (f_name, f_opt);
+	return file_ptr;
+}
+
+axis2_status_t axis2_stream_impl_file_close(void *file_ptr)
+{
+	if(!file_ptr) return -1;
+	return (axis2_status_t) fclose(file_ptr);
+}
+
+axis2_char_t axis2_stream_impl_file_get_char(void *file_ptr)
+{
+	if(!file_ptr) return -1;
+	return (axis2_char_t) fgetc(file_ptr);
+}
+
+axis2_status_t axis2_stream_impl_file_unget_char(const char chr, void *file_ptr)
+{
+	if(!file_ptr) return -1;
+	return (axis2_status_t) ungetc(chr, file_ptr);
 }

Modified: webservices/axis2/trunk/c/modules/util/src/axis2_string.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/util/src/axis2_string.c?rev=327912&r1=327911&r2=327912&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/util/src/axis2_string.c (original)
+++ webservices/axis2/trunk/c/modules/util/src/axis2_string.c Sun Oct 23 19:16:07 2005
@@ -18,13 +18,19 @@
 #include <stdlib.h>
 #include <string.h>
 
+axis2_status_t check_validity(axis2_string_t *string);
+
 void *
 axis2_string_ops_strdup (const void *ptr)
 {
     if (ptr)
+    {
         return (void *) strdup (ptr);
+    }
     else
+    {
         return NULL;
+    }
 }
 
 int
@@ -39,14 +45,18 @@
 axis2_string_t *
 axis2_string_create (axis2_allocator_t * allocator, axis2_string_t * string)
 {
-    if (string)
-        return string;
-
-    if (!allocator)
-        return NULL;
-
-    else
-    {
+    if (string && AXIS2_SUCCESS == check_validity(string))
+	{
+		return string;	
+	}
+	else if(string)
+	{
+		string->axis2_string_strdup = axis2_string_ops_strdup;
+        string->axis2_string_strcmp = axis2_string_ops_strcmp;	
+		return string;
+	}
+	else if (allocator)
+	{
         string =
             (axis2_string_t *) axis2_malloc (allocator,
                                              sizeof (axis2_string_t));
@@ -58,4 +68,21 @@
         }
     }
     return NULL;
+}
+
+/** This will check whether the passed string is properly initialized
+  * @param string to be validated
+  * @return status code
+  */
+axis2_status_t check_validity(axis2_string_t *string)
+{
+	if(!string)
+	{
+		return AXIS2_ERROR_INVALID_NULL_PARAMETER;
+	}
+	if(!string->axis2_string_strdup) return AXIS2_ERROR_STRUCT_NOT_INITIALIZED;
+		
+	if(!string->axis2_string_strcmp) return AXIS2_ERROR_STRUCT_NOT_INITIALIZED;
+		
+	return AXIS2_SUCCESS;
 }