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/05/08 07:41:15 UTC

svn commit: r404934 - in /webservices/axis2/trunk/c: include/axis2_options.h modules/core/clientapi/options.c samples/user_guide/clients/Makefile.am samples/user_guide/clients/echo_blocking_soap11.c

Author: samisa
Date: Sun May  7 22:41:13 2006
New Revision: 404934

URL: http://svn.apache.org/viewcvs?rev=404934&view=rev
Log:
Fixes to get SOAP version setting working

Added:
    webservices/axis2/trunk/c/samples/user_guide/clients/echo_blocking_soap11.c
Modified:
    webservices/axis2/trunk/c/include/axis2_options.h
    webservices/axis2/trunk/c/modules/core/clientapi/options.c
    webservices/axis2/trunk/c/samples/user_guide/clients/Makefile.am

Modified: webservices/axis2/trunk/c/include/axis2_options.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_options.h?rev=404934&r1=404933&r2=404934&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_options.h (original)
+++ webservices/axis2/trunk/c/include/axis2_options.h Sun May  7 22:41:13 2006
@@ -290,6 +290,18 @@
 	axis2_msg_info_headers_t* (AXIS2_CALL *	
 	get_msg_info_headers)(struct axis2_options *options,
 							axis2_env_t **env);
+
+    int (AXIS2_CALL *
+    get_soap_version)(
+        struct axis2_options *options,
+        axis2_env_t **env);
+
+    axis2_status_t (AXIS2_CALL *
+    set_soap_version)(
+        struct axis2_options *options,
+        axis2_env_t **env,
+        int soap_version);
+
 	
 	axis2_status_t (AXIS2_CALL *	
 	free)(struct axis2_options *options,
@@ -434,6 +446,12 @@
 
 #define AXIS2_OPTIONS_GET_MSG_INFO_HEADERS(options, env) \
 		((options)->ops->get_msg_info_headers(options, env))
+
+#define AXIS2_OPTIONS_SET_SOAP_VERSION(options, env, soap_version) \
+		((options)->ops->set_soap_version(options, env, soap_version))
+
+#define AXIS2_OPTIONS_GET_SOAP_VERSION(options, env) \
+		((options)->ops->get_soap_version(options, env))
 
 #define AXIS2_OPTIONS_FREE(options, env) \
 		((options)->ops->free(options, env))

Modified: webservices/axis2/trunk/c/modules/core/clientapi/options.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/clientapi/options.c?rev=404934&r1=404933&r2=404934&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/clientapi/options.c (original)
+++ webservices/axis2/trunk/c/modules/core/clientapi/options.c Sun May  7 22:41:13 2006
@@ -32,6 +32,8 @@
 	axis2_hash_t *properties;
 
 	axis2_char_t *soap_version_uri;
+    
+    int soap_version;
 
 	long timeout_in_milli_seconds;
 	
@@ -264,6 +266,16 @@
 axis2_options_get_msg_info_headers(struct axis2_options *options,
                             axis2_env_t **env);
 
+int AXIS2_CALL 
+axis2_options_get_soap_version(struct axis2_options *options,
+                            		axis2_env_t **env);
+
+axis2_status_t AXIS2_CALL 
+axis2_options_set_soap_version(struct axis2_options *options,
+                            		axis2_env_t **env,
+                                    int soap_version);
+
+
 axis2_status_t AXIS2_CALL
 axis2_options_free (struct axis2_options *options,
 		                     axis2_env_t **env);
@@ -887,7 +899,7 @@
 	options_impl->transport_out = AXIS2_CONF_GET_TRANSPORT_OUT(conf, env, tmp);
 	AXIS2_QNAME_FREE(tmp, env);
 
-	if (!options_impl->transport_out)
+	if (!(options_impl->transport_out))
 	{
 		/*TODO:error*/
 		return AXIS2_FAILURE;
@@ -904,7 +916,16 @@
 
 	options_impl = AXIS2_INTF_TO_IMPL(options);
 
-	options_impl->soap_version_uri = soap_version_uri;
+    if (options_impl->soap_version_uri)
+    {
+        AXIS2_FREE((*env)->allocator, options_impl->soap_version_uri);
+        options_impl->soap_version_uri = NULL;
+    }
+    
+    if (soap_version_uri)
+    {
+        options_impl->soap_version_uri = AXIS2_STRDUP(soap_version_uri, env);
+    }
 }
 
 void AXIS2_CALL 
@@ -1091,6 +1112,7 @@
 	options_impl->transport_out = NULL;
 	options_impl->sender_transport_protocol = NULL;
 	options_impl->manage_session = -1;
+    options_impl->soap_version = AXIS2_SOAP12;
 }
 
 static void axis2_options_init_ops(struct axis2_options *options)
@@ -1137,5 +1159,41 @@
 	options->ops->set_manage_session = axis2_options_set_manage_session;
 	options->ops->is_manage_session = axis2_options_is_manage_session;
     options->ops->get_msg_info_headers = axis2_options_get_msg_info_headers;
+    options->ops->set_soap_version = axis2_options_set_soap_version;
+    options->ops->get_soap_version = axis2_options_get_soap_version;
 	options->ops->free = axis2_options_free;
+}
+
+int AXIS2_CALL 
+axis2_options_get_soap_version(struct axis2_options *options,
+                            		axis2_env_t **env)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    return AXIS2_INTF_TO_IMPL(options)->soap_version;
+
+}
+
+axis2_status_t AXIS2_CALL 
+axis2_options_set_soap_version(struct axis2_options *options,
+                            		axis2_env_t **env,
+                                    int soap_version)
+{
+    axis2_options_impl_t *options_impl = NULL;
+    AXIS2_ENV_CHECK(env, NULL);
+
+	options_impl = AXIS2_INTF_TO_IMPL(options);
+    
+    if (soap_version == AXIS2_SOAP11)
+    {
+        options_impl->soap_version = soap_version;
+        axis2_options_set_soap_version_uri(options, env, 
+            AXIS2_SOAP11_SOAP_ENVELOPE_NAMESPACE_URI);
+    }
+    else
+    {
+        options_impl->soap_version = AXIS2_SOAP12;
+        axis2_options_set_soap_version_uri(options, env, 
+            AXIS2_SOAP12_SOAP_ENVELOPE_NAMESPACE_URI);
+    }
+    return AXIS2_SUCCESS;
 }

Modified: webservices/axis2/trunk/c/samples/user_guide/clients/Makefile.am
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/samples/user_guide/clients/Makefile.am?rev=404934&r1=404933&r2=404934&view=diff
==============================================================================
--- webservices/axis2/trunk/c/samples/user_guide/clients/Makefile.am (original)
+++ webservices/axis2/trunk/c/samples/user_guide/clients/Makefile.am Sun May  7 22:41:13 2006
@@ -1,8 +1,8 @@
 prgbindir=$(prefix)/bin/samples
-prgbin_PROGRAMS = echo_blocking echo_non_blocking echo_blocking_addr echo_rest echo_blocking_dual echo_non_blocking_dual
+prgbin_PROGRAMS = echo_blocking echo_non_blocking echo_blocking_addr echo_rest echo_blocking_dual echo_non_blocking_dual echo_blocking_soap11
 samplesdir=$(prefix)/samples/user_guide/clients
 samples_DATA=echo_util.h echo_util.c echo_blocking.c echo_non_blocking.c echo_blocking_addr.c echo_rest.c \
-    Makefile.am Makefile.in echo_blocking_dual.c echo_non_blocking_dual.c
+    Makefile.am Makefile.in echo_blocking_dual.c echo_non_blocking_dual.c echo_blocking_soap11.c
 
 echo_blocking_SOURCES = echo_blocking.c echo_util.c
 echo_non_blocking_SOURCES = echo_non_blocking.c echo_util.c
@@ -10,6 +10,7 @@
 echo_rest_SOURCES = echo_util.c echo_rest.c
 echo_blocking_dual_SOURCES = echo_blocking_dual.c echo_util.c
 echo_non_blocking_dual_SOURCES = echo_non_blocking_dual.c echo_util.c
+echo_blocking_soap11_SOURCES = echo_blocking_soap11.c echo_util.c
 
 LINK_FLAGS = $(LDFLAGS) \
              -L$(AXIS2C_HOME)/lib \
@@ -32,6 +33,7 @@
 echo_rest_LDADD = $(LINK_FLAGS)
 echo_blocking_dual_LDADD = $(LINK_FLAGS)
 echo_non_blocking_dual_LDADD = $(LINK_FLAGS)
+echo_blocking_soap11_LDADD = $(LINK_FLAGS)
 
 INCLUDES = -I$(AXIS2C_HOME)/include \
             -I$(AXIS2C_HOME)/platforms

Added: webservices/axis2/trunk/c/samples/user_guide/clients/echo_blocking_soap11.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/samples/user_guide/clients/echo_blocking_soap11.c?rev=404934&view=auto
==============================================================================
--- webservices/axis2/trunk/c/samples/user_guide/clients/echo_blocking_soap11.c (added)
+++ webservices/axis2/trunk/c/samples/user_guide/clients/echo_blocking_soap11.c Sun May  7 22:41:13 2006
@@ -0,0 +1,109 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "echo_util.h"
+#include <axis2_util.h>
+#include <axis2_soap.h>
+#include <axis2_client.h>
+
+int main(int argc, char** argv)
+{
+    axis2_env_t *env = NULL;
+    axis2_char_t *address = NULL;
+    axis2_endpoint_ref_t* endpoint_ref = NULL;
+    axis2_options_t *options = NULL;
+    axis2_char_t *client_home = NULL;
+    axis2_svc_client_t* svc_client = NULL;
+    axis2_om_node_t *payload = NULL;
+    axis2_om_node_t *ret_node = NULL;
+   
+    /* Set up the envioronment */
+    env = axis2_env_create_all("echo_blocking.log", AXIS2_LOG_LEVEL_TRACE);
+
+    /* Set end point reference of echo service */
+    address = "http://localhost:9090/axis2/services/echo";
+    if (argc > 1 )
+        address = argv[1];
+    if (AXIS2_STRCMP(address, "-h") == 0)
+    {
+        printf("Usage : %s [endpoint_url]\n", argv[0]);
+        printf("use -h for help\n");
+        return 0;
+    }
+    printf ("Using endpoint : %s\n", address);
+    
+    /* Create EPR with given address */
+    endpoint_ref = axis2_endpoint_ref_create(&env, address);
+
+    /* Setup options */
+    options = axis2_options_create(&env);
+    AXIS2_OPTIONS_SET_TO(options, &env, endpoint_ref);
+    AXIS2_OPTIONS_SET_SOAP_VERSION(options, &env, AXIS2_SOAP11);
+
+    /* 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 
+     * be different from this folder on your system. For example, you may have a different folder 
+     * (say, my_client_folder) with its own axis2.xml file. my_client_folder/modules will have the 
+     * modules that the client uses
+     */
+    client_home = AXIS2_GETENV("AXIS2C_HOME");
+    if (!client_home)
+        client_home = "../../deploy";
+
+    /* Create service client */
+    svc_client = axis2_svc_client_create(&env, client_home);
+    if (!svc_client)
+    {
+        printf("Error creating service client\n");
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Stub invoke FAILED: Error code:"
+						" %d :: %s", env->error->error_number,
+                        AXIS2_ERROR_GET_MESSAGE(env->error));
+    }
+
+    /* Set service client options */
+    AXIS2_SVC_CLIENT_SET_OPTIONS(svc_client, &env, options);
+
+    /* Build the SOAP request message payload using OM API.*/
+    payload = build_om_payload_for_echo_svc(&env);
+    
+    /* Send request */
+    ret_node = AXIS2_SVC_CLIENT_SEND_RECEIVE(svc_client, &env, payload);
+    
+    if(ret_node)
+    {
+        axis2_char_t *om_str = NULL;
+        om_str = AXIS2_OM_NODE_TO_STRING(ret_node, &env);
+        if (om_str)
+            printf("\nReceived OM : %s\n", om_str);
+        printf("\necho client invoke SUCCESSFUL!\n");
+    }
+    else
+    {
+		AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Stub invoke FAILED: Error code:"
+						" %d :: %s", env->error->error_number,
+                        AXIS2_ERROR_GET_MESSAGE(env->error));
+        printf("echo client invoke FAILED!\n");
+    }
+    
+    if (svc_client)
+    {
+        AXIS2_SVC_CLIENT_FREE(svc_client, &env);
+        svc_client = NULL;
+    }
+
+    return 0;
+}