AXIS2_EXTERN axiom_node_t* AXIS2_CALL service_admin_util_serialize_param(axutil_env_t *env, axutil_param_t *param) { axis2_char_t *name = NULL; axis2_char_t *value = NULL; void *param_value = NULL; axiom_node_t *param_node = NULL; axiom_element_t *param_ele = NULL; axiom_attribute_t *attri = NULL; name = axutil_param_get_name(param, env); param_value = axutil_param_get_value(param, env); if(name && axutil_strcmp(name, "ServiceClass") ==0) { return NULL; }else { value = (axis2_char_t*)param_value; } param_ele = axiom_element_create(env, NULL, "parameter", NULL, ¶m_node); attri = axiom_attribute_create(env, "name", name, NULL); axiom_element_add_attribute(param_ele, env, attri, param_node); if(value) axiom_element_set_text(param_ele, env, value, param_node); return param_node; }
void AXIS2_CALL axutil_param_free( axutil_param_t *param, const axutil_env_t *env) { void *param_value = NULL; axis2_char_t *param_name = NULL; param_value = axutil_param_get_value(param, env); if(param_value) { if(param && param->value_free) { param->value_free(param_value, env); } else /* we assume that param value is axis2_char_t* */ { AXIS2_FREE(env->allocator, param_value); } } if(param->attrs) { axutil_hash_index_t *i = NULL; void *v = NULL; for(i = axutil_hash_first(param->attrs, env); i; i = axutil_hash_next(env, i)) { axutil_hash_this(i, NULL, NULL, &v); axutil_generic_obj_free(v, env); } axutil_hash_free(param->attrs, env); } if(param->value_list) { int i = 0, size = 0; size = axutil_array_list_size(param->value_list, env); for(i = 0; i < size; i++) { axutil_param_t *param_l = NULL; param_l = (axutil_param_t *)axutil_array_list_get(param->value_list, env, i); if(param_l) { axutil_param_free(param_l, env); } } axutil_array_list_free(param->value_list, env); } param_name = axutil_param_get_name(param, env); AXIS2_FREE(env->allocator, param_name); AXIS2_FREE(env->allocator, param); return; }
AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_svc_add_param( axis2_svc_t * svc, const axutil_env_t * env, axutil_param_t * param) { axis2_char_t *paramname = NULL; const axis2_char_t *svcname = axis2_svc_get_name(svc, env); AXIS2_PARAM_CHECK(env->error, param, AXIS2_FAILURE); paramname = axutil_param_get_name(param, env); if(axis2_svc_is_param_locked(svc, env, axutil_param_get_name(param, env))) { AXIS2_ERROR_SET(env->error, AXIS2_ERROR_PARAMETER_LOCKED_CANNOT_OVERRIDE, AXIS2_FAILURE); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Parameter %s is locked for service %s", paramname, svcname); return AXIS2_FAILURE; } return axutil_param_container_add_param(svc->param_container, env, param); }
AXIS2_EXTERN axis2_status_t AXIS2_CALL axis2_handler_desc_add_param( axis2_handler_desc_t * handler_desc, const axutil_env_t * env, axutil_param_t * param) { const axutil_string_t *str_name = axis2_handler_desc_get_name(handler_desc, env); const axis2_char_t *name = axutil_string_get_buffer(str_name, env); axis2_char_t *param_name = axutil_param_get_name(param, env); if(axutil_param_container_is_param_locked(handler_desc->parent, env, param_name)) { AXIS2_ERROR_SET(env->error, AXIS2_ERROR_PARAMETER_LOCKED_CANNOT_OVERRIDE, AXIS2_FAILURE); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Parameter %s is locked for handler %s", param_name, name); return AXIS2_FAILURE; } return axutil_param_container_add_param(handler_desc->param_container, env, param); }