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;
}