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: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]