summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar nandika2010-02-16 12:09:36 +0000
committerGravatar nandika2010-02-16 12:09:36 +0000
commit950c199823fa924aadcabd05d581384bfb71544d (patch)
treecb602064d3fa8e8d3b5ee8107af473a0963c9159
parentb1d21c3f63bfd09d642aa1cc56bfbc4784e4e6c5 (diff)
downloadaxis2c-950c199823fa924aadcabd05d581384bfb71544d.tar.gz
axis2c-950c199823fa924aadcabd05d581384bfb71544d.tar.bz2
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
-rw-r--r--include/axis2_op.h13
-rw-r--r--include/axis2_svc_grp.h14
-rw-r--r--src/core/description/op.c40
-rw-r--r--src/core/description/svc_grp.c25
4 files changed, 92 insertions, 0 deletions
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;
+}