You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by da...@apache.org on 2006/02/08 04:35:17 UTC

svn commit: r375840 - in /webservices/axis2/trunk/c: include/ modules/core/deployment/ modules/core/description/ modules/core/engine/ modules/core/phaseresolver/

Author: damitha
Date: Tue Feb  7 19:35:16 2006
New Revision: 375840

URL: http://svn.apache.org/viewcvs?rev=375840&view=rev
Log:
now logic fails at phase_resolver

Modified:
    webservices/axis2/trunk/c/include/axis2_module_builder.h
    webservices/axis2/trunk/c/modules/core/deployment/arch_reader.c
    webservices/axis2/trunk/c/modules/core/deployment/module_builder.c
    webservices/axis2/trunk/c/modules/core/description/module_desc.c
    webservices/axis2/trunk/c/modules/core/description/svc.c
    webservices/axis2/trunk/c/modules/core/engine/conf.c
    webservices/axis2/trunk/c/modules/core/phaseresolver/phase_resolver.c

Modified: webservices/axis2/trunk/c/include/axis2_module_builder.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_module_builder.h?rev=375840&r1=375839&r2=375840&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_module_builder.h (original)
+++ webservices/axis2/trunk/c/include/axis2_module_builder.h Tue Feb  7 19:35:16 2006
@@ -88,7 +88,7 @@
  * @return pointer to newly created module builder
  */
 AXIS2_DECLARE(axis2_module_builder_t *)
-axis2_module_builder_create_with_file_and_dep_engine_module (axis2_env_t **env,
+axis2_module_builder_create_with_file_and_dep_engine_and_module (axis2_env_t **env,
                                                 axis2_char_t *file_name,
                                                 struct axis2_dep_engine *dep_engine,
                                                 axis2_module_desc_t *module);

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=375840&r1=375839&r2=375840&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/deployment/arch_reader.c (original)
+++ webservices/axis2/trunk/c/modules/core/deployment/arch_reader.c Tue Feb  7 19:35:16 2006
@@ -448,7 +448,7 @@
                                     axis2_env_t **env,
                                     axis2_char_t *file_name,
                                     axis2_dep_engine_t *dep_engine,
-                                    axis2_module_desc_t *module)
+                                    axis2_module_desc_t *module_desc)
 {
     axis2_status_t status = AXIS2_FAILURE;
     axis2_char_t *module_xml = NULL;
@@ -459,10 +459,10 @@
     axis2_char_t *module_container_path = NULL;
     axis2_char_t *module_folder = NULL;
     
-    AXIS2_FUNC_PARAM_CHECK(arch_reader, env, AXIS2_FAILURE);
+    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, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, module_desc, AXIS2_FAILURE);
     
     repos_path = AXIS2_DEP_ENGINE_GET_REPOS_PATH(dep_engine, env);
     temp_path = AXIS2_STRACAT(repos_path, AXIS2_PATH_SEP_STR, env);
@@ -488,8 +488,8 @@
         axis2_module_builder_t *module_builder = NULL;
         
         module_builder = 
-            axis2_module_builder_create_with_file_and_dep_engine_module(env,
-                module_xml, dep_engine, module);
+            axis2_module_builder_create_with_file_and_dep_engine_and_module(env,
+                module_xml, dep_engine, module_desc);
         status = AXIS2_MODULE_BUILDER_POPULATE_MODULE(module_builder, env);
         if(AXIS2_SUCCESS != status)
         {

Modified: webservices/axis2/trunk/c/modules/core/deployment/module_builder.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/deployment/module_builder.c?rev=375840&r1=375839&r2=375840&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/deployment/module_builder.c (original)
+++ webservices/axis2/trunk/c/modules/core/deployment/module_builder.c Tue Feb  7 19:35:16 2006
@@ -24,7 +24,7 @@
 typedef struct axis2_module_builder_impl
 {
 	axis2_module_builder_t module_builder;
-    axis2_module_desc_t *module;
+    axis2_module_desc_t *module_desc;
     	
 } axis2_module_builder_impl_t;
 
@@ -85,10 +85,10 @@
 }
 
 axis2_module_builder_t * AXIS2_CALL 
-axis2_module_builder_create_with_file_and_dep_engine_module (axis2_env_t **env,
+axis2_module_builder_create_with_file_and_dep_engine_and_module (axis2_env_t **env,
                                                 axis2_char_t *file_name,
                                                 axis2_dep_engine_t *dep_engine,
-                                                axis2_module_desc_t *module)
+                                                axis2_module_desc_t *module_desc)
 {
     axis2_module_builder_impl_t *builder_impl = NULL;
     
@@ -108,7 +108,7 @@
         axis2_module_builder_free(&(builder_impl->module_builder), env);
         return NULL;
     }
-    builder_impl->module = module;
+    builder_impl->module_desc = module_desc;
     return &(builder_impl->module_builder);   
 }
 
@@ -197,7 +197,7 @@
             axis2_qname_t *qmodule_name = NULL;
             
             qmodule_name = axis2_qname_create(env, module_name, NULL, NULL);
-            AXIS2_MODULE_DESC_SET_NAME(builder_impl->module, env, qmodule_name);
+            AXIS2_MODULE_DESC_SET_NAME(builder_impl->module_desc, env, qmodule_name);
             if(qmodule_name)
                 AXIS2_QNAME_FREE(qmodule_name, env);
         }
@@ -212,7 +212,7 @@
             module_name = AXIS2_ARCH_FILE_DATA_GET_MODULE_NAME(file_data, env);
      
             module_qname = axis2_qname_create(env, module_name, NULL, NULL);
-            AXIS2_MODULE_DESC_SET_NAME(builder_impl->module, env, module_qname);
+            AXIS2_MODULE_DESC_SET_NAME(builder_impl->module_desc, env, module_qname);
             if(module_qname)
                 AXIS2_QNAME_FREE(module_qname, env);
         }
@@ -225,10 +225,10 @@
         
         file_data = AXIS2_DEP_ENGINE_GET_CURRENT_FILE_ITEM(module_builder->
             desc_builder->engine, env);
-        module_name = AXIS2_ARCH_FILE_DATA_GET_SVC_NAME(file_data, env);
+        module_name = AXIS2_ARCH_FILE_DATA_GET_MODULE_NAME(file_data, env);
         
         module_qname = axis2_qname_create(env, module_name, NULL, NULL);
-        AXIS2_MODULE_DESC_SET_NAME(builder_impl->module, env, module_qname);
+        AXIS2_MODULE_DESC_SET_NAME(builder_impl->module_desc, env, module_qname);
         if(module_qname)
             AXIS2_QNAME_FREE(module_qname, env);
     }
@@ -270,11 +270,11 @@
     if(qparamst)
         AXIS2_QNAME_FREE(qparamst, env);
 
-    parent = AXIS2_MODULE_DESC_GET_PARENT(builder_impl->module, env);
+    parent = AXIS2_MODULE_DESC_GET_PARENT(builder_impl->module_desc, env);
     if(parent)
         parent_container = parent->param_container;
     AXIS2_DESC_BUILDER_PROCESS_PARAMS(module_builder->desc_builder, env,
-        itr, builder_impl->module->params, parent_container);
+        itr, builder_impl->module_desc->params, parent_container);
 
     /* process INFLOW */
     qinflowst = axis2_qname_create(env, AXIS2_INFLOWST, NULL, NULL);
@@ -286,9 +286,9 @@
     if(NULL != in_flow_element && NULL != in_flow_node)
     {
         axis2_flow_t *flow = AXIS2_DESC_BUILDER_PROCESS_FLOW(module_builder->
-            desc_builder, env, in_flow_element, builder_impl->module->params,
+            desc_builder, env, in_flow_element, builder_impl->module_desc->params,
                 in_flow_node);
-        AXIS2_MODULE_DESC_SET_INFLOW(builder_impl->module, env, flow);
+        AXIS2_MODULE_DESC_SET_INFLOW(builder_impl->module_desc, env, flow);
     }
     
     qoutflowst = axis2_qname_create(env, AXIS2_OUTFLOWST, NULL, NULL);
@@ -300,9 +300,9 @@
     if(NULL != out_flow_element && NULL != out_flow_node)
     {
         axis2_flow_t *flow = AXIS2_DESC_BUILDER_PROCESS_FLOW(module_builder->
-            desc_builder, env, out_flow_element, builder_impl->module->params,
+            desc_builder, env, out_flow_element, builder_impl->module_desc->params,
                 out_flow_node);
-        AXIS2_MODULE_DESC_SET_OUTFLOW(builder_impl->module, env, flow);
+        AXIS2_MODULE_DESC_SET_OUTFLOW(builder_impl->module_desc, env, flow);
     }
 
     qinfaultflow = axis2_qname_create(env, AXIS2_IN_FAILTFLOW, NULL, NULL);
@@ -314,9 +314,9 @@
     if(NULL != in_fault_flow_element && NULL != in_fault_flow_node)
     {
         axis2_flow_t *flow = AXIS2_DESC_BUILDER_PROCESS_FLOW(module_builder->
-            desc_builder, env, in_fault_flow_element, builder_impl->module->
+            desc_builder, env, in_fault_flow_element, builder_impl->module_desc->
                 params, in_fault_flow_node);
-        AXIS2_MODULE_DESC_SET_FAULT_INFLOW(builder_impl->module, env, flow);
+        AXIS2_MODULE_DESC_SET_FAULT_INFLOW(builder_impl->module_desc, env, flow);
     }
     
     qoutfaultflow = axis2_qname_create(env, AXIS2_OUT_FAILTFLOW, NULL, NULL);
@@ -328,9 +328,9 @@
     if(NULL != out_fault_flow_element && NULL != out_fault_flow_node)
     {
         axis2_flow_t *flow = AXIS2_DESC_BUILDER_PROCESS_FLOW(module_builder->
-            desc_builder, env, out_fault_flow_element, builder_impl->module->
+            desc_builder, env, out_fault_flow_element, builder_impl->module_desc->
                 params, out_fault_flow_node);
-        AXIS2_MODULE_DESC_SET_FAULT_OUTFLOW(builder_impl->module, env, flow);
+        AXIS2_MODULE_DESC_SET_FAULT_OUTFLOW(builder_impl->module_desc, env, flow);
     }
 
     /* processing Operations */
@@ -346,7 +346,7 @@
         axis2_op_t *op = NULL;
         
         op = (axis2_op_t *) AXIS2_ARRAY_LIST_GET(ops, env, i);
-        AXIS2_MODULE_DESC_ADD_OP(builder_impl->module, env, op);
+        AXIS2_MODULE_DESC_ADD_OP(builder_impl->module_desc, env, op);
     }
     return AXIS2_SUCCESS;
 }
@@ -437,7 +437,7 @@
             AXIS2_QNAME_FREE(qparamst, env);
 
         AXIS2_DESC_BUILDER_PROCESS_PARAMS(module_builder->desc_builder, env,
-            params, op_desc->param_container, builder_impl->module->params);
+            params, op_desc->param_container, builder_impl->module_desc->params);
         /* setting the mep of the operation */
         
         /* loading the message receivers */

Modified: webservices/axis2/trunk/c/modules/core/description/module_desc.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/description/module_desc.c?rev=375840&r1=375839&r2=375840&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/description/module_desc.c (original)
+++ webservices/axis2/trunk/c/modules/core/description/module_desc.c Tue Feb  7 19:35:16 2006
@@ -461,7 +461,7 @@
         module_desc_impl->qname = NULL;
     }
     
-    module_desc_impl->qname = qname;
+    module_desc_impl->qname = AXIS2_QNAME_CLONE(qname, env);
     
     return AXIS2_SUCCESS;
 }

Modified: webservices/axis2/trunk/c/modules/core/description/svc.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/description/svc.c?rev=375840&r1=375839&r2=375840&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/description/svc.c (original)
+++ webservices/axis2/trunk/c/modules/core/description/svc.c Tue Feb  7 19:35:16 2006
@@ -108,13 +108,13 @@
 axis2_svc_engage_module(axis2_svc_t *svc,
                             axis2_env_t **env,
                             axis2_module_desc_t * moduleref,
-                            axis2_conf_t * axis2_config);
+                            axis2_conf_t * conf);
 
 axis2_status_t AXIS2_CALL
 axis2_svc_add_module_ops(axis2_svc_t *svc,
                             axis2_env_t **env,
                             axis2_module_desc_t * module,
-                            axis2_conf_t * axis2_config);
+                            axis2_conf_t * conf);
                                 
 axis2_status_t AXIS2_CALL
 axis2_svc_add_to_engaged_module_list(axis2_svc_t *svc,
@@ -856,7 +856,7 @@
 axis2_svc_engage_module(axis2_svc_t *svc,
                             axis2_env_t **env,
                             axis2_module_desc_t * moduleref,
-                            axis2_conf_t * axis2_config)
+                            axis2_conf_t * conf)
 {
     axis2_module_desc_t * modu = NULL;
     axis2_array_list_t *collection_module = NULL;
@@ -867,7 +867,7 @@
         
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, moduleref, AXIS2_FAILURE);
-    AXIS2_PARAM_CHECK((*env)->error, axis2_config, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, conf, AXIS2_FAILURE);
     
     
     collection_module = (axis2_array_list_t *) 
@@ -896,7 +896,7 @@
         
     }
    
-    phase_resolver = axis2_phase_resolver_create_with_config(env, axis2_config);
+    phase_resolver = axis2_phase_resolver_create_with_config(env, conf);
     if(!phase_resolver)
     {
         return AXIS2_FAILURE;
@@ -920,7 +920,7 @@
 axis2_svc_add_module_ops(axis2_svc_t *svc,
                             axis2_env_t **env,
                             axis2_module_desc_t *module_desc,
-                            axis2_conf_t *axis2_config) 
+                            axis2_conf_t *conf) 
 {
     axis2_hash_t *map = NULL;
     axis2_hash_index_t *index = NULL;
@@ -932,10 +932,10 @@
    
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, module_desc, AXIS2_FAILURE);
-    AXIS2_PARAM_CHECK((*env)->error, axis2_config, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, conf, AXIS2_FAILURE);
     
     map = AXIS2_MODULE_DESC_GET_OPS(module_desc, env);
-    pr = axis2_phase_resolver_create_with_config_and_svc(env, axis2_config, svc);
+    pr = axis2_phase_resolver_create_with_config_and_svc(env, conf, svc);
     
     if(!pr)
     {
@@ -997,6 +997,15 @@
         }
         
         status = axis2_svc_add_op(svc, env, axis2_opt);
+        if(AXIS2_SUCCESS != status)
+        {
+            if(pr)
+            {
+                AXIS2_PHASE_RESOLVER_FREE(pr, env);
+                pr = NULL;                
+            }
+            return status;
+        }
  
     }
     
@@ -1005,7 +1014,7 @@
         AXIS2_PHASE_RESOLVER_FREE(pr, env); 
         pr = NULL;
     }
-    return status;
+    return AXIS2_SUCCESS;
 }
 
 axis2_status_t AXIS2_CALL

Modified: webservices/axis2/trunk/c/modules/core/engine/conf.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/engine/conf.c?rev=375840&r1=375839&r2=375840&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/engine/conf.c (original)
+++ webservices/axis2/trunk/c/modules/core/engine/conf.c Tue Feb  7 19:35:16 2006
@@ -1540,13 +1540,20 @@
     {
         config_impl->modules = axis2_hash_make(env);
         if(!config_impl->modules)
+        {
             return AXIS2_FAILURE;
+        }
     }
 
     module_qname = AXIS2_MODULE_DESC_GET_NAME(module, env);
     if (module_qname)
-        axis2_hash_set(config_impl->modules, AXIS2_QNAME_TO_STRING(module_qname, env), 
+    {
+        axis2_char_t *module_name = NULL;
+
+        module_name = AXIS2_QNAME_TO_STRING(module_qname, env);
+        axis2_hash_set(config_impl->modules, module_name, 
             AXIS2_HASH_KEY_STRING, module);
+    }
     
     return AXIS2_SUCCESS;
 }
@@ -1706,9 +1713,10 @@
 {
     axis2_conf_impl_t *config_impl = NULL;
     axis2_module_desc_t *module_desc = NULL;
-    axis2_bool_t is_new_module = AXIS2_FAILURE;
+    axis2_bool_t is_new_module = AXIS2_FALSE;
     axis2_bool_t to_be_engaged = AXIS2_TRUE;
     axis2_dep_engine_t *dep_engine = NULL;
+    axis2_status_t status = AXIS2_FAILURE;
     
     AXIS2_FUNC_PARAM_CHECK(conf, env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, module_ref, AXIS2_FAILURE);
@@ -1781,15 +1789,25 @@
     {
         axis2_phase_resolver_t *phase_resolver = NULL;
         phase_resolver = axis2_phase_resolver_create_with_config(env, conf);
-        AXIS2_PHASE_RESOLVER_ENGAGE_MODULE_GLOBALLY(phase_resolver, env, 
+        if(!phase_resolver)
+        {
+            return AXIS2_FAILURE;
+        }
+
+        status = AXIS2_PHASE_RESOLVER_ENGAGE_MODULE_GLOBALLY(phase_resolver, env, 
             module_desc);
-        AXIS2_ARRAY_LIST_ADD(config_impl->engaged_modules, env, module_ref);
+        if(AXIS2_SUCCESS != status)
+        {
+            return AXIS2_FAILURE;
+        }
+        status = AXIS2_ARRAY_LIST_ADD(config_impl->engaged_modules, env, 
+            module_ref);
     }
     if (is_new_module) 
     {
-        axis2_conf_add_module(conf, env, module_desc);
+        status = axis2_conf_add_module(conf, env, module_desc);
     }
-    return AXIS2_SUCCESS;
+    return status;
 }
 
 axis2_char_t *AXIS2_CALL

Modified: webservices/axis2/trunk/c/modules/core/phaseresolver/phase_resolver.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/phaseresolver/phase_resolver.c?rev=375840&r1=375839&r2=375840&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/phaseresolver/phase_resolver.c (original)
+++ webservices/axis2/trunk/c/modules/core/phaseresolver/phase_resolver.c Tue Feb  7 19:35:16 2006
@@ -893,25 +893,25 @@
             axis2_svc_t *svc = NULL;
             void *w = NULL;
 
-            axis2_hash_this (index_i, NULL, NULL, &w);
+            axis2_hash_this (index_j, NULL, NULL, &w);
             svc = (axis2_svc_t *) w;
                 
             status = AXIS2_SVC_ADD_MODULE_OPS(svc, env, module, 
                 resolver_impl->axis2_config);
-            if(AXIS2_FAILURE == status)
+            if(AXIS2_SUCCESS != status)
             {
                 return status;
             }
             status = axis2_phase_resolver_engage_module_to_svc_from_global(
                 phase_resolver, env, svc, module);
             
-            if(AXIS2_FAILURE == status)
+            if(AXIS2_SUCCESS != status)
             {
                 return status;
             }
             
             status = AXIS2_SVC_ADD_TO_ENGAGED_MODULE_LIST(svc, env, module);
-            if(AXIS2_FAILURE == status)
+            if(AXIS2_SUCCESS != status)
             {
                 return status;
             }
@@ -922,7 +922,7 @@
         status = AXIS2_SVC_GRP_ADD_MODULE(svc_grp, env, 
             mod_name);
         
-        if(AXIS2_FAILURE == status)
+        if(AXIS2_SUCCESS != status)
         {
             return status;
         }
@@ -944,33 +944,45 @@
     axis2_hash_index_t *index_i = NULL;
     int type = 0;
     axis2_status_t status = AXIS2_FAILURE;
-    
+   
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, svc, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK((*env)->error, module_desc, AXIS2_FAILURE);
     resolver_impl = AXIS2_INTF_TO_IMPL(phase_resolver);
     
     ops = AXIS2_SVC_GET_OPS(svc, env);
     if (!ops)
+    {
         return AXIS2_FAILURE;
+    }
 
-    for (index_i = axis2_hash_first (ops, env); index_i; index_i = axis2_hash_next (env, index_i))
+    for (index_i = axis2_hash_first (ops, env); index_i; 
+        index_i = axis2_hash_next (env, index_i))
     {
         void *v = NULL;
         axis2_op_t *op_desc = NULL;
         int j = 0;
         axis2_array_list_t *modules = NULL;
         axis2_flow_t *flow = NULL;
+        axis2_qname_t *module_desc_qname = NULL;
+        int size = 0;
 
         axis2_hash_this (index_i, NULL, NULL, &v);
         op_desc = (axis2_op_t *) v;
         modules = AXIS2_OP_GET_MODULES(op_desc, env);
-        
-        for(j = 0; j < AXIS2_ARRAY_LIST_SIZE(modules, env); j++)
+        module_desc_qname = AXIS2_MODULE_DESC_GET_NAME(module_desc, env);
+        size = AXIS2_ARRAY_LIST_SIZE(modules, env);
+        for(j = 0; j < size; j++)
         {
             axis2_module_desc_t *module_desc_l = NULL;
+            axis2_qname_t *module_desc_qname_l = NULL;
 
             module_desc_l = (axis2_module_desc_t *) 
                 AXIS2_ARRAY_LIST_GET(modules, env, j);
-            if(AXIS2_QNAME_EQUALS(AXIS2_MODULE_DESC_GET_NAME(module_desc_l, env),
-                env, AXIS2_MODULE_DESC_GET_NAME(module_desc, env)))
+           
+            module_desc_qname_l = AXIS2_MODULE_DESC_GET_NAME(module_desc_l , 
+                env);
+            if(AXIS2_QNAME_EQUALS(module_desc_qname_l, env, module_desc_qname))
             {
                 engaged = AXIS2_TRUE;
                 break;
@@ -985,26 +997,38 @@
             switch (type) {
                 case AXIS2_INFLOW:
                 {
-                    resolver_impl->phase_holder = axis2_phase_holder_create_with_phases(env,
-                        AXIS2_OP_GET_REMAINING_PHASES_INFLOW(op_desc, env));
+                    axis2_array_list_t *phase_list = NULL; 
+
+                    phase_list = AXIS2_OP_GET_REMAINING_PHASES_INFLOW(op_desc, env);
+                    resolver_impl->phase_holder = 
+                        axis2_phase_holder_create_with_phases(env, phase_list);
                     break;
                 }
                 case AXIS2_OUTFLOW:
                 {
-                    resolver_impl->phase_holder = axis2_phase_holder_create_with_phases(env,
-                        AXIS2_OP_GET_PHASES_OUTFLOW(op_desc, env));
+                    axis2_array_list_t *phase_list = NULL;
+
+                    phase_list = AXIS2_OP_GET_PHASES_OUTFLOW(op_desc, env);
+                    resolver_impl->phase_holder = 
+                        axis2_phase_holder_create_with_phases(env, phase_list);
                     break;
                 }
                 case AXIS2_FAULT_INFLOW:
                 {
-                    resolver_impl->phase_holder = axis2_phase_holder_create_with_phases(env,
-                        AXIS2_OP_GET_PHASES_IN_FAULT_FLOW(op_desc, env));
+                    axis2_array_list_t *phase_list = NULL;
+
+                    phase_list = AXIS2_OP_GET_PHASES_IN_FAULT_FLOW(op_desc, env);
+                    resolver_impl->phase_holder = 
+                        axis2_phase_holder_create_with_phases(env, phase_list);
                     break;
                 }
                 case AXIS2_FAULT_OUTFLOW:
                 {
-                    resolver_impl->phase_holder = axis2_phase_holder_create_with_phases(env,
-                        AXIS2_OP_GET_PHASES_OUT_FAULT_FLOW(op_desc, env));
+                    axis2_array_list_t *phase_list = NULL; 
+
+                    phase_list = AXIS2_OP_GET_PHASES_OUT_FAULT_FLOW(op_desc, env);
+                    resolver_impl->phase_holder = 
+                        axis2_phase_holder_create_with_phases(env, phase_list);
                     break;
                 }
             }
@@ -1051,7 +1075,7 @@
                     {
                         status = AXIS2_PHASE_HOLDER_ADD_HANDLER(resolver_impl->phase_holder,
                             env, metadata);
-                        if(AXIS2_FAILURE == status)
+                        if(AXIS2_SUCCESS != status)
                         {
                             return status;
                         }
@@ -1060,9 +1084,13 @@
             }
         }
         status = AXIS2_OP_ADD_TO_ENGAGE_MODULE_LIST(op_desc, env, module_desc);
+        if(AXIS2_SUCCESS != status)
+        {
+            return status;
+        }
     }
     
-    return status;
+    return AXIS2_SUCCESS;
 }