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 da...@apache.org on 2005/12/08 12:21:07 UTC

svn commit: r355071 - in /webservices/axis2/trunk/c: include/axis2_error.h modules/core/description/src/param_container.c modules/core/description/src/svc_grp.c modules/core/engine/src/engine_config.c modules/xml/om/src/axis2_om_element.c

Author: damitha
Date: Thu Dec  8 03:20:49 2005
New Revision: 355071

URL: http://svn.apache.org/viewcvs?rev=355071&view=rev
Log:
refactoring

Modified:
    webservices/axis2/trunk/c/include/axis2_error.h
    webservices/axis2/trunk/c/modules/core/description/src/param_container.c
    webservices/axis2/trunk/c/modules/core/description/src/svc_grp.c
    webservices/axis2/trunk/c/modules/core/engine/src/engine_config.c
    webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_element.c

Modified: webservices/axis2/trunk/c/include/axis2_error.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_error.h?rev=355071&r1=355070&r2=355071&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_error.h (original)
+++ webservices/axis2/trunk/c/include/axis2_error.h Thu Dec  8 03:20:49 2005
@@ -199,6 +199,8 @@
         AXIS2_ERROR_MODULE_ALREADY_ENGAGED_TO_SVC_GRP,
         /** Invalid message context state  */
         AXIS2_ERROR_INVALID_STATE_MSG_CTX,
+        /** Invalid engine config state */
+        AXIS2_ERROR_INVALID_STATE_ENGINE_CONFIG,
         /** Service not yet found */
         AXIS2_ERROR_SERVICE_NOT_YET_FOUND,
         /** error occured creating xml stream writer */

Modified: webservices/axis2/trunk/c/modules/core/description/src/param_container.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/description/src/param_container.c?rev=355071&r1=355070&r2=355071&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/description/src/param_container.c (original)
+++ webservices/axis2/trunk/c/modules/core/description/src/param_container.c Thu Dec  8 03:20:49 2005
@@ -20,7 +20,7 @@
  * @brief Param container struct impl
  *	Container for params  
  */ 
-typedef struct axis2_param_container_impl_s
+typedef struct axis2_param_container_impl
 {
 	axis2_param_container_t param_container;
     axis2_hash_t *params;	
@@ -59,22 +59,33 @@
 axis2_param_container_t * AXIS2_CALL 
 axis2_param_container_create (axis2_env_t **env)
 {
+    axis2_param_container_impl_t *param_container_impl = NULL;
+    
 	AXIS2_ENV_CHECK(env, NULL);
 	
-	axis2_param_container_impl_t *param_container_impl = 
-		(axis2_param_container_impl_t *) AXIS2_MALLOC((*env)->allocator,
-			sizeof(axis2_param_container_impl_t));
-	
+	param_container_impl = (axis2_param_container_impl_t *) AXIS2_MALLOC((*env)->
+        allocator, sizeof(axis2_param_container_impl_t));
 	
 	if(NULL == param_container_impl)
         AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL); 
 	
+    param_container_impl->params = NULL;
+    
+    param_container_impl->params = axis2_hash_make (env);
+	if(NULL == param_container_impl->params)
+    {
+        axis2_param_container_free(&(param_container_impl->param_container), env);
+		AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+        return AXIS2_FAILURE;        
+    }
+    
 	param_container_impl->param_container.ops = 
 		AXIS2_MALLOC ((*env)->allocator, sizeof(axis2_param_container_ops_t));
 	if(NULL == param_container_impl->param_container.ops)
     {
-        AXIS2_FREE((*env)->allocator, param_container_impl);
+        axis2_param_container_free(&(param_container_impl->param_container), env);
 		AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+        return AXIS2_FAILURE; 
     }
     
 	param_container_impl->param_container.ops->free =  axis2_param_container_free;
@@ -86,14 +97,6 @@
         axis2_param_container_get_params;
 	param_container_impl->param_container.ops->is_param_locked = 
         axis2_param_container_is_param_locked;
-				
-	param_container_impl->params = axis2_hash_make (env);
-	if(NULL == param_container_impl->params)
-    {
-        AXIS2_FREE((*env)->allocator, param_container_impl->param_container.ops);
-        AXIS2_FREE((*env)->allocator, param_container_impl);
-		AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);	
-    }
 	
 	return &(param_container_impl->param_container);
 }
@@ -104,15 +107,38 @@
 axis2_param_container_free (axis2_param_container_t *param_container,
 								axis2_env_t **env)
 {
+    axis2_param_container_impl_t *param_container_impl = NULL;
+    axis2_status_t status = AXIS2_SUCCESS;
+    
 	AXIS2_FUNC_PARAM_CHECK(param_container, env, AXIS2_FAILURE);
+    
+    param_container_impl = AXIS2_INTF_TO_IMPL(param_container);
+    
 	if(NULL != param_container->ops)
 		AXIS2_FREE((*env)->allocator, param_container->ops);
 	
-	if(NULL != AXIS2_INTF_TO_IMPL(param_container)->params)
-		axis2_hash_free(AXIS2_INTF_TO_IMPL(param_container)->params, env);
+	if(NULL != param_container_impl->params)
+    {
+        axis2_hash_index_t *hi = NULL;
+        void *val = NULL;
+        for (hi = axis2_hash_first (param_container_impl->params, env); hi;
+                 hi = axis2_hash_next ( env, hi))
+        {
+            struct axis2_param *param = NULL;
+            axis2_hash_this (hi, NULL, NULL, &val);
+            param = (struct axis2_param *) val;
+            if (param)
+               AXIS2_PARAM_FREE (param, env);
+            
+            val = NULL;
+            param = NULL;
+               
+        }
+		axis2_hash_free(param_container_impl->params, env);
+    }
 	
-    AXIS2_FREE((*env)->allocator, AXIS2_INTF_TO_IMPL(param_container));    
-    return AXIS2_SUCCESS;
+    AXIS2_FREE((*env)->allocator, param_container_impl);    
+    return status;
 }
 
 axis2_status_t AXIS2_CALL 
@@ -120,12 +146,18 @@
 					axis2_env_t **env, 
 					axis2_param_t *param)
 {
+    axis2_param_container_impl_t *param_container_impl = NULL;
+    
 	AXIS2_FUNC_PARAM_CHECK(param_container, env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, param, AXIS2_FAILURE);
 	
-	if (NULL == (AXIS2_INTF_TO_IMPL(param_container)->params))
+    param_container_impl = AXIS2_INTF_TO_IMPL(param_container);
+    
+	if (NULL == (param_container_impl->params))
 	{                    
-		AXIS2_INTF_TO_IMPL(param_container)->params = axis2_hash_make (env);
+		param_container_impl->params = axis2_hash_make (env);
+        if(!param_container_impl->params)
+            return AXIS2_FAILURE;
 	}	
 	axis2_hash_set (AXIS2_INTF_TO_IMPL(param_container)->params	
 		, AXIS2_PARAM_GET_NAME(param, env)
@@ -150,19 +182,27 @@
 axis2_param_container_get_params (axis2_param_container_t *param_container, 
 		axis2_env_t **env)
 {
-    axis2_hash_index_t *i = 0;
-    axis2_hash_t *hash_l = NULL;
+    axis2_param_container_impl_t *param_container_impl = NULL;
+    axis2_hash_index_t *index_i = 0;
+    axis2_status_t status = AXIS2_FAILURE;
     /* create an array list with the initial default capacity */
     axis2_array_list_t *array_list_l = axis2_array_list_create(env, 0);
     void *value = NULL;
     
-	AXIS2_FUNC_PARAM_CHECK(param_container, env, NULL);
+    AXIS2_FUNC_PARAM_CHECK(param_container, env, NULL);
     
-	hash_l = AXIS2_INTF_TO_IMPL(param_container)->params;
-    for (i = axis2_hash_first (hash_l, env); i; i = axis2_hash_next (env, i))
+    param_container_impl = AXIS2_INTF_TO_IMPL(param_container);
+   
+    for (index_i = axis2_hash_first (param_container_impl->params, env); index_i; 
+            index_i = axis2_hash_next (env, index_i))
     {
-        axis2_hash_this (i, NULL, NULL, &value);
-        AXIS2_ARRAY_LIST_ADD(array_list_l, env, value);
+        axis2_hash_this (index_i, NULL, NULL, &value);
+        status = AXIS2_ARRAY_LIST_ADD(array_list_l, env, value);
+        if(AXIS2_FAILURE == status)
+        {
+            AXIS2_ARRAY_LIST_FREE(array_list_l ,env);
+            return NULL;            
+        }
     }
     
 	return array_list_l;
@@ -178,9 +218,6 @@
 	axis2_param_t *param = (axis2_param_t *)
 		(axis2_hash_get (AXIS2_INTF_TO_IMPL(param_container)->params
 			, param_name, AXIS2_HASH_KEY_STRING));
-	
-    if(NULL == param)
-        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
 	
 	return AXIS2_PARAM_IS_LOCKED(param, env);
 }

Modified: webservices/axis2/trunk/c/modules/core/description/src/svc_grp.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/description/src/svc_grp.c?rev=355071&r1=355070&r2=355071&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/description/src/svc_grp.c (original)
+++ webservices/axis2/trunk/c/modules/core/description/src/svc_grp.c Thu Dec  8 03:20:49 2005
@@ -157,6 +157,7 @@
     {
         axis2_svc_grp_free(&(svc_grp_impl->svc_grp), env);
         AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+        return NULL;
     }
     
     svc_grp_impl->modules = axis2_array_list_create(env, 0);
@@ -164,6 +165,7 @@
     {
         axis2_svc_grp_free(&(svc_grp_impl->svc_grp), env);
         AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+        return NULL;
     }
     
     svc_grp_impl->module_list = axis2_array_list_create(env, 0);
@@ -171,6 +173,7 @@
     {
         axis2_svc_grp_free(&(svc_grp_impl->svc_grp), env);
         AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+        return NULL;
     }
     
     svc_grp_impl->svcs = axis2_hash_make (env);				
@@ -178,6 +181,7 @@
     {
         axis2_svc_grp_free(&(svc_grp_impl->svc_grp), env);
 	    AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+        return NULL;
     }
     
     svc_grp_impl->svc_grp.ops = AXIS2_MALLOC((*env)->allocator, 
@@ -186,6 +190,7 @@
 	{
         AXIS2_FREE((*env)->allocator, svc_grp_impl);
 		AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+        return NULL;
 	}
     
 	svc_grp_impl->svc_grp.ops->free = axis2_svc_grp_free;
@@ -217,6 +222,7 @@
                                          struct axis2_engine_config *engine_config)
 {
     axis2_svc_grp_impl_t *svc_grp_impl = NULL;
+    
     AXIS2_ENV_CHECK(env, NULL);
     AXIS2_PARAM_CHECK((*env)->error, engine_config, NULL);
     
@@ -240,33 +246,82 @@
     svc_grp_impl = AXIS2_INTF_TO_IMPL(svc_grp);
     
     if(NULL != svc_grp->ops)
+    {
 		AXIS2_FREE((*env)->allocator, svc_grp->ops);
+        svc_grp->ops = NULL;
+    }
     
 	if(NULL != svc_grp->param_container)
+    {
         AXIS2_PARAM_CONTAINER_FREE(svc_grp->param_container, 
             env);
+        svc_grp->param_container = NULL;
+    }
     
     if(NULL != svc_grp_impl->svc_grp_name)
-        AXIS2_FREE((*env)->allocator, AXIS2_INTF_TO_IMPL(svc_grp)->svc_grp_name);
+    {
+        AXIS2_FREE((*env)->allocator, svc_grp_impl->svc_grp_name);
+        svc_grp_impl->svc_grp_name = NULL;
+    }
     
     if(NULL != svc_grp_impl->svcs)
+    {
+        axis2_hash_index_t *hi = NULL;
+        void *val = NULL;
+        for (hi = axis2_hash_first (svc_grp_impl->svcs, env); hi;
+                 hi = axis2_hash_next ( env, hi))
+        {
+            struct axis2_svc *svc = NULL;
+            axis2_hash_this (hi, NULL, NULL, &val);
+            svc = (struct axis2_svc *) val;
+            if (svc)
+               AXIS2_SVC_FREE (svc, env);
+            
+            val = NULL;
+            svc = NULL;
+               
+        }
         axis2_hash_free(svc_grp_impl->svcs, env);
+        svc_grp_impl->svcs = NULL;
+    }
     
     if(NULL != svc_grp_impl->modules)
+    {
         AXIS2_ARRAY_LIST_FREE(svc_grp_impl->modules, env);
+        svc_grp_impl->modules = NULL;
+    }
     
     if(NULL != svc_grp_impl->module_list)
+    {
+        void *val = NULL;
+        int i = 0;
+        for (i = 0; i < AXIS2_ARRAY_LIST_SIZE(svc_grp_impl->module_list, env); i++)
+        {
+            struct axis2_module_desc *module_desc = NULL;
+            module_desc = AXIS2_ARRAY_LIST_GET(svc_grp_impl->module_list, env, i);
+            
+            module_desc = (struct axis2_module_desc *) val;
+            if (module_desc)
+               AXIS2_MODULE_DESC_FREE (module_desc, env);
+            
+            val = NULL;
+            module_desc = NULL;
+               
+        }
         AXIS2_ARRAY_LIST_FREE(svc_grp_impl->module_list, env);
-    /*
+        svc_grp_impl->module_list = NULL;
+    }
+    
     if(NULL != svc_grp_impl->parent)
     {
         AXIS2_ENGINE_CONFIG_FREE(svc_grp_impl->parent, env);
+        svc_grp_impl->parent = NULL;
     }
-    */
     
     if(NULL != svc_grp_impl) 
     {
 	    AXIS2_FREE((*env)->allocator, svc_grp_impl);
+        svc_grp_impl = NULL;
     }
 	return AXIS2_SUCCESS;
 }
@@ -276,13 +331,23 @@
                         axis2_env_t **env,
 		                axis2_char_t *name)
 {
+    axis2_svc_grp_impl_t *svc_grp_impl = NULL;
+    axis2_char_t *svc_grp_name_l = NULL;
+    
     AXIS2_FUNC_PARAM_CHECK(svc_grp, env, AXIS2_FAILURE);
 	
-	axis2_char_t *tempname = AXIS2_STRDUP(name, env);
-    if(NULL == tempname)
+    svc_grp_impl = AXIS2_INTF_TO_IMPL(svc_grp);
+    
+	svc_grp_name_l = AXIS2_STRDUP(name, env);
+    if(NULL == svc_grp_name_l)
+    {
         AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return AXIS2_FAILURE;
+    }
 	
-	AXIS2_INTF_TO_IMPL(svc_grp)->svc_grp_name = name;
+    if(svc_grp_impl->svc_grp_name)
+        AXIS2_FREE((*env)->allocator, svc_grp_impl->svc_grp_name);
+	svc_grp_impl->svc_grp_name = name;
     
 	return AXIS2_SUCCESS;
 }
@@ -310,18 +375,33 @@
 	
     svc_grp_impl = AXIS2_INTF_TO_IMPL(svc_grp);
     
-	axis2_hash_set (AXIS2_INTF_TO_IMPL(svc_grp)->svcs, 
-        AXIS2_SVC_GET_NAME(svc, env), sizeof(axis2_qname_t), svc);
+    if(!svc_grp_impl->svcs)
+    {
+        svc_grp_impl->svcs = axis2_hash_make(env);
+        if(!svc_grp_impl->svcs)
+            return AXIS2_FAILURE;
+    }
+	axis2_hash_set (svc_grp_impl->svcs, AXIS2_SVC_GET_NAME(svc, env), 
+        sizeof(axis2_qname_t), svc);
     
     handler_resolver = axis2_phase_resolver_create_with_config_and_svc(env,
         svc_grp_impl->parent, svc);
     
     if(NULL == handler_resolver)
+    {
+        /* Remove the previously added service */
+        axis2_hash_set(svc_grp_impl->svcs, AXIS2_SVC_GET_NAME(svc, env), sizeof(
+            axis2_qname_t), NULL);
+        
         return AXIS2_FAILURE;
+    }
 
     status = AXIS2_PHASE_RESOLVER_BUILD_CHAINS(handler_resolver, env);
     if(AXIS2_FAILURE == status)
     {
+        /* Remove the previously added service */
+        axis2_hash_set(svc_grp_impl->svcs, AXIS2_SVC_GET_NAME(svc, env), sizeof(
+            axis2_qname_t), NULL);
         AXIS2_PHASE_RESOLVER_FREE(handler_resolver, env);
         return AXIS2_FAILURE;
     }
@@ -329,11 +409,22 @@
     status = AXIS2_SVC_SET_LAST_UPDATE(svc, env);
     if(AXIS2_FAILURE == status)
     {
+        /* Remove the previously added service */
+        axis2_hash_set(svc_grp_impl->svcs, AXIS2_SVC_GET_NAME(svc, env), sizeof(
+            axis2_qname_t), NULL);
         AXIS2_PHASE_RESOLVER_FREE(handler_resolver, env);
         return status;
     }
     
-    status = AXIS2_SVC_SET_PARENT(svc, env, svc_grp);    
+    status = AXIS2_SVC_SET_PARENT(svc, env, svc_grp);
+    if(AXIS2_FAILURE == status)
+    {
+        /* Remove the previously added service */
+        axis2_hash_set(svc_grp_impl->svcs, AXIS2_SVC_GET_NAME(svc, env), sizeof(
+            axis2_qname_t), NULL);
+        AXIS2_PHASE_RESOLVER_FREE(handler_resolver, env);
+        return status;
+    }   
     
 	AXIS2_PHASE_RESOLVER_FREE(handler_resolver, env);
     return status;
@@ -368,8 +459,8 @@
 		                    axis2_qname_t* svc_name)
 {
     struct axis2_svc *svc = NULL;
+        
     AXIS2_FUNC_PARAM_CHECK(svc_grp, env, AXIS2_FAILURE);
-    
 	AXIS2_PARAM_CHECK((*env)->error, svc_name, AXIS2_FAILURE);
     
     svc = axis2_svc_grp_get_svc(svc_grp, env, svc_name);
@@ -393,9 +484,11 @@
     
     if(NULL == svc_grp->param_container)
     {
-	    AXIS2_ERROR_SET((*env)->error, 
-            AXIS2_ERROR_INVALID_STATE_PARAM_CONTAINER, AXIS2_FAILURE);
-        return AXIS2_FAILURE;
+        svc_grp->param_container = axis2_param_container_create(env);
+        if(!svc_grp->param_container)
+        {
+            return AXIS2_FAILURE;
+        }
     }
     
     return AXIS2_PARAM_CONTAINER_ADD_PARAM(svc_grp->param_container, env, param);
@@ -410,8 +503,7 @@
     AXIS2_PARAM_CHECK((*env)->error, name, NULL);
 	if(NULL == svc_grp->param_container)
     {
-	    AXIS2_ERROR_SET((*env)->error
-        , AXIS2_ERROR_INVALID_STATE_PARAM_CONTAINER, NULL);
+	    AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_INVALID_STATE_PARAM_CONTAINER, NULL);
         return NULL;
     }
 	
@@ -470,6 +562,7 @@
                                 axis2_qname_t *module_qname)
 {
     AXIS2_FUNC_PARAM_CHECK(svc_grp, env, AXIS2_FAILURE);
+    
     return AXIS2_ARRAY_LIST_ADD(AXIS2_INTF_TO_IMPL(svc_grp)->modules, env, 
         module_qname);
 }

Modified: webservices/axis2/trunk/c/modules/core/engine/src/engine_config.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/engine/src/engine_config.c?rev=355071&r1=355070&r2=355071&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/engine/src/engine_config.c (original)
+++ webservices/axis2/trunk/c/modules/core/engine/src/engine_config.c Thu Dec  8 03:20:49 2005
@@ -289,6 +289,7 @@
 	{
         axis2_engine_config_free(&(config_impl->engine_config), env);
 		AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+        return NULL;
 	}
     
     config_impl->transports_in = axis2_hash_make(env);		
@@ -296,6 +297,7 @@
 	{
         axis2_engine_config_free(&(config_impl->engine_config), env);
 		AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+        return NULL;
 	}
 
 	config_impl->transports_out = axis2_hash_make(env);		
@@ -303,6 +305,7 @@
 	{
         axis2_engine_config_free(&(config_impl->engine_config), env);
 		AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+        return NULL;
 	}
     
     config_impl->modules = axis2_hash_make(env);		
@@ -310,6 +313,7 @@
 	{
         axis2_engine_config_free(&(config_impl->engine_config), env);
 		AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+        return NULL;
 	}
     
     config_impl->engaged_modules = axis2_array_list_create(env, 0);		
@@ -317,6 +321,7 @@
 	{
         axis2_engine_config_free(&(config_impl->engine_config), env);
 		AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+        return NULL;
 	}
     
     config_impl->inphases_upto_and_including_post_dispatch = 
@@ -325,7 +330,7 @@
 	{
         axis2_engine_config_free(&(config_impl->engine_config), env);
 		AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
-        return AXIS2_FAILURE;
+        return NULL;
 	}
     else
     {
@@ -333,29 +338,28 @@
         if(NULL == phase)
         {
             axis2_engine_config_free(&(config_impl->engine_config), env);
-            return AXIS2_FAILURE;
+            return NULL;
         }
         status = AXIS2_ARRAY_LIST_ADD(config_impl->
             inphases_upto_and_including_post_dispatch, env, phase);
         if(AXIS2_FAILURE == status)
         {
             axis2_engine_config_free(&(config_impl->engine_config), env);
-            return AXIS2_FAILURE;
+            return NULL;
             
         }
         phase = axis2_phase_create(env, AXIS2_PHASE_PRE_DISPATCH);
         if(NULL == phase)
         {
             axis2_engine_config_free(&(config_impl->engine_config), env);
-            return AXIS2_FAILURE;
+            return NULL;
         }
         status = AXIS2_ARRAY_LIST_ADD(config_impl->
             inphases_upto_and_including_post_dispatch, env, phase);
         if(AXIS2_FAILURE == status)
         {
             axis2_engine_config_free(&(config_impl->engine_config), env);
-            return AXIS2_FAILURE;
-            
+            return NULL;   
         }
     }
     
@@ -364,6 +368,7 @@
 	{
         axis2_engine_config_free(&(config_impl->engine_config), env);
 		AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+        return NULL;
 	}
     
     config_impl->in_faultphases = axis2_array_list_create(env, 0);		
@@ -371,6 +376,7 @@
 	{
         axis2_engine_config_free(&(config_impl->engine_config), env);
 		AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+        return NULL;
 	}
     
     config_impl->out_faultphases = axis2_array_list_create(env, 0);		
@@ -378,20 +384,15 @@
 	{
         axis2_engine_config_free(&(config_impl->engine_config), env);
 		AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, NULL);
+        return NULL;
 	}
 	
-    config_impl->all_svcs = axis2_hash_make(env);
-    if(NULL == config_impl->all_svcs)
-    {
-        axis2_engine_config_free(&(config_impl->engine_config), env);
-        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
-    }
-    
     config_impl->msg_recvs = axis2_hash_make(env);
     if(NULL == config_impl->msg_recvs)
     {
         axis2_engine_config_free(&(config_impl->engine_config), env);
         AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
     } 
 
     config_impl->faulty_svcs = axis2_hash_make(env);
@@ -399,6 +400,7 @@
     {
         axis2_engine_config_free(&(config_impl->engine_config), env);
         AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
     } 
 
     config_impl->faulty_modules = axis2_hash_make(env);
@@ -406,6 +408,7 @@
     {
         axis2_engine_config_free(&(config_impl->engine_config), env);
         AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
     } 
     
     config_impl->engine_config.ops = AXIS2_MALLOC((*env)->allocator,
@@ -414,6 +417,7 @@
     {
         axis2_engine_config_free(&(config_impl->engine_config), env);
         AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
     }
     
 	config_impl->engine_config.ops->free = axis2_engine_config_free;
@@ -524,7 +528,7 @@
                             axis2_env_t **env)
 {
     axis2_engine_config_impl_t *config_impl = NULL;
-    axis2_status_t status = AXIS2_FAILURE;
+    axis2_status_t status = AXIS2_SUCCESS;
     
 	AXIS2_FUNC_PARAM_CHECK(engine_config, env, AXIS2_FAILURE);
     config_impl = AXIS2_INTF_TO_IMPL(engine_config);
@@ -551,12 +555,9 @@
             struct axis2_svc_grp *svc_grp = NULL;
             axis2_hash_this (hi, NULL, NULL, &val);
             svc_grp = (struct axis2_svc_grp *) val;
-            if (val)
-               status = AXIS2_SVC_GRP_FREE (svc_grp, env);
-            else
-            {
-               status = AXIS2_FAILURE;
-            }
+            if (svc_grp)
+               AXIS2_SVC_GRP_FREE (svc_grp, env);
+            
             val = NULL;
             svc_grp = NULL;
                
@@ -567,12 +568,42 @@
     
     if(config_impl->transports_in)
     {
+        axis2_hash_index_t *hi = NULL;
+        void *val = NULL;
+        for (hi = axis2_hash_first (config_impl->transports_in, env); hi;
+                 hi = axis2_hash_next ( env, hi))
+        {
+            struct axis2_transport_in_desc *transport_in = NULL;
+            axis2_hash_this (hi, NULL, NULL, &val);
+            transport_in = (struct axis2_transport_in_desc *) val;
+            if (transport_in)
+               AXIS2_TRANSPORT_IN_DESC_FREE (transport_in, env);
+            
+            val = NULL;
+            transport_in = NULL;
+               
+        }
         axis2_hash_free(config_impl->transports_in, env);
         config_impl->transports_in = NULL;
     }
     
     if(config_impl->transports_out)
     {
+        axis2_hash_index_t *hi = NULL;
+        void *val = NULL;
+        for (hi = axis2_hash_first (config_impl->transports_out, env); hi;
+                 hi = axis2_hash_next ( env, hi))
+        {
+            struct axis2_transport_out_desc *transport_out = NULL;
+            axis2_hash_this (hi, NULL, NULL, &val);
+            transport_out = (struct axis2_transport_out_desc *) val;
+            if (transport_out)
+                AXIS2_TRANSPORT_IN_DESC_FREE (transport_out, env);
+            
+            val = NULL;
+            transport_out = NULL;
+               
+        }
         axis2_hash_free(config_impl->transports_out, env);
         config_impl->transports_out = NULL;
     }
@@ -591,24 +622,86 @@
     
     if(config_impl->outphases)
     {
+        void *val = NULL;
+        int i = 0;
+        for (i = 0; i < AXIS2_ARRAY_LIST_SIZE(config_impl->outphases, env); i++)
+        {
+            struct axis2_phase *phase = NULL;
+            phase = AXIS2_ARRAY_LIST_GET(config_impl->outphases, env, i);
+            
+            phase = (struct axis2_phase *) val;
+            if (phase)
+               AXIS2_PHASE_FREE (phase, env);
+            
+            val = NULL;
+            phase = NULL;
+               
+        }
         AXIS2_ARRAY_LIST_FREE(config_impl->outphases, env);
         config_impl->outphases = NULL;
     }
     
     if(config_impl->in_faultphases)
     {
+        void *val = NULL;
+        int i = 0;
+        for (i = 0; i < AXIS2_ARRAY_LIST_SIZE(config_impl->in_faultphases, env); i++)
+        {
+            struct axis2_phase *phase = NULL;
+            phase = AXIS2_ARRAY_LIST_GET(config_impl->in_faultphases, env, i);
+            
+            phase = (struct axis2_phase *) val;
+            if (phase)
+               AXIS2_PHASE_FREE (phase, env);
+            
+            val = NULL;
+            phase = NULL;
+               
+        }
         AXIS2_ARRAY_LIST_FREE(config_impl->in_faultphases, env);
         config_impl->in_faultphases = NULL;
     }
     
     if(config_impl->out_faultphases)
     {
+        void *val = NULL;
+        int i = 0;
+        for (i = 0; i < AXIS2_ARRAY_LIST_SIZE(config_impl->out_faultphases, env); i++)
+        {
+            struct axis2_phase *phase = NULL;
+            phase = AXIS2_ARRAY_LIST_GET(config_impl->out_faultphases, env, i);
+            
+            phase = (struct axis2_phase *) val;
+            if (phase)
+               AXIS2_PHASE_FREE (phase, env);
+            
+            val = NULL;
+            phase = NULL;
+               
+        }
         AXIS2_ARRAY_LIST_FREE(config_impl->out_faultphases, env);
         config_impl->out_faultphases = NULL;
     }
     
     if(config_impl->inphases_upto_and_including_post_dispatch)
     {
+        void *val = NULL;
+        int i = 0;
+        for (i = 0; i < AXIS2_ARRAY_LIST_SIZE(config_impl->
+                inphases_upto_and_including_post_dispatch, env); i++)
+        {
+            struct axis2_phase *phase = NULL;
+            phase = AXIS2_ARRAY_LIST_GET(config_impl->
+                inphases_upto_and_including_post_dispatch, env, i);
+            
+            phase = (struct axis2_phase *) val;
+            if (phase)
+               AXIS2_PHASE_FREE (phase, env);
+            
+            val = NULL;
+            phase = NULL;
+               
+        }
         AXIS2_ARRAY_LIST_FREE(config_impl->
             inphases_upto_and_including_post_dispatch, env);
         config_impl->inphases_upto_and_including_post_dispatch = NULL;
@@ -640,7 +733,7 @@
 	AXIS2_FREE((*env)->allocator, config_impl);
     config_impl = NULL;
     
-	return AXIS2_SUCCESS;
+	return status;
 }
 
 axis2_status_t AXIS2_CALL 
@@ -665,12 +758,19 @@
     
     config_impl = AXIS2_INTF_TO_IMPL(engine_config);
     svcs = AXIS2_SVC_GRP_GET_SVCS(svc_grp, env);
+    if(!config_impl->all_svcs)
+    {
+        config_impl->all_svcs = axis2_hash_make(env);
+        if(!config_impl->all_svcs)
+            return AXIS2_FAILURE;
+    }
     index_i = axis2_hash_first (svcs, env);
-    do
+    while(index_i)
     {
         axis2_hash_this (index_i, NULL, NULL, &value);
         desc = (struct axis2_svc *) value;
         svc_name = AXIS2_QNAME_GET_LOCALPART(AXIS2_SVC_GET_NAME(desc, env), env);
+        
         svc_name2 = axis2_hash_get(config_impl->all_svcs, svc_name, 
                 AXIS2_HASH_KEY_STRING);
         if(NULL != svc_name2)
@@ -680,7 +780,7 @@
             return AXIS2_FAILURE;            
         }
         index_i = axis2_hash_next(env, index_i);
-    }while(NULL != index_i);
+    }
     
     if(svcs)
     {
@@ -690,7 +790,7 @@
     
     svcs = AXIS2_SVC_GRP_GET_SVCS(svc_grp, env);
     index_i = axis2_hash_first (svcs, env);
-    do
+    while(NULL != index_i)
     {
         axis2_hash_this (index_i, NULL, NULL, &value);
         desc = (struct axis2_svc *) value;
@@ -699,9 +799,9 @@
             desc);
         /* notifyObservers(AxisEvent.SERVICE_DEPLOY ,description); */
         index_i = axis2_hash_next(env, index_i);
-    }while(NULL != index_i);
+    }
    
-    do
+    while(i < AXIS2_ARRAY_LIST_SIZE(config_impl->engaged_modules, env))
     {
         
         module_desc = (axis2_qname_t *) AXIS2_ARRAY_LIST_GET(config_impl->
@@ -711,10 +811,16 @@
         {
             return AXIS2_FAILURE;
         }
-        i++;
-        
-    }while(i > AXIS2_ARRAY_LIST_SIZE(config_impl->engaged_modules, env));
+        i++;    
+    }
+
     svc_grp_name = AXIS2_SVC_GRP_GET_NAME(svc_grp, env);
+    if(!config_impl->svc_grps)
+    {
+        config_impl->svc_grps = axis2_hash_make(env);
+        if(!config_impl->svc_grps)
+            return AXIS2_FAILURE;
+    }
     axis2_hash_set (config_impl->svc_grps, svc_grp_name, 
         AXIS2_HASH_KEY_STRING, svc_grp);
 	
@@ -726,12 +832,18 @@
                                     axis2_env_t **env,
 		                            axis2_char_t *svc_grp_name)
 {
+    axis2_engine_config_impl_t *config_impl = NULL;
 	AXIS2_FUNC_PARAM_CHECK(engine_config, env, NULL);
 	AXIS2_PARAM_CHECK((*env)->error, svc_grp_name, NULL);
     
-	return (struct axis2_svc_grp *) (axis2_hash_get (
-        AXIS2_INTF_TO_IMPL(engine_config)->svc_grps, svc_grp_name, 
-            AXIS2_HASH_KEY_STRING));
+    config_impl = AXIS2_INTF_TO_IMPL(engine_config);
+    if(!config_impl->svc_grps)
+    {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_INVALID_STATE_ENGINE_CONFIG, NULL);
+        return NULL;
+    }
+	return (struct axis2_svc_grp *) (axis2_hash_get (config_impl->svc_grps, 
+            svc_grp_name, AXIS2_HASH_KEY_STRING));
 }
 
 axis2_hash_t * AXIS2_CALL
@@ -773,7 +885,10 @@
     }
 	
 	svc_grp_name = AXIS2_QNAME_GET_LOCALPART(svc_grp_qname, env);
-	
+	if(!svc_grp_name)
+    {
+        return AXIS2_FAILURE;
+    }
 	status = AXIS2_SVC_GRP_SET_NAME(svc_grp, env, svc_grp_name);
     if(AXIS2_FAILURE == status)
     {
@@ -921,6 +1036,12 @@
     
     config_impl = AXIS2_INTF_TO_IMPL(engine_config);
     
+    if(!config_impl->transports_in)
+    {
+        config_impl->transports_in = (axis2_hash_t *) axis2_hash_make(env);
+        if(!transports_in)
+            return AXIS2_FAILURE;
+    }
     axis2_hash_set(config_impl->transports_in,
         AXIS2_TRANSPORT_IN_DESC_GET_QNAME(transport, env), sizeof(axis2_qname_t), 
             transport);
@@ -962,6 +1083,13 @@
     
     config_impl = AXIS2_INTF_TO_IMPL(engine_config);
     
+    if(!config_impl->transports_in)
+    {
+        config_impl->transports_out = axis2_hash_make(env);
+        if(!transports_out)
+            return AXIS2_FAILURE;
+    }
+    
     axis2_hash_set(config_impl->transports_out,
         AXIS2_TRANSPORT_OUT_DESC_GET_QNAME(transport, env),
             sizeof(axis2_qname_t), transport);
@@ -990,6 +1118,7 @@
 {
     AXIS2_FUNC_PARAM_CHECK(engine_config, env, NULL);
     AXIS2_PARAM_CHECK((*env)->error, qname, NULL);
+    
     return (struct axis2_module_desc *) axis2_hash_get(AXIS2_INTF_TO_IMPL(
         engine_config)->modules, qname, sizeof(axis2_qname_t));
 }
@@ -1120,13 +1249,13 @@
     config_impl = AXIS2_INTF_TO_IMPL(engine_config);
     sgs = axis2_engine_config_get_svc_grps(engine_config, env);
     index_i = axis2_hash_first(sgs, env);
-    do
+    while(NULL != index_i)
     {
         axis2_hash_this(index_i, NULL, NULL, &value);
         axis_svc_grp = (struct axis2_svc_grp *) value;
         svcs = AXIS2_SVC_GRP_GET_SVCS(axis_svc_grp, env);
         index_j = axis2_hash_first(svcs, env);
-        do
+        while(NULL != index_j)
         {
             axis2_hash_this(index_j, NULL, NULL, &value2);
             svc = (struct axis2_svc *) value2;
@@ -1135,10 +1264,10 @@
                 AXIS2_HASH_KEY_STRING, svc);    
                             
             index_j = axis2_hash_next(env, index_j);
-        }while(NULL != index_j);
+        }
         
         index_i = axis2_hash_next(env, index_i);
-    }while(NULL != index_i);
+    }
     return config_impl->all_svcs;
 }
 
@@ -1169,6 +1298,7 @@
                                     struct axis2_phases_info *phases_info) 
 {
     axis2_engine_config_impl_t *config_impl = NULL;
+    
     AXIS2_FUNC_PARAM_CHECK(engine_config, env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, phases_info, AXIS2_FAILURE);
     
@@ -1187,12 +1317,21 @@
                                     axis2_char_t *key,
                                     struct axis2_msg_recv *msg_recv) 
 {
+    axis2_engine_config_impl_t *config_impl = NULL;
+    
     AXIS2_FUNC_PARAM_CHECK(engine_config, env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, key, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, msg_recv, AXIS2_FAILURE);
     
-    axis2_hash_set(AXIS2_INTF_TO_IMPL(engine_config)->msg_recvs, key, 
-        AXIS2_HASH_KEY_STRING, msg_recv);
+    config_impl = AXIS2_INTF_TO_IMPL(engine_config);
+    
+    if(!config_impl->msg_recvs)
+    {
+        config_impl->msg_recvs = axis2_hash_make(env);
+        if(!config_impl->msg_recvs)
+            return AXIS2_FAILURE;
+    }
+    axis2_hash_set(config_impl->msg_recvs, key, AXIS2_HASH_KEY_STRING, msg_recv);
     return AXIS2_SUCCESS;
 }
 
@@ -1295,16 +1434,26 @@
                                 axis2_env_t **env,
                                 struct axis2_module_desc *module) 
 {
+    axis2_engine_config_impl_t *config_impl = NULL;
+    
     axis2_status_t status = AXIS2_FAILURE;
     AXIS2_FUNC_PARAM_CHECK(engine_config, env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, module, AXIS2_FAILURE);
     
+    config_impl = AXIS2_INTF_TO_IMPL(engine_config);
+    
     status = AXIS2_MODULE_DESC_SET_PARENT(module, env, engine_config);
     if(AXIS2_FAILURE == status)
     {
         return status;
     }
-    axis2_hash_set(AXIS2_INTF_TO_IMPL(engine_config)->modules, AXIS2_MODULE_DESC_GET_NAME(module, env), 
+    if(!config_impl->modules)
+    {
+        config_impl->modules = axis2_hash_make(env);
+        if(!config_impl->modules)
+            return AXIS2_FAILURE;
+    }
+    axis2_hash_set(config_impl->modules, AXIS2_MODULE_DESC_GET_NAME(module, env), 
         sizeof(axis2_qname_t), module);
     
     return AXIS2_SUCCESS;

Modified: webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_element.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_element.c?rev=355071&r1=355070&r2=355071&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_element.c (original)
+++ webservices/axis2/trunk/c/modules/xml/om/src/axis2_om_element.c Thu Dec  8 03:20:49 2005
@@ -586,11 +586,7 @@
                axis2_hash_this (hi, NULL, NULL, &val);
 
                 if (val)
-                status = AXIS2_OM_NAMESPACE_FREE ((axis2_om_namespace_t *)val, env);
-                else
-                {
-                status = AXIS2_FAILURE;
-                }
+                AXIS2_OM_NAMESPACE_FREE ((axis2_om_namespace_t *)val, env);
                 val = NULL;
                    
             }