| |
| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You 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 <axis2_options.h> |
| #include <axis2_const.h> |
| #include <axutil_hash.h> |
| #include <axiom_soap_const.h> |
| #include <axis2_msg_info_headers.h> |
| #include <axutil_array_list.h> |
| #include <axis2_http_transport.h> |
| |
| struct axis2_options |
| { |
| |
| /** parent options */ |
| axis2_options_t *parent; |
| |
| axutil_hash_t *properties; |
| |
| axis2_char_t *soap_version_uri; |
| |
| int soap_version; |
| |
| long timeout_in_milli_seconds; |
| |
| axis2_bool_t use_separate_listener; |
| |
| /** addressing specific properties */ |
| axis2_msg_info_headers_t *msg_info_headers; |
| |
| axis2_transport_receiver_t *receiver; |
| |
| axis2_transport_in_desc_t *transport_in; |
| |
| AXIS2_TRANSPORT_ENUMS transport_in_protocol; |
| |
| /** for sending and receiving messages */ |
| axis2_transport_out_desc_t *transport_out; |
| AXIS2_TRANSPORT_ENUMS sender_transport_protocol; |
| |
| axis2_bool_t manage_session; |
| axis2_bool_t enable_mtom; |
| axutil_string_t *soap_action; |
| axis2_bool_t xml_parser_reset; |
| }; |
| |
| AXIS2_EXTERN axis2_options_t *AXIS2_CALL |
| axis2_options_create( |
| const axutil_env_t * env) |
| { |
| axis2_options_t *options = NULL; |
| |
| AXIS2_ENV_CHECK(env, NULL); |
| |
| options = AXIS2_MALLOC(env->allocator, sizeof(axis2_options_t)); |
| if (!options) |
| { |
| AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE); |
| AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "No memory. Cannot create options."); |
| return NULL; |
| } |
| |
| options->parent = NULL; |
| options->properties = NULL; |
| options->soap_version_uri = NULL; |
| options->timeout_in_milli_seconds = -1; |
| options->use_separate_listener = -1; |
| options->receiver = NULL; |
| options->transport_in = NULL; |
| options->transport_in_protocol = AXIS2_TRANSPORT_ENUM_HTTP; |
| options->transport_out = NULL; |
| options->sender_transport_protocol = AXIS2_TRANSPORT_ENUM_HTTP; |
| options->manage_session = -1; |
| options->soap_version = AXIOM_SOAP12; |
| options->enable_mtom = AXIS2_FALSE; |
| options->soap_action = NULL; |
| options->xml_parser_reset = AXIS2_TRUE; |
| |
| options->msg_info_headers = axis2_msg_info_headers_create(env, NULL, NULL); |
| if (!options->msg_info_headers) |
| { |
| axis2_options_free(options, env); |
| return NULL; |
| } |
| |
| options->properties = axutil_hash_make(env); |
| if (!options->properties) |
| { |
| axis2_options_free(options, env); |
| return NULL; |
| } |
| |
| return options; |
| } |
| |
| AXIS2_EXTERN axis2_options_t *AXIS2_CALL |
| axis2_options_create_with_parent( |
| const axutil_env_t * env, |
| axis2_options_t * parent) |
| { |
| |
| axis2_options_t *options = NULL; |
| |
| options = axis2_options_create(env); |
| |
| if (options) |
| { |
| options->parent = parent; |
| } |
| return options; |
| } |
| |
| AXIS2_EXTERN const axis2_char_t *AXIS2_CALL |
| axis2_options_get_action( |
| const axis2_options_t * options, |
| const axutil_env_t * env) |
| { |
| const axis2_char_t *action = NULL; |
| action = axis2_msg_info_headers_get_action(options->msg_info_headers, env); |
| |
| if (!action && options->parent) |
| { |
| return axis2_options_get_action(options->parent, env); |
| } |
| |
| return action; |
| } |
| |
| AXIS2_EXTERN axis2_endpoint_ref_t *AXIS2_CALL |
| axis2_options_get_fault_to( |
| const axis2_options_t * options, |
| const axutil_env_t * env) |
| { |
| axis2_endpoint_ref_t *fault_to = NULL; |
| |
| fault_to = |
| axis2_msg_info_headers_get_fault_to(options->msg_info_headers, env); |
| |
| if (!fault_to && options->parent) |
| { |
| return axis2_options_get_fault_to(options->parent, env); |
| } |
| |
| return fault_to; |
| } |
| |
| AXIS2_EXTERN axis2_endpoint_ref_t *AXIS2_CALL |
| axis2_options_get_from( |
| const axis2_options_t * options, |
| const axutil_env_t * env) |
| { |
| axis2_endpoint_ref_t *from = NULL; |
| |
| from = axis2_msg_info_headers_get_from(options->msg_info_headers, env); |
| |
| if (!from && options->parent) |
| { |
| return axis2_options_get_from(options->parent, env); |
| } |
| |
| return from; |
| } |
| |
| AXIS2_EXTERN axis2_transport_receiver_t *AXIS2_CALL |
| axis2_options_get_transport_receiver( |
| const axis2_options_t * options, |
| const axutil_env_t * env) |
| { |
| if (!options->receiver && options->parent) |
| { |
| return axis2_options_get_transport_receiver(options->parent, env); |
| } |
| |
| return options->receiver; |
| } |
| |
| AXIS2_EXTERN axis2_transport_in_desc_t *AXIS2_CALL |
| axis2_options_get_transport_in( |
| const axis2_options_t * options, |
| const axutil_env_t * env) |
| { |
| if (!options->transport_in && options->parent) |
| { |
| return axis2_options_get_transport_in(options->parent, env); |
| } |
| |
| return options->transport_in; |
| } |
| |
| AXIS2_EXTERN AXIS2_TRANSPORT_ENUMS AXIS2_CALL |
| axis2_options_get_transport_in_protocol( |
| const axis2_options_t * options, |
| const axutil_env_t * env) |
| { |
| if (options->parent) |
| { |
| return axis2_options_get_transport_in_protocol(options->parent, env); |
| } |
| |
| return options->transport_in_protocol; |
| } |
| |
| AXIS2_EXTERN const axis2_char_t *AXIS2_CALL |
| axis2_options_get_message_id( |
| const axis2_options_t * options, |
| const axutil_env_t * env) |
| { |
| const axis2_char_t *message_id = NULL; |
| |
| message_id = |
| axis2_msg_info_headers_get_message_id(options->msg_info_headers, env); |
| |
| if (!message_id && options->parent) |
| { |
| return axis2_options_get_message_id(options->parent, env); |
| } |
| |
| return message_id; |
| } |
| |
| AXIS2_EXTERN axutil_hash_t *AXIS2_CALL |
| axis2_options_get_properties( |
| const axis2_options_t * options, |
| const axutil_env_t * env) |
| { |
| if (!axutil_hash_count(options->properties) && options->parent) |
| { |
| return axis2_options_get_properties(options->parent, env); |
| } |
| |
| return options->properties; |
| } |
| |
| AXIS2_EXTERN void *AXIS2_CALL |
| axis2_options_get_property( |
| const axis2_options_t * options, |
| const axutil_env_t * env, |
| const axis2_char_t * key) |
| { |
| void *property = NULL; |
| |
| property = axutil_hash_get(options->properties, key, AXIS2_HASH_KEY_STRING); |
| |
| if (!property && options->parent) |
| { |
| return axis2_options_get_property(options->parent, env, key); |
| } |
| |
| return property; |
| } |
| |
| AXIS2_EXTERN axis2_relates_to_t *AXIS2_CALL |
| axis2_options_get_relates_to( |
| const axis2_options_t * options, |
| const axutil_env_t * env) |
| { |
| axis2_relates_to_t *relates_to = NULL; |
| |
| relates_to = |
| axis2_msg_info_headers_get_relates_to(options->msg_info_headers, env); |
| |
| if (!relates_to && options->parent) |
| { |
| return axis2_options_get_relates_to(options->parent, env); |
| } |
| |
| return relates_to; |
| } |
| |
| AXIS2_EXTERN axis2_endpoint_ref_t *AXIS2_CALL |
| axis2_options_get_reply_to( |
| const axis2_options_t * options, |
| const axutil_env_t * env) |
| { |
| axis2_endpoint_ref_t *reply_to = NULL; |
| |
| reply_to = |
| axis2_msg_info_headers_get_reply_to(options->msg_info_headers, env); |
| |
| if (!reply_to && options->parent) |
| { |
| return axis2_options_get_reply_to(options->parent, env); |
| } |
| |
| return reply_to; |
| } |
| |
| AXIS2_EXTERN axis2_transport_out_desc_t *AXIS2_CALL |
| axis2_options_get_transport_out( |
| const axis2_options_t * options, |
| const axutil_env_t * env) |
| { |
| if (!options->transport_out && options->parent) |
| { |
| return axis2_options_get_transport_out(options->parent, env); |
| } |
| |
| return options->transport_out; |
| } |
| |
| AXIS2_EXTERN AXIS2_TRANSPORT_ENUMS AXIS2_CALL |
| axis2_options_get_sender_transport_protocol( |
| const axis2_options_t * options, |
| const axutil_env_t * env) |
| { |
| if (options->parent) |
| { |
| return axis2_options_get_sender_transport_protocol(options->parent, |
| env); |
| } |
| |
| return options->sender_transport_protocol; |
| } |
| |
| AXIS2_EXTERN const axis2_char_t *AXIS2_CALL |
| axis2_options_get_soap_version_uri( |
| const axis2_options_t * options, |
| const axutil_env_t * env) |
| { |
| if (!options->soap_version_uri && options->parent) |
| { |
| return axis2_options_get_soap_version_uri(options->parent, env); |
| } |
| |
| if (options->soap_version_uri) |
| { |
| return options->soap_version_uri; |
| } |
| return AXIOM_SOAP12_SOAP_ENVELOPE_NAMESPACE_URI; |
| |
| } |
| |
| AXIS2_EXTERN long AXIS2_CALL |
| axis2_options_get_timeout_in_milli_seconds( |
| const axis2_options_t * options, |
| const axutil_env_t * env) |
| { |
| if (options->timeout_in_milli_seconds == -1) |
| { |
| if (options->parent) |
| { |
| return axis2_options_get_timeout_in_milli_seconds(options->parent, env); |
| } |
| else |
| { |
| return AXIS2_DEFAULT_TIMEOUT_MILLISECONDS; |
| } |
| } |
| |
| return options->timeout_in_milli_seconds; |
| } |
| |
| AXIS2_EXTERN axis2_endpoint_ref_t *AXIS2_CALL |
| axis2_options_get_to( |
| const axis2_options_t * options, |
| const axutil_env_t * env) |
| { |
| axis2_endpoint_ref_t *to = NULL; |
| |
| to = axis2_msg_info_headers_get_to(options->msg_info_headers, env); |
| |
| if (!to && options->parent) |
| { |
| return axis2_options_get_to(options->parent, env); |
| } |
| |
| return to; |
| } |
| |
| AXIS2_EXTERN axis2_bool_t AXIS2_CALL |
| axis2_options_get_use_separate_listener( |
| const axis2_options_t * options, |
| const axutil_env_t * env) |
| { |
| if (options->use_separate_listener == -1) |
| { |
| if (options->parent) |
| { |
| return axis2_options_get_use_separate_listener(options->parent, env); |
| } |
| else |
| { |
| return AXIS2_FALSE; |
| } |
| } |
| |
| return options->use_separate_listener; |
| } |
| |
| AXIS2_EXTERN axis2_options_t *AXIS2_CALL |
| axis2_options_get_parent( |
| const axis2_options_t * options, |
| const axutil_env_t * env) |
| { |
| return options->parent; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_parent( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| const axis2_options_t * parent) |
| { |
| options->parent = (axis2_options_t *) parent; |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_action( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| const axis2_char_t * action) |
| { |
| axis2_msg_info_headers_set_action(options->msg_info_headers, env, action); |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_fault_to( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| axis2_endpoint_ref_t * fault_to) |
| { |
| axis2_msg_info_headers_set_fault_to(options->msg_info_headers, env, |
| fault_to); |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_from( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| axis2_endpoint_ref_t * from) |
| { |
| axis2_msg_info_headers_set_from(options->msg_info_headers, env, from); |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_to( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| axis2_endpoint_ref_t * to) |
| { |
| axis2_msg_info_headers_set_to(options->msg_info_headers, env, to); |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_transport_receiver( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| axis2_transport_receiver_t * receiver) |
| { |
| options->receiver = receiver; |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_transport_in( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| axis2_transport_in_desc_t * transport_in) |
| { |
| options->transport_in = transport_in; |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_transport_in_protocol( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| const AXIS2_TRANSPORT_ENUMS transport_in_protocol) |
| { |
| options->transport_in_protocol = transport_in_protocol; |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_message_id( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| const axis2_char_t * message_id) |
| { |
| axis2_msg_info_headers_set_message_id(options->msg_info_headers, env, |
| message_id); |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_properties( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| axutil_hash_t * properties) |
| { |
| if (options->properties) |
| { |
| axutil_hash_free(options->properties, env); |
| } |
| options->properties = properties; |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_property( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| const axis2_char_t * property_key, |
| const void *property) |
| { |
| axutil_hash_set(options->properties, property_key, |
| AXIS2_HASH_KEY_STRING, property); |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_relates_to( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| axis2_relates_to_t * relates_to) |
| { |
| axis2_msg_info_headers_set_relates_to(options->msg_info_headers, env, |
| relates_to); |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_reply_to( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| axis2_endpoint_ref_t * reply_to) |
| { |
| axis2_msg_info_headers_set_reply_to(options->msg_info_headers, env, |
| reply_to); |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_transport_out( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| axis2_transport_out_desc_t * transport_out) |
| { |
| options->transport_out = transport_out; |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_sender_transport( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| const AXIS2_TRANSPORT_ENUMS sender_transport, |
| axis2_conf_t * conf) |
| { |
| options->transport_out = |
| axis2_conf_get_transport_out(conf, env, sender_transport); |
| |
| if (!options->transport_out) |
| { |
| return AXIS2_FAILURE; |
| } |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_soap_version_uri( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| const axis2_char_t * soap_version_uri) |
| { |
| if (options->soap_version_uri) |
| { |
| AXIS2_FREE(env->allocator, options->soap_version_uri); |
| options->soap_version_uri = NULL; |
| } |
| |
| if (soap_version_uri) |
| { |
| options->soap_version_uri = axutil_strdup(env, soap_version_uri); |
| } |
| |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_timeout_in_milli_seconds( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| const long timeout_in_milli_seconds) |
| { |
| options->timeout_in_milli_seconds = timeout_in_milli_seconds; |
| /* set the property AXIS2_HTTP_CONNECTION_TIMEOUT, |
| * to be picked up by http_sender |
| */ |
| if (options->timeout_in_milli_seconds > 0) |
| { |
| axis2_char_t time_str[19]; /* supports 18 digit timeout */ |
| axutil_property_t *property = axutil_property_create(env); |
| sprintf(time_str, "%ld", options->timeout_in_milli_seconds); |
| if (property) |
| { |
| axutil_property_set_scope(property, env, AXIS2_SCOPE_REQUEST); |
| axutil_property_set_value(property, env, |
| axutil_strdup(env, time_str)); |
| axis2_options_set_property(options, env, AXIS2_HTTP_CONNECTION_TIMEOUT, |
| property); |
| } |
| } |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_transport_info( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| const AXIS2_TRANSPORT_ENUMS sender_transport, |
| const AXIS2_TRANSPORT_ENUMS receiver_transport, |
| const axis2_bool_t use_separate_listener) |
| { |
| /* |
| here we check for the legal combination |
| */ |
| if (!use_separate_listener) |
| { |
| if (sender_transport != receiver_transport) |
| { |
| return AXIS2_FAILURE; |
| } |
| } |
| else |
| { |
| axis2_options_set_use_separate_listener(options, |
| env, use_separate_listener); |
| } |
| axis2_options_set_transport_in_protocol(options, env, receiver_transport); |
| options->sender_transport_protocol = sender_transport; |
| |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_use_separate_listener( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| const axis2_bool_t use_separate_listener) |
| { |
| options->use_separate_listener = use_separate_listener; |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_add_reference_parameter( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| axiom_node_t * reference_parameter) |
| { |
| axis2_msg_info_headers_add_ref_param(options->msg_info_headers, |
| env, reference_parameter); |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_manage_session( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| const axis2_bool_t manage_session) |
| { |
| options->manage_session = manage_session; |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_bool_t AXIS2_CALL |
| axis2_options_get_manage_session( |
| const axis2_options_t * options, |
| const axutil_env_t * env) |
| { |
| if (options->manage_session == -1) |
| { |
| if (options->parent) |
| { |
| return axis2_options_get_manage_session(options->parent, env); |
| } |
| else |
| { |
| return AXIS2_FALSE; |
| } |
| } |
| |
| return options->manage_session; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_msg_info_headers( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| axis2_msg_info_headers_t * msg_info_headers) |
| { |
| if (options->msg_info_headers) |
| { |
| axis2_msg_info_headers_free (options->msg_info_headers, env); |
| } |
| |
| options->msg_info_headers = msg_info_headers; |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_msg_info_headers_t *AXIS2_CALL |
| axis2_options_get_msg_info_headers( |
| const axis2_options_t * options, |
| const axutil_env_t * env) |
| { |
| return options->msg_info_headers; |
| } |
| |
| AXIS2_EXTERN void AXIS2_CALL |
| axis2_options_free( |
| axis2_options_t * options, |
| const axutil_env_t * env) |
| { |
| if (options->properties) |
| { |
| axutil_hash_index_t *hi = NULL; |
| void *val = NULL; |
| const void *key = NULL; |
| for (hi = axutil_hash_first(options->properties, env); |
| hi; hi = axutil_hash_next(env, hi)) |
| { |
| axutil_property_t *property = NULL; |
| |
| axutil_hash_this(hi, &key, NULL, &val); |
| property = (axutil_property_t *) val; |
| |
| if (property) |
| { |
| axutil_property_free(property, env); |
| } |
| } |
| axutil_hash_free(options->properties, env); |
| } |
| |
| if (options->soap_version_uri) |
| { |
| AXIS2_FREE(env->allocator, options->soap_version_uri); |
| } |
| |
| if (options->msg_info_headers) |
| { |
| axis2_msg_info_headers_free(options->msg_info_headers, env); |
| } |
| |
| if (options->soap_action) |
| { |
| axutil_string_free(options->soap_action, env); |
| } |
| |
| AXIS2_FREE(env->allocator, options); |
| } |
| |
| AXIS2_EXTERN int AXIS2_CALL |
| axis2_options_get_soap_version( |
| const axis2_options_t * options, |
| const axutil_env_t * env) |
| { |
| return options->soap_version; |
| |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_soap_version( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| const int soap_version) |
| { |
| if (soap_version == AXIOM_SOAP11) |
| { |
| options->soap_version = soap_version; |
| axis2_options_set_soap_version_uri(options, env, |
| AXIOM_SOAP11_SOAP_ENVELOPE_NAMESPACE_URI); |
| } |
| else |
| { |
| options->soap_version = AXIOM_SOAP12; |
| axis2_options_set_soap_version_uri(options, env, |
| AXIOM_SOAP12_SOAP_ENVELOPE_NAMESPACE_URI); |
| } |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_enable_mtom( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| axis2_bool_t enable_mtom) |
| { |
| options->enable_mtom = enable_mtom; |
| |
| if (enable_mtom) |
| { |
| axutil_property_t *property = axutil_property_create(env); |
| if (property) |
| { |
| axutil_property_set_scope(property, env, AXIS2_SCOPE_REQUEST); |
| axutil_property_set_value(property, env, |
| axutil_strdup(env, AXIS2_VALUE_TRUE)); |
| axis2_options_set_property(options, env, AXIS2_ENABLE_MTOM, |
| property); |
| } |
| } |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_bool_t AXIS2_CALL |
| axis2_options_get_enable_mtom( |
| const axis2_options_t * options, |
| const axutil_env_t * env) |
| { |
| return options->enable_mtom; |
| } |
| |
| AXIS2_EXTERN axutil_string_t *AXIS2_CALL |
| axis2_options_get_soap_action( |
| const axis2_options_t * options, |
| const axutil_env_t * env) |
| { |
| return options->soap_action; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_soap_action( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| axutil_string_t * soap_action) |
| { |
| if (options->soap_action) |
| { |
| axutil_string_free(options->soap_action, env); |
| options->soap_action = NULL; |
| } |
| |
| if (soap_action) |
| { |
| options->soap_action = axutil_string_clone(soap_action, env); |
| } |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_bool_t AXIS2_CALL |
| axis2_options_get_xml_parser_reset( |
| const axis2_options_t * options, |
| const axutil_env_t * env) |
| { |
| return options->xml_parser_reset; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_xml_parser_reset( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| const axis2_bool_t xml_parser_reset) |
| { |
| options->xml_parser_reset = xml_parser_reset; |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_enable_rest( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| const axis2_bool_t enable_rest) |
| { |
| axutil_property_t *rest_property = NULL; |
| |
| if (enable_rest) |
| { |
| rest_property = axutil_property_create(env); |
| axutil_property_set_value(rest_property, env, |
| axutil_strdup(env, AXIS2_VALUE_TRUE)); |
| axis2_options_set_property(options, env, AXIS2_ENABLE_REST, |
| rest_property); |
| } |
| else |
| { |
| rest_property = axutil_property_create(env); |
| axutil_property_set_value(rest_property, env, |
| axutil_strdup(env, AXIS2_VALUE_FALSE)); |
| axis2_options_set_property(options, env, AXIS2_ENABLE_REST, |
| rest_property); |
| } |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_test_http_auth( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| const axis2_bool_t test_http_auth) |
| { |
| axutil_property_t *test_auth_property = NULL; |
| |
| if (test_http_auth) |
| { |
| test_auth_property = axutil_property_create(env); |
| axutil_property_set_value(test_auth_property, env, |
| axutil_strdup(env, AXIS2_VALUE_TRUE)); |
| axis2_options_set_property(options, env, AXIS2_TEST_HTTP_AUTH, |
| test_auth_property); |
| } |
| else |
| { |
| test_auth_property = axutil_property_create(env); |
| axutil_property_set_value(test_auth_property, env, |
| axutil_strdup(env, AXIS2_VALUE_FALSE)); |
| axis2_options_set_property(options, env, AXIS2_TEST_HTTP_AUTH, |
| test_auth_property); |
| } |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_test_proxy_auth( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| const axis2_bool_t test_proxy_auth) |
| { |
| axutil_property_t *test_auth_property = NULL; |
| |
| if (test_proxy_auth) |
| { |
| test_auth_property = axutil_property_create(env); |
| axutil_property_set_value(test_auth_property, env, |
| axutil_strdup(env, AXIS2_VALUE_TRUE)); |
| axis2_options_set_property(options, env, AXIS2_TEST_PROXY_AUTH, |
| test_auth_property); |
| } |
| else |
| { |
| test_auth_property = axutil_property_create(env); |
| axutil_property_set_value(test_auth_property, env, |
| axutil_strdup(env, AXIS2_VALUE_FALSE)); |
| axis2_options_set_property(options, env, AXIS2_TEST_PROXY_AUTH, |
| test_auth_property); |
| } |
| return AXIS2_SUCCESS; |
| } |
| |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_http_method( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| const axis2_char_t * http_method) |
| { |
| axutil_property_t *method_property = NULL; |
| |
| method_property = axutil_property_create(env); |
| axutil_property_set_value(method_property, env, |
| axutil_strdup(env, http_method)); |
| axis2_options_set_property(options, env, AXIS2_HTTP_METHOD, |
| method_property); |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_http_headers( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| axutil_array_list_t * http_header_list) |
| { |
| axutil_property_t *headers_property = NULL; |
| |
| headers_property = axutil_property_create(env); |
| axutil_property_set_value(headers_property, env, |
| http_header_list); |
| axis2_options_set_property(options, env, AXIS2_TRANSPORT_HEADER_PROPERTY, |
| headers_property); |
| axutil_property_set_free_func(headers_property, env, |
| axutil_array_list_free_void_arg); |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_proxy_auth_info( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| const axis2_char_t * username, |
| const axis2_char_t * password, |
| const axis2_char_t * auth_type) |
| { |
| axis2_bool_t force_proxy_auth = AXIS2_FALSE; |
| axutil_property_t *prop_pw = NULL; |
| axutil_property_t *prop_un = NULL; |
| |
| prop_un = axutil_property_create(env); |
| axutil_property_set_value(prop_un, env, axutil_strdup(env, username)); |
| axis2_options_set_property(options, env, AXIS2_PROXY_AUTH_UNAME, prop_un); |
| |
| prop_pw = axutil_property_create(env); |
| axutil_property_set_value(prop_pw, env, axutil_strdup(env, password)); |
| axis2_options_set_property(options, env, AXIS2_PROXY_AUTH_PASSWD, prop_pw); |
| |
| |
| if(auth_type) |
| { |
| if ((axutil_strcasecmp (auth_type, AXIS2_PROXY_AUTH_TYPE_BASIC) == 0) || |
| (axutil_strcasecmp (auth_type, AXIS2_PROXY_AUTH_TYPE_DIGEST) == 0)) |
| { |
| force_proxy_auth = AXIS2_TRUE; |
| } |
| } |
| if (force_proxy_auth) |
| { |
| axutil_property_t *proxy_auth_property = axutil_property_create(env); |
| axutil_property_t *proxy_auth_type_property = axutil_property_create(env); |
| |
| axutil_property_set_value(proxy_auth_property, env, |
| axutil_strdup(env, AXIS2_VALUE_TRUE)); |
| axis2_options_set_property(options, env, AXIS2_FORCE_PROXY_AUTH, |
| proxy_auth_property); |
| |
| axutil_property_set_value(proxy_auth_type_property, env, |
| axutil_strdup(env, auth_type)); |
| axis2_options_set_property(options, env, AXIS2_PROXY_AUTH_TYPE, |
| proxy_auth_type_property); |
| } |
| else |
| { |
| axutil_property_t *proxy_auth_property = axutil_property_create(env); |
| axutil_property_set_value(proxy_auth_property, env, |
| axutil_strdup(env, AXIS2_VALUE_FALSE)); |
| axis2_options_set_property(options, env, AXIS2_FORCE_PROXY_AUTH, |
| proxy_auth_property); |
| } |
| return AXIS2_SUCCESS; |
| } |
| |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| axis2_options_set_http_auth_info( |
| axis2_options_t * options, |
| const axutil_env_t * env, |
| const axis2_char_t * username, |
| const axis2_char_t * password, |
| const axis2_char_t * auth_type) |
| { |
| axis2_bool_t force_http_auth = AXIS2_FALSE; |
| axutil_property_t *prop_un = NULL; |
| axutil_property_t *prop_pw = NULL; |
| |
| prop_un = axutil_property_create(env); |
| axutil_property_set_value(prop_un, env, axutil_strdup(env, username)); |
| axis2_options_set_property(options, env, AXIS2_HTTP_AUTH_UNAME, prop_un); |
| |
| prop_pw = axutil_property_create(env); |
| axutil_property_set_value(prop_pw, env, axutil_strdup(env, password)); |
| axis2_options_set_property(options, env, AXIS2_HTTP_AUTH_PASSWD, prop_pw); |
| |
| |
| if (auth_type) |
| { |
| if ((axutil_strcasecmp (auth_type, AXIS2_HTTP_AUTH_TYPE_BASIC) == 0) || |
| (axutil_strcasecmp (auth_type, AXIS2_HTTP_AUTH_TYPE_DIGEST) == 0)) |
| { |
| force_http_auth = AXIS2_TRUE; |
| } |
| } |
| if (force_http_auth) |
| { |
| axutil_property_t *http_auth_property = axutil_property_create(env); |
| axutil_property_t *http_auth_type_property = axutil_property_create(env); |
| |
| axutil_property_set_value(http_auth_property, env, |
| axutil_strdup(env, AXIS2_VALUE_TRUE)); |
| axis2_options_set_property(options, env, AXIS2_FORCE_HTTP_AUTH, |
| http_auth_property); |
| |
| axutil_property_set_value(http_auth_type_property, env, |
| axutil_strdup(env, auth_type)); |
| axis2_options_set_property(options, env, AXIS2_HTTP_AUTH_TYPE, |
| http_auth_type_property); |
| } |
| else |
| { |
| axutil_property_t *http_auth_property = axutil_property_create(env); |
| axutil_property_set_value(http_auth_property, env, |
| axutil_strdup(env, AXIS2_VALUE_FALSE)); |
| axis2_options_set_property(options, env, AXIS2_FORCE_HTTP_AUTH, |
| http_auth_property); |
| } |
| return AXIS2_SUCCESS; |
| } |
| |