blob: c448370b40f92955e501329a145f978101acca09 [file] [log] [blame]
/*
* 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 <sandesha2_rm_elements.h>
#include <sandesha2_constants.h>
#include <axutil_hash.h>
#include <axiom_soap_const.h>
#include <sandesha2_utils.h>
#include <axiom_soap_header.h>
#include <axiom_soap_body.h>
#include <stdio.h>
#include <axis2_addr.h>
/**
* @brief RM Elements struct impl
* Sandesha2 RM Elements
*/
struct sandesha2_rm_elements_t
{
sandesha2_seq_t *seq;
sandesha2_seq_ack_t *seq_ack;
sandesha2_create_seq_t *create_seq;
sandesha2_create_seq_res_t *create_seq_res;
sandesha2_terminate_seq_t *terminate_seq;
sandesha2_terminate_seq_res_t *terminate_seq_res;
sandesha2_close_seq_t *close_seq;
sandesha2_close_seq_res_t *close_seq_res;
sandesha2_ack_requested_t *ack_requested;
sandesha2_make_connection_t *make_connection;
sandesha2_msg_pending_t *msg_pending;
};
AXIS2_EXTERN sandesha2_rm_elements_t* AXIS2_CALL
sandesha2_rm_elements_create(
const axutil_env_t *env)
{
sandesha2_rm_elements_t *rm_elements = NULL;
rm_elements = (sandesha2_rm_elements_t *)AXIS2_MALLOC
(env->allocator, sizeof(sandesha2_rm_elements_t));
if(!rm_elements)
{
AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
return NULL;
}
rm_elements->seq = NULL;
rm_elements->seq_ack = NULL;
rm_elements->create_seq = NULL;
rm_elements->create_seq_res = NULL;
rm_elements->terminate_seq = NULL;
rm_elements->terminate_seq_res = NULL;
rm_elements->close_seq = NULL;
rm_elements->close_seq_res = NULL;
rm_elements->ack_requested = NULL;
rm_elements->make_connection = NULL;
rm_elements->msg_pending = NULL;
return rm_elements;
}
axis2_status_t AXIS2_CALL
sandesha2_rm_elements_free(
sandesha2_rm_elements_t *rm_elements,
const axutil_env_t *env)
{
AXIS2_FREE(env->allocator, rm_elements);
return AXIS2_SUCCESS;
}
axis2_status_t AXIS2_CALL
sandesha2_rm_elements_from_soap_envelope(
sandesha2_rm_elements_t *rm_elements,
const axutil_env_t *env,
axiom_soap_envelope_t *soap_envelope,
axis2_char_t *action)
{
int soap_version = -1;
axiom_soap_header_t *soap_header = NULL;
axiom_soap_body_t *soap_body = NULL;
axiom_node_t *header_node = NULL;
axiom_element_t *body_element = NULL;
axiom_node_t *body_node = NULL;
axiom_element_t *header_element = NULL;
axiom_element_t *seq_element = NULL;
axiom_node_t *seq_node = NULL;
axiom_element_t *seq_ack_element = NULL;
axiom_node_t *seq_ack_node = NULL;
axiom_element_t *create_seq_element = NULL;
axiom_node_t *create_seq_node = NULL;
axiom_element_t *create_seq_res_element = NULL;
axiom_node_t *create_seq_res_node = NULL;
axiom_element_t *terminate_seq_element = NULL;
axiom_node_t *terminate_seq_node = NULL;
axiom_element_t *terminate_seq_res_element = NULL;
axiom_node_t *terminate_seq_res_node = NULL;
axiom_element_t *close_seq_element = NULL;
axiom_node_t *close_seq_node = NULL;
axiom_element_t *close_seq_res_element = NULL;
axiom_node_t *close_seq_res_node = NULL;
axiom_element_t *ack_requested_element = NULL;
axiom_node_t *ack_requested_node = NULL;
axiom_element_t *make_conn_element = NULL;
axiom_node_t *make_conn_node = NULL;
axiom_element_t *msg_pending_element = NULL;
axiom_node_t *msg_pending_node = NULL;
axutil_qname_t *qname = NULL;
axis2_char_t *rm_ns_val = NULL;
axis2_char_t *addr_ns_val = NULL;
AXIS2_PARAM_CHECK(env->error, soap_envelope, AXIS2_FAILURE);
AXIS2_PARAM_CHECK(env->error, action, AXIS2_FAILURE);
soap_version = axiom_soap_envelope_get_soap_version(soap_envelope, env);
rm_ns_val = sandesha2_rm_elements_get_rm_ns_val(env, soap_envelope, action);
if(!rm_ns_val)
return AXIS2_SUCCESS;
addr_ns_val = sandesha2_rm_elements_get_addr_ns_val_from_env(env,
soap_envelope, action);
if(!addr_ns_val)
{
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
"[sandesha2]Cannot find the addressing version");
return AXIS2_FAILURE;
}
soap_header = axiom_soap_envelope_get_header(soap_envelope, env);
header_node = axiom_soap_header_get_base_node(soap_header, env);
header_element = axiom_node_get_data_element(header_node, env);
soap_body = axiom_soap_envelope_get_body(soap_envelope, env);
body_node = axiom_soap_body_get_base_node(soap_body, env);
body_element = axiom_node_get_data_element(body_node, env);
qname = axutil_qname_create(env, SANDESHA2_WSRM_COMMON_SEQ, rm_ns_val, NULL);
seq_element = axiom_element_get_first_child_with_qname(header_element, env,
qname, header_node, &seq_node);
if(qname)
axutil_qname_free(qname, env);
if(seq_node)
{
rm_elements->seq = sandesha2_seq_create(env, rm_ns_val);
sandesha2_seq_from_om_node(
rm_elements->seq, env, seq_node);
}
qname = axutil_qname_create(env, SANDESHA2_WSRM_COMMON_SEQ_ACK, rm_ns_val,
NULL);
seq_ack_element = axiom_element_get_first_child_with_qname(header_element,
env, qname, header_node, &seq_ack_node);
if(qname)
axutil_qname_free(qname, env);
if(seq_ack_element)
{
rm_elements->seq_ack = sandesha2_seq_ack_create(env, rm_ns_val);
sandesha2_seq_ack_from_om_node(
rm_elements->seq_ack, env, seq_ack_node);
}
qname = axutil_qname_create(env, SANDESHA2_WSRM_COMMON_CREATE_SEQ, rm_ns_val,
NULL);
create_seq_element = axiom_element_get_first_child_with_qname(body_element,
env, qname, body_node, &create_seq_node);
if(qname)
axutil_qname_free(qname, env);
if(create_seq_node)
{
rm_elements->create_seq = sandesha2_create_seq_create(env,
addr_ns_val, rm_ns_val);
sandesha2_create_seq_from_om_node(
rm_elements->create_seq, env, create_seq_node);
}
qname = axutil_qname_create(env, SANDESHA2_WSRM_COMMON_CREATE_SEQ_RESPONSE, rm_ns_val, NULL);
create_seq_res_element = axiom_element_get_first_child_with_qname(body_element, env, qname,
body_node, &create_seq_res_node);
if(qname)
{
axutil_qname_free(qname, env);
}
if(create_seq_res_node)
{
rm_elements->create_seq_res = sandesha2_create_seq_res_create(env, rm_ns_val, addr_ns_val);
sandesha2_create_seq_res_from_om_node(rm_elements->create_seq_res, env, create_seq_res_node);
}
qname = axutil_qname_create(env, SANDESHA2_WSRM_COMMON_TERMINATE_SEQ, rm_ns_val, NULL);
terminate_seq_element = axiom_element_get_first_child_with_qname(body_element, env, qname,
body_node, &terminate_seq_node);
if(qname)
{
axutil_qname_free(qname, env);
}
if(terminate_seq_node)
{
rm_elements->terminate_seq = sandesha2_terminate_seq_create(env, rm_ns_val);
sandesha2_terminate_seq_from_om_node(rm_elements->terminate_seq, env, terminate_seq_node);
}
qname = axutil_qname_create(env, SANDESHA2_WSRM_COMMON_TERMINATE_SEQ_RESPONSE, rm_ns_val, NULL);
terminate_seq_res_element = axiom_element_get_first_child_with_qname(body_element, env, qname,
body_node, &terminate_seq_res_node);
if(qname)
{
axutil_qname_free(qname, env);
}
if(terminate_seq_res_node)
{
rm_elements->terminate_seq_res = sandesha2_terminate_seq_res_create(env, rm_ns_val);
sandesha2_terminate_seq_res_from_om_node(rm_elements->terminate_seq_res, env,
terminate_seq_res_node);
}
qname = axutil_qname_create(env, SANDESHA2_WSRM_COMMON_CLOSE_SEQ, rm_ns_val, NULL);
close_seq_element = axiom_element_get_first_child_with_qname(body_element, env, qname,
body_node, &close_seq_node);
if(qname)
{
axutil_qname_free(qname, env);
}
if(close_seq_node)
{
rm_elements->close_seq = sandesha2_close_seq_create(env, rm_ns_val);
sandesha2_close_seq_from_om_node(rm_elements->close_seq, env, close_seq_node);
}
qname = axutil_qname_create(env, SANDESHA2_WSRM_COMMON_CLOSE_SEQ_RESPONSE, rm_ns_val, NULL);
close_seq_res_element = axiom_element_get_first_child_with_qname(body_element, env, qname,
body_node, &close_seq_res_node);
if(qname)
{
axutil_qname_free(qname, env);
}
if(close_seq_res_node)
{
rm_elements->close_seq_res = sandesha2_close_seq_res_create(env, rm_ns_val);
sandesha2_close_seq_res_from_om_node(rm_elements->close_seq_res, env, close_seq_res_node);
}
qname = axutil_qname_create(env, SANDESHA2_WSRM_COMMON_MAKE_CONNECTION, rm_ns_val, NULL);
make_conn_element = axiom_element_get_first_child_with_qname(body_element, env, qname,
body_node, &make_conn_node);
if(qname)
{
axutil_qname_free(qname, env);
}
if(make_conn_node)
{
rm_elements->make_connection = sandesha2_make_connection_create(env, rm_ns_val);
sandesha2_make_connection_from_om_node(rm_elements->make_connection, env, make_conn_node);
}
qname = axutil_qname_create(env, SANDESHA2_WSRM_COMMON_ACK_REQUESTED, rm_ns_val, NULL);
ack_requested_element = axiom_element_get_first_child_with_qname(
header_element, env, qname, header_node, &ack_requested_node);
if(qname)
axutil_qname_free(qname, env);
if(ack_requested_node)
{
rm_elements->ack_requested = sandesha2_ack_requested_create(env,
rm_ns_val);
sandesha2_ack_requested_from_om_node(
rm_elements->ack_requested, env, ack_requested_node);
}
qname = axutil_qname_create(env, SANDESHA2_WSRM_COMMON_MESSAGE_PENDING,
rm_ns_val, NULL);
msg_pending_element = axiom_element_get_first_child_with_qname(
header_element, env, qname, header_node, &msg_pending_node);
if(qname)
axutil_qname_free(qname, env);
if(msg_pending_node)
{
rm_elements->msg_pending = sandesha2_msg_pending_create(env,
rm_ns_val);
sandesha2_msg_pending_from_om_node(
rm_elements->msg_pending, env, msg_pending_node);
}
return AXIS2_SUCCESS;
}
axiom_soap_envelope_t* AXIS2_CALL
sandesha2_rm_elements_to_soap_envelope(
sandesha2_rm_elements_t *rm_elements,
const axutil_env_t *env,
axiom_soap_envelope_t *soap_envelope)
{
axiom_soap_header_t *soap_header = NULL;
axiom_soap_body_t *soap_body = NULL;
axiom_node_t *body_node = NULL;
AXIS2_PARAM_CHECK(env->error, soap_envelope, NULL);
soap_header = axiom_soap_envelope_get_header(soap_envelope, env);
soap_body = axiom_soap_envelope_get_body(soap_envelope, env);
body_node = axiom_soap_body_get_base_node(soap_body, env);
if(rm_elements->seq)
{
sandesha2_seq_to_om_node(
rm_elements->seq, env, soap_header);
}
if(rm_elements->seq_ack)
{
sandesha2_seq_ack_to_om_node(
rm_elements->seq_ack, env, soap_header);
}
if(rm_elements->msg_pending)
{
sandesha2_msg_pending_to_om_node(
rm_elements->msg_pending, env, soap_header);
}
if(rm_elements->create_seq)
{
sandesha2_create_seq_to_om_node(
rm_elements->create_seq, env, body_node);
}
if(rm_elements->create_seq_res)
{
sandesha2_create_seq_res_to_om_node(
rm_elements->create_seq_res, env, body_node);
}
if(rm_elements->terminate_seq)
{
sandesha2_terminate_seq_to_om_node(
rm_elements->terminate_seq, env, body_node);
}
if(rm_elements->terminate_seq_res)
{
sandesha2_terminate_seq_res_to_om_node(
rm_elements->terminate_seq_res, env, body_node);
}
if(rm_elements->close_seq)
{
sandesha2_close_seq_to_om_node(rm_elements->close_seq, env, body_node);
}
if(rm_elements->close_seq_res)
{
sandesha2_close_seq_res_to_om_node(rm_elements->close_seq_res, env,
body_node);
}
if(rm_elements->make_connection)
{
sandesha2_make_connection_to_om_node(
rm_elements->make_connection, env, body_node);
}
return soap_envelope;
}
sandesha2_create_seq_t* AXIS2_CALL
sandesha2_rm_elements_get_create_seq(
sandesha2_rm_elements_t *rm_elements,
const axutil_env_t *env)
{
return rm_elements->create_seq;
}
axis2_status_t AXIS2_CALL
sandesha2_rm_elements_set_create_seq(
sandesha2_rm_elements_t *rm_elements,
const axutil_env_t *env,
sandesha2_create_seq_t *create_seq)
{
AXIS2_PARAM_CHECK(env->error, create_seq, AXIS2_FAILURE);
rm_elements->create_seq = create_seq;
return AXIS2_SUCCESS;
}
sandesha2_create_seq_res_t* AXIS2_CALL
sandesha2_rm_elements_get_create_seq_res(
sandesha2_rm_elements_t *rm_elements,
const axutil_env_t *env)
{
return rm_elements->create_seq_res;
}
axis2_status_t AXIS2_CALL
sandesha2_rm_elements_set_create_seq_res(
sandesha2_rm_elements_t *rm_elements,
const axutil_env_t *env,
sandesha2_create_seq_res_t *create_seq_res)
{
AXIS2_PARAM_CHECK(env->error, create_seq_res, AXIS2_FAILURE);
rm_elements->create_seq_res = create_seq_res;
return AXIS2_SUCCESS;
}
sandesha2_seq_t* AXIS2_CALL
sandesha2_rm_elements_get_seq(
sandesha2_rm_elements_t *rm_elements,
const axutil_env_t *env)
{
return rm_elements->seq;
}
axis2_status_t AXIS2_CALL
sandesha2_rm_elements_set_seq(
sandesha2_rm_elements_t *rm_elements,
const axutil_env_t *env,
sandesha2_seq_t *seq)
{
AXIS2_PARAM_CHECK(env->error, seq, AXIS2_FAILURE);
rm_elements->seq = seq;
return AXIS2_SUCCESS;
}
sandesha2_seq_ack_t* AXIS2_CALL
sandesha2_rm_elements_get_seq_ack(
sandesha2_rm_elements_t *rm_elements,
const axutil_env_t *env)
{
return rm_elements->seq_ack;
}
axis2_status_t AXIS2_CALL
sandesha2_rm_elements_set_seq_ack(
sandesha2_rm_elements_t *rm_elements,
const axutil_env_t *env,
sandesha2_seq_ack_t *seq_ack)
{
AXIS2_PARAM_CHECK(env->error, seq_ack, AXIS2_FAILURE);
rm_elements->seq_ack = seq_ack;
return AXIS2_SUCCESS;
}
sandesha2_terminate_seq_t* AXIS2_CALL
sandesha2_rm_elements_get_terminate_seq(
sandesha2_rm_elements_t *rm_elements,
const axutil_env_t *env)
{
return rm_elements->terminate_seq;
}
axis2_status_t AXIS2_CALL
sandesha2_rm_elements_set_terminate_seq(
sandesha2_rm_elements_t *rm_elements,
const axutil_env_t *env,
sandesha2_terminate_seq_t *terminate_seq)
{
AXIS2_PARAM_CHECK(env->error, terminate_seq, AXIS2_FAILURE);
rm_elements->terminate_seq = terminate_seq;
return AXIS2_SUCCESS;
}
sandesha2_terminate_seq_res_t* AXIS2_CALL
sandesha2_rm_elements_get_terminate_seq_res(
sandesha2_rm_elements_t *rm_elements,
const axutil_env_t *env)
{
return rm_elements->terminate_seq_res;
}
axis2_status_t AXIS2_CALL
sandesha2_rm_elements_set_terminate_seq_res(
sandesha2_rm_elements_t *rm_elements,
const axutil_env_t *env,
sandesha2_terminate_seq_res_t *terminate_seq_res)
{
AXIS2_PARAM_CHECK(env->error, terminate_seq_res, AXIS2_FAILURE);
rm_elements->terminate_seq_res = terminate_seq_res;
return AXIS2_SUCCESS;
}
sandesha2_ack_requested_t* AXIS2_CALL
sandesha2_rm_elements_get_ack_requested(
sandesha2_rm_elements_t *rm_elements,
const axutil_env_t *env)
{
return rm_elements->ack_requested;
}
axis2_status_t AXIS2_CALL
sandesha2_rm_elements_set_ack_requested(
sandesha2_rm_elements_t *rm_elements,
const axutil_env_t *env,
sandesha2_ack_requested_t *ack_requested)
{
AXIS2_PARAM_CHECK(env->error, ack_requested, AXIS2_FAILURE);
rm_elements->ack_requested = ack_requested;
return AXIS2_SUCCESS;
}
sandesha2_close_seq_t* AXIS2_CALL
sandesha2_rm_elements_get_close_seq(
sandesha2_rm_elements_t *rm_elements,
const axutil_env_t *env)
{
return rm_elements->close_seq;
}
axis2_status_t AXIS2_CALL
sandesha2_rm_elements_set_close_seq(
sandesha2_rm_elements_t *rm_elements,
const axutil_env_t *env,
sandesha2_close_seq_t *close_seq)
{
AXIS2_PARAM_CHECK(env->error, close_seq, AXIS2_FAILURE);
rm_elements->close_seq = close_seq;
return AXIS2_SUCCESS;
}
sandesha2_close_seq_res_t* AXIS2_CALL
sandesha2_rm_elements_get_close_seq_res(
sandesha2_rm_elements_t *rm_elements,
const axutil_env_t *env)
{
return rm_elements->close_seq_res;
}
axis2_status_t AXIS2_CALL
sandesha2_rm_elements_set_close_seq_res(
sandesha2_rm_elements_t *rm_elements,
const axutil_env_t *env,
sandesha2_close_seq_res_t *close_seq_res)
{
AXIS2_PARAM_CHECK(env->error, close_seq_res, AXIS2_FAILURE);
rm_elements->close_seq_res = close_seq_res;
return AXIS2_SUCCESS;
}
sandesha2_make_connection_t* AXIS2_CALL
sandesha2_rm_elements_get_make_connection(
sandesha2_rm_elements_t *rm_elements,
const axutil_env_t *env)
{
return rm_elements->make_connection;
}
sandesha2_msg_pending_t* AXIS2_CALL
sandesha2_rm_elements_get_msg_pending(
sandesha2_rm_elements_t *rm_elements,
const axutil_env_t *env)
{
return rm_elements->msg_pending;
}
axis2_char_t* AXIS2_CALL
sandesha2_rm_elements_get_rm_ns_val(
const axutil_env_t *env,
axiom_soap_envelope_t *soap_envelope,
axis2_char_t *action)
{
axiom_soap_header_t *soap_header = NULL;
AXIS2_PARAM_CHECK(env->error, soap_envelope, NULL);
AXIS2_PARAM_CHECK(env->error, action, NULL);
soap_header = axiom_soap_envelope_get_header(soap_envelope, env);
if(soap_header)
{
axutil_array_list_t *headers = NULL;
headers = axiom_soap_header_get_header_blocks_with_namespace_uri(soap_header, env,
SANDESHA2_SPEC_2005_02_NS_URI);
if(headers && 0 < axutil_array_list_size(headers, env))
{
if(headers)
{
axutil_array_list_free(headers, env);
}
return SANDESHA2_SPEC_2005_02_NS_URI;
}
headers = axiom_soap_header_get_header_blocks_with_namespace_uri(soap_header, env,
SANDESHA2_SPEC_2007_02_NS_URI);
if(headers && 0 < axutil_array_list_size(headers, env))
{
if(headers)
{
axutil_array_list_free(headers, env);
}
return SANDESHA2_SPEC_2007_02_NS_URI;
}
headers = axiom_soap_header_get_header_blocks_with_namespace_uri(soap_header, env,
MAKE_CONNECTION_SPEC_2007_02_NS_URI);
if(headers && 0 < axutil_array_list_size(headers, env))
{
if(headers)
{
axutil_array_list_free(headers, env);
}
return MAKE_CONNECTION_SPEC_2007_02_NS_URI;
}
}
if(!action)
{
return NULL;
}
if(0 == axutil_strcmp(action, SANDESHA2_SPEC_2005_02_ACTION_CREATE_SEQ))
return SANDESHA2_SPEC_2005_02_NS_URI;
if(0 == axutil_strcmp(action, SANDESHA2_SPEC_2005_02_ACTION_CREATE_SEQ_RESPONSE))
return SANDESHA2_SPEC_2005_02_NS_URI;
if(0 == axutil_strcmp(action, SANDESHA2_SPEC_2005_02_ACTION_SEQ_ACKNOWLEDGEMENT))
return SANDESHA2_SPEC_2005_02_NS_URI;
if(0 == axutil_strcmp(action, SANDESHA2_SPEC_2005_02_ACTION_TERMINATE_SEQ))
return SANDESHA2_SPEC_2005_02_NS_URI;
if(0 == axutil_strcmp(action, SANDESHA2_SPEC_2007_02_ACTION_CREATE_SEQ))
return SANDESHA2_SPEC_2007_02_NS_URI;
if(0 == axutil_strcmp(action, SANDESHA2_SPEC_2007_02_ACTION_CREATE_SEQ_RESPONSE))
return SANDESHA2_SPEC_2007_02_NS_URI;
if(0 == axutil_strcmp(action, SANDESHA2_SPEC_2007_02_ACTION_SEQ_ACKNOWLEDGEMENT))
return SANDESHA2_SPEC_2007_02_NS_URI;
if(0 == axutil_strcmp(action, SANDESHA2_SPEC_2007_02_ACTION_TERMINATE_SEQ))
return SANDESHA2_SPEC_2007_02_NS_URI;
if(0 == axutil_strcmp(action, SANDESHA2_SPEC_2007_02_ACTION_CLOSE_SEQ))
return SANDESHA2_SPEC_2007_02_NS_URI;
if(0 == axutil_strcmp(action, SANDESHA2_SPEC_2007_02_ACTION_TERMINATE_SEQ_RESPONSE))
return SANDESHA2_SPEC_2007_02_NS_URI;
if(0 == axutil_strcmp(action, SANDESHA2_SPEC_2007_02_ACTION_CLOSE_SEQ_RESPONSE))
return SANDESHA2_SPEC_2007_02_NS_URI;
if(!axutil_strcmp(action, SANDESHA2_SPEC_2007_02_ACTION_MAKE_CONNECTION))
{
return MAKE_CONNECTION_SPEC_2007_02_NS_URI;
}
return NULL;
}
axis2_char_t* AXIS2_CALL
sandesha2_rm_elements_get_addr_ns_val_from_env(
const axutil_env_t *env,
axiom_soap_envelope_t *soap_envelope,
axis2_char_t *action)
{
axiom_soap_header_t *soap_header = NULL;
AXIS2_PARAM_CHECK(env->error, soap_envelope, NULL);
AXIS2_PARAM_CHECK(env->error, action, NULL);
soap_header = axiom_soap_envelope_get_header(soap_envelope, env);
if(soap_header)
{
axutil_array_list_t *headers = NULL;
axiom_node_t *soap_header_node = NULL;
axiom_element_t *soap_header_element = NULL;
axiom_namespace_t *addr_ns = NULL;
headers = axiom_soap_header_get_header_blocks_with_namespace_uri(
soap_header, env, AXIS2_WSA_NAMESPACE);
if(headers && 0 < axutil_array_list_size(headers, env))
{
axutil_array_list_free(headers, env);
return AXIS2_WSA_NAMESPACE;
}
headers = axiom_soap_header_get_header_blocks_with_namespace_uri(
soap_header, env, AXIS2_WSA_NAMESPACE_SUBMISSION);
if(headers && 0 < axutil_array_list_size(headers, env))
{
axutil_array_list_free(headers, env);
return AXIS2_WSA_NAMESPACE_SUBMISSION;
}
if(headers)
axutil_array_list_free(headers, env);
soap_header_node = axiom_soap_header_get_base_node(soap_header, env);
soap_header_element = axiom_node_get_data_element(soap_header_node,
env);
addr_ns = axiom_element_get_namespace(soap_header_element, env,
soap_header_node);
if(addr_ns)
{
axis2_char_t *str_addr_ns = axiom_namespace_get_uri(addr_ns, env);
return str_addr_ns;
}
}
return NULL;
}