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 di...@apache.org on 2007/11/18 18:46:07 UTC

svn commit: r596104 [1/2] - in /webservices/axis2/trunk/c: ./ axiom/src/om/ include/ samples/server/echo/ src/core/clientapi/ src/core/deployment/ src/core/engine/ src/core/receivers/ src/core/transport/http/receiver/ src/core/transport/http/sender/ sr...

Author: dinesh
Date: Sun Nov 18 09:45:50 2007
New Revision: 596104

URL: http://svn.apache.org/viewvc?rev=596104&view=rev
Log:
Merged revisions 594492-596102 via svnmerge from 
https://svn.apache.org/repos/asf/webservices/axis2/scratch/c/dinesh/axis2c-762

........
  r596084 | dinesh | 2007-11-18 19:11:52 +0530 (Sun, 18 Nov 2007) | 3 lines
  
  specifying axis2.xml which having services, modules and library directories.
  Using those services, modules and lib directories make axis2 conf and start the server. This feature gives ability to place services, modules and lib folders where ever user need.
........
  r596094 | dinesh | 2007-11-18 21:20:18 +0530 (Sun, 18 Nov 2007) | 2 lines
  
  using svc_client with axis2.xml , which has pointers to modules directory and libs directory
........
  r596096 | dinesh | 2007-11-18 22:19:37 +0530 (Sun, 18 Nov 2007) | 2 lines
  
  cleaned up source files, removed unwanted debugging messages.
........

Modified:
    webservices/axis2/trunk/c/   (props changed)
    webservices/axis2/trunk/c/axiom/src/om/om_namespace.c
    webservices/axis2/trunk/c/axiom/src/om/om_node.c
    webservices/axis2/trunk/c/include/axis2_conf.h
    webservices/axis2/trunk/c/include/axis2_conf_init.h
    webservices/axis2/trunk/c/include/axis2_http_server.h
    webservices/axis2/trunk/c/samples/server/echo/echo.c
    webservices/axis2/trunk/c/samples/server/echo/echo.h
    webservices/axis2/trunk/c/samples/server/echo/echo_skeleton.c
    webservices/axis2/trunk/c/src/core/clientapi/svc_client.c
    webservices/axis2/trunk/c/src/core/deployment/arch_file_data.c
    webservices/axis2/trunk/c/src/core/deployment/arch_reader.c
    webservices/axis2/trunk/c/src/core/deployment/axis2_dep_engine.h
    webservices/axis2/trunk/c/src/core/deployment/axis2_repos_listener.h
    webservices/axis2/trunk/c/src/core/deployment/conf_builder.c
    webservices/axis2/trunk/c/src/core/deployment/conf_init.c
    webservices/axis2/trunk/c/src/core/deployment/dep_engine.c
    webservices/axis2/trunk/c/src/core/deployment/phases_info.c
    webservices/axis2/trunk/c/src/core/deployment/repos_listener.c
    webservices/axis2/trunk/c/src/core/deployment/ws_info_list.c
    webservices/axis2/trunk/c/src/core/engine/conf.c
    webservices/axis2/trunk/c/src/core/engine/engine.c
    webservices/axis2/trunk/c/src/core/receivers/raw_xml_in_out_msg_recv.c
    webservices/axis2/trunk/c/src/core/transport/http/receiver/http_receiver.c
    webservices/axis2/trunk/c/src/core/transport/http/sender/http_client.c
    webservices/axis2/trunk/c/src/core/transport/http/server/simple_axis2_server/http_server_main.c
    webservices/axis2/trunk/c/util/include/axutil_error.h
    webservices/axis2/trunk/c/util/src/dir_handler.c

Propchange: webservices/axis2/trunk/c/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Sun Nov 18 09:45:50 2007
@@ -1 +1 @@
-/webservices/axis2/scratch/c/dinesh/axis2c-762:1-594491 /webservices/axis2/scratch/c/neethi/axis2c:1-542109
+/webservices/axis2/scratch/c/dinesh/axis2c-762:1-596102 /webservices/axis2/scratch/c/neethi/axis2c:1-542109

Modified: webservices/axis2/trunk/c/axiom/src/om/om_namespace.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/axiom/src/om/om_namespace.c?rev=596104&r1=596103&r2=596104&view=diff
==============================================================================
--- webservices/axis2/trunk/c/axiom/src/om/om_namespace.c (original)
+++ webservices/axis2/trunk/c/axiom/src/om/om_namespace.c Sun Nov 18 09:45:50 2007
@@ -387,6 +387,7 @@
         AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
         return AXIS2_FAILURE;
     }
+	
     return AXIS2_SUCCESS;
 
 }

Modified: webservices/axis2/trunk/c/axiom/src/om/om_node.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/axiom/src/om/om_node.c?rev=596104&r1=596103&r2=596104&view=diff
==============================================================================
--- webservices/axis2/trunk/c/axiom/src/om/om_node.c (original)
+++ webservices/axis2/trunk/c/axiom/src/om/om_node.c Sun Nov 18 09:45:50 2007
@@ -83,7 +83,6 @@
     node->data_element = NULL;
     node->om_doc = NULL;
     node->builder = NULL;
-
     return node;
 }
 

Modified: webservices/axis2/trunk/c/include/axis2_conf.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/include/axis2_conf.h?rev=596104&r1=596103&r2=596104&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_conf.h (original)
+++ webservices/axis2/trunk/c/include/axis2_conf.h Sun Nov 18 09:45:50 2007
@@ -624,6 +624,31 @@
         axis2_conf_t * conf,
         const axutil_env_t * env,
         axis2_char_t * axis2_repo);
+	
+	
+	/**
+     * Gets the axis2.xml location.
+     * @param conf pointer to conf struct
+     * @param env pointer to environment struct
+     * @return returns repository location as a string
+     */
+    AXIS2_EXTERN const axis2_char_t *AXIS2_CALL
+    axis2_conf_get_axis2_xml(
+        const axis2_conf_t * conf,
+        const axutil_env_t * env);
+
+    /**
+     * Sets the axis2.xml location.
+     * @param conf pointer to conf struct
+     * @param env pointer to environment struct
+     * @param axis2_xml repository location as a string
+     * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
+     */
+    AXIS2_EXTERN axis2_status_t AXIS2_CALL
+    axis2_conf_set_axis2_xml(
+        axis2_conf_t * conf,
+        const axutil_env_t * env,
+        axis2_char_t * axis2_xml);
 
     /**
      * Engages the named module.
@@ -731,6 +756,20 @@
         axis2_conf_t * conf,
         const axutil_env_t * env,
         axis2_bool_t enable_mtom);
+	
+	/**
+	 * set a flag to mark conf created by axis2.xml
+	 */
+	AXIS2_EXTERN axis2_bool_t AXIS2_CALL
+    axis2_conf_get_enable_axis2_flag(
+        axis2_conf_t * conf,
+        const axutil_env_t * env);
+
+    AXIS2_EXTERN axis2_status_t AXIS2_CALL
+    axis2_conf_set_enable_axis2_flag(
+        axis2_conf_t * conf,
+        const axutil_env_t * env,
+        axis2_bool_t axis2_flag);
 
     /*The following two methods are used in Rampart to
      *check whether security is engaed. */

Modified: webservices/axis2/trunk/c/include/axis2_conf_init.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/include/axis2_conf_init.h?rev=596104&r1=596103&r2=596104&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_conf_init.h (original)
+++ webservices/axis2/trunk/c/include/axis2_conf_init.h Sun Nov 18 09:45:50 2007
@@ -43,6 +43,17 @@
     axis2_build_conf_ctx(
         const axutil_env_t * env,
         const axis2_char_t * repo_name);
+	
+	/**
+	 * Builds the configuration for the Server using axis2.xml file.
+	 * @param env Pointer to environment struct. MUST NOT be NULL
+	 * @param file path of the axis2.xml file
+	 * @return pointer to an instance of configuration context properly initialized
+	 */
+	AXIS2_EXTERN axis2_conf_ctx_t *AXIS2_CALL
+	axis2_build_conf_ctx_with_file(
+    	const axutil_env_t * env,
+    	const axis2_char_t * file);
 
     /**
      * Builds the Configuration for the Client
@@ -60,4 +71,4 @@
 #ifdef __cplusplus
 }
 #endif
-#endif                          /* AXIS2_CONF_INIT_H */
+#endif      /* AXIS2_CONF_INIT_H */

Modified: webservices/axis2/trunk/c/include/axis2_http_server.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/include/axis2_http_server.h?rev=596104&r1=596103&r2=596104&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_http_server.h (original)
+++ webservices/axis2/trunk/c/include/axis2_http_server.h Sun Nov 18 09:45:50 2007
@@ -42,11 +42,16 @@
 #endif
 
     AXIS2_EXTERN axis2_transport_receiver_t *AXIS2_CALL
-
     axis2_http_server_create(
         const axutil_env_t * env,
         const axis2_char_t * repo,
         const int port);
+	
+	AXIS2_EXTERN axis2_transport_receiver_t *AXIS2_CALL
+	axis2_http_server_create_with_file(
+    	const axutil_env_t * env,
+    	const axis2_char_t * file,
+    	const int port);
 
     axis2_status_t AXIS2_CALL
     axis2_http_server_stop(
@@ -58,4 +63,4 @@
 }
 #endif
 
-#endif                          /* AXIS2_HTTP_SERVER_H */
+#endif  /* AXIS2_HTTP_SERVER_H */

Modified: webservices/axis2/trunk/c/samples/server/echo/echo.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/samples/server/echo/echo.c?rev=596104&r1=596103&r2=596104&view=diff
==============================================================================
--- webservices/axis2/trunk/c/samples/server/echo/echo.c (original)
+++ webservices/axis2/trunk/c/samples/server/echo/echo.c Sun Nov 18 09:45:50 2007
@@ -1,4 +1,3 @@
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -23,10 +22,6 @@
     const axutil_env_t * env,
     axis2_char_t * text);
 
-void set_custom_error(
-    const axutil_env_t * env,
-    axis2_char_t * error_message);
-
 axiom_node_t *
 axis2_echo_echo(
     const axutil_env_t * env,
@@ -45,21 +40,24 @@
      */
     if (!node)                  /* 'echoString' node */
     {
-        set_custom_error(env, "Invalid payload; echoString node is NULL");
+		AXIS2_ERROR_SET (env->error, USER_ERROR_NO_1, AXIS2_FAILURE);
+		AXIS2_LOG_ERROR (env->log, AXIS2_LOG_SI, "%s", AXIS2_ERROR_GET_MESSAGE (env->error));
         return NULL;
     }
 
     text_parent_node = axiom_node_get_first_element(node, env);
     if (!text_parent_node)
     {
-        set_custom_error(env, "Invalid payload; text node is NULL");
+		AXIS2_ERROR_SET (env->error, USER_ERROR_NO_2, AXIS2_FAILURE);
+		AXIS2_LOG_ERROR (env->log, AXIS2_LOG_SI, "%s", AXIS2_ERROR_GET_MESSAGE (env->error));
         return NULL;
     }
 
     text_node = axiom_node_get_first_child(text_parent_node, env);
     if (!text_node)             /* actual text to echo */
     {
-        set_custom_error(env, "Invalid payload; text to be echoed is NULL");
+      	AXIS2_ERROR_SET (env->error, USER_ERROR_NO_3, AXIS2_FAILURE);
+		AXIS2_LOG_ERROR (env->log, AXIS2_LOG_SI, "%s", AXIS2_ERROR_GET_MESSAGE (env->error));
         return NULL;
     }
 
@@ -76,10 +74,12 @@
     }
     else
     {
-        set_custom_error(env, "Invalid payload; invalid XML in request");
+        AXIS2_ERROR_SET (env->error, USER_ERROR_NO_4, AXIS2_FAILURE);
+		AXIS2_LOG_ERROR (env->log, AXIS2_LOG_SI, "%s", AXIS2_ERROR_GET_MESSAGE (env->error));
         return NULL;
     }
-
+	
+	
     return ret_node;
 }
 
@@ -106,11 +106,3 @@
     return echo_om_node;
 }
 
-void
-set_custom_error(
-    const axutil_env_t * env,
-    axis2_char_t * error_message)
-{
-    axutil_error_set_error_message(env->error, error_message);
-    AXIS2_ERROR_SET(env->error, AXIS2_ERROR_LAST + 1, AXIS2_FAILURE);
-}

Modified: webservices/axis2/trunk/c/samples/server/echo/echo.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/samples/server/echo/echo.h?rev=596104&r1=596103&r2=596104&view=diff
==============================================================================
--- webservices/axis2/trunk/c/samples/server/echo/echo.h (original)
+++ webservices/axis2/trunk/c/samples/server/echo/echo.h Sun Nov 18 09:45:50 2007
@@ -25,6 +25,13 @@
 #include <axiom_node.h>
 #include <axiom_element.h>
 
+
+/* USER_ERROR_NO_# defined wrt USER_ERROR_CODES_START*/
+#define USER_ERROR_NO_1 (USER_ERROR_CODES_START + 1) 
+#define USER_ERROR_NO_2 (USER_ERROR_CODES_START + 2)
+#define USER_ERROR_NO_3 (USER_ERROR_CODES_START + 3)
+#define USER_ERROR_NO_4 (USER_ERROR_CODES_START + 4)
+
 axiom_node_t *axis2_echo_echo(
     const axutil_env_t * env,
     axiom_node_t * node);

Modified: webservices/axis2/trunk/c/samples/server/echo/echo_skeleton.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/samples/server/echo/echo_skeleton.c?rev=596104&r1=596103&r2=596104&view=diff
==============================================================================
--- webservices/axis2/trunk/c/samples/server/echo/echo_skeleton.c (original)
+++ webservices/axis2/trunk/c/samples/server/echo/echo_skeleton.c Sun Nov 18 09:45:50 2007
@@ -21,10 +21,15 @@
 #include <axis2_msg_ctx.h>
 #include <stdio.h>
 
+
 int AXIS2_CALL echo_free(
     axis2_svc_skeleton_t * svc_skeleton,
     const axutil_env_t * env);
 
+extern axis2_char_t *axutil_error_messages[AXUTIL_ERROR_MAX];
+
+void static user_defined_errors_init ();
+
 /*
  * This method invokes the right service method
  */
@@ -73,6 +78,7 @@
     const axutil_env_t * env)
 {
     /* Any initialization stuff of echo service should go here */
+	
     return AXIS2_SUCCESS;
 }
 
@@ -92,7 +98,7 @@
      * To see how to deal with multiple impl methods, have a look at the
      * math sample.
      */
-
+	user_defined_errors_init ();
     return axis2_echo_echo(env, node);
 }
 
@@ -166,4 +172,17 @@
         status = AXIS2_SVC_SKELETON_FREE(inst, env);
     }
     return status;
+}
+
+void 
+user_defined_errors_init ()
+{
+	/*
+	 * USER_ERROR_NO_1, USER_ERROR_2, USER_ERROR_NO_3 in echo.h
+	 */
+	 
+	axutil_error_messages[USER_ERROR_NO_1] = "Invalid payload; echoString node is NULL";
+	axutil_error_messages[USER_ERROR_NO_2] = "Invalid payload; text node is NULL";
+	axutil_error_messages[USER_ERROR_NO_3] = "Invalid payload; text to be echoed is NULL";
+	axutil_error_messages[USER_ERROR_NO_4] = "Invalid payload; invalid XML in request";
 }

Modified: webservices/axis2/trunk/c/src/core/clientapi/svc_client.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/clientapi/svc_client.c?rev=596104&r1=596103&r2=596104&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/clientapi/svc_client.c (original)
+++ webservices/axis2/trunk/c/src/core/clientapi/svc_client.c Sun Nov 18 09:45:50 2007
@@ -247,7 +247,8 @@
         AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
         return NULL;
     }
-
+    
+    
     svc_client->svc = NULL;
     svc_client->conf = NULL;
     svc_client->conf_ctx = NULL;
@@ -285,8 +286,7 @@
     }
     else
     {
-        if (!
-            (svc_client->svc =
+        if (!(svc_client->svc =
              axis2_svc_client_create_annonymous_svc(svc_client, env)))
         {
             axis2_svc_client_free(svc_client, env);

Modified: webservices/axis2/trunk/c/src/core/deployment/arch_file_data.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/deployment/arch_file_data.c?rev=596104&r1=596103&r2=596104&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/deployment/arch_file_data.c (original)
+++ webservices/axis2/trunk/c/src/core/deployment/arch_file_data.c Sun Nov 18 09:45:50 2007
@@ -56,15 +56,7 @@
         AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
         return NULL;
     }
-
-    arch_file_data->file = NULL;
-    arch_file_data->type = 0;
-    arch_file_data->msg_recv = NULL;
-    arch_file_data->module_name = NULL;
-    arch_file_data->module_dll_name = NULL;
-    arch_file_data->name = NULL;
-    arch_file_data->svc_map = NULL;
-    arch_file_data->deployable_svcs = NULL;
+	memset ((void *)arch_file_data, 0, sizeof (axis2_arch_file_data_t));
 
     arch_file_data->deployable_svcs = axutil_array_list_create(env, 0);
     if (!arch_file_data->deployable_svcs)

Modified: webservices/axis2/trunk/c/src/core/deployment/arch_reader.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/deployment/arch_reader.c?rev=596104&r1=596103&r2=596104&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/deployment/arch_reader.c (original)
+++ webservices/axis2/trunk/c/src/core/deployment/arch_reader.c Sun Nov 18 09:45:50 2007
@@ -90,17 +90,31 @@
     axis2_status_t status = AXIS2_FAILURE;
     axis2_char_t *svcs_xml = NULL;
     axis2_char_t *repos_path = NULL;
+    axis2_bool_t file_flag = AXIS2_FALSE;
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, file_name, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, dep_engine, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, svc_grp, AXIS2_FAILURE);
 
-    repos_path = axis2_dep_engine_get_repos_path(dep_engine, env);
+    file_flag = axis2_dep_engine_get_file_flag (dep_engine, env);
 
-    svcs_xml = axutil_strcat(env, repos_path, AXIS2_PATH_SEP_STR,
-                             AXIS2_SERVICE_FOLDER, AXIS2_PATH_SEP_STR,
-                             file_name, AXIS2_PATH_SEP_STR, AXIS2_SVC_XML,
-                             NULL);
+    if (file_flag == AXIS2_FALSE)
+    { 
+
+        repos_path = axis2_dep_engine_get_repos_path(dep_engine, env);
+        
+        svcs_xml = axutil_strcat(env, repos_path, AXIS2_PATH_SEP_STR,
+                                 AXIS2_SERVICE_FOLDER, AXIS2_PATH_SEP_STR,
+                                 file_name, AXIS2_PATH_SEP_STR, AXIS2_SVC_XML,
+                                 NULL);
+    }
+    else
+    {
+        repos_path = axis2_dep_engine_get_svc_dir (dep_engine, env);
+        svcs_xml = axutil_strcat (env, repos_path, AXIS2_PATH_SEP_STR,
+                                  file_name, AXIS2_PATH_SEP_STR, AXIS2_SVC_XML,
+                                  NULL);
+    }
 
     if (!svcs_xml)
     {
@@ -250,17 +264,31 @@
     axis2_status_t status = AXIS2_FAILURE;
     axis2_char_t *module_xml = NULL;
     axis2_char_t *repos_path = NULL;
+    axis2_bool_t file_flag;
+
 
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, file_name, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, dep_engine, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, module_desc, AXIS2_FAILURE);
 
-    repos_path = axis2_dep_engine_get_repos_path(dep_engine, env);
-    module_xml = axutil_strcat(env, repos_path, AXIS2_PATH_SEP_STR,
-                               AXIS2_MODULE_FOLDER, AXIS2_PATH_SEP_STR,
-                               file_name, AXIS2_PATH_SEP_STR, AXIS2_MODULE_XML,
-                               NULL);
+    file_flag = axis2_dep_engine_get_file_flag (dep_engine, env);
+	if (file_flag == AXIS2_FALSE)
+	{
+    	repos_path = axis2_dep_engine_get_repos_path(dep_engine, env);
+    	module_xml = axutil_strcat(env, repos_path, AXIS2_PATH_SEP_STR,
+        	                       AXIS2_MODULE_FOLDER, AXIS2_PATH_SEP_STR,
+            	                   file_name, AXIS2_PATH_SEP_STR, AXIS2_MODULE_XML,
+                	               NULL);
+	}
+	else
+	{
+        repos_path = axis2_dep_engine_get_module_dir (dep_engine, env);
+        module_xml = axutil_strcat (env, repos_path, AXIS2_PATH_SEP_STR,
+                                    file_name, AXIS2_PATH_SEP_STR, AXIS2_MODULE_XML,
+                                    NULL);
+	}
+	
     if (!module_xml)
     {
         AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);

Modified: webservices/axis2/trunk/c/src/core/deployment/axis2_dep_engine.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/deployment/axis2_dep_engine.h?rev=596104&r1=596103&r2=596104&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/deployment/axis2_dep_engine.h (original)
+++ webservices/axis2/trunk/c/src/core/deployment/axis2_dep_engine.h Sun Nov 18 09:45:50 2007
@@ -136,10 +136,9 @@
      * @param env pointer to environment struct
      */
     AXIS2_EXTERN struct axis2_phases_info *AXIS2_CALL
-
-                axis2_dep_engine_get_phases_info(
-                    const axis2_dep_engine_t * dep_engine,
-                    const axutil_env_t * env);
+    axis2_dep_engine_get_phases_info(
+        const axis2_dep_engine_t * dep_engine,
+        const axutil_env_t * env);
 
     /**
      * @param dep_engine pointer to deployment engine
@@ -147,29 +146,28 @@
      * @return AxisConfiguration <code>AxisConfiguration</code>
      */
     AXIS2_EXTERN struct axis2_conf *AXIS2_CALL
-
-                axis2_dep_engine_get_axis_conf(
-                    const axis2_dep_engine_t * dep_engine,
-                    const axutil_env_t * env);
+    axis2_dep_engine_get_axis_conf(
+        const axis2_dep_engine_t * dep_engine,
+        const axutil_env_t * env);
 
     /**
      * @param dep_engine pointer to deployment engine
      * @param env pointer to environment struct
      */
     AXIS2_EXTERN struct axis2_conf *AXIS2_CALL
-                axis2_dep_engine_load(
-                    axis2_dep_engine_t * dep_engine,
-                    const axutil_env_t * env);
+    axis2_dep_engine_load(
+        axis2_dep_engine_t * dep_engine,
+        const axutil_env_t * env);
 
     /**
      * @param dep_engine pointer to deployment engine
      * @param env pointer to environment struct
      */
     AXIS2_EXTERN struct axis2_conf *AXIS2_CALL
-                axis2_dep_engine_load_client(
-                    axis2_dep_engine_t * dep_engine,
-                    const axutil_env_t * env,
-                    const axis2_char_t * client_home);
+    axis2_dep_engine_load_client(
+        axis2_dep_engine_t * dep_engine,
+        const axutil_env_t * env,
+        const axis2_char_t * client_home);
 
     /**
      * @param dep_engine pointer to deployment engine
@@ -234,11 +232,11 @@
      * @param file_name pointer to file name
      */
     AXIS2_EXTERN struct axis2_svc *AXIS2_CALL
-                axis2_dep_engine_build_svc(
-                    axis2_dep_engine_t * dep_engine,
-                    const axutil_env_t * env,
-                    struct axis2_svc *svc,
-                    axis2_char_t * file_name);
+		axis2_dep_engine_build_svc(
+			axis2_dep_engine_t * dep_engine,
+            const axutil_env_t * env,
+            struct axis2_svc *svc,
+            axis2_char_t * file_name);
 
     /**
      * This method can be used to build ModuleDescription for a given module archiev file
@@ -248,22 +246,65 @@
      * @param conf pointer to conf
      */
     AXIS2_EXTERN struct axis2_module_desc *AXIS2_CALL
-
-                axis2_dep_engine_build_module(
-                    axis2_dep_engine_t * dep_engine,
-                    const axutil_env_t * env,
-                    axutil_file_t * module_archive,
-                    struct axis2_conf *conf);
+		axis2_dep_engine_build_module(
+        	axis2_dep_engine_t * dep_engine,
+            const axutil_env_t * env,
+            axutil_file_t * module_archive,
+            struct axis2_conf *conf);
 
     /**
      * @param dep_engine pointer to deployment engine
      * @param env pointer to environment struct
      */
     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
-    axis2_dep_engine_get_repos_path(
+    	axis2_dep_engine_get_repos_path(
+        const axis2_dep_engine_t * dep_engine,
+        const axutil_env_t * env);
+
+	/**
+     * @param dep_engine pointer to module directory
+     * @param env pointer to environment struct
+     */
+    AXIS2_EXTERN axis2_bool_t AXIS2_CALL
+    	axis2_dep_engine_get_file_flag(
         const axis2_dep_engine_t * dep_engine,
         const axutil_env_t * env);
 
+	
+	/**
+     * @param dep_engine pointer to module directory
+     * @param env pointer to environment struct
+     */
+    AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+    	axis2_dep_engine_get_module_dir(
+        const axis2_dep_engine_t * dep_engine,
+        const axutil_env_t * env);
+	
+	/**
+     * @param dep_engine pointer to module directory
+     * @param env pointer to environment struct
+	 * @param module_dir pointer of the directory path
+     */
+    AXIS2_EXTERN axis2_status_t AXIS2_CALL
+    	axis2_dep_engine_set_module_dir(
+        axis2_dep_engine_t * dep_engine,
+        const axutil_env_t * env,
+	    const axis2_char_t *module_dir);
+
+
+    AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+    axis2_dep_engine_get_svc_dir(
+        const axis2_dep_engine_t * dep_engine,
+        const axutil_env_t * env);
+
+
+    AXIS2_EXTERN axis2_status_t AXIS2_CALL
+    axis2_dep_engine_set_svc_dir(
+        axis2_dep_engine_t * dep_engine,
+        const axutil_env_t * env,
+        const axis2_char_t *svc_dir);
+
+
     /**
      * @param dep_engine pointer to deployment engine
      * @param env pointer to environment struct
@@ -271,7 +312,6 @@
      * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
      */
     AXIS2_EXTERN axis2_status_t AXIS2_CALL
-
     axis2_dep_engine_set_current_file_item(
         axis2_dep_engine_t * dep_engine,
         const axutil_env_t * env,
@@ -307,10 +347,24 @@
      * @return pointer to newly created deployment engine
      */
     AXIS2_EXTERN axis2_dep_engine_t *AXIS2_CALL
-
     axis2_dep_engine_create_with_repos_name(
         const axutil_env_t * env,
         const axis2_char_t * repos_path);
+	
+	
+	/**
+     * Creates description builder struct using axis2 xml
+     * This the constructor which is used by Engine in order to start
+     * Deployment module,
+     * @param env pointer to environment struct
+     * @param axis2_xml is the path of the axis2.xml .
+     * @return pointer to newly created deployment engine
+     */	
+	AXIS2_EXTERN axis2_dep_engine_t *AXIS2_CALL
+	axis2_dep_engine_create_with_axis2_xml(
+	    const axutil_env_t * env,
+    	const axis2_char_t * axis2_xml);
+
 
     /**
      * Creates deployment engine struct
@@ -326,6 +380,11 @@
         const axis2_char_t * repos_path,
         const axis2_char_t * svr_xml_file);
 
+    AXIS2_EXTERN axis2_dep_engine_t *AXIS2_CALL
+    axis2_dep_engine_create_with_svr_xml_file(
+        const axutil_env_t * env,
+        const axis2_char_t * svr_xml_file);
+
     AXIS2_EXTERN axis2_status_t AXIS2_CALL
     axis2_dep_engine_add_desc_builder(
         axis2_dep_engine_t * dep_engine,
@@ -333,7 +392,6 @@
         struct axis2_desc_builder *desc_builder);
 
     AXIS2_EXTERN axis2_status_t AXIS2_CALL
-
     axis2_dep_engine_add_module_builder(
         axis2_dep_engine_t * dep_engine,
         const axutil_env_t * env,

Modified: webservices/axis2/trunk/c/src/core/deployment/axis2_repos_listener.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/deployment/axis2_repos_listener.h?rev=596104&r1=596103&r2=596104&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/deployment/axis2_repos_listener.h (original)
+++ webservices/axis2/trunk/c/src/core/deployment/axis2_repos_listener.h Sun Nov 18 09:45:50 2007
@@ -121,7 +121,6 @@
      * @return pointer to newly created deployment engine
      */
     AXIS2_EXTERN axis2_repos_listener_t *AXIS2_CALL
-
     axis2_repos_listener_create(
         const axutil_env_t * env);
 
@@ -132,11 +131,24 @@
      * @return pointer to newly created deployment engine
      */
     AXIS2_EXTERN axis2_repos_listener_t *AXIS2_CALL
-
     axis2_repos_listener_create_with_folder_name_and_dep_engine(
         const axutil_env_t * env,
         axis2_char_t * folder_name,
         struct axis2_dep_engine *dep_engine);
+
+    AXIS2_EXTERN axis2_status_t AXIS2_CALL
+    axis2_repos_listener_set_conf(
+        axis2_repos_listener_t *repo_listener,        
+        const axutil_env_t * env,
+        axis2_conf_t *conf);
+
+    AXIS2_EXTERN axis2_conf_t *AXIS2_CALL
+    axis2_repos_listener_get_conf(
+        axis2_repos_listener_t *repo_listener,        
+        const axutil_env_t * env);
+
+
+
 
     /** @} */
 

Modified: webservices/axis2/trunk/c/src/core/deployment/conf_builder.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/deployment/conf_builder.c?rev=596104&r1=596103&r2=596104&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/deployment/conf_builder.c (original)
+++ webservices/axis2/trunk/c/src/core/deployment/conf_builder.c Sun Nov 18 09:45:50 2007
@@ -339,6 +339,7 @@
         {
             axutil_qname_free(qref, env);
         }
+
         if (module_ref_att)
         {
             axutil_qname_t *qrefname = NULL;
@@ -666,6 +667,7 @@
             trs_name = axiom_element_get_attribute(transport_element, env,
                                                    qattname);
         }
+
         axutil_qname_free(qattname, env);
         if (trs_name)
         {
@@ -697,9 +699,16 @@
             axis2_char_t *temp_path2 = NULL;
             axis2_char_t *temp_path3 = NULL;
             AXIS2_TRANSPORT_ENUMS transport_enum;
+            axis2_bool_t axis2_flag = AXIS2_FALSE;
+            axutil_param_t *libparam;
+            axis2_char_t *libdir;
+            axis2_conf_t *conf; 
+
+            conf = conf_builder->conf;
+            axis2_flag = axis2_conf_get_axis2_flag (conf, env);
 
             name = axiom_attribute_get_value(trs_name, env);
-            AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "Transport name:%s", name);
+
             if (name)
             {
                 if (axutil_strcmp(name, AXIS2_TRANSPORT_HTTP) == 0)
@@ -758,18 +767,41 @@
             dll_name =
                 axutil_dll_desc_create_platform_specific_dll_name(dll_desc, env,
                                                                   class_name);
+            if (axis2_flag == AXIS2_FALSE)
+            {
+                repos_name =
+                    axis2_dep_engine_get_repos_path
+                    (axis2_desc_builder_get_dep_engine
+                     (conf_builder->desc_builder, env), env);
+                temp_path = axutil_stracat(env, repos_name, AXIS2_PATH_SEP_STR);
+                temp_path2 = axutil_stracat(env, temp_path, AXIS2_LIB_FOLDER);
+                temp_path3 = axutil_stracat(env, temp_path2, AXIS2_PATH_SEP_STR);
+                path_qualified_dll_name = axutil_stracat(env, temp_path3, dll_name);
+                AXIS2_FREE(env->allocator, temp_path);
+                AXIS2_FREE(env->allocator, temp_path2);
+                AXIS2_FREE(env->allocator, temp_path3);
+            }
+            else
+            {
+                libparam = axis2_conf_get_param (conf, env, "libDir");
+                if (libparam)
+                {
+                    libdir = axutil_param_get_value (libparam, env);
+                }
 
-            repos_name =
-                axis2_dep_engine_get_repos_path
-                (axis2_desc_builder_get_dep_engine
-                 (conf_builder->desc_builder, env), env);
-            temp_path = axutil_stracat(env, repos_name, AXIS2_PATH_SEP_STR);
-            temp_path2 = axutil_stracat(env, temp_path, AXIS2_LIB_FOLDER);
-            temp_path3 = axutil_stracat(env, temp_path2, AXIS2_PATH_SEP_STR);
-            path_qualified_dll_name = axutil_stracat(env, temp_path3, dll_name);
-            AXIS2_FREE(env->allocator, temp_path);
-            AXIS2_FREE(env->allocator, temp_path2);
-            AXIS2_FREE(env->allocator, temp_path3);
+                if (!libdir)
+                {
+                    AXIS2_LOG_ERROR (env->log, AXIS2_LOG_SI, "specifying \
+services and modules directories using axis2.xml, path of the library directory\
+is not presant");
+                    return AXIS2_FAILURE;
+                }
+                path_qualified_dll_name = axutil_strcat (env, libdir, 
+                                                         AXIS2_PATH_SEP_STR,
+                                                         dll_name,
+                                                         NULL);
+            }
+            /* AXIS2_LOG_DEBUG (env->log, AXIS2_LOG_SI, "%s", path_qualified_dll_name); */
             axutil_dll_desc_set_name(dll_desc, env, path_qualified_dll_name);
             AXIS2_FREE(env->allocator, path_qualified_dll_name);
             axutil_dll_desc_set_type(dll_desc, env, AXIS2_TRANSPORT_SENDER_DLL);
@@ -922,10 +954,16 @@
     axiom_children_qname_iterator_t * trs_recvs)
 {
     axis2_status_t status = AXIS2_FAILURE;
+    axis2_conf_t *conf;
+    axis2_bool_t axis2_flag = AXIS2_FALSE;
 
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, trs_recvs, AXIS2_FAILURE);
 
+    conf = conf_builder->conf;
+    axis2_flag = axis2_conf_get_axis2_flag (conf, env);
+
+
     while (AXIS2_TRUE == axiom_children_qname_iterator_has_next(trs_recvs, env))
     {
         axis2_transport_in_desc_t *transport_in = NULL;
@@ -1028,6 +1066,9 @@
                 axis2_char_t *temp_path = NULL;
                 axis2_char_t *temp_path2 = NULL;
                 axis2_char_t *temp_path3 = NULL;
+                
+                axutil_param_t *tnsparam;
+                axis2_char_t *libpath;
 
                 class_name = axiom_attribute_get_value(trs_class_name, env);
                 impl_info_param = axutil_param_create(env, class_name, NULL);
@@ -1036,20 +1077,37 @@
                     axutil_dll_desc_create_platform_specific_dll_name(dll_desc,
                                                                       env,
                                                                       class_name);
-
-                repos_name =
-                    axis2_dep_engine_get_repos_path
-                    (axis2_desc_builder_get_dep_engine
-                     (conf_builder->desc_builder, env), env);
-                temp_path = axutil_stracat(env, repos_name, AXIS2_PATH_SEP_STR);
-                temp_path2 = axutil_stracat(env, temp_path, AXIS2_LIB_FOLDER);
-                temp_path3 =
-                    axutil_stracat(env, temp_path2, AXIS2_PATH_SEP_STR);
-                path_qualified_dll_name =
-                    axutil_stracat(env, temp_path3, dll_name);
-                AXIS2_FREE(env->allocator, temp_path);
-                AXIS2_FREE(env->allocator, temp_path2);
-                AXIS2_FREE(env->allocator, temp_path3);
+                if (axis2_flag == AXIS2_FALSE)
+                {
+                    repos_name =
+                        axis2_dep_engine_get_repos_path
+                        (axis2_desc_builder_get_dep_engine
+                         (conf_builder->desc_builder, env), env);
+                    temp_path = axutil_stracat(env, repos_name, AXIS2_PATH_SEP_STR);
+                    temp_path2 = axutil_stracat(env, temp_path, AXIS2_LIB_FOLDER);
+                    temp_path3 =
+                        axutil_stracat(env, temp_path2, AXIS2_PATH_SEP_STR);
+                    path_qualified_dll_name =
+                        axutil_stracat(env, temp_path3, dll_name);
+                    AXIS2_FREE(env->allocator, temp_path);
+                    AXIS2_FREE(env->allocator, temp_path2);
+                    AXIS2_FREE(env->allocator, temp_path3);
+                }
+                else
+                {
+                    tnsparam = axis2_conf_get_param (conf, env, "libDir");
+                    if (tnsparam)
+                    {
+                        libpath = (axis2_char_t *)axutil_param_get_value (tnsparam, env);
+
+                        if (libpath)
+                        {
+                            path_qualified_dll_name = axutil_strcat (env, libpath,
+                                                                     AXIS2_PATH_SEP_STR,
+                                                                     dll_name, NULL);
+                        }
+                    }
+                }
 
                 axutil_dll_desc_set_name(dll_desc, env,
                                          path_qualified_dll_name);

Modified: webservices/axis2/trunk/c/src/core/deployment/conf_init.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/deployment/conf_init.c?rev=596104&r1=596103&r2=596104&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/deployment/conf_init.c (original)
+++ webservices/axis2/trunk/c/src/core/deployment/conf_init.c Sun Nov 18 09:45:50 2007
@@ -25,6 +25,8 @@
 #include <axis2_dep_engine.h>
 #include <axis2_module.h>
 
+#define DEFAULT_REPO_PATH "."
+
 axis2_status_t AXIS2_CALL axis2_init_modules(
     const axutil_env_t * env,
     axis2_conf_ctx_t * conf_ctx);
@@ -99,6 +101,68 @@
     return conf_ctx;
 }
 
+
+AXIS2_EXTERN axis2_conf_ctx_t *AXIS2_CALL
+axis2_build_conf_ctx_with_file(
+    const axutil_env_t * env,
+    const axis2_char_t * file)
+{
+    axis2_conf_ctx_t *conf_ctx = NULL;
+    axis2_dep_engine_t *dep_engine = NULL;
+    axis2_conf_t *conf = NULL;
+    axis2_phase_resolver_t *phase_resolver = NULL;
+
+    AXIS2_ENV_CHECK(env, NULL);
+
+    dep_engine = axis2_dep_engine_create_with_axis2_xml (env, file);
+    if (!dep_engine)
+    {
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
+                        "dep engine create with axis2 xml failed,"
+						" dep_engine value is NULL");
+        return NULL;
+    }
+
+    conf = axis2_dep_engine_load(dep_engine, env);
+
+    if (!conf)
+    {
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
+                        "dep engine load failed. conf value is NULL");
+        return NULL;
+    }
+	
+    axis2_conf_set_dep_engine(conf, env, dep_engine);
+    phase_resolver = axis2_phase_resolver_create_with_config(env, conf);
+    if (!phase_resolver)
+    {
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
+                        "phase resolver create with config failed."
+						" phase resolver value is NULL");
+        return NULL;
+    }
+
+	
+	
+    conf_ctx = axis2_conf_ctx_create(env, conf);
+    if (!conf_ctx)
+    {
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
+                        "conf ctx creation failed. conf_ctx value is NULL");
+        return NULL;
+    }
+
+    axis2_phase_resolver_build_chains(phase_resolver, env);
+
+    axis2_init_modules(env, conf_ctx);
+    axis2_load_services(env, conf_ctx);
+    axis2_init_transports(env, conf_ctx);
+
+    axis2_phase_resolver_free(phase_resolver, env);
+
+    return conf_ctx;
+}
+
 axis2_conf_ctx_t *AXIS2_CALL
 axis2_build_client_conf_ctx(
     const axutil_env_t * env,
@@ -111,16 +175,50 @@
     axutil_property_t *property = NULL;
     axis2_ctx_t *conf_ctx_base = NULL;
 
+    axis2_status_t status;
+    unsigned int len = 0;
+
     AXIS2_ENV_CHECK(env, NULL);
 
-    dep_engine = axis2_dep_engine_create(env);
+    /* building conf using axis2.xml, in that case we check whether
+     * last 9 characters of the axis2_home equals to the "axis2.xml"
+     * else treat it as a directory 
+     */
+
+    status = axutil_file_handler_access (axis2_home, AXIS2_R_OK);
+	if (status == AXIS2_SUCCESS)
+	{
+		len = strlen (axis2_home);
+		if (!strcmp ((axis2_home + (len - 9)), "axis2.xml"))
+		{
+            dep_engine = axis2_dep_engine_create_with_axis2_xml (env, 
+                                                                 axis2_home);
+		}
+        else
+        {
+            dep_engine = axis2_dep_engine_create(env);
+        }
+	}
+	else
+	{
+		AXIS2_LOG_WARNING (env->log, AXIS2_LOG_SI, "provided repo path %s is " 
+						   "not exsist or no permissions to read, set "
+						   "axis2_home to DEFAULT_REPO_PATH", axis2_home);
+		axis2_home = DEFAULT_REPO_PATH;
+        dep_engine = axis2_dep_engine_create(env);
+	}
+
+
     if (!dep_engine)
     {
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
-                        "dep engine create with repos name failed, dep_engine value is NULL");
+                        "dep engine create with repos name failed, dep_engine \
+value is NULL");
         return NULL;
     }
 
+
+
     conf = axis2_dep_engine_load_client(dep_engine, env, axis2_home);
     if (!conf)
     {
@@ -134,7 +232,8 @@
     if (!phase_resolver)
     {
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
-                        "phase resolver create with config failed. phase resolver value is NULL");
+                        "phase resolver create with config failed. \
+phase resolver value is NULL");
         return NULL;
     }
 
@@ -238,8 +337,10 @@
                     {
                         axutil_param_t *impl_info_param = NULL;
                         void *impl_class = NULL;
-                        impl_info_param = axis2_svc_get_param(svc_desc, env,
-                                                              AXIS2_SERVICE_CLASS);
+                        impl_info_param = axis2_svc_get_param(
+                            svc_desc, env,
+                            AXIS2_SERVICE_CLASS);
+
                         if (!impl_info_param)
                         {
                             AXIS2_ERROR_SET(env->error,
@@ -262,17 +363,15 @@
                         }
 
                         axis2_svc_set_impl_class(svc_desc, env, impl_class);
-                        status = AXIS2_SVC_SKELETON_INIT_WITH_CONF((axis2_svc_skeleton_t
-                                                           *) impl_class, env,
-                                                          conf);
+                        status = AXIS2_SVC_SKELETON_INIT_WITH_CONF(
+                            (axis2_svc_skeleton_t *) impl_class, env, conf);
                         axutil_allocator_switch_to_local_pool(env->allocator);
                         if(!status)
                         {
                             AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
-                                "Initialization failed for the service %s. "\
-                                "Check the service's init_with_conf() "\
-                                "function for errors and retry",
-                                axis2_svc_get_name(svc_desc, env));
+                                            "Initialization failed for the \
+service %s. Check the service's init_with_conf() function for errors and \
+retry", axis2_svc_get_name(svc_desc, env));
                         }
                     }
                 }
@@ -283,7 +382,8 @@
     else
     {
         AXIS2_LOG_WARNING (env->log, AXIS2_LOG_SI, 
-                           "conf ctx value is NULL, axis2 load services failed");
+                           "conf ctx value is NULL, axis2 load services \
+failed");
     }
 
     return status;

Modified: webservices/axis2/trunk/c/src/core/deployment/dep_engine.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/deployment/dep_engine.c?rev=596104&r1=596103&r2=596104&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/deployment/dep_engine.c (original)
+++ webservices/axis2/trunk/c/src/core/deployment/dep_engine.c Sun Nov 18 09:45:50 2007
@@ -47,6 +47,9 @@
     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 */
+	
+	/* whether dep_engine build using axis2.xml */
+	axis2_bool_t file_flag;
 
     /**
      * This will store all the web Services to deploy
@@ -64,6 +67,17 @@
      */
     axis2_char_t *folder_name;
 
+	/**
+	 * module directory, dep_engine holds in the module build scenario
+	 */
+	axis2_char_t *module_dir;
+
+   /**
+    *services directory, services are avialble in services directory
+    */
+
+    axis2_char_t *svc_dir;
+	
     /**
      * Full path to the server xml file(axis2.xml)
      */
@@ -75,7 +89,7 @@
      */
     axutil_array_list_t *module_list;
     axis2_repos_listener_t *repos_listener; /*Added this here to help with freeing
-                                               memory allocated for this - Samisa */
+                                              memory allocated for this - Samisa */
     axis2_conf_builder_t *conf_builder;
     axis2_svc_builder_t *svc_builder;
     axutil_array_list_t *desc_builders;
@@ -127,6 +141,10 @@
     const axutil_env_t * env,
     axis2_char_t * file_name);
 
+static axis2_status_t axis2_dep_engine_set_svc_and_module_dir_path (
+    axis2_dep_engine_t *dep_engine,
+    const axutil_env_t *env);
+
 AXIS2_EXTERN axis2_dep_engine_t *AXIS2_CALL
 axis2_dep_engine_create(
     const axutil_env_t * env)
@@ -144,23 +162,7 @@
         AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
         return NULL;
     }
-    dep_engine->conf = NULL;
-    dep_engine->axis2_repos = NULL;
-    dep_engine->curr_file = NULL;
-    dep_engine->arch_reader = NULL;
-    dep_engine->ws_to_deploy = NULL;
-    dep_engine->ws_to_undeploy = NULL;
-    dep_engine->phases_info = NULL;
-    dep_engine->module_list = NULL;
-    dep_engine->folder_name = NULL;
-    dep_engine->conf_name = NULL;
-    dep_engine->repos_listener = NULL;
-    dep_engine->conf_builder = NULL;
-    dep_engine->svc_builder = NULL;
-    dep_engine->desc_builders = NULL;
-    dep_engine->module_builders = NULL;
-    dep_engine->svc_builders = NULL;
-    dep_engine->svc_grp_builders = NULL;
+  	memset (dep_engine, 0, sizeof (axis2_dep_engine_t));
 
     dep_engine->ws_to_deploy = axutil_array_list_create(env, 0);
     if (!(dep_engine->ws_to_deploy))
@@ -201,11 +203,34 @@
     {
         return NULL;
     }
+	dep_engine->file_flag = AXIS2_FALSE;
 
     return dep_engine;
 }
 
 AXIS2_EXTERN axis2_dep_engine_t *AXIS2_CALL
+axis2_dep_engine_create_with_axis2_xml(
+    const axutil_env_t * env,
+    const axis2_char_t * axis2_xml)
+{
+    axis2_dep_engine_t *dep_engine = NULL;
+
+    AXIS2_ENV_CHECK(env, NULL);
+
+    dep_engine = (axis2_dep_engine_t *)
+        axis2_dep_engine_create_with_svr_xml_file(env,
+                                                  axis2_xml);
+    if (!dep_engine)
+    {
+        return NULL;
+    }
+	dep_engine->file_flag = AXIS2_TRUE;
+
+    return dep_engine;
+}
+
+
+AXIS2_EXTERN axis2_dep_engine_t *AXIS2_CALL
 axis2_dep_engine_create_with_repos_name_and_svr_xml_file(
     const axutil_env_t * env,
     const axis2_char_t * repos_path,
@@ -260,6 +285,7 @@
 
     conf_file_l = axutil_stracat(env, repos_path, AXIS2_PATH_SEP_STR);
     dep_engine->conf_name = axutil_stracat(env, conf_file_l, svr_xml_file);
+	
     AXIS2_FREE(env->allocator, conf_file_l);
     if (!dep_engine->conf_name)
     {
@@ -268,24 +294,71 @@
                         AXIS2_FAILURE);
         return NULL;
     }
+	
     status = axutil_file_handler_access(dep_engine->conf_name, AXIS2_F_OK);
     if (AXIS2_SUCCESS != status)
     {
         axis2_dep_engine_free(dep_engine, env);
         AXIS2_ERROR_SET(env->error, AXIS2_ERROR_CONFIG_NOT_FOUND,
                         AXIS2_FAILURE);
+		AXIS2_LOG_ERROR (env->log, AXIS2_LOG_SI, "%s", 
+						 AXIS2_ERROR_GET_MESSAGE (env->error));
         return NULL;
     }
 
     return dep_engine;
 }
 
+AXIS2_EXTERN axis2_dep_engine_t *AXIS2_CALL
+axis2_dep_engine_create_with_svr_xml_file(
+    const axutil_env_t * env,
+    const axis2_char_t * svr_xml_file)
+{
+    axis2_dep_engine_t *dep_engine = NULL;
+    axis2_status_t status = AXIS2_FAILURE;
+
+    AXIS2_ENV_CHECK(env, NULL);
+    AXIS2_PARAM_CHECK(env->error, svr_xml_file, NULL);
+
+    dep_engine = (axis2_dep_engine_t *) axis2_dep_engine_create(env);
+	
+    if (!dep_engine)
+    {
+        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
+    }
+
+    dep_engine->conf_name = axutil_strdup (env, (axis2_char_t *)svr_xml_file);
+    if (!dep_engine->conf_name)
+    {
+        axis2_dep_engine_free(dep_engine, env);
+        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_REPO_CAN_NOT_BE_NULL,
+                        AXIS2_FAILURE);
+        return NULL;
+    }
+    status = axutil_file_handler_access(dep_engine->conf_name, AXIS2_F_OK);
+    if (AXIS2_SUCCESS != status)
+    {
+        axis2_dep_engine_free(dep_engine, env);
+        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_CONFIG_NOT_FOUND,
+                        AXIS2_FAILURE);
+		AXIS2_LOG_ERROR (env->log, AXIS2_LOG_SI, "%s", 
+						 AXIS2_ERROR_GET_MESSAGE (env->error));
+        return NULL;
+    }
+
+    return dep_engine;
+}
+
+
 AXIS2_EXTERN void AXIS2_CALL
 axis2_dep_engine_free(
     axis2_dep_engine_t * dep_engine,
     const axutil_env_t * env)
 {
     AXIS2_ENV_CHECK(env, void);
+    if (!dep_engine)
+        return;
 
     if (dep_engine->curr_file)
     {
@@ -491,6 +564,7 @@
     axutil_qname_t * module_name)
 {
     AXIS2_PARAM_CHECK(env->error, module_name, NULL);
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
 
     return axis2_conf_get_module(dep_engine->conf, env, module_name);
 }
@@ -500,6 +574,7 @@
     const axis2_dep_engine_t * dep_engine,
     const axutil_env_t * env)
 {
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
     return dep_engine->curr_file;
 }
 
@@ -511,6 +586,7 @@
 {
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, file, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
 
     return axutil_array_list_add(dep_engine->ws_to_deploy, env, file);
 }
@@ -523,6 +599,8 @@
 {
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, file, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
+
     if (!(dep_engine->ws_to_undeploy))
     {
         dep_engine->ws_to_undeploy = axutil_array_list_create(env, 0);
@@ -535,6 +613,7 @@
     const axis2_dep_engine_t * dep_engine,
     const axutil_env_t * env)
 {
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
     return dep_engine->phases_info;
 }
 
@@ -543,6 +622,7 @@
     const axis2_dep_engine_t * dep_engine,
     const axutil_env_t * env)
 {
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
     return dep_engine->conf;
 }
 
@@ -559,6 +639,7 @@
     axutil_param_t *para_hot_update = NULL;
 
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
 
     para_hot_dep = axis2_conf_get_param(dep_engine->conf, env,
                                         AXIS2_HOTDEPLOYMENT);
@@ -592,6 +673,7 @@
     axis2_status_t status = AXIS2_FAILURE;
     axutil_array_list_t *out_fault_phases = NULL;
     axutil_array_list_t *new_out_fault_phases = NULL;
+
     AXIS2_ENV_CHECK(env, NULL);
 
     if (!dep_engine->conf_name)
@@ -607,26 +689,45 @@
     {
         return NULL;
     }
+	
+	/* set a flag to mark that conf is create using axis2 xml
+	 * to find out that conf is build using axis2 xml , this flag can be used
+	 */
+	axis2_conf_set_axis2_flag (dep_engine->conf, env, dep_engine->file_flag);
+	axis2_conf_set_axis2_xml (dep_engine->conf, env, dep_engine->conf_name);
 
     dep_engine->conf_builder =
         axis2_conf_builder_create_with_file_and_dep_engine_and_conf(env,
                                                                     dep_engine->
-                                                                    conf_name,
+                                                                    conf_name, 
                                                                     dep_engine,
                                                                     dep_engine->
-                                                                    conf);
+                                                                    conf); 
     if (!(dep_engine->conf_builder))
     {
         axis2_conf_free(dep_engine->conf, env);
         dep_engine->conf = NULL;
     }
+
+    /* Only after populating we will be able to access parameters in
+     * the axis2.xml
+     */
+
     status = axis2_conf_builder_populate_conf(dep_engine->conf_builder, env);
+
     if (AXIS2_SUCCESS != status)
     {
         axis2_conf_free(dep_engine->conf, env);
         dep_engine->conf = NULL;
         return NULL;
     }
+
+    status = axis2_dep_engine_set_svc_and_module_dir_path (dep_engine, env);
+    if (AXIS2_SUCCESS != status)
+    {
+        return NULL;
+    }
+
     status = axis2_dep_engine_set_dep_features(dep_engine, env);
     if (AXIS2_SUCCESS != status)
     {
@@ -637,6 +738,7 @@
     {
         axis2_repos_listener_free(dep_engine->repos_listener, env);
     }
+	
     dep_engine->repos_listener =
         axis2_repos_listener_create_with_folder_name_and_dep_engine(env,
                                                                     dep_engine->
@@ -654,7 +756,8 @@
                                                       dep_engine->conf);
     status =
         axis2_dep_engine_validate_system_predefined_phases(dep_engine, env);
-    if (AXIS2_SUCCESS != status)
+   
+	if (AXIS2_SUCCESS != status)
     {
         axis2_repos_listener_free(dep_engine->repos_listener, env);
         axis2_conf_free(dep_engine->conf, env);
@@ -665,6 +768,13 @@
 
     status = axis2_conf_set_phases_info(dep_engine->conf, env,
                                         dep_engine->phases_info);
+	if (AXIS2_SUCCESS != status)
+    {
+        axis2_repos_listener_free(dep_engine->repos_listener, env);
+        axis2_conf_free(dep_engine->conf, env);
+        return NULL;
+    }
+	
     out_fault_phases =
         axis2_phases_info_get_op_out_faultphases(dep_engine->phases_info, env);
     new_out_fault_phases = axis2_phases_info_copy_flow(env, out_fault_phases);
@@ -680,10 +790,11 @@
         axis2_conf_free(dep_engine->conf, env);
         return NULL;
     }
-
+	
     status = axis2_dep_engine_engage_modules(dep_engine, env);
     if (AXIS2_SUCCESS != status)
     {
+		AXIS2_LOG_ERROR (env->log, AXIS2_LOG_SI, "dep engine failed to engaged_modules");
         axis2_repos_listener_free(dep_engine->repos_listener, env);
         axis2_conf_free(dep_engine->conf, env);
         AXIS2_ERROR_SET(env->error, AXIS2_ERROR_MODULE_VALIDATION_FAILED,
@@ -703,35 +814,46 @@
 {
     axis2_bool_t is_repos_exist = AXIS2_FALSE;
     axis2_status_t status = AXIS2_FAILURE;
+    axis2_bool_t flag = AXIS2_FALSE;
 
     AXIS2_ENV_CHECK(env, NULL);
     AXIS2_PARAM_CHECK(env->error, client_home, NULL);
 
-    dep_engine->axis2_repos = axutil_strdup(env, client_home);
-    if (!dep_engine->axis2_repos)
-    {
-        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
-        return NULL;
-    }
-    if (client_home && 0 != axutil_strcmp("", client_home))
+    flag = axis2_dep_engine_get_file_flag (dep_engine, env);
+
+    if (flag == AXIS2_FALSE)
     {
-        status =
-            axis2_dep_engine_check_client_home(dep_engine, env, client_home);
-        if (AXIS2_SUCCESS == status)
+        dep_engine->axis2_repos = axutil_strdup(env, client_home);
+        if (!dep_engine->axis2_repos)
         {
-            is_repos_exist = AXIS2_TRUE;
+            AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+            return NULL;
+        }
+        if (client_home && 0 != axutil_strcmp("", client_home))
+        {
+            status =
+                axis2_dep_engine_check_client_home(dep_engine, env, client_home);
+            if (AXIS2_SUCCESS == status)
+            {
+                is_repos_exist = AXIS2_TRUE;
+            }
+        }
+        else
+        {
+            dep_engine->conf_name =
+                axutil_strdup(env, AXIS2_CONFIGURATION_RESOURCE);
+            if (!dep_engine->conf_name)
+            {
+                AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+                return NULL;
+            }
         }
     }
     else
     {
-        dep_engine->conf_name =
-            axutil_strdup(env, AXIS2_CONFIGURATION_RESOURCE);
-        if (!dep_engine->conf_name)
-        {
-            AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
-            return NULL;
-        }
+        is_repos_exist = AXIS2_TRUE;
     }
+
     dep_engine->conf = axis2_conf_create(env);
     if (!dep_engine->conf)
     {
@@ -749,6 +871,15 @@
         axis2_conf_free(dep_engine->conf, env);
         dep_engine->conf = NULL;
     }
+
+   /**
+      very important: only after populating we will be able to access
+      parameters in axis2 xml.
+    */
+
+	axis2_conf_set_axis2_flag (dep_engine->conf, env, dep_engine->file_flag);
+	axis2_conf_set_axis2_xml (dep_engine->conf, env, dep_engine->conf_name);
+
     status = axis2_conf_builder_populate_conf(dep_engine->conf_builder, env);
     if (AXIS2_SUCCESS != status)
     {
@@ -757,6 +888,15 @@
         return NULL;
     }
 
+    status = axis2_dep_engine_set_svc_and_module_dir_path (dep_engine, env);
+    if (AXIS2_SUCCESS != status)
+    {
+        axis2_conf_free(dep_engine->conf, env);
+        dep_engine->conf = NULL;
+        return NULL;
+    }
+
+
     if (AXIS2_TRUE == is_repos_exist)
     {
         dep_engine->hot_dep = AXIS2_FALSE;
@@ -766,10 +906,10 @@
             axis2_repos_listener_free(dep_engine->repos_listener, env);
         }
         dep_engine->repos_listener =
-            axis2_repos_listener_create_with_folder_name_and_dep_engine(env,
-                                                                        dep_engine->
-                                                                        folder_name,
-                                                                        dep_engine);
+            axis2_repos_listener_create_with_folder_name_and_dep_engine(
+                env,
+                dep_engine->folder_name,
+                dep_engine);
     }
 
     axis2_conf_set_repo(dep_engine->conf, env, dep_engine->axis2_repos);
@@ -840,6 +980,7 @@
     axis2_status_t status = AXIS2_FAILURE;
 
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
 
     if (!dep_engine->module_list)
     {
@@ -877,6 +1018,7 @@
     axis2_char_t *phase3 = NULL;
 
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
 
     in_phases = axis2_phases_info_get_in_phases(dep_engine->phases_info, env);
     if (in_phases)
@@ -910,6 +1052,7 @@
 
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, svc_metadata, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
 
     svcs = axis2_arch_file_data_get_deployable_svcs(dep_engine->curr_file, env);
     if (svcs)
@@ -1066,6 +1209,7 @@
 
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, module_desc, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
 
     read_in_dll =
         axis2_arch_file_data_get_module_dll_name(dep_engine->curr_file, env);
@@ -1158,6 +1302,7 @@
 
     AXIS2_ENV_CHECK(env, NULL);
     AXIS2_PARAM_CHECK(env->error, class_name, NULL);
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
 
     dll_desc = axutil_dll_desc_create(env);
     dll_name =
@@ -1187,6 +1332,8 @@
     axis2_module_t *module = NULL;
     axis2_status_t status = AXIS2_FAILURE;
 
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
+
     status = axis2_dep_engine_load_module_dll(dep_engine, env, module_metadata);
     if (AXIS2_SUCCESS != status)
     {
@@ -1251,6 +1398,7 @@
     axis2_status_t status = AXIS2_FAILURE;
 
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
 
     size = axutil_array_list_size(dep_engine->ws_to_deploy, env);
 
@@ -1271,64 +1419,64 @@
             type = axis2_arch_file_data_get_type(dep_engine->curr_file, env);
             switch (type)
             {
-            case AXIS2_SVC:
-                arch_reader = axis2_arch_reader_create(env);
+                case AXIS2_SVC:
+                    arch_reader = axis2_arch_reader_create(env);
 
-                svc_grp = axis2_svc_grp_create_with_conf(env, dep_engine->conf);
-                file_name = axis2_arch_file_data_get_name(dep_engine->
-                                                          curr_file, env);
-                status = axis2_arch_reader_process_svc_grp(arch_reader, env,
-                                                           file_name,
-                                                           dep_engine, svc_grp);
-                if (AXIS2_SUCCESS != status)
-                {
-                    axis2_arch_reader_free(arch_reader, env);
-                    AXIS2_ERROR_SET(env->error, AXIS2_ERROR_INVALID_SVC,
-                                    AXIS2_FAILURE);
-                    return status;
-                }
-                status = axis2_dep_engine_add_new_svc(dep_engine, env, svc_grp);
-                if (AXIS2_SUCCESS != status)
-                {
-                    axis2_arch_reader_free(arch_reader, env);
-                    AXIS2_ERROR_SET(env->error, AXIS2_ERROR_INVALID_SVC,
-                                    AXIS2_FAILURE);
-                    return status;
-                }
-                dep_engine->curr_file = NULL;
-                break;
-            case AXIS2_MODULE:
-                arch_reader = axis2_arch_reader_create(env);
-                if (dep_engine->arch_reader)
-                {
-                    axis2_arch_reader_free(dep_engine->arch_reader, env);
-                }
-                dep_engine->arch_reader = axis2_arch_reader_create(env);
-                meta_data = axis2_module_desc_create(env);
-                file_name = axis2_arch_file_data_get_name(dep_engine->
-                                                          curr_file, env);
-                status =
-                    axis2_arch_reader_read_module_arch(env, file_name,
-                                                       dep_engine, meta_data);
-                if (AXIS2_SUCCESS != status)
-                {
-                    axis2_arch_reader_free(arch_reader, env);
-                    AXIS2_ERROR_SET(env->error, AXIS2_ERROR_INVALID_MODULE,
-                                    AXIS2_FAILURE);
-                    return AXIS2_FAILURE;
-                }
-                status = axis2_dep_engine_add_new_module(dep_engine, env,
-                                                         meta_data);
-                if (AXIS2_SUCCESS != status)
-                {
-                    axis2_arch_reader_free(arch_reader, env);
-                    AXIS2_ERROR_SET(env->error, AXIS2_ERROR_INVALID_MODULE,
-                                    AXIS2_FAILURE);
-                    return AXIS2_FAILURE;
-                }
+                    svc_grp = axis2_svc_grp_create_with_conf(env, dep_engine->conf);
+                    file_name = axis2_arch_file_data_get_name(dep_engine->
+                                                              curr_file, env);
+                    status = axis2_arch_reader_process_svc_grp(arch_reader, env,
+                                                               file_name,
+                                                               dep_engine, svc_grp);
+                    if (AXIS2_SUCCESS != status)
+                    {
+                        axis2_arch_reader_free(arch_reader, env);
+                        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_INVALID_SVC,
+                                        AXIS2_FAILURE);
+                        return status;
+                    }
+                    status = axis2_dep_engine_add_new_svc(dep_engine, env, svc_grp);
+                    if (AXIS2_SUCCESS != status)
+                    {
+                        axis2_arch_reader_free(arch_reader, env);
+                        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_INVALID_SVC,
+                                        AXIS2_FAILURE);
+                        return status;
+                    }
+                    dep_engine->curr_file = NULL;
+                    break;
+                case AXIS2_MODULE:
+                    arch_reader = axis2_arch_reader_create(env);
+                    if (dep_engine->arch_reader)
+                    {
+                        axis2_arch_reader_free(dep_engine->arch_reader, env);
+                    }
+                    dep_engine->arch_reader = axis2_arch_reader_create(env);
+                    meta_data = axis2_module_desc_create(env);
+                    file_name = axis2_arch_file_data_get_name(dep_engine->
+                                                              curr_file, env);
+                    status =
+                        axis2_arch_reader_read_module_arch(env, file_name,
+                                                           dep_engine, meta_data);
+                    if (AXIS2_SUCCESS != status)
+                    {
+                        axis2_arch_reader_free(arch_reader, env);
+                        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_INVALID_MODULE,
+                                        AXIS2_FAILURE);
+                        return AXIS2_FAILURE;
+                    }
+                    status = axis2_dep_engine_add_new_module(dep_engine, env,
+                                                             meta_data);
+                    if (AXIS2_SUCCESS != status)
+                    {
+                        axis2_arch_reader_free(arch_reader, env);
+                        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_INVALID_MODULE,
+                                        AXIS2_FAILURE);
+                        return AXIS2_FAILURE;
+                    }
 
-                dep_engine->curr_file = NULL;
-                break;
+                    dep_engine->curr_file = NULL;
+                    break;
             }
             axis2_arch_reader_free(arch_reader, env);
         }
@@ -1345,6 +1493,8 @@
     axis2_char_t *svc_name = NULL;
 
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
+
     size = axutil_array_list_size(dep_engine->ws_to_undeploy, env);
 
     if (size > 0)
@@ -1421,6 +1571,8 @@
 {
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, phases_info, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
+
     dep_engine->phases_info = phases_info;
     return AXIS2_SUCCESS;
 }
@@ -1444,6 +1596,7 @@
 
     AXIS2_ENV_CHECK(env, NULL);
     AXIS2_PARAM_CHECK(env->error, file_name, NULL);
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
 
     dep_engine->curr_file = axis2_arch_file_data_create_with_type_and_name(env,
                                                                            AXIS2_SVC,
@@ -1488,12 +1641,14 @@
     AXIS2_ENV_CHECK(env, NULL);
     AXIS2_PARAM_CHECK(env->error, module_archive, NULL);
     AXIS2_PARAM_CHECK(env->error, conf, NULL);
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
 
     phases_info = axis2_conf_get_phases_info(conf, env);
     axis2_dep_engine_set_phases_info(dep_engine, env, phases_info);
-    dep_engine->curr_file = axis2_arch_file_data_create_with_type_and_file(env,
-                                                                           AXIS2_MODULE,
-                                                                           module_archive);
+    dep_engine->curr_file = 
+		axis2_arch_file_data_create_with_type_and_file(env,
+                                                       AXIS2_MODULE,
+                                                       module_archive);
     module_desc = axis2_module_desc_create(env);
     arch_reader = axis2_arch_reader_create(env);
     file_name = axutil_file_get_name(module_archive, env);
@@ -1559,6 +1714,7 @@
     const axis2_dep_engine_t * dep_engine,
     const axutil_env_t * env)
 {
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
     return dep_engine->folder_name;
 }
 
@@ -1569,7 +1725,7 @@
     axis2_arch_file_data_t * file_data)
 {
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
     if (dep_engine->curr_file)
     {
         axis2_arch_file_data_free(dep_engine->curr_file, env);
@@ -1586,6 +1742,7 @@
     axis2_arch_reader_t * arch_reader)
 {
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
 
     if (dep_engine->arch_reader)
     {
@@ -1604,6 +1761,7 @@
 {
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, module_builder, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
 
     return axutil_array_list_add(dep_engine->module_builders, env,
                                  module_builder);
@@ -1617,6 +1775,7 @@
 {
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, svc_builder, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
 
     return axutil_array_list_add(dep_engine->svc_builders, env, svc_builder);
 }
@@ -1629,6 +1788,7 @@
 {
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, svc_grp_builder, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
 
     return axutil_array_list_add(dep_engine->svc_grp_builders, env,
                                  svc_grp_builder);
@@ -1642,6 +1802,114 @@
 {
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, desc_builder, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
 
     return axutil_array_list_add(dep_engine->desc_builders, env, desc_builder);
 }
+
+AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+axis2_dep_engine_get_module_dir(
+	const axis2_dep_engine_t * dep_engine,
+    const axutil_env_t * env)
+{
+	AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
+	return axutil_strdup (env, dep_engine->module_dir);
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+axis2_dep_engine_set_module_dir(
+	axis2_dep_engine_t * dep_engine,
+	const axutil_env_t * env,
+	const axis2_char_t *module_dir)
+{
+	AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
+	AXIS2_PARAM_CHECK (env->error, module_dir, AXIS2_FAILURE);
+	dep_engine->module_dir = axutil_strdup (env, module_dir);
+	return AXIS2_SUCCESS;
+}
+	
+
+AXIS2_EXTERN axis2_bool_t AXIS2_CALL
+axis2_dep_engine_get_file_flag(
+    const axis2_dep_engine_t * dep_engine,
+    const axutil_env_t * env)
+{
+	AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
+    return dep_engine->file_flag;
+}
+
+
+
+AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+axis2_dep_engine_get_svc_dir(
+	const axis2_dep_engine_t * dep_engine,
+    const axutil_env_t * env)
+{
+	AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
+	return axutil_strdup (env, dep_engine->svc_dir);
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+axis2_dep_engine_set_svc_dir(
+	axis2_dep_engine_t * dep_engine,
+	const axutil_env_t * env,
+	const axis2_char_t *svc_dir)
+{
+	AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
+	AXIS2_PARAM_CHECK (env->error, svc_dir, AXIS2_FAILURE);
+	dep_engine->svc_dir = axutil_strdup (env, svc_dir);
+	return AXIS2_SUCCESS;
+}
+
+static axis2_status_t axis2_dep_engine_set_svc_and_module_dir_path (
+    axis2_dep_engine_t *dep_engine,
+    const axutil_env_t *env)
+{
+    axis2_bool_t flag;
+    axis2_conf_t *conf;
+    axis2_char_t *dirpath;
+    axutil_param_t *dep_param;
+    AXIS2_PARAM_CHECK (env->error, dep_engine, AXIS2_FAILURE);
+    flag = dep_engine->file_flag;
+    if (flag == AXIS2_FALSE)
+    {
+        return AXIS2_SUCCESS;
+    }
+    else
+    {
+        conf = dep_engine->conf;
+        if (!conf)
+            return AXIS2_FAILURE;
+
+        dep_param = axis2_conf_get_param (conf, env, "moduleDir");
+        if (dep_param)
+        {
+            dirpath = (axis2_char_t *)axutil_param_get_value(dep_param, env);
+            if (dirpath)
+            {
+                dep_engine->module_dir = dirpath;
+                dirpath = NULL;
+            }
+        }
+        dep_param = NULL;
+
+        dep_param = axis2_conf_get_param (conf, env, "servicesDir");
+        if (dep_param)
+        {
+            dirpath = (axis2_char_t *)axutil_param_get_value(dep_param, env);
+            if (dirpath)
+            {
+                dep_engine->svc_dir = dirpath;
+                dirpath = NULL;
+            }
+        }
+    }
+    return AXIS2_SUCCESS;
+}
+
+

Modified: webservices/axis2/trunk/c/src/core/deployment/phases_info.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/deployment/phases_info.c?rev=596104&r1=596103&r2=596104&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/deployment/phases_info.c (original)
+++ webservices/axis2/trunk/c/src/core/deployment/phases_info.c Sun Nov 18 09:45:50 2007
@@ -48,10 +48,7 @@
         return NULL;
     }
 
-    phases_info->in_phases = NULL;
-    phases_info->out_phases = NULL;
-    phases_info->in_faultphases = NULL;
-    phases_info->out_faultphases = NULL;
+	memset ((void *)phases_info, 0, sizeof (axis2_phases_info_t));
     phases_info->op_in_phases = axutil_hash_make(env);
     phases_info->op_out_phases = axutil_hash_make(env);
     phases_info->op_in_faultphases = axutil_hash_make(env);
@@ -175,7 +172,8 @@
 {
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, in_phases, AXIS2_FAILURE);
-
+	AXIS2_PARAM_CHECK(env->error, phases_info, AXIS2_FAILURE);
+	
     if (phases_info->in_phases)
     {
         axutil_array_list_free(phases_info->in_phases, env);
@@ -193,6 +191,7 @@
 {
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, out_phases, AXIS2_FAILURE);
+	AXIS2_PARAM_CHECK(env->error, phases_info, AXIS2_FAILURE);
 
     if (phases_info->out_phases)
     {
@@ -211,6 +210,7 @@
 {
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, in_faultphases, AXIS2_FAILURE);
+	AXIS2_PARAM_CHECK(env->error, phases_info, AXIS2_FAILURE);
 
     if (phases_info->in_faultphases)
     {
@@ -229,6 +229,7 @@
 {
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, out_faultphases, AXIS2_FAILURE);
+	AXIS2_PARAM_CHECK(env->error, phases_info, AXIS2_FAILURE);
 
     if (phases_info->out_faultphases)
     {
@@ -244,8 +245,7 @@
     const axis2_phases_info_t * phases_info,
     const axutil_env_t * env)
 {
-    AXIS2_ENV_CHECK(env, NULL);
-
+	AXIS2_PARAM_CHECK(env->error, phases_info, AXIS2_FAILURE);
     return phases_info->in_phases;
 }
 
@@ -254,6 +254,7 @@
     const axis2_phases_info_t * phases_info,
     const axutil_env_t * env)
 {
+	AXIS2_PARAM_CHECK(env->error, phases_info, AXIS2_FAILURE);
     return phases_info->out_phases;
 }
 
@@ -262,6 +263,7 @@
     const axis2_phases_info_t * phases_info,
     const axutil_env_t * env)
 {
+	AXIS2_PARAM_CHECK(env->error, phases_info, AXIS2_FAILURE);
     return phases_info->in_faultphases;
 }
 
@@ -270,6 +272,7 @@
     const axis2_phases_info_t * phases_info,
     const axutil_env_t * env)
 {
+	AXIS2_PARAM_CHECK(env->error, phases_info, AXIS2_FAILURE);
     return phases_info->out_faultphases;
 }
 
@@ -286,6 +289,7 @@
     axis2_status_t status = AXIS2_FAILURE;
 
     AXIS2_ENV_CHECK(env, NULL);
+	AXIS2_PARAM_CHECK(env->error, phases_info, AXIS2_FAILURE);
 
     op_in_phases = axutil_array_list_create(env, 0);
     if (!op_in_phases)
@@ -361,6 +365,7 @@
     axis2_status_t status = AXIS2_FAILURE;
 
     AXIS2_ENV_CHECK(env, NULL);
+	AXIS2_PARAM_CHECK(env->error, phases_info, AXIS2_FAILURE);
 
     if (phases_info->out_phases)
     {
@@ -421,6 +426,7 @@
     struct axis2_phase *phase = NULL;
 
     AXIS2_ENV_CHECK(env, NULL);
+	AXIS2_PARAM_CHECK(env->error, phases_info, AXIS2_FAILURE);
 
     if (!phases_info->in_faultphases)
     {
@@ -487,6 +493,7 @@
     struct axis2_phase *phase = NULL;
 
     AXIS2_ENV_CHECK(env, NULL);
+	AXIS2_PARAM_CHECK(env->error, phases_info, AXIS2_FAILURE);
 
     if (!phases_info->out_faultphases)
     {
@@ -555,6 +562,7 @@
 
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, op_desc, AXIS2_FAILURE);
+	AXIS2_PARAM_CHECK(env->error, phases_info, AXIS2_FAILURE);
 
     op_in_phases = axis2_phases_info_get_op_in_phases(phases_info, env);
     if (!op_in_phases)

Modified: webservices/axis2/trunk/c/src/core/deployment/repos_listener.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/deployment/repos_listener.c?rev=596104&r1=596103&r2=596104&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/deployment/repos_listener.c (original)
+++ webservices/axis2/trunk/c/src/core/deployment/repos_listener.c Sun Nov 18 09:45:50 2007
@@ -1,4 +1,3 @@
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -33,6 +32,7 @@
      * that the listentner should listent
      */
     axis2_char_t *folder_name;
+    axis2_conf_t *conf;
 };
 
 static axis2_status_t axis2_repos_listener_search(
@@ -41,6 +41,7 @@
     axis2_char_t * folder_name,
     int type);
 
+
 AXIS2_EXTERN axis2_repos_listener_t *AXIS2_CALL
 axis2_repos_listener_create(
     const axutil_env_t * env)
@@ -49,9 +50,9 @@
 
     AXIS2_ENV_CHECK(env, NULL);
 
-    repos_listener = (axis2_repos_listener_t *) AXIS2_MALLOC(env->allocator,
-                                                             sizeof
-                                                             (axis2_repos_listener_t));
+    repos_listener = (axis2_repos_listener_t *)
+        AXIS2_MALLOC(env->allocator,
+                     sizeof (axis2_repos_listener_t));
 
     if (!repos_listener)
     {
@@ -60,17 +61,20 @@
     }
     repos_listener->folder_name = NULL;
     repos_listener->info_list = NULL;
+    repos_listener->folder_name = AXIS2_FALSE;
 
     return repos_listener;
 }
 
 /**
- * This constructor take two argumnets folder name and referance to Deployment Engine
- * Fisrt it initilize the syetm , by loading all the modules in the /modules directory
- * and also create a WSInfoList to keep infor about available modules and services
- *
- * @param folderName    path to parent directory that the repos_listener should listen
- * @param deploy_engine refearnce to engine registry  inorder to inform the updates
+ * This constructor take two argumnets folder name and referance to
+ * Deployment Engine Fisrt it initilize the syetm , by loading all the
+ * modules in the /modules directory and also create a WSInfoList to
+ * keep infor about available modules and services
+ * @param folderName path to parent directory that the repos_listener
+ * should listens
+ * @param deploy_engine refearnce to engine registry  inorder to
+ * inform the updates
  */
 
 AXIS2_EXTERN axis2_repos_listener_t *AXIS2_CALL
@@ -82,8 +86,10 @@
     axis2_repos_listener_t *repos_listener = NULL;
     axis2_status_t status = AXIS2_FAILURE;
 
-    AXIS2_ENV_CHECK(env, NULL);
+    axis2_conf_t *conf;
+    axis2_bool_t file_flag;
 
+    AXIS2_ENV_CHECK(env, NULL);
     repos_listener =
         (axis2_repos_listener_t *) axis2_repos_listener_create(env);
 
@@ -91,18 +97,47 @@
     {
         return NULL;
     }
-    repos_listener->folder_name = axutil_strdup(env, folder_name);
-    if (!repos_listener->folder_name)
+
+    file_flag = axis2_dep_engine_get_file_flag (dep_engine, env);
+
+    if (file_flag == AXIS2_FALSE)
     {
-        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
-        return NULL;
+        repos_listener->folder_name = axutil_strdup(env, folder_name);
+        if (!repos_listener->folder_name)
+        {
+            AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+            return NULL;
+        }
     }
+
     repos_listener->info_list =
         axis2_ws_info_list_create_with_dep_engine(env, dep_engine);
     if (!repos_listener->info_list)
     {
         return NULL;
     }
+    
+    /* dep_engine's conf will set to repo_listner then we could get
+     * details fo the axis2.xml through axis2 conf. 
+     */
+
+    conf = axis2_dep_engine_get_axis_conf (dep_engine, env);
+    if (!conf)
+    {
+        AXIS2_LOG_ERROR (env->log, AXIS2_LOG_SI, 
+                         "Deployment engines axis2 configuration not available");
+        return NULL;
+    }
+   
+    status = axis2_repos_listener_set_conf (repos_listener, env, conf);
+
+    if (status != AXIS2_SUCCESS)
+    {
+        AXIS2_LOG_ERROR (env->log, AXIS2_LOG_SI, "setting conf to repos listener failed.");
+        return AXIS2_FAILURE;
+    }
+
+
     status = axis2_repos_listener_init(repos_listener, env);
     if (AXIS2_SUCCESS != status)
     {
@@ -114,12 +149,15 @@
     return repos_listener;
 }
 
+
 AXIS2_EXTERN void AXIS2_CALL
 axis2_repos_listener_free(
     axis2_repos_listener_t * repos_listener,
     const axutil_env_t * env)
 {
     AXIS2_ENV_CHECK(env, void);
+    if (!repos_listener)
+        return;
 
     if (repos_listener->folder_name)
     {
@@ -144,13 +182,51 @@
     axis2_char_t *module_path = NULL;
     axis2_char_t *temp_path = NULL;
     axis2_status_t status = AXIS2_FAILURE;
+    axis2_bool_t axis2_flag = AXIS2_FALSE;
+    axis2_conf_t *conf;
+
+    axutil_param_t *module_param;
+    axis2_char_t *module_dir;
 
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK (env->error, repos_listener, AXIS2_FAILURE);
+
+    conf = axis2_repos_listener_get_conf (repos_listener, env);
+
+    /* conf is needed only to decide we are using axis2.xml. Other
+     * case we don't need. Hence else part of following if-else
+     * condition not used.
+     */
 
-    temp_path =
-        axutil_stracat(env, repos_listener->folder_name, AXIS2_PATH_SEP_STR);
-    module_path = axutil_stracat(env, temp_path, AXIS2_MODULE_PATH);
-    AXIS2_FREE(env->allocator, temp_path);
+    if (conf)
+    {
+        axis2_flag = axis2_conf_get_axis2_flag (conf, env);
+    }
+
+    if (axis2_flag == AXIS2_FALSE)
+    {
+
+        temp_path =
+            axutil_stracat(env, repos_listener->folder_name, AXIS2_PATH_SEP_STR);
+        module_path = axutil_stracat(env, temp_path, AXIS2_MODULE_PATH);
+        AXIS2_FREE(env->allocator, temp_path);
+    }
+    else
+    {
+        module_param = axis2_conf_get_param (conf, env, "moduleDir");
+        if (module_param)
+        {
+            module_dir = (axis2_char_t *)axutil_param_get_value (module_param, env);
+            module_path = axutil_strdup (env, module_dir);
+        }
+        else
+        {
+            AXIS2_LOG_ERROR (env->log, AXIS2_LOG_SI, 
+                             "creating axis2 conf using axis2.xml, modulesDir \
+parameter not available."); 
+        }
+
+    }
     status =
         axis2_repos_listener_search(repos_listener, env, module_path,
                                     AXIS2_MODULE);
@@ -167,14 +243,47 @@
     axis2_char_t *temp_path = NULL;
     axis2_status_t status = AXIS2_FAILURE;
 
+    axis2_conf_t *conf;
+    axis2_bool_t axis2_flag = AXIS2_FALSE;
+
+    axutil_param_t *svc_param;
+    axis2_char_t *svc_dir;
+
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK (env->error, repos_listener, AXIS2_FAILURE);
+
+    conf = axis2_repos_listener_get_conf (repos_listener, env);
+
+    if (conf)
+        axis2_flag = axis2_conf_get_axis2_flag (conf, env);
+
+    if (axis2_flag == AXIS2_FALSE)
+    {
+        temp_path =
+            axutil_stracat(env, repos_listener->folder_name, 
+                           AXIS2_PATH_SEP_STR);
+        svc_path = axutil_stracat(env, temp_path, AXIS2_SVC_PATH);
+        AXIS2_FREE(env->allocator, temp_path);
+    }
+    else
+    {
+        svc_param = axis2_conf_get_param (conf, env, "servicesDir");
+        if (svc_param)
+        {
+            svc_dir = axutil_param_get_value (svc_param, env);
+            svc_path = axutil_strdup (env, svc_dir);
+        }
+        else
+        {
+            AXIS2_LOG_ERROR (env->log, AXIS2_LOG_SI,
+                             "repos listener create using axis2.xml, \
+\"serviceDir\" param not available");
+        }
+    }
 
-    temp_path =
-        axutil_stracat(env, repos_listener->folder_name, AXIS2_PATH_SEP_STR);
-    svc_path = axutil_stracat(env, temp_path, AXIS2_SVC_PATH);
-    AXIS2_FREE(env->allocator, temp_path);
     status =
-        axis2_repos_listener_search(repos_listener, env, svc_path, AXIS2_SVC);
+        axis2_repos_listener_search(repos_listener, 
+                                    env, svc_path, AXIS2_SVC);
     AXIS2_FREE(env->allocator, svc_path);
     return status;
 }
@@ -184,6 +293,7 @@
     axis2_repos_listener_t * repos_listener,
     const axutil_env_t * env)
 {
+    AXIS2_PARAM_CHECK (env->error, repos_listener, AXIS2_FAILURE);
     return axis2_ws_info_list_update(repos_listener->info_list, env);
 }
 
@@ -195,6 +305,7 @@
     axis2_status_t status = AXIS2_FAILURE;
 
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK (env->error, repos_listener, AXIS2_FAILURE);
 
     status = axis2_ws_info_list_init(repos_listener->info_list, env);
     if (AXIS2_SUCCESS != status)
@@ -219,6 +330,7 @@
     const axutil_env_t * env)
 {
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK (env->error, repos_listener, AXIS2_FAILURE);
 
     axis2_ws_info_list_init(repos_listener->info_list, env);
     /* axis2_repos_listener_check_modules(repos_listener, env); */
@@ -240,10 +352,12 @@
     axis2_status_t status = AXIS2_FAILURE;
 
     AXIS2_ENV_CHECK(env, 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;
@@ -257,7 +371,9 @@
                         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;
@@ -294,4 +410,27 @@
     axutil_array_list_free(current_info_list, env);
     current_info_list = NULL;
     return AXIS2_SUCCESS;
+}
+
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+axis2_repos_listener_set_conf(
+    axis2_repos_listener_t *repo_listener,        
+    const axutil_env_t * env,
+    axis2_conf_t *conf)
+{
+    AXIS2_PARAM_CHECK (env->error, repo_listener, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK (env->error, conf, AXIS2_FAILURE);
+    repo_listener->conf = conf;
+    return AXIS2_SUCCESS;
+}
+
+
+AXIS2_EXTERN axis2_conf_t *AXIS2_CALL
+axis2_repos_listener_get_conf (
+    axis2_repos_listener_t *repo_listener,        
+    const axutil_env_t * env)
+{
+    AXIS2_PARAM_CHECK (env->error, repo_listener, AXIS2_FAILURE);
+    return repo_listener->conf;
 }

Modified: webservices/axis2/trunk/c/src/core/deployment/ws_info_list.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/deployment/ws_info_list.c?rev=596104&r1=596103&r2=596104&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/deployment/ws_info_list.c (original)
+++ webservices/axis2/trunk/c/src/core/deployment/ws_info_list.c Sun Nov 18 09:45:50 2007
@@ -59,9 +59,7 @@
         return NULL;
     }
 
-    ws_info_list->deployer = NULL;
-    ws_info_list->ws_info_list = NULL;
-    ws_info_list->current_info_lists = NULL;
+    memset ((void *)ws_info_list, 0, sizeof (axis2_ws_info_list_t));
 
     ws_info_list->deployer = dep_engine;
 



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org