You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by da...@apache.org on 2006/01/25 11:42:50 UTC

svn commit: r372190 - in /webservices/axis2/trunk/c: include/ modules/core/deployment/ modules/core/description/ modules/core/receivers/ modules/util/ test/core/deployment/

Author: damitha
Date: Wed Jan 25 02:42:25 2006
New Revision: 372190

URL: http://svn.apache.org/viewcvs?rev=372190&view=rev
Log:
Fixed Jira Axis2c-26

Modified:
    webservices/axis2/trunk/c/include/axis2_class_loader.h
    webservices/axis2/trunk/c/include/axis2_dll_desc.h
    webservices/axis2/trunk/c/include/axis2_msg_recv.h
    webservices/axis2/trunk/c/modules/core/deployment/arch_reader.c
    webservices/axis2/trunk/c/modules/core/deployment/dep_engine.c
    webservices/axis2/trunk/c/modules/core/deployment/desc_builder.c
    webservices/axis2/trunk/c/modules/core/deployment/repos_listener.c
    webservices/axis2/trunk/c/modules/core/deployment/svc_builder.c
    webservices/axis2/trunk/c/modules/core/deployment/svc_grp_builder.c
    webservices/axis2/trunk/c/modules/core/deployment/ws_info_list.c
    webservices/axis2/trunk/c/modules/core/description/dll_desc.c
    webservices/axis2/trunk/c/modules/core/receivers/msg_recv.c
    webservices/axis2/trunk/c/modules/core/receivers/raw_xml_in_out_msg_recv.c
    webservices/axis2/trunk/c/modules/util/class_loader.c
    webservices/axis2/trunk/c/modules/util/dir_handler.c
    webservices/axis2/trunk/c/modules/util/file.c
    webservices/axis2/trunk/c/test/core/deployment/test_deployment.c

Modified: webservices/axis2/trunk/c/include/axis2_class_loader.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_class_loader.h?rev=372190&r1=372189&r2=372190&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_class_loader.h (original)
+++ webservices/axis2/trunk/c/include/axis2_class_loader.h Wed Jan 25 02:42:25 2006
@@ -45,7 +45,7 @@
 
 axis2_status_t AXIS2_CALL
 axis2_class_loader_delete_dll (axis2_env_t **env,
-                                    struct axis2_dll_desc *dll_desc);
+                                    axis2_param_t *impl_info_param);
 
 void *AXIS2_CALL
 axis2_class_loader_create_dll (axis2_env_t **env,

Modified: webservices/axis2/trunk/c/include/axis2_dll_desc.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_dll_desc.h?rev=372190&r1=372189&r2=372190&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_dll_desc.h (original)
+++ webservices/axis2/trunk/c/include/axis2_dll_desc.h Wed Jan 25 02:42:25 2006
@@ -128,6 +128,15 @@
     DELETE_FUNCT (AXIS2_CALL *
     get_delete_funct) (axis2_dll_desc_t *dll_desc,
                             axis2_env_t **env);
+                            
+    axis2_status_t (AXIS2_CALL *
+    set_timestamp) (axis2_dll_desc_t *dll_desc,
+                            axis2_env_t **env,
+                            AXIS2_TIME_T timestamp);
+    
+    AXIS2_TIME_T (AXIS2_CALL *
+    get_timestamp) (axis2_dll_desc_t *dll_desc,
+                            axis2_env_t **env);                            
 
         
 };
@@ -188,7 +197,13 @@
     
 #define AXIS2_DLL_DESC_SET_DELETE_FUNCT(dll_desc, env, funct) \
     ((dll_desc)->ops->set_delete_funct(dll_desc, env, funct))
+
+#define AXIS2_DLL_DESC_GET_TIMESTAMP(dll_desc, env) \
+    ((dll_desc)->ops->get_timestamp(dll_desc, env))
     
+#define AXIS2_DLL_DESC_SET_TIMESTAMP(dll_desc, env, timestamp) \
+    ((dll_desc)->ops->set_timestamp(dll_desc, env, timestamp))
+
 /** @} */
     
 #ifdef __cplusplus

Modified: webservices/axis2/trunk/c/include/axis2_msg_recv.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_msg_recv.h?rev=372190&r1=372189&r2=372190&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_msg_recv.h (original)
+++ webservices/axis2/trunk/c/include/axis2_msg_recv.h Wed Jan 25 02:42:25 2006
@@ -105,7 +105,12 @@
                                             
     axis2_char_t * (AXIS2_CALL *
     get_scope) (axis2_msg_recv_t *msg_recv,
-                    axis2_env_t **env);                                      
+                    axis2_env_t **env);
+                    
+    axis2_status_t (AXIS2_CALL *
+    delete_svc_obj) (axis2_msg_recv_t *msg_recv,
+                        axis2_env_t **env,
+                        axis2_msg_ctx_t *msg_ctx);                    
 };
 
 /** 
@@ -146,6 +151,8 @@
 #define AXIS2_MSG_RECV_GET_SCOPE(msg_recv, env) \
         ((msg_recv)->ops->get_scope(msg_recv, env))
 
+#define AXIS2_MSG_RECV_DELETE_SVC_OBJ(msg_recv, env, msg_ctx) \
+        ((msg_recv)->ops->delete_svc_obj(msg_recv, env, msg_ctx))
 
 /************************** End of function macros ****************************/
     

Modified: webservices/axis2/trunk/c/modules/core/deployment/arch_reader.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/deployment/arch_reader.c?rev=372190&r1=372189&r2=372190&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/deployment/arch_reader.c (original)
+++ webservices/axis2/trunk/c/modules/core/deployment/arch_reader.c Wed Jan 25 02:42:25 2006
@@ -318,6 +318,7 @@
     AXIS2_FREE((*env)->allocator, temp_path2);
     AXIS2_FREE((*env)->allocator, temp_path3);
     AXIS2_FREE((*env)->allocator, svc_container_path);
+    AXIS2_FREE((*env)->allocator, svc_folder);
     printf("svcs_xml:%s\n", svcs_xml);
     if(!svcs_xml)
     {
@@ -338,6 +339,7 @@
         }
         arch_file_data = AXIS2_DEP_ENGINE_GET_CURRENT_FILE_ITEM(dep_engine, env);
         svc_name = AXIS2_ARCH_FILE_DATA_GET_SVC_NAME(arch_file_data, env);
+        printf("svc_grp_name:%s\n", svc_name);
         AXIS2_SVC_GRP_SET_NAME(svc_grp, env, svc_name);
     } else 
     {
@@ -352,10 +354,10 @@
 axis2_arch_reader_build_svc_grp(axis2_arch_reader_t *arch_reader,
                                 axis2_env_t **env,
                                 axis2_char_t *svc_xml,
-                                struct axis2_dep_engine *dep_engine,
-                                struct axis2_svc_grp *svc_grp)
+                                axis2_dep_engine_t *dep_engine,
+                                axis2_svc_grp_t *svc_grp)
 {                       
-    struct axis2_desc_builder *desc_builder = NULL;
+    axis2_desc_builder_t *desc_builder = NULL;
     axis2_char_t *root_element_name = NULL;
     axis2_om_node_t *svcs = NULL;
     axis2_om_element_t *svcs_element = NULL;
@@ -414,7 +416,6 @@
             printf("populate svc is not successful\n");
             return AXIS2_FAILURE;
         }
-        file_data = AXIS2_DEP_ENGINE_GET_CURRENT_FILE_ITEM(dep_engine, env);
         
         dep_svcs = AXIS2_ARCH_FILE_DATA_GET_DEPLOYABLE_SVCS(file_data, env);
         if(!dep_svcs)

Modified: webservices/axis2/trunk/c/modules/core/deployment/dep_engine.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/deployment/dep_engine.c?rev=372190&r1=372189&r2=372190&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/deployment/dep_engine.c (original)
+++ webservices/axis2/trunk/c/modules/core/deployment/dep_engine.c Wed Jan 25 02:42:25 2006
@@ -32,14 +32,15 @@
 typedef struct axis2_dep_engine_impl
 {
 	axis2_dep_engine_t dep_engine;
-    struct axis2_arch_file_data *curr_file;
+    
+    axis2_arch_file_data_t *curr_file;
     
     /**
      * to keep a ref to engine register
      * this ref will pass to engine when it call start()
      * method
      */
-    struct axis2_conf *conf;
+    axis2_conf_t *conf;
     axis2_char_t *axis2_repos;
     axis2_bool_t hot_dep;   /* to do hot deployment or not */
     axis2_bool_t hot_update;  /* to do hot update or not */
@@ -52,7 +53,7 @@
      */
     axis2_array_list_t *ws_to_undeploy;
     
-    struct axis2_phases_info *phases_info; /* to store phases list in axis2.xml */
+    axis2_phases_info_t *phases_info; /* to store phases list in axis2.xml */
     /**
      * this constructor for the testing
      */
@@ -589,7 +590,10 @@
     AXIS2_FUNC_PARAM_CHECK(dep_engine, env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, file, AXIS2_FAILURE);
     dep_engine_impl = AXIS2_INTF_TO_IMPL(dep_engine);
-    
+    if(!(dep_engine_impl->ws_to_undeploy))
+    {
+        dep_engine_impl->ws_to_undeploy = axis2_array_list_create(env, 0);
+    }
     return AXIS2_ARRAY_LIST_ADD(dep_engine_impl->ws_to_undeploy, env, file);
 }
 

Modified: webservices/axis2/trunk/c/modules/core/deployment/desc_builder.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/deployment/desc_builder.c?rev=372190&r1=372189&r2=372190&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/deployment/desc_builder.c (original)
+++ webservices/axis2/trunk/c/modules/core/deployment/desc_builder.c Wed Jan 25 02:42:25 2006
@@ -161,7 +161,7 @@
 axis2_desc_builder_create_with_file_and_dep_engine (
                                         axis2_env_t **env, 
                                         axis2_char_t *file_name, 
-                                        struct axis2_dep_engine *engine)
+                                        axis2_dep_engine_t *engine)
 {
     axis2_desc_builder_impl_t *desc_builder_impl = NULL;
     
@@ -228,14 +228,17 @@
         AXIS2_FREE((*env)->allocator, desc_builder_impl->file_name);
         desc_builder_impl->file_name = NULL;
     }
+    /* we should not free deployment engine here */
     desc_builder->engine = NULL;
     
 	if(NULL != desc_builder->ops)
         AXIS2_FREE((*env)->allocator, desc_builder->ops);
     
-    AXIS2_FREE((*env)->allocator, desc_builder_impl);
-    desc_builder_impl = NULL;
-    
+    if(desc_builder_impl)
+    {
+        AXIS2_FREE((*env)->allocator, desc_builder_impl);
+        desc_builder_impl = NULL;
+    }
 	return AXIS2_SUCCESS;
 }
 

Modified: webservices/axis2/trunk/c/modules/core/deployment/repos_listener.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/deployment/repos_listener.c?rev=372190&r1=372189&r2=372190&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/deployment/repos_listener.c (original)
+++ webservices/axis2/trunk/c/modules/core/deployment/repos_listener.c Wed Jan 25 02:42:25 2006
@@ -271,7 +271,7 @@
      * there are no services to load
      */
     axis2_repos_listener_check_svcs(listener, env);
-    
+    /* TODO uncomment this when hot update done */
     return axis2_repos_listener_update(listener, env);
 }
 

Modified: webservices/axis2/trunk/c/modules/core/deployment/svc_builder.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/deployment/svc_builder.c?rev=372190&r1=372189&r2=372190&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/deployment/svc_builder.c (original)
+++ webservices/axis2/trunk/c/modules/core/deployment/svc_builder.c Wed Jan 25 02:42:25 2006
@@ -248,6 +248,7 @@
     axis2_param_container_t *param_container_l = NULL;
     int i = 0;
     int size = 0;
+    AXIS2_TIME_T timestamp = 0;
     
     AXIS2_FUNC_PARAM_CHECK(svc_builder, env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, svc_node, AXIS2_FAILURE);
@@ -341,10 +342,18 @@
     arch_file_data = AXIS2_DEP_ENGINE_GET_CURRENT_FILE_ITEM(builder_impl->
         svc_builder.desc_builder->engine, env);
     svc_folder = AXIS2_ARCH_FILE_DATA_GET_FILE(arch_file_data, env);
+    timestamp = AXIS2_FILE_GET_TIMESTAMP(svc_folder, env);
+    AXIS2_DLL_DESC_SET_TIMESTAMP(dll_desc, env, timestamp);
     svc_folder_path = AXIS2_FILE_GET_PATH(svc_folder, env);
+    printf("file name:%s\n", AXIS2_FILE_GET_NAME(svc_folder, env));
     temp_path = AXIS2_STRACAT(svc_folder_path, AXIS2_PATH_SEP_STR, env);
     dll_path = AXIS2_STRACAT(temp_path, svc_dll_name, env);
-    AXIS2_DLL_DESC_SET_NAME(dll_desc, env, dll_path);
+    status = AXIS2_DLL_DESC_SET_NAME(dll_desc, env, dll_path);
+    if(AXIS2_SUCCESS != status)
+    {
+        AXIS2_DLL_DESC_FREE(dll_desc, env);
+        return AXIS2_FAILURE;
+    }
     /* param does not free the value, because it does not know the value type.
      * therefore we free the value
      */
@@ -448,19 +457,22 @@
         qopst, svc_node);
     
     ops = axis2_svc_builder_process_ops(svc_builder, env, operation_itr);
-    size = AXIS2_ARRAY_LIST_SIZE(ops, env);
+    if(ops)
+    {
+        size = AXIS2_ARRAY_LIST_SIZE(ops, env);
+    }
     for(i = 0; i < size; i++)
     {
         axis2_op_t *op_desc = NULL;
         axis2_array_list_t *params = NULL;
         int j = 0;
-        int size = 0;
+        int sizej = 0;
         
         op_desc = (axis2_op_t *) AXIS2_ARRAY_LIST_GET(ops, env, i);
         params = AXIS2_OP_GET_PARAMS(op_desc, env);
         /* Adding wsa-mapping into service */
         size = AXIS2_ARRAY_LIST_SIZE(params, env);
-        for(j = 0; j < size; j++)
+        for(j = 0; j < sizej; j++)
         {
             axis2_param_t *param = NULL;
             axis2_char_t *param_name = NULL;
@@ -508,7 +520,7 @@
     AXIS2_PARAM_CHECK((*env)->error, op_itr, NULL);
     builder_impl = AXIS2_INTF_TO_IMPL(svc_builder);
     
-    ops = axis2_array_list_create(env, 10);
+    ops = axis2_array_list_create(env, 16);
     while(AXIS2_TRUE == AXIS2_OM_CHILDREN_QNAME_ITERATOR_HAS_NEXT(op_itr, env))
     {
         axis2_om_element_t *op_element = NULL;

Modified: webservices/axis2/trunk/c/modules/core/deployment/svc_grp_builder.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/deployment/svc_grp_builder.c?rev=372190&r1=372189&r2=372190&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/deployment/svc_grp_builder.c (original)
+++ webservices/axis2/trunk/c/modules/core/deployment/svc_grp_builder.c Wed Jan 25 02:42:25 2006
@@ -71,6 +71,8 @@
     }
     
     svc_grp_builder_impl->svc_grp_builder.ops = NULL;
+    svc_grp_builder_impl->svc_grp = NULL;
+    svc_grp_builder_impl->svc_grp_builder.desc_builder = NULL;
     
 	svc_grp_builder_impl->svc_grp_builder.ops = 
 		AXIS2_MALLOC ((*env)->allocator, sizeof(axis2_svc_grp_builder_ops_t));
@@ -210,7 +212,7 @@
         else
         {
             axis2_svc_t *axis_svc = NULL;
-            struct axis2_arch_file_data *file_data = NULL;
+            axis2_arch_file_data_t *file_data = NULL;
             axis2_array_list_t *deployable_svcs = NULL;
             axis2_svc_builder_t *svc_builder = NULL;
             

Modified: webservices/axis2/trunk/c/modules/core/deployment/ws_info_list.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/deployment/ws_info_list.c?rev=372190&r1=372189&r2=372190&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/deployment/ws_info_list.c (original)
+++ webservices/axis2/trunk/c/modules/core/deployment/ws_info_list.c Wed Jan 25 02:42:25 2006
@@ -360,29 +360,32 @@
 {
     axis2_ws_info_list_impl_t *info_list_impl = NULL;
     int list_size = 0;
-    int current_lists_size = 0;
     axis2_array_list_t *temp_list = NULL;
     axis2_char_t *file_name = NULL;
-    axis2_bool_t exist = AXIS2_FALSE;
     int i = 0;
-    int j = 0;
     
     AXIS2_FUNC_PARAM_CHECK(info_list, env, AXIS2_FAILURE);
     info_list_impl = AXIS2_INTF_TO_IMPL(info_list);
 
     /* create temp list*/
-    temp_list = axis2_array_list_create(env, 5);
+    temp_list = axis2_array_list_create(env, 16);
     if (!temp_list)
+    {
         return AXIS2_FAILURE;
-    
+    }
+    list_size = AXIS2_ARRAY_LIST_SIZE(info_list_impl->info_list, env);
     for(i = 0; i < list_size; i++)
     {
+        int current_lists_size = 0;
         axis2_ws_info_t *file_item = NULL;
         axis2_char_t *file_item_name = NULL;
+        axis2_bool_t exist = AXIS2_FALSE;
+        int j = 0;
         
         file_item = (axis2_ws_info_t *) AXIS2_ARRAY_LIST_GET(info_list_impl->
             info_list, env, i);
-        exist = AXIS2_FALSE;
+        current_lists_size = AXIS2_ARRAY_LIST_SIZE(info_list_impl->
+            current_info_lists, env);
         for (j = 0; j < current_lists_size; j++) 
         {
             file_item_name = AXIS2_WS_INFO_GET_FILE_NAME(file_item, env);            

Modified: webservices/axis2/trunk/c/modules/core/description/dll_desc.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/description/dll_desc.c?rev=372190&r1=372189&r2=372190&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/description/dll_desc.c (original)
+++ webservices/axis2/trunk/c/modules/core/description/dll_desc.c Wed Jan 25 02:42:25 2006
@@ -30,6 +30,7 @@
     AXIS2_DLHANDLER dl_handler;
     CREATE_FUNCT create_funct;
     DELETE_FUNCT delete_funct;
+    AXIS2_TIME_T timestamp;
     
     
 } axis2_dll_desc_impl_t;
@@ -54,49 +55,58 @@
 
 axis2_status_t AXIS2_CALL
 axis2_dll_desc_set_type (axis2_dll_desc_t *dll_desc,
-                        axis2_env_t **env,
-                        axis2_dll_type_t type);
+                            axis2_env_t **env,
+                            axis2_dll_type_t type);
 
 axis2_dll_type_t AXIS2_CALL
 axis2_dll_desc_get_type (axis2_dll_desc_t *dll_desc,
-                        axis2_env_t **env);
+                            axis2_env_t **env);
                             
 axis2_status_t AXIS2_CALL
 axis2_dll_desc_set_load_options(axis2_dll_desc_t *dll_desc,
-                        axis2_env_t **env,
-                        int options);
+                                axis2_env_t **env,
+                                int options);
 
 int AXIS2_CALL
 axis2_dll_desc_get_load_options(axis2_dll_desc_t *dll_desc,
-                        axis2_env_t **env);
+                                axis2_env_t **env);
 
 axis2_status_t AXIS2_CALL
 axis2_dll_desc_set_dl_handler(axis2_dll_desc_t *dll_desc,
-                        axis2_env_t **env,
-                        AXIS2_DLHANDLER dl_handler);
+                                axis2_env_t **env,
+                                AXIS2_DLHANDLER dl_handler);
 
 AXIS2_DLHANDLER AXIS2_CALL
 axis2_dll_desc_get_dl_handler(axis2_dll_desc_t *dll_desc,
-                        axis2_env_t **env);
+                                axis2_env_t **env);
 
 axis2_status_t AXIS2_CALL
 axis2_dll_desc_set_create_funct(axis2_dll_desc_t *dll_desc,
-                        axis2_env_t **env,
-                        CREATE_FUNCT funct);
+                                axis2_env_t **env,
+                                CREATE_FUNCT funct);
 
 CREATE_FUNCT AXIS2_CALL
 axis2_dll_desc_get_create_funct(axis2_dll_desc_t *dll_desc,
-                        axis2_env_t **env);
+                                axis2_env_t **env);
 
 axis2_status_t AXIS2_CALL
 axis2_dll_desc_set_delete_funct(axis2_dll_desc_t *dll_desc,
-                        axis2_env_t **env,
-                        DELETE_FUNCT funct);
+                                axis2_env_t **env,
+                                DELETE_FUNCT funct);
 
 DELETE_FUNCT AXIS2_CALL
 axis2_dll_desc_get_delete_funct(axis2_dll_desc_t *dll_desc,
-                        axis2_env_t **env);
+                                axis2_env_t **env);
+
+axis2_status_t AXIS2_CALL
+axis2_dll_desc_set_timestamp (axis2_dll_desc_t *dll_desc,
+                                axis2_env_t **env,
+                                AXIS2_TIME_T timestamp);
 
+AXIS2_TIME_T AXIS2_CALL
+axis2_dll_desc_get_timestamp (axis2_dll_desc_t *dll_desc,
+                                axis2_env_t **env);
+                        
 /************************* End of function headers ****************************/	
 
 axis2_dll_desc_t * AXIS2_CALL
@@ -122,6 +132,7 @@
     dll_desc_impl->create_funct = NULL;
     dll_desc_impl->delete_funct = NULL;
     dll_desc_impl->dll_desc.ops = NULL;
+    dll_desc_impl->timestamp = 0;
     
     dll_desc_impl->dll_desc.ops = (axis2_dll_desc_ops_t *) AXIS2_MALLOC(
         (*env)->allocator, sizeof(axis2_dll_desc_ops_t));
@@ -146,6 +157,8 @@
     dll_desc_impl->dll_desc.ops->set_delete_funct = axis2_dll_desc_set_delete_funct;
     dll_desc_impl->dll_desc.ops->set_type = axis2_dll_desc_set_type;
     dll_desc_impl->dll_desc.ops->get_type = axis2_dll_desc_get_type;
+    dll_desc_impl->dll_desc.ops->get_timestamp = axis2_dll_desc_get_timestamp;
+    dll_desc_impl->dll_desc.ops->set_timestamp = axis2_dll_desc_set_timestamp;
 						
 	return &(dll_desc_impl->dll_desc);
 }
@@ -345,4 +358,26 @@
 {
     AXIS2_FUNC_PARAM_CHECK(dll_desc, env, NULL);
     return AXIS2_INTF_TO_IMPL(dll_desc)->delete_funct;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_dll_desc_set_timestamp (axis2_dll_desc_t *dll_desc,
+                                axis2_env_t **env,
+                                AXIS2_TIME_T timestamp)
+{
+    axis2_dll_desc_impl_t *dll_desc_impl = NULL;
+    
+    AXIS2_FUNC_PARAM_CHECK(dll_desc, env, AXIS2_FAILURE);
+    dll_desc_impl = AXIS2_INTF_TO_IMPL(dll_desc);
+   
+    dll_desc_impl->timestamp = timestamp;
+    return AXIS2_SUCCESS;
+}
+
+AXIS2_TIME_T AXIS2_CALL
+axis2_dll_desc_get_timestamp (axis2_dll_desc_t *dll_desc,
+                                axis2_env_t **env)
+{
+    AXIS2_FUNC_PARAM_CHECK(dll_desc, env, AXIS2_FAILURE);
+    return AXIS2_INTF_TO_IMPL(dll_desc)->timestamp;
 }

Modified: webservices/axis2/trunk/c/modules/core/receivers/msg_recv.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/receivers/msg_recv.c?rev=372190&r1=372189&r2=372190&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/receivers/msg_recv.c (original)
+++ webservices/axis2/trunk/c/modules/core/receivers/msg_recv.c Wed Jan 25 02:42:25 2006
@@ -64,7 +64,12 @@
                                    
 axis2_char_t * AXIS2_CALL
 axis2_msg_recv_get_scope(axis2_msg_recv_t *msg_recv,
-                            axis2_env_t **env);                            
+                            axis2_env_t **env);    
+
+axis2_status_t AXIS2_CALL
+axis2_msg_recv_delete_svc_obj(axis2_msg_recv_t *msg_recv,
+                                    axis2_env_t **env,
+                                    axis2_msg_ctx_t *msg_ctx);                            
 		
 /************************* End of function headers ****************************/	
 
@@ -103,6 +108,7 @@
     msg_recv_impl->msg_recv.ops->get_impl_obj = axis2_msg_recv_get_impl_obj;
     msg_recv_impl->msg_recv.ops->set_scope = axis2_msg_recv_set_scope;
     msg_recv_impl->msg_recv.ops->get_scope = axis2_msg_recv_get_scope;
+    msg_recv_impl->msg_recv.ops->delete_svc_obj = axis2_msg_recv_delete_svc_obj;
 						
 	return &(msg_recv_impl->msg_recv);
 }
@@ -289,4 +295,48 @@
                             axis2_env_t **env)
 {
     return AXIS2_INTF_TO_IMPL(msg_recv)->scope;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_msg_recv_delete_svc_obj(axis2_msg_recv_t *msg_recv,
+                                    axis2_env_t **env,
+                                    axis2_msg_ctx_t *msg_ctx)
+{
+    axis2_svc_t *svc = NULL;
+    axis2_op_ctx_t *op_ctx = NULL;
+    axis2_svc_ctx_t *svc_ctx = NULL;
+    axis2_param_t *impl_info_param = NULL;
+    axis2_param_t *scope_param = NULL;
+    axis2_char_t *param_value = NULL;
+
+    AXIS2_FUNC_PARAM_CHECK(msg_recv, env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, msg_ctx, AXIS2_FAILURE);
+
+    op_ctx = AXIS2_MSG_CTX_GET_OP_CTX(msg_ctx, env);
+    svc_ctx = AXIS2_OP_CTX_GET_PARENT(op_ctx, env);
+    svc = AXIS2_SVC_CTX_GET_SVC(svc_ctx, env);
+    if(NULL == svc)
+    {
+        return AXIS2_FAILURE;
+    }
+    
+    scope_param = AXIS2_SVC_GET_PARAM(svc, env, AXIS2_SCOPE);
+    if (scope_param)
+    {
+        param_value = AXIS2_PARAM_GET_VALUE(scope_param, env);
+    }
+    if(NULL != param_value && (0 == AXIS2_STRCMP(AXIS2_APPLICATION_SCOPE, 
+        param_value)))
+    {
+        return AXIS2_SUCCESS;
+    }
+
+    impl_info_param = AXIS2_SVC_GET_PARAM(svc, env, AXIS2_SERVICE_CLASS);
+    if(!impl_info_param)
+    {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_INVALID_STATE_SVC,
+            AXIS2_FAILURE);
+        return AXIS2_FAILURE;
+    }
+    return axis2_class_loader_delete_dll(env, impl_info_param);
 }

Modified: webservices/axis2/trunk/c/modules/core/receivers/raw_xml_in_out_msg_recv.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/receivers/raw_xml_in_out_msg_recv.c?rev=372190&r1=372189&r2=372190&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/receivers/raw_xml_in_out_msg_recv.c (original)
+++ webservices/axis2/trunk/c/modules/core/receivers/raw_xml_in_out_msg_recv.c Wed Jan 25 02:42:25 2006
@@ -211,7 +211,9 @@
     }
     
     result_node = AXIS2_SVC_SKELETON_INVOKE(svc_obj, env, om_node);
-    
+    /* if scope is not application delete the dll */
+    AXIS2_MSG_RECV_DELETE_SVC_OBJ(msg_recv, env, msg_ctx);
+   
     if(0 == AXIS2_STRCMP(style, AXIS2_STYLE_RPC))
     {
         axis2_om_namespace_t *ns = NULL;

Modified: webservices/axis2/trunk/c/modules/util/class_loader.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/util/class_loader.c?rev=372190&r1=372189&r2=372190&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/util/class_loader.c (original)
+++ webservices/axis2/trunk/c/modules/util/class_loader.c Wed Jan 25 02:42:25 2006
@@ -35,8 +35,17 @@
 
 axis2_status_t AXIS2_CALL
 axis2_class_loader_delete_dll (axis2_env_t **env,
-                                    axis2_dll_desc_t *dll_desc)
+                                    axis2_param_t *impl_info_param)
 {
+    axis2_dll_desc_t *dll_desc = NULL;
+    
+    dll_desc = AXIS2_PARAM_GET_VALUE(impl_info_param, env);
+    if(!dll_desc)
+    {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_DLL_CREATE_FAILED, 
+            AXIS2_FAILURE);
+        return AXIS2_FAILURE;
+    }
     axis2_class_loader_unload_lib(env, dll_desc);
     AXIS2_PLATFORM_LOADLIBEXIT()
     return AXIS2_SUCCESS;
@@ -113,6 +122,7 @@
         create_funct(&svc_skeli, env);
         if(NULL == svc_skeli)
         {
+            axis2_class_loader_unload_lib(env, dll_desc);
             AXIS2_ERROR_SET((*env)->error, 
                 AXIS2_ERROR_SVC_SKELETON_CREATION_FAILED,AXIS2_FAILURE);
             return NULL;
@@ -124,6 +134,7 @@
         create_funct(&handler, env);
         if(NULL == handler)
         {
+            axis2_class_loader_unload_lib(env, dll_desc);
             AXIS2_ERROR_SET((*env)->error, 
                 AXIS2_ERROR_HANDLER_CREATION_FAILED,AXIS2_FAILURE);
             return NULL;
@@ -135,6 +146,7 @@
         create_funct(&module, env);
         if(NULL == module)
         {
+            axis2_class_loader_unload_lib(env, dll_desc);
             AXIS2_ERROR_SET((*env)->error, 
                 AXIS2_ERROR_MODULE_CREATION_FAILED,AXIS2_FAILURE);
             return NULL;
@@ -147,6 +159,7 @@
         printf("message receiver loaded successfully\n");
         if(NULL == msg_recv)
         {
+            axis2_class_loader_unload_lib(env, dll_desc);
             printf("msg_recv is null\n");
             AXIS2_ERROR_SET((*env)->error, 
                 AXIS2_ERROR_MSG_RECV_CREATION_FAILED,AXIS2_FAILURE);
@@ -160,6 +173,7 @@
         printf("transport receiver loaded successfully\n");
         if(NULL == transport_recv)
         {
+            axis2_class_loader_unload_lib(env, dll_desc);
             printf("transport_recv is null\n");
             AXIS2_ERROR_SET((*env)->error, 
                 AXIS2_ERROR_TRANSPORT_RECV_CREATION_FAILED,AXIS2_FAILURE);
@@ -173,6 +187,7 @@
         printf("transport sender loaded successfully\n");
         if(NULL == transport_sender)
         {
+            axis2_class_loader_unload_lib(env, dll_desc);
             printf("transport_sender is null\n");
             AXIS2_ERROR_SET((*env)->error, 
                 AXIS2_ERROR_TRANSPORT_SENDER_CREATION_FAILED,AXIS2_FAILURE);

Modified: webservices/axis2/trunk/c/modules/util/dir_handler.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/util/dir_handler.c?rev=372190&r1=372189&r2=372190&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/util/dir_handler.c (original)
+++ webservices/axis2/trunk/c/modules/util/dir_handler.c Wed Jan 25 02:42:25 2006
@@ -48,10 +48,10 @@
     
 	for (i = 1; i < (count + 1) ; ++i )
     {
-        int len = 0;
         axis2_char_t *fname = NULL;
         axis2_file_t *arch_file = NULL;
         axis2_char_t *path = NULL;
+        axis2_char_t *temp_path = NULL;
        
         fname = files[i-1]->d_name;
         arch_file = (axis2_file_t *) axis2_file_create(env);
@@ -61,16 +61,13 @@
             return NULL;
         }
         AXIS2_FILE_SET_NAME(arch_file, env, fname);
-        len = strlen(pathname) + strlen(fname) + 3;
-        path = AXIS2_MALLOC((*env)->allocator, len);
+        temp_path = AXIS2_STRACAT(pathname, AXIS2_PATH_SEP_STR, env);
+        path = AXIS2_STRACAT(temp_path, fname, env);
         if(!path)
         {
             AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
             return NULL;
         }
-        strcpy(path, pathname);
-        strcat(path, AXIS2_PATH_SEP_STR);
-        strcat(path, fname);
         AXIS2_FILE_SET_PATH(arch_file, env, path);
         buf = AXIS2_MALLOC((*env)->allocator, sizeof(struct stat));
         if(!buf)
@@ -124,10 +121,10 @@
     
 	for (i = 1; i < (count + 1) ; ++i )
     {
-        int len = 0;
         axis2_char_t *fname = NULL;
         axis2_file_t *arch_file = NULL;
         axis2_char_t *path = NULL;
+        axis2_char_t *temp_path = NULL;
        
         fname = files[i-1]->d_name;
         arch_file = (axis2_file_t *) axis2_file_create(env);
@@ -137,17 +134,17 @@
             return NULL;
         }
         AXIS2_FILE_SET_NAME(arch_file, env, fname);
-        len = strlen(pathname) + strlen(fname) + 3;
-        path = AXIS2_MALLOC((*env)->allocator, len);
+        
+        temp_path = AXIS2_STRACAT(pathname, AXIS2_PATH_SEP_STR, env);
+        path = AXIS2_STRACAT(temp_path, fname, env);
         if(!path)
         {
             AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
             return NULL;
         }
-        strcpy(path, pathname);
-        strcat(path, AXIS2_PATH_SEP_STR);
-        strcat(path, fname);
         AXIS2_FILE_SET_PATH(arch_file, env, path);
+        /* free temp vars */
+        AXIS2_FREE((*env)->allocator, temp_path);
         buf = AXIS2_MALLOC((*env)->allocator, sizeof(struct stat));
         if(!buf)
         {

Modified: webservices/axis2/trunk/c/modules/util/file.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/util/file.c?rev=372190&r1=372189&r2=372190&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/util/file.c (original)
+++ webservices/axis2/trunk/c/modules/util/file.c Wed Jan 25 02:42:25 2006
@@ -179,7 +179,7 @@
         return NULL;
     }
     
-    return file_impl->name;
+    return (file_impl->name);
 }
 
 axis2_status_t AXIS2_CALL
@@ -198,7 +198,7 @@
         file_impl->path = NULL;
     }
     file_impl->path = AXIS2_STRDUP(path, env);
-    if(!file_impl->path)
+    if(!(file_impl->path))
     {
         AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
         return AXIS2_FAILURE;
@@ -215,14 +215,15 @@
     AXIS2_FUNC_PARAM_CHECK(file, env, NULL);
     file_impl = AXIS2_INTF_TO_IMPL(file);
     
-    if(!file_impl->path)
+    if(!(file_impl->path))
     {
+        printf("came**\n");
         AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_FILE_NAME_NOT_SET, 
             AXIS2_FAILURE);   
         return NULL;
     }
-    
-    return file_impl->path;
+    printf("file_impl->path:%s\n", file_impl->path);
+    return (file_impl->path);
 }
 
 axis2_status_t AXIS2_CALL

Modified: webservices/axis2/trunk/c/test/core/deployment/test_deployment.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/test/core/deployment/test_deployment.c?rev=372190&r1=372189&r2=372190&view=diff
==============================================================================
--- webservices/axis2/trunk/c/test/core/deployment/test_deployment.c (original)
+++ webservices/axis2/trunk/c/test/core/deployment/test_deployment.c Wed Jan 25 02:42:25 2006
@@ -233,11 +233,11 @@
 
 int main()
 {
-    axis2_test_dep_engine_do_deploy();
-    axis2_test_engine_conf_builder_populate_conf();
+    /*axis2_test_dep_engine_do_deploy();
+    axis2_test_engine_conf_builder_populate_conf();*/
     axis2_test_dep_engine_load();
-    axis2_test_transport_receiver_load();
+/*    axis2_test_transport_receiver_load();
     axis2_test_transport_sender_load();
-    
+  */  
 	return 0;
 }