AXIS2_EXTERN void AXIS2_CALL axis2_arch_file_data_free( axis2_arch_file_data_t * arch_file_data, const axutil_env_t * env) { if (arch_file_data->file) { axutil_file_free(arch_file_data->file, env); } if (arch_file_data->msg_recv) { AXIS2_FREE(env->allocator, arch_file_data->msg_recv); } if (arch_file_data->module_name) { AXIS2_FREE(env->allocator, arch_file_data->module_name); } if (arch_file_data->module_dll_name) { AXIS2_FREE(env->allocator, arch_file_data->module_dll_name); } if (arch_file_data->name) { AXIS2_FREE(env->allocator, arch_file_data->name); } if (arch_file_data->svc_map) { axutil_hash_index_t *hi = NULL; void *val = NULL; for (hi = axutil_hash_first(arch_file_data->svc_map, env); hi; hi = axutil_hash_next(env, hi)) { axis2_svc_t *svc = NULL; axutil_hash_this(hi, NULL, NULL, &val); svc = (axis2_svc_t *) val; if (svc) { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "Service name :%s", axis2_svc_get_name(svc, env)); axis2_svc_free(svc, env); } } axutil_hash_free(arch_file_data->svc_map, env); } if (arch_file_data->deployable_svcs) { axutil_array_list_free(arch_file_data->deployable_svcs, env); } if (arch_file_data) { AXIS2_FREE(env->allocator, arch_file_data); } return; }
/** * Folder name could be a repository modules or services folder. If it is modules * folder then current_info_list contain the list of axis2 files corresponding to * the modules within it. For services folder it should be understood similarly. */ static axis2_status_t axis2_repos_listener_search( axis2_repos_listener_t * repos_listener, const axutil_env_t * env, axis2_char_t * folder_name, int type) { int size = 0; int i = 0; axutil_array_list_t *current_info_list = NULL; axis2_status_t status = AXIS2_FAILURE; AXIS2_PARAM_CHECK(env->error, repos_listener, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, folder_name, AXIS2_FAILURE); current_info_list = axutil_dir_handler_list_service_or_module_dirs(env, folder_name); if(!current_info_list) { axis2_status_t status_code = AXIS2_FAILURE; status_code = AXIS2_ERROR_GET_STATUS_CODE(env->error); if(AXIS2_SUCCESS != status) { return status; } AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "No %s in the folder.", folder_name); return AXIS2_SUCCESS; } size = axutil_array_list_size(current_info_list, env); for(i = 0; i < size; i++) /* Loop until empty */ { axutil_file_t *file = NULL; file = axutil_array_list_get(current_info_list, env, i); status = axis2_ws_info_list_add_ws_info_item(repos_listener->info_list, env, file, type); if(AXIS2_SUCCESS != status) { int size_j = 0; int j = 0; axis2_char_t* file_name = axutil_file_get_name(file, env); size_j = axutil_array_list_size(current_info_list, env); for(j = 0; j < size_j; j++) { axutil_file_t *del_file = NULL; del_file = axutil_array_list_get(current_info_list, env, j); axutil_file_free(del_file, env); } axutil_array_list_free(current_info_list, env); current_info_list = NULL; AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Adding file %s to ws info list failed", file_name); return status; } } for(i = 0; i < size; i++) { axutil_file_t *del_file = NULL; del_file = axutil_array_list_get(current_info_list, env, i); axutil_file_free(del_file, env); } axutil_array_list_free(current_info_list, env); current_info_list = NULL; return AXIS2_SUCCESS; }