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 pi...@apache.org on 2008/01/16 12:35:56 UTC

svn commit: r612425 - in /webservices/axis2/trunk/c: include/ samples/server/ src/core/transport/http/sender/ src/core/transport/http/sender/libcurl/ src/core/transport/tcp/sender/

Author: pini
Date: Wed Jan 16 03:35:55 2008
New Revision: 612425

URL: http://svn.apache.org/viewvc?rev=612425&view=rev
Log:
Fixing jira issue 666. Thanks Senaka for the patch

Modified:
    webservices/axis2/trunk/c/include/axis2_const.h
    webservices/axis2/trunk/c/samples/server/axis2.xml
    webservices/axis2/trunk/c/src/core/transport/http/sender/http_sender.c
    webservices/axis2/trunk/c/src/core/transport/http/sender/http_transport_sender.c
    webservices/axis2/trunk/c/src/core/transport/http/sender/libcurl/axis2_libcurl.c
    webservices/axis2/trunk/c/src/core/transport/tcp/sender/tcp_transport_sender.c

Modified: webservices/axis2/trunk/c/include/axis2_const.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/include/axis2_const.h?rev=612425&r1=612424&r2=612425&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_const.h (original)
+++ webservices/axis2/trunk/c/include/axis2_const.h Wed Jan 16 03:35:55 2008
@@ -319,6 +319,10 @@
 #define AXIS2_PROXY_AUTH_TYPE "proxyAuthType"
 #define AXIS2_HTTP_AUTH_TYPE "HTTPAuthType"
 
+    /* add xml declaration */
+#define AXIS2_XML_DECLARATION "xml-declaration"
+#define AXIS2_ADD_XML_DECLARATION "insert"
+
     /* globally enable MTOM */
 #define AXIS2_ENABLE_MTOM "enableMTOM"
 #define AXIS2_ATTACHMENT_TEMP_DIR "attachmentDIR"

Modified: webservices/axis2/trunk/c/samples/server/axis2.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/samples/server/axis2.xml?rev=612425&r1=612424&r2=612425&view=diff
==============================================================================
--- webservices/axis2/trunk/c/samples/server/axis2.xml (original)
+++ webservices/axis2/trunk/c/samples/server/axis2.xml Wed Jan 16 03:35:55 2008
@@ -38,6 +38,7 @@
 
     <transportSender name="http" class="axis2_http_sender">
         <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="xml-declaration" insert="false"/>
         <!--parameter name="Transfer-Encoding">chunked</parameter-->
         <!--parameter name="HTTP-Authentication" username="" password="" locked="true"/-->
         <!--parameter name="PROXY" proxy_host="127.0.0.1" proxy_port="8080" proxy_username="" proxy_password="" locked="true"/-->
@@ -45,11 +46,13 @@
     <!-- Uncomment this one with the appropriate papameters to enable the TCP transport Sender-->
     <!--transportSender name="tcp" class="axis2_tcp_sender">
         <parameter name="PROTOCOL" locked="false">TCP</parameter>
+        <parameter name="xml-declaration" insert="false"/>
     </transportSender-->
 
     <!--
     <transportSender name="https" class="axis2_http_sender">
         <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <parameter name="xml-declaration" insert="false"/>
     </transportSender>
     <parameter name="SERVER_CERT">/path/to/ca/certificate</parameter>
     <parameter name="KEY_FILE">/path/to/client/certificate/chain/file</parameter>

Modified: webservices/axis2/trunk/c/src/core/transport/http/sender/http_sender.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/transport/http/sender/http_sender.c?rev=612425&r1=612424&r2=612425&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/transport/http/sender/http_sender.c (original)
+++ webservices/axis2/trunk/c/src/core/transport/http/sender/http_sender.c Wed Jan 16 03:35:55 2008
@@ -224,7 +224,14 @@
     axis2_bool_t is_soap = AXIS2_TRUE;
     axutil_property_t *http_property = NULL;
     axutil_array_list_t *array_list;
-	axis2_bool_t http_auth_header_added = AXIS2_FALSE;
+    axis2_bool_t http_auth_header_added = AXIS2_FALSE;
+    axis2_conf_ctx_t *conf_ctx = NULL;
+    axis2_conf_t *conf = NULL;
+    axis2_transport_out_desc_t *trans_desc = NULL;
+    axutil_param_t *write_xml_declaration_param = NULL;
+    axutil_hash_t *transport_attrs = NULL;
+    axis2_bool_t write_xml_declaration = AXIS2_FALSE;
+
     AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "Entry:axis2_http_sender_send");
     soap_body = axiom_soap_envelope_get_body (out, env);
 
@@ -295,6 +302,55 @@
      */
 
     axis2_http_sender_configure_proxy (sender, env, msg_ctx);
+
+    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)
+    {
+        trans_desc = axis2_conf_get_transport_out (conf,
+                                                   env, AXIS2_TRANSPORT_ENUM_HTTP);
+    }
+    if (trans_desc)
+    {
+        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);
+        if (transport_attrs)
+        {
+            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);
+            if (obj)
+            {
+                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);
+            }
+            if (write_xml_declaration_attr_value && 0 == axutil_strcasecmp (write_xml_declaration_attr_value, AXIS2_VALUE_TRUE))
+            {
+                write_xml_declaration = AXIS2_TRUE;
+            }
+        }
+    }
+
+    if (write_xml_declaration)
+    {
+        axiom_output_write_xml_version_encoding (sender->om_output, env);
+    }
 
     if (!send_via_get)
     {

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=612425&r1=612424&r2=612425&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 Wed Jan 16 03:35:55 2008
@@ -23,6 +23,7 @@
 #include <axiom_xml_writer.h>
 #include <axiom_output.h>
 #include <axis2_http_transport_utils.h>
+#include <axutil_generic_obj.h>
 #include <axis2_http_out_transport_info.h>
 #include <axis2_http_transport.h>
 #include <axis2_http_sender.h>
@@ -154,6 +155,12 @@
     axis2_byte_t *output_stream = NULL;
     int buffer_size = 0;
     axis2_status_t status = AXIS2_SUCCESS;
+    axis2_conf_ctx_t *conf_ctx = NULL;
+    axis2_conf_t *conf = NULL;
+    axis2_transport_out_desc_t *trans_desc = NULL;
+    axutil_param_t *write_xml_declaration_param = NULL;
+    axutil_hash_t *transport_attrs = NULL;
+    axis2_bool_t write_xml_declaration = AXIS2_FALSE;
 
     AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, 
         "Entry:axis2_http_transport_sender_invoke");
@@ -321,6 +328,55 @@
                 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)
+            {
+                trans_desc = axis2_conf_get_transport_out (conf,
+                                                           env, AXIS2_TRANSPORT_ENUM_HTTP);
+            }
+            if (trans_desc)
+            {
+                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);
+                if (transport_attrs)
+                {
+                    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);
+                    if (obj)
+                    {
+                        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);
+                    }
+                    if (write_xml_declaration_attr_value && 0 == axutil_strcasecmp (write_xml_declaration_attr_value, AXIS2_VALUE_TRUE))
+                    {
+                        write_xml_declaration = AXIS2_TRUE;
+                    }
+                }
+            }
+
+            if (write_xml_declaration)
+            {
+                axiom_output_write_xml_version_encoding (om_output, env);
+            }
+
 
             if (AXIS2_TRUE == axis2_msg_ctx_get_doing_rest(msg_ctx, env))
             {

Modified: webservices/axis2/trunk/c/src/core/transport/http/sender/libcurl/axis2_libcurl.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/transport/http/sender/libcurl/axis2_libcurl.c?rev=612425&r1=612424&r2=612425&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/transport/http/sender/libcurl/axis2_libcurl.c (original)
+++ webservices/axis2/trunk/c/src/core/transport/http/sender/libcurl/axis2_libcurl.c Wed Jan 16 03:35:55 2008
@@ -82,6 +82,12 @@
     axutil_string_t *char_set_enc_str;
     axis2_byte_t *output_stream = NULL;
     int output_stream_size = 0;
+    axis2_conf_ctx_t *conf_ctx = NULL;
+    axis2_conf_t *conf = NULL;
+    axis2_transport_out_desc_t *trans_desc = NULL;
+    axutil_param_t *write_xml_declaration_param = NULL;
+    axutil_hash_t *transport_attrs = NULL;
+    axis2_bool_t write_xml_declaration = AXIS2_FALSE;
 
     data = axis2_libcurl_create(env);
     if (!data) 
@@ -141,6 +147,55 @@
         {
             send_via_get = AXIS2_TRUE;
         }
+    }
+
+    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)
+    {
+        trans_desc = axis2_conf_get_transport_out (conf,
+                                                   env, AXIS2_TRANSPORT_ENUM_HTTP);
+    }
+    if (trans_desc)
+    {
+    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);
+        if (transport_attrs)
+        {
+            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);
+            if (obj)
+            {
+                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);
+            }
+            if (write_xml_declaration_attr_value && 0 == axutil_strcasecmp (write_xml_declaration_attr_value, AXIS2_VALUE_TRUE))
+            {
+                write_xml_declaration = AXIS2_TRUE;
+            }
+        }
+    }
+
+    if (write_xml_declaration)
+    {
+        axiom_output_write_xml_version_encoding (om_output, env);
     }
 
     if (!send_via_get)

Modified: webservices/axis2/trunk/c/src/core/transport/tcp/sender/tcp_transport_sender.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/transport/tcp/sender/tcp_transport_sender.c?rev=612425&r1=612424&r2=612425&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/transport/tcp/sender/tcp_transport_sender.c (original)
+++ webservices/axis2/trunk/c/src/core/transport/tcp/sender/tcp_transport_sender.c Wed Jan 16 03:35:55 2008
@@ -25,6 +25,7 @@
 #include <axis2_tcp_transport.h>
 #include <axiom_soap_body.h>
 #include <axiom_soap.h>
+#include <axutil_generic_obj.h>
 #include <axutil_types.h>
 #include <axutil_url.h>
 #include <axutil_network_handler.h>
@@ -132,6 +133,12 @@
     axis2_char_t *buffer = NULL;
     axutil_stream_t *out_stream = NULL;
     int buffer_size = 0;
+    axis2_conf_ctx_t *conf_ctx = NULL;
+    axis2_conf_t *conf = NULL;
+    axis2_transport_out_desc_t *trans_desc = NULL;
+    axutil_param_t *write_xml_declaration_param = NULL;
+    axutil_hash_t *transport_attrs = NULL;
+    axis2_bool_t write_xml_declaration = AXIS2_FALSE;
 
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
                     "start:tcp transport sender invoke");
@@ -161,6 +168,55 @@
         axiom_xml_writer_free(xml_writer, env);
         xml_writer = NULL;
         return AXIS2_FAILURE;
+    }
+
+    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)
+    {
+        trans_desc = axis2_conf_get_transport_out (conf,
+                                                   env, AXIS2_TRANSPORT_ENUM_TCP);
+    }
+    if (trans_desc)
+    {
+        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);
+        if (transport_attrs)
+        {
+            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);
+            if (obj)
+            {
+                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);
+            }
+            if (write_xml_declaration_attr_value && 0 == axutil_strcasecmp (write_xml_declaration_attr_value, AXIS2_VALUE_TRUE))
+            {
+                write_xml_declaration = AXIS2_TRUE;
+            }
+        }
+    }
+
+    if (write_xml_declaration)
+    {
+        axiom_output_write_xml_version_encoding (om_output, env);
     }
 
     axiom_soap_envelope_serialize(soap_envelope, env, om_output, AXIS2_FALSE);



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