From 950c199823fa924aadcabd05d581384bfb71544d Mon Sep 17 00:00:00 2001 From: nandika Date: Tue, 16 Feb 2010 12:09:36 +0000 Subject: is_module_engaged method added git-svn-id: http://svn.apache.org/repos/asf/axis/axis2/c/core/trunk@910493 13f79535-47bb-0310-9956-ffa450edef68 --- include/axis2_op.h | 13 +++++++++++++ include/axis2_svc_grp.h | 14 ++++++++++++++ src/core/description/op.c | 40 ++++++++++++++++++++++++++++++++++++++++ src/core/description/svc_grp.c | 25 +++++++++++++++++++++++++ 4 files changed, 92 insertions(+) diff --git a/include/axis2_op.h b/include/axis2_op.h index 27d3520..32ae9b2 100644 --- a/include/axis2_op.h +++ b/include/axis2_op.h @@ -717,6 +717,19 @@ extern "C" const axis2_op_t * op, const axutil_env_t * env); + /** + * Checks whether this operation is engaged to module + * @param op point to the operation + * @param env pointer to environment struct + * @param mod_qname module qname + */ + AXIS2_EXTERN axis2_bool_t AXIS2_CALL + axis2_op_is_module_engaged( + const axis2_op_t *op, + const axutil_env_t *env, + const axutil_qname_t *mod_qname); + + /** @} */ #ifdef __cplusplus } diff --git a/include/axis2_svc_grp.h b/include/axis2_svc_grp.h index 4f05296..1bf28ac 100644 --- a/include/axis2_svc_grp.h +++ b/include/axis2_svc_grp.h @@ -362,6 +362,20 @@ extern "C" const axis2_svc_grp_t * svc_grp, const axutil_env_t * env); + /** + * Checks whether a given module is engaged to the service group + * @param svc_grp point to service group + * @param env pointer to the environment struct + * @return pointer to base description struct + */ + + AXIS2_EXTERN axis2_bool_t AXIS2_CALL + axis2_svc_grp_is_module_engaged( + const axis2_svc_grp_t *svc_grp, + const axutil_env_t *env, + const axutil_qname_t *qname); + + #ifdef __cplusplus } #endif diff --git a/src/core/description/op.c b/src/core/description/op.c index 0cf926c..75affce 100644 --- a/src/core/description/op.c +++ b/src/core/description/op.c @@ -1381,3 +1381,43 @@ axis2_op_get_base( return op->base; } +AXIS2_EXTERN axis2_bool_t AXIS2_CALL +axis2_op_is_module_engaged( + const axis2_op_t *op, + const axutil_env_t *env, + const axutil_qname_t *mod_qname) +{ + int index = 0; + int size = 0; + axutil_array_list_t *collection_module = NULL; + axis2_module_desc_t *module_desc = NULL; + axis2_char_t *opname = NULL; + axis2_char_t *modname = NULL; + + opname = axutil_qname_get_localpart(axis2_op_get_qname(op, env), env); + collection_module = op->engaged_module_list; + if(collection_module) + { + size = axutil_array_list_size(collection_module, env); + } + for(index = 0; index < size; index++) + { + const axutil_qname_t *qname1 = NULL; + + module_desc = (axis2_module_desc_t *)axutil_array_list_get(collection_module, env, index); + if(!module_desc) + { + AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, + "Retrieving a module failed from operation %s engaged module" + " list", opname); + return AXIS2_FAILURE; + } + qname1 = axis2_module_desc_get_qname(module_desc, env); + if(axutil_qname_equals(qname1, env, mod_qname)) + { + return AXIS2_TRUE; + } + } + return AXIS2_FALSE; +} + diff --git a/src/core/description/svc_grp.c b/src/core/description/svc_grp.c index 157b77a..c69811c 100644 --- a/src/core/description/svc_grp.c +++ b/src/core/description/svc_grp.c @@ -598,3 +598,28 @@ axis2_svc_grp_get_base( return svc_grp->base; } +AXIS2_EXTERN axis2_bool_t AXIS2_CALL +axis2_svc_grp_is_module_engaged( + const axis2_svc_grp_t *svc_grp, + const axutil_env_t *env, + const axutil_qname_t *module_name) +{ + int i = 0; + axutil_qname_t *modu = NULL; + axis2_char_t *modu_local = NULL; + axis2_char_t *module_name_local = NULL; + int size = 0; + + size = axutil_array_list_size(svc_grp->module_qname_list, env); + for(i = 0; size; i++) + { + modu = axutil_array_list_get(svc_grp->module_qname_list, env, i); + modu_local = axutil_qname_get_localpart(modu, env); + module_name_local = axutil_qname_get_localpart(module_name, env); + if(!axutil_strcmp(modu_local, module_name_local)) + { + return AXIS2_TRUE; + } + } + return AXIS2_FALSE; +} -- cgit v1.1-32-gdbae