You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by na...@apache.org on 2010/02/12 09:02:28 UTC

svn commit: r909284 - /webservices/axis2/trunk/c/util/src/param_container.c

Author: nandika
Date: Fri Feb 12 08:02:27 2010
New Revision: 909284

URL: http://svn.apache.org/viewvc?rev=909284&view=rev
Log:
added method delete_param to param container

Modified:
    webservices/axis2/trunk/c/util/src/param_container.c

Modified: webservices/axis2/trunk/c/util/src/param_container.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/util/src/param_container.c?rev=909284&r1=909283&r2=909284&view=diff
==============================================================================
--- webservices/axis2/trunk/c/util/src/param_container.c (original)
+++ webservices/axis2/trunk/c/util/src/param_container.c Fri Feb 12 08:02:27 2010
@@ -156,7 +156,29 @@
     axutil_param_container_t *param_container,
     const axutil_env_t *env)
 {
-    return param_container->params_list;
+	if(param_container->params_list)
+	{
+		return param_container->params_list;
+	}else
+	{
+		axutil_hash_index_t *hi = NULL;
+        void *val = NULL;
+		
+		param_container->params_list = axutil_array_list_create(env, 0);
+		
+        for(hi = axutil_hash_first(param_container->params, env); hi; hi
+            = axutil_hash_next(env, hi))
+        {
+            axutil_param_t *param = NULL;
+			axutil_hash_this(hi, NULL, NULL, &val);
+            param = (axutil_param_t *)val;
+            if(param)
+            {
+				axutil_array_list_add(param_container->params_list, env, param);               
+            }
+        }
+	}
+	return param_container->params_list;
 }
 
 AXIS2_EXTERN axis2_bool_t AXIS2_CALL
@@ -176,3 +198,31 @@
     }
     return axutil_param_is_locked(param, env);
 }
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+axutil_param_container_delete_param(
+	axutil_param_container_t *param_container,
+	const axutil_env_t *env,
+	const axis2_char_t *param_name)
+{
+	axutil_param_t *param = NULL;
+	
+	if(!param_name)
+	{
+		AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "The requested parameter does not exist");
+		return AXIS2_FAILURE;
+	}
+	param = axutil_hash_get(param_container->params, param_name, AXIS2_HASH_KEY_STRING);
+	if(param)
+	{
+		/** Parameter exists, So remove it from hash table and delete the array list param_list
+		which will be built in the next call to get_params 
+		*/
+		axutil_hash_set(param_container->params, param_name, AXIS2_HASH_KEY_STRING, NULL);
+		axutil_param_free(param, env);
+		axutil_array_list_free(param_container->params_list, env);
+		param_container->params_list = NULL;
+		return AXIS2_SUCCESS;	
+	}
+	return AXIS2_FAILURE;
+}