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