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 di...@apache.org on 2008/03/18 13:09:32 UTC

svn commit: r638342 - /webservices/axis2/trunk/c/src/core/transport/http/sender/http_transport_sender.c

Author: dinesh
Date: Tue Mar 18 05:09:29 2008
New Revision: 638342

URL: http://svn.apache.org/viewvc?rev=638342&view=rev
Log:
code formatted and more log information in http_transport_sender 

Modified:
    webservices/axis2/trunk/c/src/core/transport/http/sender/http_transport_sender.c

Modified: webservices/axis2/trunk/c/src/core/transport/http/sender/http_transport_sender.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/transport/http/sender/http_transport_sender.c?rev=638342&r1=638341&r2=638342&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/transport/http/sender/http_transport_sender.c (original)
+++ webservices/axis2/trunk/c/src/core/transport/http/sender/http_transport_sender.c Tue Mar 18 05:09:29 2008
@@ -1,4 +1,3 @@
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -100,7 +99,6 @@
     const axutil_env_t * env)
 {
     axis2_http_transport_sender_impl_t *transport_sender_impl = NULL;
-    AXIS2_ENV_CHECK(env, NULL);
 
     transport_sender_impl = (axis2_http_transport_sender_impl_t *) AXIS2_MALLOC
         (env->allocator, sizeof(axis2_http_transport_sender_impl_t));
@@ -110,6 +108,8 @@
         AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
         return NULL;
     }
+    memset (transport_sender_impl, 0, sizeof (axis2_http_transport_sender_impl_t));
+
     transport_sender_impl->http_version =
         axutil_strdup(env, AXIS2_HTTP_HEADER_PROTOCOL_11);
     transport_sender_impl->chunked = AXIS2_TRUE;
@@ -138,7 +138,6 @@
     const axutil_env_t * env)
 {
     axis2_http_transport_sender_impl_t *transport_sender_impl = NULL;
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     transport_sender_impl = AXIS2_INTF_TO_IMPL(transport_sender);
 
     if (transport_sender_impl->http_version)
@@ -189,13 +188,6 @@
         "Entry:axis2_http_transport_sender_invoke");
     AXIS2_PARAM_CHECK(env->error, msg_ctx, AXIS2_FAILURE);
 
-    /*property =  axis2_msg_ctx_get_property(msg_ctx, env,
-       AXIS2_CHARACTER_SET_ENCODING);
-       if (property)
-       {
-       char_set_enc = axutil_property_get_value(property, env);
-       property = NULL;
-       } */
     char_set_enc_str = axis2_msg_ctx_get_charset_encoding(msg_ctx, env);
     if (char_set_enc_str)
     {
@@ -232,7 +224,6 @@
 
     do_mtom = axis2_http_transport_utils_do_write_mtom(env, msg_ctx);
     axis2_msg_ctx_set_doing_mtom(msg_ctx, env, do_mtom);
-    /*do_mtom =  axis2_msg_ctx_get_doing_mtom(msg_ctx, env); */
 
     transport_url = axis2_msg_ctx_get_transport_url(msg_ctx, env);
     if (transport_url)
@@ -243,6 +234,7 @@
     }
     else
     {
+        /* when transport url is not available in msg_ctx */
         axis2_endpoint_ref_t *ctx_epr = axis2_msg_ctx_get_to(msg_ctx, env);
         if(ctx_epr)
             AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "ctx_epr:%s", 
@@ -268,26 +260,32 @@
                         AXIS2_FAILURE);
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "%s",
                         AXIS2_ERROR_GET_MESSAGE(env->error));
-        /*return AXIS2_FAILURE; */
         return AXIS2_SUCCESS;
     }
+
     xml_writer = axiom_xml_writer_create_for_memory(env, NULL,
                                                     AXIS2_TRUE, 0,
                                                     AXIS2_XML_PARSER_TYPE_BUFFER);
     if (!xml_writer)
     {
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Could not create xml_writer");
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
+                        "Could not create xml_writer for \
+AXIS2_XML_PARSER_TYPE_BUFFER");
         return AXIS2_FAILURE;
     }
+
     om_output = axiom_output_create(env, xml_writer);
     if (!om_output)
     {
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Could not create om_output");
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
+                        "Could not create om_output for xml writer of \
+AXIS2_XML_PARSER_TYPE_BUFFER");
         axiom_xml_writer_free(xml_writer, env);
         xml_writer = NULL;
         return AXIS2_FAILURE;
     }
 
+    /* setting SOAP version for OM_OUTPUT.  */
     axiom_output_set_soap11(om_output, env,
                             axis2_msg_ctx_get_is_soap_11(msg_ctx, env));
     if (epr)
@@ -334,58 +332,76 @@
                 return AXIS2_FAILURE;
             }
             is_soap11 = axis2_msg_ctx_get_is_soap_11(msg_ctx, env);
-            /* axiom_output_set_soap11(om_output, env, is_soap_11);
-             */
+
             AXIS2_HTTP_OUT_TRANSPORT_INFO_SET_CHAR_ENCODING(out_info, env,
                                                             char_set_enc);
             if (AXIS2_TRUE == is_soap11)
             {
+                /* SOAP1.1 */
                 AXIS2_HTTP_OUT_TRANSPORT_INFO_SET_CONTENT_TYPE(out_info, env,
                                                                AXIS2_HTTP_HEADER_ACCEPT_TEXT_XML);
             }
             else
             {
+                /* SOAP1.2 */
                 AXIS2_HTTP_OUT_TRANSPORT_INFO_SET_CONTENT_TYPE(out_info, env,
                                                                AXIS2_HTTP_HEADER_ACCEPT_APPL_SOAP);
             }
+
             conf_ctx = axis2_msg_ctx_get_conf_ctx (msg_ctx, env);
             if (conf_ctx)
             {
                 conf = axis2_conf_ctx_get_conf (conf_ctx, env);
             }
+
             if (conf)
             {
+                /* get access to HTTP transport for sending */
                 trans_desc = axis2_conf_get_transport_out (conf,
-                                                           env, AXIS2_TRANSPORT_ENUM_HTTP);
+                                                           env, 
+                                                           AXIS2_TRANSPORT_ENUM_HTTP);
             }
+
             if (trans_desc)
             {
+
+                /* accesing parameter in axis2.xml which set to have
+                 * an ability to send xml versoin processing
+                 * instruction <?xml version = "1.0"?> */
                 write_xml_declaration_param =
                     axutil_param_container_get_param
                     (axis2_transport_out_desc_param_container (trans_desc, env), env,
                      AXIS2_XML_DECLARATION);
             }
+
             if (write_xml_declaration_param)
             {
-                transport_attrs = axutil_param_get_attributes (write_xml_declaration_param, env);
+                transport_attrs = axutil_param_get_attributes 
+                    (write_xml_declaration_param, env);
                 if (transport_attrs)
                 {
+                    /* Accessing attribute values */
                     axutil_generic_obj_t *obj = NULL;
                     axiom_attribute_t *write_xml_declaration_attr = NULL;
                     axis2_char_t *write_xml_declaration_attr_value = NULL;
 
                     obj = axutil_hash_get (transport_attrs, AXIS2_ADD_XML_DECLARATION,
-                                   AXIS2_HASH_KEY_STRING);
+                                           AXIS2_HASH_KEY_STRING);
                     if (obj)
                     {
-                        write_xml_declaration_attr = (axiom_attribute_t *) axutil_generic_obj_get_value (obj,
-                                                                                                 env);
+                        write_xml_declaration_attr = (axiom_attribute_t *) 
+                            axutil_generic_obj_get_value (obj,env);
                     }
+
                     if (write_xml_declaration_attr)
                     {
-                        write_xml_declaration_attr_value = axiom_attribute_get_value (write_xml_declaration_attr, env);
+                        write_xml_declaration_attr_value = axiom_attribute_get_value 
+                            (write_xml_declaration_attr, env);
                     }
-                    if (write_xml_declaration_attr_value && 0 == axutil_strcasecmp (write_xml_declaration_attr_value, AXIS2_VALUE_TRUE))
+
+                    if (write_xml_declaration_attr_value && 
+                        0 == axutil_strcasecmp (write_xml_declaration_attr_value, 
+                                                AXIS2_VALUE_TRUE))
                     {
                         write_xml_declaration = AXIS2_TRUE;
                     }
@@ -429,8 +445,8 @@
                     if (!soap_fault)
                     {
                         
-                        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "%s",
-                            "Rest fault has occure, error not available");
+                        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
+                            "Rest fault has occure, error described below");
                         axiom_output_free(om_output, env);
                         om_output = NULL;
                         xml_writer = NULL;
@@ -445,19 +461,18 @@
                         om_output = NULL;
                         xml_writer = NULL;
                         AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-                            "Returning failure from transport_sender_invoke");
+                            "Returning failure to obtain soap_fault_detail from soap_fault");
                         return AXIS2_FAILURE;
                     }
 
                     body_node = axiom_soap_fault_detail_get_base_node(soap_fault_detial, env);
-
                     if (!body_node)
                     {
                         axiom_output_free(om_output, env);
                         om_output = NULL;
                         xml_writer = NULL;
                         AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-                            "Returning failure from transport_sender_invoke");
+                            "failure to get base node from soap_fault_detail.");
                         return AXIS2_FAILURE;
                     }
 
@@ -472,7 +487,7 @@
                         om_output = NULL;
                         xml_writer = NULL;
                         AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-                            "Returning failure from transport_sender_invoke");
+                            "failure to get base node from soap_body.");
                         return AXIS2_FAILURE;
                     }
                 }
@@ -486,7 +501,7 @@
                     om_output = NULL;
                     xml_writer = NULL;
                     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
-                        "Returning failure from transport_sender_invoke");
+                                    "unable to get first element from soap_body, base node.");
                     return AXIS2_FAILURE;
                 }
 
@@ -495,10 +510,13 @@
                     (axis2_char_t *) axiom_xml_writer_get_xml(xml_writer, env);
                 buffer_size = axiom_xml_writer_get_xml_size(xml_writer, env);
                 axutil_stream_write(out_stream, env, buffer, buffer_size);
+                /* Finish Rest Processing */
                 
             }
             else
             {
+
+                /* SOAP Processing */
                 axiom_output_set_do_optimize(om_output, env, do_mtom);
                 axiom_soap_envelope_serialize(soap_data_out, env, om_output,
                                               AXIS2_FALSE);
@@ -556,8 +574,8 @@
     const axutil_env_t * env,
     axis2_msg_ctx_t * msg_ctx)
 {
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, msg_ctx, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK(env->error, transport_sender, AXIS2_FAILURE);
     /*
      * Clean up is not used. If the http sender needs
      * to be cleaned up it should be done here.
@@ -576,20 +594,27 @@
     axis2_char_t *version = NULL;
     axis2_char_t *temp = NULL;
     axutil_param_t *temp_param = NULL;
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+
     AXIS2_PARAM_CHECK(env->error, conf_ctx, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, out_desc, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK(env->error, transport_sender, AXIS2_FAILURE);
 
+    /* Getting HTTP version from axis2.xml */
     version_param =
         axutil_param_container_get_param
         (axis2_transport_out_desc_param_container(out_desc, env), env,
          AXIS2_HTTP_PROTOCOL_VERSION);
+
+
     if (version_param)
     {
         version = axutil_param_get_value(version_param, env);
     }
+
+
     if (version)
     {
+        /* handling HTTP 1.1 */
         if (0 == axutil_strcmp(version, AXIS2_HTTP_HEADER_PROTOCOL_11))
         {
             axis2_char_t *encoding = NULL;
@@ -599,16 +624,19 @@
                 AXIS2_FREE(env->allocator,
                            AXIS2_INTF_TO_IMPL(transport_sender)->http_version);
             }
+
             AXIS2_INTF_TO_IMPL(transport_sender)->http_version =
                 axutil_strdup(env, version);
             encoding_param =
                 axutil_param_container_get_param
                 (axis2_transport_out_desc_param_container(out_desc, env), env,
                  AXIS2_HTTP_HEADER_TRANSFER_ENCODING);
+
             if (encoding_param)
             {
                 encoding = axutil_param_get_value(encoding_param, env);
             }
+
             if (encoding && 0 == axutil_strcmp(encoding,
                                                AXIS2_HTTP_HEADER_TRANSFER_ENCODING_CHUNKED))
             {
@@ -618,9 +646,11 @@
             {
                 AXIS2_INTF_TO_IMPL(transport_sender)->chunked = AXIS2_FALSE;
             }
+
         }
         else if (0 == axutil_strcmp(version, AXIS2_HTTP_HEADER_PROTOCOL_10))
         {
+            /* Handling HTTP 1.0 */
             if (AXIS2_INTF_TO_IMPL(transport_sender)->http_version)
             {
                 AXIS2_FREE(env->allocator,
@@ -633,23 +663,31 @@
     }
     else
     {
+        /* HTTP version is not available in axis2.xml */
         AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NULL_HTTP_VERSION,
                         AXIS2_FAILURE);
+        AXIS2_LOG_ERROR (env->log, AXIS2_LOG_SI, "%s",
+                         AXIS2_ERROR_GET_MESSAGE(env->error));
         return AXIS2_FAILURE;
     }
 
+    /* Getting HTTP_SO_TIMEOUT value from axis2.xml */
     temp_param =
         axutil_param_container_get_param
         (axis2_transport_out_desc_param_container(out_desc, env), env,
          AXIS2_HTTP_SO_TIMEOUT);
+
     if (temp_param)
     {
         temp = axutil_param_get_value(temp_param, env);
     }
+
     if (temp)
     {
         AXIS2_INTF_TO_IMPL(transport_sender)->so_timeout = AXIS2_ATOI(temp);
     }
+
+    /* Getting HTTP_CONNECTION_TIMEOUT from axis2.xml */
     temp =
         (axis2_char_t *)
         axutil_param_container_get_param
@@ -659,6 +697,8 @@
     {
         temp = axutil_param_get_value(temp_param, env);
     }
+
+    /* set axis2.xml connection timeout value to http_sender */
     if (temp)
     {
         AXIS2_INTF_TO_IMPL(transport_sender)->connection_timeout =
@@ -685,13 +725,13 @@
     axiom_soap_envelope_t *response_envelope = NULL;
     axis2_op_t *op = NULL;
 
-/*     axis2_http_client_t *client = NULL; */
-
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, msg_ctx, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, epr, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, om_output, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK(env->error, transport_sender, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK(env->error, out, AXIS2_FAILURE);
 
+    /* epr is already passed NULL checking */
     url = axis2_endpoint_ref_get_address(epr, env);
 
     soap_action =
@@ -707,6 +747,7 @@
 
     if (!sender)
     {
+        AXIS2_LOG_ERROR (env->log, AXIS2_LOG_SI, "http sender creation failed");
         return AXIS2_FAILURE;
     }
 
@@ -718,10 +759,12 @@
                                   AXIS2_INTF_TO_IMPL(transport_sender)->
                                   http_version);
 #ifdef AXIS2_LIBCURL_ENABLED
+    AXIS2_LOG_DEBUG (env->log, AXIS2_LOG_SI, "using axis2 liburl http sender.");
     status =
         axis2_libcurl_http_send(AXIS2_INTF_TO_IMPL(transport_sender)->libcurl,
                                 sender, env, msg_ctx, out, url, soap_action);
 #else
+    AXIS2_LOG_DEBUG (env->log, AXIS2_LOG_SI, "using axis2 native http sender.");
     status =
         AXIS2_HTTP_SENDER_SEND(sender, env, msg_ctx, out, url, soap_action);
 #endif
@@ -748,6 +791,8 @@
         }
         else
         {
+            /* AXIS2_MEP_URI_IN_OUT case , we have a response this
+             * time */
             soap_ns_uri = axis2_msg_ctx_get_is_soap_11(msg_ctx, env) ?
                 AXIOM_SOAP11_SOAP_ENVELOPE_NAMESPACE_URI :
                 AXIOM_SOAP12_SOAP_ENVELOPE_NAMESPACE_URI;
@@ -755,21 +800,12 @@
                 axis2_http_transport_utils_create_soap_msg(env, msg_ctx,
                                                            soap_ns_uri);
             if (response_envelope)
+            {
                 axis2_msg_ctx_set_response_soap_envelope(msg_ctx, env,
                                                          response_envelope);
+            }
         }
     }
-    /* Free the client */
-
-/*     if (client) */
-
-/*     { */
-
-/*         axis2_http_client_free(client, env); */
-
-/*         client = NULL; */
-
-/*     } */
 
     return status;
 }
@@ -816,3 +852,5 @@
     }
     return AXIS2_SUCCESS;
 }
+
+



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org