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 sa...@apache.org on 2006/05/04 11:31:54 UTC
svn commit: r399631 - in /webservices/axis2/trunk/c:
modules/core/context/msg_ctx.c
modules/core/transport/http/http_transport_utils.c
samples/user_guide/clients/Makefile.am samples/user_guide/clients/echo_rest.c
Author: sahan
Date: Thu May 4 02:31:52 2006
New Revision: 399631
URL: http://svn.apache.org/viewcvs?rev=399631&view=rev
Log:
Enabled REST at client side. Added REST sample
Added:
webservices/axis2/trunk/c/samples/user_guide/clients/echo_rest.c
Modified:
webservices/axis2/trunk/c/modules/core/context/msg_ctx.c
webservices/axis2/trunk/c/modules/core/transport/http/http_transport_utils.c
webservices/axis2/trunk/c/samples/user_guide/clients/Makefile.am
Modified: webservices/axis2/trunk/c/modules/core/context/msg_ctx.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/context/msg_ctx.c?rev=399631&r1=399630&r2=399631&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/context/msg_ctx.c (original)
+++ webservices/axis2/trunk/c/modules/core/context/msg_ctx.c Thu May 4 02:31:52 2006
@@ -463,7 +463,7 @@
msg_ctx_impl->soap_action = NULL;
msg_ctx_impl->doing_mtom = AXIS2_FALSE;
msg_ctx_impl->doing_rest = AXIS2_FALSE;
- msg_ctx_impl->do_rest_through_post = AXIS2_TRUE;
+ msg_ctx_impl->do_rest_through_post = AXIS2_FALSE;
msg_ctx_impl->is_soap_11 = AXIS2_FALSE;
msg_ctx_impl->svc_grp_ctx_id = NULL;
msg_ctx_impl->transport_in_desc_qname = NULL;
@@ -1969,7 +1969,7 @@
AXIS2_OPTIONS_GET_MSG_INFO_HEADERS(options, env);
AXIS2_CTX_SET_NON_PERSISTANT_MAP(msg_ctx_impl->base, env,
AXIS2_OPTIONS_GET_PROPERTIES(options, env));
- rest_val = (axis2_char_t)AXIS2_MSG_CTX_GET_PROPERTY(msg_ctx, env,
+ rest_val = (axis2_char_t *)AXIS2_MSG_CTX_GET_PROPERTY(msg_ctx, env,
AXIS2_ENABLE_REST, AXIS2_FALSE);
if (rest_val)
{
Modified: webservices/axis2/trunk/c/modules/core/transport/http/http_transport_utils.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/transport/http/http_transport_utils.c?rev=399631&r1=399630&r2=399631&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/transport/http/http_transport_utils.c (original)
+++ webservices/axis2/trunk/c/modules/core/transport/http/http_transport_utils.c Thu May 4 02:31:52 2006
@@ -1340,12 +1340,37 @@
soap_envelope = AXIS2_SOAP_BUILDER_GET_SOAP_ENVELOPE(soap_builder, env);
return soap_envelope;
}
- /**
- * TODO REST handling
- * else
- * {
- * }
- */
+ else
+ {
+ axis2_xml_reader_t *xml_reader = NULL;
+ axis2_om_stax_builder_t *om_builder = NULL;
+ axis2_soap_envelope_t *soap_envelope = NULL;
+ axis2_soap_body_t *def_body = NULL;
+ axis2_om_document_t *om_doc = NULL;
+ axis2_om_node_t *root_node = NULL;
+
+ xml_reader = axis2_xml_reader_create_for_memory(env,
+ axis2_http_transport_utils_on_data_request,NULL,
+ (void *)callback_ctx, char_set_enc);
+ if(NULL == xml_reader)
+ {
+ return NULL;
+ }
+ om_builder = axis2_om_stax_builder_create(env, xml_reader);
+ if(NULL == om_builder)
+ {
+ AXIS2_XML_READER_FREE(xml_reader, env);
+ xml_reader = NULL;
+ return NULL;
+ }
+ soap_envelope = axis2_soap_envelope_create_default_soap_envelope
+ (env, AXIS2_SOAP11);
+ def_body = AXIS2_SOAP_ENVELOPE_GET_BODY(soap_envelope, env);
+ om_doc = AXIS2_OM_STAX_BUILDER_GET_DOCUMENT(om_builder, env);
+ root_node = AXIS2_OM_DOCUMENT_BUILD_ALL(om_doc, env);
+ AXIS2_SOAP_BODY_ADD_CHILD(def_body, env, root_node);
+ return soap_envelope;
+ }
return NULL;
}
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=399631&r1=399630&r2=399631&view=diff
==============================================================================
--- webservices/axis2/trunk/c/samples/user_guide/clients/Makefile.am (original)
+++ webservices/axis2/trunk/c/samples/user_guide/clients/Makefile.am Thu May 4 02:31:52 2006
@@ -1,7 +1,7 @@
prgbindir=$(prefix)/bin/samples
-prgbin_PROGRAMS = echo_blocking
+prgbin_PROGRAMS = echo_blocking echo_rest
samplesdir=$(prefix)/samples/user_guide/clients
-samples_DATA=echo_util.h echo_util.c echo_blocking.c Makefile.am Makefile.in
+samples_DATA=echo_util.h echo_util.c echo_blocking.c echo_rest.c Makefile.am Makefile.in
echo_blocking_SOURCES = echo_blocking.c echo_util.c
echo_blocking_LDADD = $(LDFLAGS) \
-L$(AXIS2C_HOME)/lib \
@@ -17,6 +17,20 @@
-laxis2_http_receiver \
$(GUTHTHILA_LIBS) \
$(LIBXML2_LIBS)
-
+echo_rest_SOURCES = echo_util.c echo_rest.c
+echo_rest_LDADD = $(LDFLAGS) \
+ -L$(AXIS2C_HOME)/lib \
+ -laxis2_util \
+ -laxis2_om \
+ -laxis2_wsdl \
+ -laxis2_engine \
+ -laxis2_parser \
+ -laxis2_unix \
+ -lpthread \
+ -laxis2_soap \
+ -laxis2_http_sender \
+ -laxis2_http_receiver \
+ $(GUTHTHILA_LIBS) \
+ $(LIBXML2_LIBS)
INCLUDES = -I$(AXIS2C_HOME)/include \
-I$(AXIS2C_HOME)/platforms
Added: webservices/axis2/trunk/c/samples/user_guide/clients/echo_rest.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/samples/user_guide/clients/echo_rest.c?rev=399631&view=auto
==============================================================================
--- webservices/axis2/trunk/c/samples/user_guide/clients/echo_rest.c (added)
+++ webservices/axis2/trunk/c/samples/user_guide/clients/echo_rest.c Thu May 4 02:31:52 2006
@@ -0,0 +1,114 @@
+/*
+ * 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);
+ /* Enable REST at the client side */
+ AXIS2_OPTIONS_SET_PROPERTY(options, &env, AXIS2_ENABLE_REST,
+ AXIS2_VALUE_TRUE);
+ /* 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;
+ }
+ if (endpoint_ref)
+ {
+ AXIS2_ENDPOINT_REF_FREE(endpoint_ref, &env);
+ endpoint_ref = NULL;
+ }
+ return 0;
+}