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/03/29 13:34:46 UTC
svn commit: r389761 - in /webservices/axis2/trunk/c:
include/axis2_di_client.h modules/core/clientapi/diclient/di_client.c
samples/client/diclient/echo_client.c
Author: damitha
Date: Wed Mar 29 03:34:45 2006
New Revision: 389761
URL: http://svn.apache.org/viewcvs?rev=389761&view=rev
Log:
Improvements to diclient
Modified:
webservices/axis2/trunk/c/include/axis2_di_client.h
webservices/axis2/trunk/c/modules/core/clientapi/diclient/di_client.c
webservices/axis2/trunk/c/samples/client/diclient/echo_client.c
Modified: webservices/axis2/trunk/c/include/axis2_di_client.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_di_client.h?rev=389761&r1=389760&r2=389761&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_di_client.h (original)
+++ webservices/axis2/trunk/c/include/axis2_di_client.h Wed Mar 29 03:34:45 2006
@@ -55,8 +55,12 @@
axis2_status_t (AXIS2_CALL *
invoke) (axis2_di_client_t *di_client,
axis2_env_t **env,
- axis2_char_t *wsdl_file_name,
axis2_om_node_t *node);
+
+ axis2_status_t (AXIS2_CALL *
+ init) (axis2_di_client_t *di_client,
+ axis2_env_t **env,
+ axis2_char_t *wsdl_file_name);
};
/**
@@ -76,8 +80,11 @@
#define AXIS2_DI_CLIENT_FREE(di_client, env) \
((di_client)->ops->free (di_client, env))
-#define AXIS2_DI_CLIENT_INVOKE(di_client, env, wsdl_file_name, node) \
- ((di_client)->ops->invoke (di_client, env, wsdl_file_name, node))
+#define AXIS2_DI_CLIENT_INVOKE(di_client, env, node) \
+ ((di_client)->ops->invoke (di_client, env, node))
+
+#define AXIS2_DI_CLIENT_INIT(di_client, env, wsdl_file_name) \
+ ((di_client)->ops->init (di_client, env, wsdl_file_name))
/************************** End of function macros ****************************/
Modified: webservices/axis2/trunk/c/modules/core/clientapi/diclient/di_client.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/clientapi/diclient/di_client.c?rev=389761&r1=389760&r2=389761&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/clientapi/diclient/di_client.c (original)
+++ webservices/axis2/trunk/c/modules/core/clientapi/diclient/di_client.c Wed Mar 29 03:34:45 2006
@@ -52,6 +52,8 @@
typedef struct axis2_di_client_impl
{
axis2_di_client_t di_client;
+ void *parser;
+ axis2_wsdl_desc_t *wsdl_desc;
} axis2_di_client_impl_t;
#define AXIS2_INTF_TO_IMPL(di_client) \
@@ -66,9 +68,13 @@
axis2_status_t AXIS2_CALL
axis2_di_client_invoke(axis2_di_client_t *di_client,
axis2_env_t **env,
- axis2_char_t *wsdl_file_name,
axis2_om_node_t *node);
+axis2_status_t AXIS2_CALL
+axis2_di_client_init(axis2_di_client_t *di_client,
+ axis2_env_t **env,
+ axis2_char_t *wsdl_file_name);
+
/************************** End of function prototypes ************************/
axis2_di_client_t * AXIS2_CALL
@@ -88,6 +94,8 @@
return NULL;
}
+ di_client_impl->parser = NULL;
+ di_client_impl->wsdl_desc = NULL;
di_client_impl->di_client.ops = NULL;
di_client_impl->di_client.ops =
@@ -100,8 +108,8 @@
}
di_client_impl->di_client.ops->free = axis2_di_client_free;
- di_client_impl->di_client.ops->invoke =
- axis2_di_client_invoke;
+ di_client_impl->di_client.ops->init = axis2_di_client_init;
+ di_client_impl->di_client.ops->invoke = axis2_di_client_invoke;
return &(di_client_impl->di_client);
}
@@ -118,6 +126,16 @@
di_client_impl = AXIS2_INTF_TO_IMPL(di_client);
+ if(di_client_impl->parser)
+ {
+ /* Free wsdl parser */
+ }
+
+ if(di_client_impl->wsdl_desc)
+ {
+ /* Free wsdl parser */
+ }
+
if(NULL != di_client->ops)
AXIS2_FREE((*env)->allocator, di_client->ops);
@@ -126,16 +144,38 @@
AXIS2_FREE((*env)->allocator, di_client_impl);
di_client_impl = NULL;
}
+ return AXIS2_SUCCESS;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_di_client_init(axis2_di_client_t *di_client,
+ axis2_env_t **env,
+ axis2_char_t *wsdl_file_name)
+{
+ axis2_di_client_impl_t *di_client_impl = NULL;
+ axis2_wsdl_pump_t *wsdl_pump = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK((*env)->error, wsdl_file_name, AXIS2_FAILURE);
+ di_client_impl = AXIS2_INTF_TO_IMPL(di_client);
+
+ di_client_impl->parser = axis2_wsdl4c_parser_create(wsdl_file_name, "");
+ di_client_impl->wsdl_desc = axis2_wsdl_desc_create(env);
+ wsdl_pump = axis2_wsdl_pump_create(env, di_client_impl->wsdl_desc, di_client_impl->parser);
+ if(!wsdl_pump)
+ {
+ return AXIS2_FAILURE;
+ }
+ return AXIS2_WSDL_PUMP_PUMP(wsdl_pump, env);
}
axis2_status_t AXIS2_CALL
axis2_di_client_invoke(axis2_di_client_t *di_client,
axis2_env_t **env,
- axis2_char_t *wsdl_file_name,
axis2_om_node_t *node)
{
+ axis2_di_client_impl_t *di_client_impl = NULL;
axis2_status_t status = AXIS2_FAILURE;
- void *wp = NULL;
axis2_char_t *address = NULL;
axis2_char_t *wsa_action = NULL;
axis2_char_t *client_home = NULL;
@@ -147,8 +187,6 @@
axis2_endpoint_ref_t* endpoint_ref = NULL;
axis2_conf_t *conf = NULL;
axis2_msg_ctx_t *response_ctx = NULL;
- axis2_wsdl_desc_t *wsdl_desc = NULL;
- axis2_wsdl_pump_t *wsdl_pump = NULL;
axis2_hash_index_t *index = NULL;
axis2_hash_t *svcs = NULL;
axis2_hash_t *endpoints = NULL;
@@ -169,6 +207,10 @@
axis2_wsdl_ext_soap_address_t *soap_address = NULL;
axis2_wsdl_ext_soap_op_t *soap_op = NULL;
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK((*env)->error, node, AXIS2_FAILURE);
+ di_client_impl = AXIS2_INTF_TO_IMPL(di_client);
+
/* Set up deploy folder. It is from the deploy folder, the configuration is picked up
* using the axis2.xml file.
* In this sample client_home points to the Axis2/C default deploy folder. The client_home can
@@ -180,19 +222,7 @@
if (!client_home)
client_home = "../../deploy";
- wp = axis2_wsdl4c_parser_create(wsdl_file_name, "");
- wsdl_desc = axis2_wsdl_desc_create(env);
- wsdl_pump = axis2_wsdl_pump_create(env, wsdl_desc, wp);
- if(!wsdl_pump)
- {
- return AXIS2_FAILURE;
- }
- status = AXIS2_WSDL_PUMP_PUMP(wsdl_pump, env);
- if(AXIS2_SUCCESS != status)
- {
- return status;
- }
- svcs = AXIS2_WSDL_DESC_GET_SVCS(wsdl_desc, env);
+ svcs = AXIS2_WSDL_DESC_GET_SVCS(di_client_impl->wsdl_desc, env);
index = axis2_hash_first (svcs, env);
axis2_hash_this (index, NULL, NULL, &value);
wsdl_svc = (axis2_wsdl_svc_t *) value;
Modified: webservices/axis2/trunk/c/samples/client/diclient/echo_client.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/samples/client/diclient/echo_client.c?rev=389761&r1=389760&r2=389761&view=diff
==============================================================================
--- webservices/axis2/trunk/c/samples/client/diclient/echo_client.c (original)
+++ webservices/axis2/trunk/c/samples/client/diclient/echo_client.c Wed Mar 29 03:34:45 2006
@@ -52,11 +52,14 @@
printf("Usage: print <wsdl_File_Name>\n");
return 1;
}
- /* build the SOAP request message content using OM API.*/
- node = build_om_programatically(&env);
wsdl_file_name = argv[1];
diclient = axis2_di_client_create(&env);
- status = AXIS2_DI_CLIENT_INVOKE(diclient, &env, wsdl_file_name, node);
+ status = AXIS2_DI_CLIENT_INIT(diclient, &env, wsdl_file_name);
+ if(AXIS2_SUCCESS != status)
+ return status;
+ /* build the SOAP request message content using OM API.*/
+ node = build_om_programatically(&env);
+ status = AXIS2_DI_CLIENT_INVOKE(diclient, &env, node);
if(AXIS2_SUCCESS == status)
printf("status:%s\n", "Success");
else