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 sh...@apache.org on 2008/04/01 06:48:31 UTC
svn commit: r643279 -
/webservices/axis2/trunk/c/src/core/clientapi/op_client.c
Author: shankar
Date: Mon Mar 31 21:48:18 2008
New Revision: 643279
URL: http://svn.apache.org/viewvc?rev=643279&view=rev
Log:
Hackathon of client api
Modified:
webservices/axis2/trunk/c/src/core/clientapi/op_client.c
Modified: webservices/axis2/trunk/c/src/core/clientapi/op_client.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/clientapi/op_client.c?rev=643279&r1=643278&r2=643279&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/clientapi/op_client.c (original)
+++ webservices/axis2/trunk/c/src/core/clientapi/op_client.c Mon Mar 31 21:48:18 2008
@@ -42,20 +42,17 @@
axis2_callback_t *callback;
axis2_bool_t completed;
+
/* to hold the locally created async result */
axis2_async_result_t *async_result;
+
axis2_callback_recv_t *callback_recv;
/** message exchange pattern */
axis2_char_t *mep;
- /** SOAP version URI */
axis2_char_t *soap_version_uri;
-
- /** SOAP action */
axutil_string_t *soap_action;
-
- /** WSA action */
axis2_char_t *wsa_action;
axis2_bool_t reuse;
@@ -74,7 +71,7 @@
axutil_thread_t * thd,
void *data);
-static axis2_char_t *AXIS2_CALL axis2_get_transport_from_url(
+static axis2_char_t *AXIS2_CALL axis2_op_client_get_transport_from_url(
const axis2_char_t * url,
const axutil_env_t * env);
@@ -97,13 +94,11 @@
if (!op_client)
{
AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "No memory. Cannot create op client.");
return NULL;
}
/** initialize data */
- op_client->svc_ctx = NULL;
- op_client->options = NULL;
- op_client->op_ctx = NULL;
op_client->callback = NULL;
op_client->completed = AXIS2_FALSE;
op_client->reuse = AXIS2_FALSE;
@@ -129,19 +124,20 @@
if (!mep_uri)
{
+ AXIS2_ERROR_SET(env->error, AXIS2_ERROR_MEP_CANNOT_DETERMINE_MEP, AXIS2_FAILURE);
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Cannot find message exchange pattern uri.");
axis2_op_client_free(op_client, env);
return NULL;
}
- else
- {
- op_client->mep = axutil_strdup(env, mep_uri);
- }
+
+ op_client->mep = axutil_strdup(env, mep_uri);
op_client->soap_version_uri =
axutil_strdup(env, AXIOM_SOAP12_SOAP_ENVELOPE_NAMESPACE_URI);
if (!(op_client->soap_version_uri))
{
AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "No memory. Cannot create soap version uri.");
axis2_op_client_free(op_client, env);
return NULL;
}
@@ -157,8 +153,6 @@
const axutil_env_t * env,
const axis2_options_t * options)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
if (op_client->options)
{
axis2_options_free(op_client->options, env);
@@ -173,8 +167,6 @@
const axis2_op_client_t * op_client,
const axutil_env_t * env)
{
- AXIS2_ENV_CHECK(env, NULL);
-
return op_client->options;
}
@@ -188,7 +180,6 @@
*in_msg_ctx = NULL;
axis2_msg_ctx_t **msg_ctx_map = NULL;
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
/* Don't use AXIS2_PARAM_CHECK to verify op_client, as it clobbers
env->error->status_code on no error destroying the information
therein that an error has already occurred. */
@@ -305,8 +296,6 @@
{
axis2_msg_ctx_t **msg_ctx_map = NULL;
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
msg_ctx_map = axis2_op_ctx_get_msg_ctx_map(op_client->op_ctx, env);
msg_ctx_map[AXIS2_WSDL_MESSAGE_LABEL_OUT] = mc;
@@ -329,8 +318,6 @@
const axutil_env_t * env,
axis2_callback_t * callback)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
if (op_client->callback)
{
axis2_callback_free(op_client->callback, env);
@@ -364,10 +351,9 @@
axis2_op_t *op = NULL;
axis2_char_t *msg_id = NULL;
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
if (op_client->completed)
{
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Op client execute failed. Already completed.");
return AXIS2_FAILURE;
}
@@ -378,6 +364,7 @@
if (!msg_ctx)
{
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Op client execute failed. Message context is not valid.");
return AXIS2_FAILURE;
}
@@ -414,6 +401,7 @@
if (!transport_out)
{
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Op client execute failed. Cannot find transport out.");
return AXIS2_FAILURE;
}
@@ -442,6 +430,7 @@
}
if (!transport_in)
{
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Op client execute failed. Cannot find transport in.");
return AXIS2_FAILURE;
}
@@ -454,11 +443,13 @@
if (!op)
{
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Op client execute failed. Cannot find operation.");
return AXIS2_FAILURE;
}
status = axis2_op_client_prepare_invocation(op_client, env, op, msg_ctx);
if (status != AXIS2_SUCCESS)
{
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Op client execute failed. Preparing for invocation failed.");
return AXIS2_FAILURE;
}
msg_id = (axis2_char_t *) axutil_uuid_gen(env);
@@ -486,6 +477,7 @@
engine = axis2_engine_create(env, conf_ctx);
if (!engine)
{
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Op client execute failed due to engine creation failure.");
return AXIS2_FAILURE;
}
axis2_engine_send(engine, env, msg_ctx);
@@ -537,6 +529,8 @@
sizeof(axis2_op_client_worker_func_args_t));
if (!arg_list)
{
+ AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "No memory. Cannot create op client worker function argument list.");
return AXIS2_FAILURE;
}
arg_list->env = env;
@@ -556,8 +550,11 @@
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
"Thread creation failed call invoke non blocking");
}
- axutil_thread_pool_thread_detach(env->thread_pool,
- worker_thread);
+ else
+ {
+ axutil_thread_pool_thread_detach(env->thread_pool,
+ worker_thread);
+ }
}
else
{
@@ -579,8 +576,6 @@
axis2_op_client_t * op_client,
const axutil_env_t * env)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
if (!op_client->completed)
return AXIS2_FAILURE;
@@ -601,8 +596,6 @@
axis2_listener_manager_t *listener_manager = NULL;
AXIS2_TRANSPORT_ENUMS transport = AXIS2_TRANSPORT_ENUM_HTTP;
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
conf_ctx = axis2_msg_ctx_get_conf_ctx(mc, env);
if (!conf_ctx)
@@ -627,7 +620,8 @@
axis2_op_client_t * op_client,
const axutil_env_t * env)
{
- AXIS2_ENV_CHECK(env, void);
+ if(!op_client)
+ return;
if (op_client->callback)
{
@@ -656,8 +650,6 @@
}
AXIS2_FREE(env->allocator, op_client);
-
- return;
}
void *AXIS2_THREAD_FUNC
@@ -677,7 +669,6 @@
return NULL;
}
- AXIS2_ENV_CHECK(args_list->env, AXIS2_FAILURE);
th_env = axutil_init_thread_env(args_list->env);
op_ctx = axis2_op_ctx_create(th_env, args_list->op,
@@ -750,7 +741,6 @@
{
axis2_svc_t *svc = NULL;
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
AXIS2_PARAM_CHECK(env->error, op, AXIS2_FAILURE);
AXIS2_PARAM_CHECK(env->error, msg_ctx, AXIS2_FAILURE);
@@ -762,6 +752,7 @@
{
AXIS2_ERROR_SET(env->error, AXIS2_ERROR_MEP_MISMATCH_IN_MEP_CLIENT,
AXIS2_FAILURE);
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Message exchange pattern of op client and operation are different.");
return AXIS2_FAILURE;
}
}
@@ -770,6 +761,7 @@
AXIS2_ERROR_SET(env->error,
AXIS2_ERROR_MEP_CANNOT_BE_NULL_IN_MEP_CLIENT,
AXIS2_FAILURE);
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Message exchange pattern of op client is not valid.");
return AXIS2_FAILURE;
}
/* If operation has a parent service get it */
@@ -816,8 +808,6 @@
axiom_soap_envelope_t *envelope = NULL;
int soap_version = AXIOM_SOAP12;
- AXIS2_ENV_CHECK(env, NULL);
-
if (op_client->svc_ctx)
{
msg_ctx = axis2_msg_ctx_create(env,
@@ -876,15 +866,13 @@
axis2_char_t *transport = NULL;
axis2_transport_out_desc_t *transport_out_desc = NULL;
- AXIS2_ENV_CHECK(env, NULL);
-
AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
"Start:axis2_op_client_infer_transport");
if (epr)
{
const axis2_char_t *to_url = axis2_endpoint_ref_get_address(epr, env);
- transport = axis2_get_transport_from_url(to_url, env);
+ transport = axis2_op_client_get_transport_from_url(to_url, env);
}
if (transport)
@@ -893,19 +881,19 @@
axis2_conf_t *conf = NULL;
AXIS2_TRANSPORT_ENUMS transport_enum = 0;
- if (!axutil_strcmp(transport, "http"))
+ if (!axutil_strcmp(transport, AXIS2_TRANSPORT_HTTP))
{
transport_enum = AXIS2_TRANSPORT_ENUM_HTTP;
}
- else if (!axutil_strcmp(transport, "https"))
+ else if (!axutil_strcmp(transport, AXIS2_TRANSPORT_HTTPS))
{
transport_enum = AXIS2_TRANSPORT_ENUM_HTTPS;
}
- else if (!axutil_strcmp(transport, "xmpp"))
+ else if (!axutil_strcmp(transport, AXIS2_TRANSPORT_XMPP))
{
transport_enum = AXIS2_TRANSPORT_ENUM_XMPP;
}
- else if (!axutil_strcmp(transport, "tcp"))
+ else if (!axutil_strcmp(transport, AXIS2_TRANSPORT_TCP))
{
transport_enum = AXIS2_TRANSPORT_ENUM_TCP;
}
@@ -945,8 +933,6 @@
{
axiom_soap_envelope_t *envelope = NULL;
- AXIS2_ENV_CHECK(env, NULL);
-
if (!(axutil_strcmp(AXIOM_SOAP12_SOAP_ENVELOPE_NAMESPACE_URI,
op_client->soap_version_uri)))
{
@@ -974,8 +960,6 @@
axis2_conf_ctx_t *conf_ctx = NULL;
axis2_conf_t *conf = NULL;
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
if (op_client->svc_ctx)
{
conf_ctx = axis2_svc_ctx_get_conf_ctx(op_client->svc_ctx, env);
@@ -1002,8 +986,6 @@
const axutil_env_t * env,
const axis2_char_t * soap_version_uri)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
if (op_client->soap_version_uri)
{
AXIS2_FREE(env->allocator, op_client->soap_version_uri);
@@ -1016,6 +998,7 @@
if (!(op_client->soap_version_uri))
{
AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "No memory. Cannot create soap version uri.");
return AXIS2_FAILURE;
}
}
@@ -1029,8 +1012,6 @@
const axutil_env_t * env,
axutil_string_t * soap_action)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
if (op_client->soap_action)
{
axutil_string_free(op_client->soap_action, env);
@@ -1043,6 +1024,7 @@
if (!(op_client->soap_action))
{
AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "No memory. Cannot create soap action.");
return AXIS2_FAILURE;
}
}
@@ -1056,8 +1038,6 @@
const axutil_env_t * env,
const axis2_char_t * wsa_action)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
if (op_client->wsa_action)
{
AXIS2_FREE(env->allocator, op_client->wsa_action);
@@ -1070,6 +1050,7 @@
if (!(op_client->wsa_action))
{
AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "No memory. Cannot create wsa action.");
return AXIS2_FAILURE;
}
}
@@ -1078,7 +1059,7 @@
}
static axis2_char_t *AXIS2_CALL
-axis2_get_transport_from_url(
+axis2_op_client_get_transport_from_url(
const axis2_char_t * url,
const axutil_env_t * env)
{
@@ -1099,6 +1080,7 @@
if (!transport)
{
AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "No memory. Cannot create transport protocol identifier.");
return NULL;
}
@@ -1137,8 +1119,6 @@
axis2_bool_t wait_indefinitely = AXIS2_FALSE;
axis2_char_t *mep = NULL;
- AXIS2_ENV_CHECK(env, NULL);
-
conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env);
engine = axis2_engine_create(env, conf_ctx);
if (!engine)
@@ -1182,6 +1162,7 @@
AXIS2_ERROR_SET(env->error,
AXIS2_ERROR_MEP_CANNOT_DETERMINE_MEP,
AXIS2_FAILURE);
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Cannot determine message exchange pattern.");
return NULL;
}
@@ -1242,10 +1223,6 @@
if (engine)
{
status = axis2_engine_receive(engine, env, response);
- /*
- if (status != AXIS2_SUCCESS)
- return NULL;
- */
}
}
else
@@ -1293,6 +1270,7 @@
AXIS2_ERROR_SET(env->error,
AXIS2_ERROR_BLOCKING_INVOCATION_EXPECTS_RESPONSE,
AXIS2_FAILURE);
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Response is not valid. Blocking invocation expects response.");
if (engine)
{
axis2_engine_free(engine, env);
@@ -1322,6 +1300,7 @@
AXIS2_ERROR_SET(env->error,
AXIS2_ERROR_HTTP_CLIENT_TRANSPORT_ERROR,
AXIS2_FAILURE);
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "HTTP client transport error.");
return NULL;
}
switch(axis2_msg_ctx_get_status_code (response, env))
@@ -1331,16 +1310,19 @@
AXIS2_ERROR_SET(env->error,
AXIS2_ERROR_HTTP_CLIENT_TRANSPORT_ERROR,
AXIS2_FAILURE);
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "HTTP client transport error.");
break;
case 0:
AXIS2_ERROR_SET(env->error,
AXIS2_ERROR_BLOCKING_INVOCATION_EXPECTS_RESPONSE,
AXIS2_FAILURE);
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Response is not valid. Blocking invocation expects response.");
break;
case -1:
AXIS2_ERROR_SET(env->error,
AXIS2_ERROR_BLOCKING_INVOCATION_EXPECTS_RESPONSE,
AXIS2_FAILURE);
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Response is not valid. Blocking invocation expects response.");
break;
}
return NULL;
@@ -1360,8 +1342,6 @@
axis2_op_t *op = NULL;
axiom_soap_envelope_t *response_envelope = NULL;
axutil_property_t *property = NULL;
-
- AXIS2_ENV_CHECK(env, NULL);
/* create the response */
response = axis2_msg_ctx_create(env, conf_ctx,
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org