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 sa...@apache.org on 2006/02/13 14:38:34 UTC

svn commit: r377379 - /webservices/axis2/trunk/c/samples/client/addr_echo/echo_client.c

Author: samisa
Date: Mon Feb 13 05:38:33 2006
New Revision: 377379

URL: http://svn.apache.org/viewcvs?rev=377379&view=rev
Log:
More fixes related to the current repo loading if services present

Modified:
    webservices/axis2/trunk/c/samples/client/addr_echo/echo_client.c

Modified: webservices/axis2/trunk/c/samples/client/addr_echo/echo_client.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/samples/client/addr_echo/echo_client.c?rev=377379&r1=377378&r2=377379&view=diff
==============================================================================
--- webservices/axis2/trunk/c/samples/client/addr_echo/echo_client.c (original)
+++ webservices/axis2/trunk/c/samples/client/addr_echo/echo_client.c Mon Feb 13 05:38:33 2006
@@ -52,6 +52,8 @@
     axis2_char_t *wsa_action = NULL;
     axis2_char_t *client_home = NULL;
     axis2_om_node_t *ret_node = NULL;
+    axis2_svc_t *svc = NULL;
+    axis2_op_t *op = NULL;
     
     allocator = axis2_allocator_init (NULL);
     error = axis2_error_create(allocator);
@@ -89,15 +91,36 @@
     AXIS2_MSG_INFO_HEADERS_SET_TO(msg_info_headers, &env, endpoint_ref);
     AXIS2_MSG_INFO_HEADERS_SET_ACTION(msg_info_headers, &env, wsa_action); 
     AXIS2_CALL_SET_TO(call, &env, endpoint_ref);
-    axis2_qname_t *svc_qname = axis2_qname_create(&env, "echo", NULL, NULL);
-    axis2_svc_t *svc = axis2_svc_create_with_qname(&env, svc_qname);
-    axis2_qname_t *op_qname = axis2_qname_create(&env, "echoString", NULL, NULL);
-    axis2_op_t *op = axis2_op_create_with_qname(&env, op_qname);
-    AXIS2_OP_SET_MSG_EXCHANGE_PATTERN(op, &env, AXIS2_MEP_URI_OUT_IN);
-    AXIS2_SVC_ADD_OP(svc, &env, op);
-
-    AXIS2_CONF_ADD_SVC(AXIS2_CONF_CTX_GET_CONF(AXIS2_SVC_CTX_GET_CONF_CTX(AXIS2_MEP_CLIENT_GET_SVC_CTX(mep_client, &env), &env), &env), &env, svc);
+    axis2_conf_t *conf = AXIS2_CONF_CTX_GET_CONF(
+                            AXIS2_SVC_CTX_GET_CONF_CTX(
+                                AXIS2_MEP_CLIENT_GET_SVC_CTX(mep_client, &env), 
+                                &env), 
+                                &env);
+    svc = AXIS2_CONF_GET_SVC(conf, &env, "echo");
+    if (svc)
+    {
+        op = AXIS2_SVC_GET_OP_WITH_NAME(svc, &env, "echoString");
+        if (op)
+        {
+            AXIS2_OP_SET_MSG_EXCHANGE_PATTERN(op, &env, AXIS2_MEP_URI_OUT_IN);
+        }
+    }
+    else
+    {
+        axis2_qname_t *svc_qname = axis2_qname_create(&env, "echo", NULL, NULL);
+        svc = axis2_svc_create_with_qname(&env, svc_qname);
+        axis2_qname_t *op_qname = axis2_qname_create(&env, "echoString", NULL, NULL);
+        op = axis2_op_create_with_qname(&env, op_qname);
+        AXIS2_OP_SET_MSG_EXCHANGE_PATTERN(op, &env, AXIS2_MEP_URI_OUT_IN);
+        AXIS2_SVC_ADD_OP(svc, &env, op);
+        AXIS2_CONF_ADD_SVC(conf, &env, svc);
+    }
 
+    if (!op)
+    {
+        printf("ERROR: operation not present in service\n");
+        return -1;
+    }
     axis2_msg_ctx_t *response_ctx = AXIS2_CALL_INVOKE_BLOCKING(call, &env, op, msg_ctx);
 
     if (response_ctx)