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

svn commit: r425365 - in /webservices/axis2/trunk/c: modules/core/clientapi/ modules/core/description/ samples/user_guide/clients/ woden/include/ woden/src/wsdl10/extensions/soap/

Author: damitha
Date: Tue Jul 25 03:40:43 2006
New Revision: 425365

URL: http://svn.apache.org/viewvc?rev=425365&view=rev
Log:
Fixed some bugs in Woden. Also fixed AXIS2C-215


Modified:
    webservices/axis2/trunk/c/modules/core/clientapi/svc_client.c
    webservices/axis2/trunk/c/modules/core/description/client_utils.c
    webservices/axis2/trunk/c/samples/user_guide/clients/echo_non_blocking_dual.c
    webservices/axis2/trunk/c/woden/include/woden_wsdl10_soap_module_element.h
    webservices/axis2/trunk/c/woden/src/wsdl10/extensions/soap/soap_module.c
    webservices/axis2/trunk/c/woden/src/wsdl10/extensions/soap/soap_module_deserializer.c
    webservices/axis2/trunk/c/woden/src/wsdl10/extensions/soap/soap_module_element.c

Modified: webservices/axis2/trunk/c/modules/core/clientapi/svc_client.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/modules/core/clientapi/svc_client.c?rev=425365&r1=425364&r2=425365&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/clientapi/svc_client.c (original)
+++ webservices/axis2/trunk/c/modules/core/clientapi/svc_client.c Tue Jul 25 03:40:43 2006
@@ -15,6 +15,7 @@
  */
 
 #include <axis2_svc_client.h>
+#include <axis2_phases_info.h>
 #include <axis2_const.h>
 #include <axis2_hash.h>
 #include <axis2_uri.h>
@@ -70,7 +71,9 @@
 static axis2_bool_t axis2_svc_client_init_data(const axis2_env_t *env,
                            axis2_svc_client_impl_t *svc_client_impl);
 static void axis2_svc_client_init_ops(axis2_svc_client_t *svc_client);
-static axis2_svc_t* axis2_svc_client_create_annonymous_svc(const axis2_env_t *env);
+static axis2_svc_t* axis2_svc_client_create_annonymous_svc(
+        axis2_svc_client_t *svc_client,
+        const axis2_env_t *env);
 static axis2_bool_t axis2_svc_client_fill_soap_envelope(const axis2_env_t *env, 
     axis2_svc_client_impl_t *svc_client_impl,
     axis2_msg_ctx_t *msg_ctx, 
@@ -350,7 +353,8 @@
    }
    else
    {
-      if (NULL == (svc_client_impl->svc = axis2_svc_client_create_annonymous_svc(env)))
+      if (NULL == (svc_client_impl->svc = 
+                  axis2_svc_client_create_annonymous_svc(&(svc_client_impl->svc_client), env)))
       {
          axis2_svc_client_free(&(svc_client_impl->svc_client), env);
          return NULL;
@@ -1097,7 +1101,9 @@
   * @return the minted anonymous service
   */
 
-static axis2_svc_t* axis2_svc_client_create_annonymous_svc(const axis2_env_t *env)
+static axis2_svc_t* axis2_svc_client_create_annonymous_svc(
+        axis2_svc_client_t *svc_client,
+        const axis2_env_t *env)
 {
    /**
    now add anonymous operations to the axis2 service for use with the
@@ -1105,9 +1111,13 @@
     later in the convenience API; if you use
     this constructor then you can't expect any magic!
    */
+    axis2_svc_client_impl_t *svc_client_impl = NULL;
    axis2_qname_t *tmp_qname;
    axis2_svc_t *svc;
    axis2_op_t *op_out_in, *op_out_only, *op_robust_out_only;
+   axis2_phases_info_t *info = NULL;
+
+   svc_client_impl = AXIS2_INTF_TO_IMPL(svc_client);
 
    tmp_qname = axis2_qname_create(env, AXIS2_ANON_SERVICE, NULL, NULL);
    
@@ -1180,6 +1190,11 @@
    AXIS2_OP_SET_MSG_EXCHANGE_PATTERN(op_out_only, env, AXIS2_MEP_URI_OUT_ONLY);
    AXIS2_OP_SET_MSG_EXCHANGE_PATTERN(op_robust_out_only, env, AXIS2_MEP_URI_ROBUST_OUT_ONLY);
    
+    /* Setting operation phase */
+    info = AXIS2_CONF_GET_PHASESINFO(svc_client_impl->conf, env);
+    AXIS2_PHASES_INFO_SET_OP_PHASES(info, env, op_out_in);
+    AXIS2_PHASES_INFO_SET_OP_PHASES(info, env, op_out_only);
+    AXIS2_PHASES_INFO_SET_OP_PHASES(info, env, op_robust_out_only);
    AXIS2_SVC_ADD_OP(svc, env, op_out_in);
    AXIS2_SVC_ADD_OP(svc, env, op_out_only);
    AXIS2_SVC_ADD_OP(svc, env, op_robust_out_only);

Modified: webservices/axis2/trunk/c/modules/core/description/client_utils.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/modules/core/description/client_utils.c?rev=425365&r1=425364&r2=425365&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/description/client_utils.c (original)
+++ webservices/axis2/trunk/c/modules/core/description/client_utils.c Tue Jul 25 03:40:43 2006
@@ -39,6 +39,8 @@
 #include <woden_wsdl10_binding_op.h>
 #include <woden_wsdl10_interface_msg_ref.h>
 #include <woden_wsdl10_soap_binding_op_exts.h>
+#include <woden_wsdl10_soap_module.h>
+#include <woden_ext_element.h>
 
 /**
  * Utility methods for various clients to use.
@@ -306,14 +308,16 @@
             void *binding_op = NULL;
             void *interface_op = NULL;
             axis2_op_t *axis2_op = NULL;
-            void *soap_op = NULL;
+            void *ext_element = NULL;
             axis2_uri_t *soap_action_uri = NULL;
             axis2_array_list_t *interface_msg_refs = NULL;
             axis2_array_list_t *ext_elements = NULL;
-            int i = 0;
+            int i = 0, size = 0;
             axis2_bool_t in = AXIS2_FALSE;
             axis2_bool_t out = AXIS2_FALSE;
             axis2_qname_t *op_qname = NULL;
+            axis2_qname_t *ext_type = NULL;
+            axis2_qname_t *ext_type_l = NULL;
             axis2_param_t *param = NULL;
             
             binding_op = AXIS2_ARRAY_LIST_GET(binding_ops, env, i);
@@ -349,14 +353,35 @@
             AXIS2_OP_SET_QNAME(axis2_op, env, op_qname);
             binding_op = woden_wsdl10_binding_op_to_element_extensible(
                     binding_op, env);
+            ext_type_l = axis2_qname_create(env, "operation", 
+                    "http://schemas.xmlsoap.org/wsdl/soap/", NULL);
             ext_elements = WODEN_ELEMENT_EXTENSIBLE_GET_EXT_ELEMENTS(binding_op, 
                     env);
-            soap_op = AXIS2_ARRAY_LIST_GET(ext_elements, env, 0);
-            soap_action_uri = WODEN_WSDL10_SOAP_BINDING_OP_EXTS_GET_SOAP_ACTION(
-                    soap_op, env);
-            param = axis2_param_create(env, AXIS2_SOAP_ACTION, soap_action_uri);
-            AXIS2_OP_ADD_PARAM(axis2_op, env, param);
-            AXIS2_SVC_ADD_OP(axis2_svc, env, axis2_op);
+            if(ext_elements)
+                size = AXIS2_ARRAY_LIST_SIZE(ext_elements, env);
+            for(i = 0; i < size; i++)
+            {
+                ext_element = AXIS2_ARRAY_LIST_GET(ext_elements, env, i);
+                ext_type = WODEN_EXT_ELEMENT_GET_EXT_TYPE(ext_element, env);
+                if(AXIS2_TRUE == AXIS2_QNAME_EQUALS(ext_type, env, ext_type_l))
+                {
+                    void *soap_binding_op = NULL;
+                    
+                    ext_element = 
+                       woden_wsdl10_soap_module_to_soap_module_element (
+                                ext_element, env);
+                    soap_binding_op = 
+                        WODEN_WSDL10_SOAP_MODULE_ELEMENT_GET_SOAP_BINDING_OP_EXTS(
+                                ext_element, env);
+                    
+                    soap_action_uri = WODEN_WSDL10_SOAP_BINDING_OP_EXTS_GET_SOAP_ACTION(
+                        soap_binding_op, env);
+                    param = axis2_param_create(env, AXIS2_SOAP_ACTION, soap_action_uri);
+                    AXIS2_OP_ADD_PARAM(axis2_op, env, param);
+                    AXIS2_SVC_ADD_OP(axis2_svc, env, axis2_op);
+                    break;
+                }
+            }
         }
     }
     return axis2_svc; 

Modified: webservices/axis2/trunk/c/samples/user_guide/clients/echo_non_blocking_dual.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/samples/user_guide/clients/echo_non_blocking_dual.c?rev=425365&r1=425364&r2=425365&view=diff
==============================================================================
--- webservices/axis2/trunk/c/samples/user_guide/clients/echo_non_blocking_dual.c (original)
+++ webservices/axis2/trunk/c/samples/user_guide/clients/echo_non_blocking_dual.c Tue Jul 25 03:40:43 2006
@@ -100,6 +100,7 @@
     AXIS2_SVC_CLIENT_SET_OPTIONS(svc_client, env, options);    
     
     AXIS2_SVC_CLIENT_ENGAGE_MODULE(svc_client, env, AXIS2_MODULE_ADDRESSING);  
+    /*AXIS2_SVC_CLIENT_ENGAGE_MODULE(svc_client, env, "sandesha2");  */
 
     /* Build the SOAP request message payload using OM API.*/
     payload = build_om_payload_for_echo_svc(env);

Modified: webservices/axis2/trunk/c/woden/include/woden_wsdl10_soap_module_element.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/woden/include/woden_wsdl10_soap_module_element.h?rev=425365&r1=425364&r2=425365&view=diff
==============================================================================
--- webservices/axis2/trunk/c/woden/include/woden_wsdl10_soap_module_element.h (original)
+++ webservices/axis2/trunk/c/woden/include/woden_wsdl10_soap_module_element.h Tue Jul 25 03:40:43 2006
@@ -98,11 +98,16 @@
             void *doc_el);
   
     axis2_status_t (AXIS2_CALL *
-    add_soap_binding_op_exts) (
+    set_soap_binding_op_exts) (
             void *soap_module_element,
             const axis2_env_t *env,
             void *soap_binding_op_exts);
 
+    void *(AXIS2_CALL *
+    get_soap_binding_op_exts) (
+            void *soap_module_element,
+            const axis2_env_t *env); 
+
     axis2_array_list_t *(AXIS2_CALL *
     get_documentation_elements) (
             void *soap_module_element,
@@ -163,9 +168,13 @@
       (((woden_wsdl10_soap_module_element_t *) soap_module_element)->ops->\
         add_documentation_element  (soap_module_element, env, doc_el))
 
-#define WODEN_WSDL10_SOAP_MODULE_ELEMENT_ADD_SOAP_BINDING_OP_EXTS(soap_module_element, env, doc_el) \
+#define WODEN_WSDL10_SOAP_MODULE_ELEMENT_SET_SOAP_BINDING_OP_EXTS(soap_module_element, env, doc_el) \
+      (((woden_wsdl10_soap_module_element_t *) soap_module_element)->ops->\
+        set_soap_binding_op_exts  (soap_module_element, env, doc_el))
+
+#define WODEN_WSDL10_SOAP_MODULE_ELEMENT_GET_SOAP_BINDING_OP_EXTS(soap_module_element, env) \
       (((woden_wsdl10_soap_module_element_t *) soap_module_element)->ops->\
-        add_soap_binding_op_exts  (soap_module_element, env, doc_el))
+        get_soap_binding_op_exts  (soap_module_element, env))
 
 #define WODEN_WSDL10_SOAP_MODULE_ELEMENT_GET_DOCUMENTATION_ELEMENTS(soap_module_element, env) \
       (((woden_wsdl10_soap_module_element_t *) soap_module_element)->ops->\

Modified: webservices/axis2/trunk/c/woden/src/wsdl10/extensions/soap/soap_module.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/woden/src/wsdl10/extensions/soap/soap_module.c?rev=425365&r1=425364&r2=425365&view=diff
==============================================================================
--- webservices/axis2/trunk/c/woden/src/wsdl10/extensions/soap/soap_module.c (original)
+++ webservices/axis2/trunk/c/woden/src/wsdl10/extensions/soap/soap_module.c Tue Jul 25 03:40:43 2006
@@ -15,6 +15,7 @@
  */
 
 #include <woden_wsdl10_soap_module.h>
+#include <woden_wsdl10_soap_binding_op_exts.h>
 #include <woden_wsdl_element.h>
 #include <woden_string_attr.h>
 #include <woden_uri_attr.h>
@@ -36,6 +37,7 @@
     
     void *f_parent;
     axis2_array_list_t *f_documentation_elements;
+    void *f_binding_op_exts;
     axis2_qname_t *f_ext_element_type;
     axis2_bool_t f_required;
     void *f_attr_ext;
@@ -114,8 +116,20 @@
 axis2_array_list_t *AXIS2_CALL 
 woden_wsdl10_soap_module_get_documentation_elements(
         void *module,
+       axis2_env_t *env);
+ 
+axis2_status_t AXIS2_CALL 
+woden_wsdl10_soap_module_set_soap_binding_op_exts(
+        void *module,
+        axis2_env_t *env,
+        void *binding_op_exts);
+
+void *AXIS2_CALL 
+woden_wsdl10_soap_module_get_soap_binding_op_exts(
+        void *module,
         axis2_env_t *env);
 
+
 axis2_status_t AXIS2_CALL 
 woden_wsdl10_soap_module_set_extension_type(
         void *module,
@@ -317,6 +331,7 @@
 
     module_impl->f_parent = NULL;
     module_impl->f_documentation_elements = NULL;
+    module_impl->f_binding_op_exts = NULL;
     module_impl->f_ext_element_type = NULL;
     module_impl->f_required = AXIS2_FALSE;
     module_impl->f_attr_ext = NULL;
@@ -390,6 +405,14 @@
             AXIS2_HASH_KEY_STRING, 
             woden_wsdl10_soap_module_get_parent_element);
 
+    axis2_hash_set(module_impl->methods, "set_soap_binding_op_exts", 
+            AXIS2_HASH_KEY_STRING, 
+            woden_wsdl10_soap_module_set_soap_binding_op_exts);
+
+    axis2_hash_set(module_impl->methods, "get_soap_binding_op_exts", 
+            AXIS2_HASH_KEY_STRING, 
+            woden_wsdl10_soap_module_get_soap_binding_op_exts);
+
     axis2_hash_set(module_impl->methods, "add_documentation_element", 
             AXIS2_HASH_KEY_STRING, 
             woden_wsdl10_soap_module_add_documentation_element);
@@ -548,6 +571,13 @@
         module_impl->f_documentation_elements = NULL;
     }
 
+    if(module_impl->f_binding_op_exts)
+    {
+        WODEN_WSDL10_SOAP_BINDING_OP_EXTS_FREE(module_impl->f_binding_op_exts, 
+                env);
+        module_impl->f_binding_op_exts = NULL;
+    }
+
     if(module_impl->f_ext_element_type)
     {
         AXIS2_QNAME_FREE(module_impl->f_ext_element_type, env);
@@ -845,6 +875,42 @@
 
     return module_impl->f_documentation_elements;
 }
+
+axis2_status_t AXIS2_CALL 
+woden_wsdl10_soap_module_set_soap_binding_op_exts(
+        void *module,
+        axis2_env_t *env,
+        void *binding_op_exts) 
+{
+    woden_wsdl10_soap_module_impl_t *module_impl = NULL;
+    axis2_hash_t *super = NULL;
+
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK(env->error, binding_op_exts, AXIS2_FAILURE);
+    super = WODEN_WSDL10_SOAP_MODULE_SUPER_OBJS(module, env);
+    module_impl = INTF_TO_IMPL(axis2_hash_get(super, 
+                "WODEN_WSDL10_SOAP_MODULE", AXIS2_HASH_KEY_STRING));
+
+    module_impl->f_binding_op_exts = binding_op_exts;
+    return AXIS2_SUCCESS;
+}
+
+void *AXIS2_CALL 
+woden_wsdl10_soap_module_get_soap_binding_op_exts(
+        void *module,
+        axis2_env_t *env) 
+{
+    woden_wsdl10_soap_module_impl_t *module_impl = NULL;
+    axis2_hash_t *super = NULL;
+
+    AXIS2_ENV_CHECK(env, NULL);
+    super = WODEN_WSDL10_SOAP_MODULE_SUPER_OBJS(module, env);
+    module_impl = INTF_TO_IMPL(axis2_hash_get(super, 
+                "WODEN_WSDL10_SOAP_MODULE", AXIS2_HASH_KEY_STRING));
+
+    return module_impl->f_binding_op_exts;
+}
+
 
 axis2_status_t AXIS2_CALL 
 woden_wsdl10_soap_module_set_extension_type(

Modified: webservices/axis2/trunk/c/woden/src/wsdl10/extensions/soap/soap_module_deserializer.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/woden/src/wsdl10/extensions/soap/soap_module_deserializer.c?rev=425365&r1=425364&r2=425365&view=diff
==============================================================================
--- webservices/axis2/trunk/c/woden/src/wsdl10/extensions/soap/soap_module_deserializer.c (original)
+++ webservices/axis2/trunk/c/woden/src/wsdl10/extensions/soap/soap_module_deserializer.c Tue Jul 25 03:40:43 2006
@@ -80,13 +80,6 @@
         axiom_node_t *doc_el_node,
         void *desc);
 
-static void *
-parse_soap_binding_op_exts(
-        void *mod_deser,
-        const axis2_env_t *env,
-        axiom_node_t *binding_op_el_node,
-        void *desc);
-
 static woden_wsdl10_soap_module_deserializer_t *
 create(const axis2_env_t *env);
 
@@ -328,6 +321,7 @@
     axiom_element_t *temp_el = NULL;
     axiom_node_t *temp_el_node = NULL;
     axis2_bool_t required = AXIS2_FALSE;
+    axis2_qname_t *element_type_l = NULL;
 
     AXIS2_ENV_CHECK(env, NULL);
     super = WODEN_WSDL10_SOAP_MODULE_DESERIALIZER_SUPER_OBJS(mod_deser, env);
@@ -359,21 +353,40 @@
             required = AXIS2_TRUE;
     else
             required = AXIS2_FALSE;
+    
     soap_mod = woden_wsdl10_soap_module_to_ext_element(soap_mod, env);
     WODEN_EXT_ELEMENT_SET_REQUIRED(soap_mod, env, required);
+    element_type_l = axis2_qname_create(env, "operation", 
+        "http://schemas.xmlsoap.org/wsdl/soap/", NULL);
+    if(AXIS2_TRUE == AXIS2_QNAME_EQUALS(element_type, env, element_type_l))
+    {
+            axis2_char_t *action_str = NULL;
+            axis2_uri_t *soap_action = NULL;
+            void *binding_op_exts = NULL;
+
+            action_str = AXIOM_ELEMENT_GET_ATTRIBUTE_VALUE_BY_NAME(el, env, 
+                    WODEN_WSDL10_ATTR_ACTION);
+            soap_action = axis2_uri_parse_string(env, action_str);
+            binding_op_exts = woden_wsdl10_soap_binding_op_exts_create(env);
+            WODEN_WSDL10_SOAP_BINDING_OP_EXTS_SET_SOAP_ACTION(binding_op_exts, 
+                    env, soap_action);
+            AXIS2_URI_FREE(soap_action, env);
 
+            soap_mod = woden_wsdl10_soap_module_to_soap_module_element(soap_mod, 
+                    env);
+            WODEN_WSDL10_SOAP_MODULE_ELEMENT_SET_SOAP_BINDING_OP_EXTS(
+                    soap_mod, env, binding_op_exts);
+            
+    }
     temp_el = axiom_util_get_first_child_element(el, env, el_node, 
             &temp_el_node);
 
     while (NULL != temp_el && NULL != temp_el_node)
     {
         axis2_qname_t *q_elem_documentation = NULL;
-        axis2_qname_t *q_elem_action = NULL;
 
         q_elem_documentation = axis2_qname_create_from_string(env, 
                 WODEN_WSDL10_Q_ELEM_DOCUMENTATION);
-        q_elem_action = axis2_qname_create_from_string(env, 
-                WODEN_WSDL10_Q_ELEM_ACTION);
 
         if(AXIS2_TRUE == axis2_qname_util_matches(env, 
                     q_elem_documentation, temp_el_node))
@@ -385,18 +398,6 @@
             WODEN_WSDL10_SOAP_MODULE_ELEMENT_ADD_DOCUMENTATION_ELEMENT(soap_mod, env, 
                     documentation);
         }
-        if(AXIS2_TRUE == axis2_qname_util_matches(env, 
-                    q_elem_action, temp_el_node))
-        {
-            void *soap_binding_op = NULL;
-
-            soap_binding_op = parse_soap_binding_op_exts(mod_deser, env, 
-                    temp_el_node, desc);
-            soap_mod = woden_wsdl10_soap_module_to_soap_module_element(soap_mod, 
-                    env);
-            WODEN_WSDL10_SOAP_MODULE_ELEMENT_ADD_SOAP_BINDING_OP_EXTS(
-                    soap_mod, env, soap_binding_op);
-        }
         else
         {
             /* TODO Parse ext elements */
@@ -428,29 +429,4 @@
     
     return documentation;
 }
-
-static void *
-parse_soap_binding_op_exts(
-        void *mod_deser,
-        const axis2_env_t *env,
-        axiom_node_t *binding_op_el_node,
-        void *desc)
-{
-    axis2_char_t *action = NULL;
-    axiom_element_t *binding_op_el = NULL;
-    void *binding_op_exts = NULL;
-    axis2_uri_t *soap_action = NULL;
-   
-    binding_op_el = AXIOM_NODE_GET_DATA_ELEMENT(binding_op_el_node, env);
-    action = AXIOM_ELEMENT_GET_ATTRIBUTE_VALUE_BY_NAME(binding_op_el, env, 
-            WODEN_WSDL10_ATTR_ACTION);
-    soap_action = axis2_uri_parse_string(env, action);
-    binding_op_exts = woden_wsdl10_soap_binding_op_exts_create(env);
-    WODEN_WSDL10_SOAP_BINDING_OP_EXTS_SET_SOAP_ACTION(binding_op_exts, env, 
-            soap_action);
-    AXIS2_URI_FREE(soap_action, env);
-
-    return binding_op_exts;
-}
-
 

Modified: webservices/axis2/trunk/c/woden/src/wsdl10/extensions/soap/soap_module_element.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/woden/src/wsdl10/extensions/soap/soap_module_element.c?rev=425365&r1=425364&r2=425365&view=diff
==============================================================================
--- webservices/axis2/trunk/c/woden/src/wsdl10/extensions/soap/soap_module_element.c (original)
+++ webservices/axis2/trunk/c/woden/src/wsdl10/extensions/soap/soap_module_element.c Tue Jul 25 03:40:43 2006
@@ -46,8 +46,12 @@
             axis2_hash_get(methods, "get_parent_element", 
             AXIS2_HASH_KEY_STRING);
 
-    soap_module_element->ops->add_soap_binding_op_exts = 
-            axis2_hash_get(methods, "add_soap_binding_op_exts", 
+    soap_module_element->ops->set_soap_binding_op_exts = 
+            axis2_hash_get(methods, "set_soap_binding_op_exts", 
+            AXIS2_HASH_KEY_STRING);
+
+    soap_module_element->ops->get_soap_binding_op_exts = 
+            axis2_hash_get(methods, "get_soap_binding_op_exts", 
             AXIS2_HASH_KEY_STRING);
 
     soap_module_element->ops->add_documentation_element = 



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