You are viewing a plain text version of this content. The canonical link for it is here.
Posted to sandesha-dev@ws.apache.org by sa...@apache.org on 2006/07/20 14:31:25 UTC
svn commit: r423915 - in /webservices/sandesha/trunk/c: include/
include/sandesha2/ src/util/ src/workers/ src/wsrm/
Author: sahan
Date: Thu Jul 20 05:31:24 2006
New Revision: 423915
URL: http://svn.apache.org/viewvc?rev=423915&view=rev
Log:
chaniging sender
Modified:
webservices/sandesha/trunk/c/include/sandesha2/sandesha2_constants.h
webservices/sandesha/trunk/c/include/sandesha2/sandesha2_property_bean.h
webservices/sandesha/trunk/c/include/sandesha2_msg_init.h
webservices/sandesha/trunk/c/include/sandesha2_sender.h
webservices/sandesha/trunk/c/src/util/Makefile.am
webservices/sandesha/trunk/c/src/workers/sender.c
webservices/sandesha/trunk/c/src/wsrm/rm_elements.c
Modified: webservices/sandesha/trunk/c/include/sandesha2/sandesha2_constants.h
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/include/sandesha2/sandesha2_constants.h?rev=423915&r1=423914&r2=423915&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/include/sandesha2/sandesha2_constants.h (original)
+++ webservices/sandesha/trunk/c/include/sandesha2/sandesha2_constants.h Thu Jul 20 05:31:24 2006
@@ -361,11 +361,11 @@
#define SANDESHA2_DEF_VAL_ACK_INTERVAL 4000
- #define SANDESHA2_DEF_VAL_EXP_BACKOFF true
+ #define SANDESHA2_DEF_VAL_EXP_BACKOFF AXIS2_TRUE
#define SANDESHA2_DEF_VAL_INACTIVETIMEOUT -1
-
- #define SANDESHA2_DEF_VAL_INACTIVETIMEOUT_MEASURE "seconds" //this can be - seconds,minutes,hours,days
+ /* this can be - seconds,minutes,hours,days */
+ #define SANDESHA2_DEF_VAL_INACTIVETIMEOUT_MEASURE "seconds"
#define SANDESHA2_DEF_VAL_STORAGE_MGR "InMemoryStorageManager"
@@ -373,9 +373,9 @@
#define SANDESHA2_DEF_VAL_PERM_STORAGE_MGR "InMemoryStorageManager"
- #define SANDESHA2_DEF_VAL_INORDER_INVOCATION true
+ #define SANDESHA2_DEF_VAL_INORDER_INVOCATION AXIS2_TRUE
- #define SANDESHA2_DEF_VAL_MSG_TYPES_TO_DROP VALUE_NONE
+ #define SANDESHA2_DEF_VAL_MSG_TYPES_TO_DROP "none"
#define SANDESHA2_DEF_VAL_RETR_COUNT 8
Modified: webservices/sandesha/trunk/c/include/sandesha2/sandesha2_property_bean.h
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/include/sandesha2/sandesha2_property_bean.h?rev=423915&r1=423914&r2=423915&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/include/sandesha2/sandesha2_property_bean.h (original)
+++ webservices/sandesha/trunk/c/include/sandesha2/sandesha2_property_bean.h Thu Jul 20 05:31:24 2006
@@ -219,7 +219,7 @@
((bean)->ops->get_permanent_storage_mgr(bean, env))
#define SANDESHA2_PROPERTY_BEAN_SET_PERMENENT_STORAGE_MGR(bean, env, mgr)\
- ((bean)->ops->get_permanent_storage_mgr(bean, env, mgr))
+ ((bean)->ops->set_permanent_storage_mgr(bean, env, mgr))
#define SANDESHA2_PROPERTY_BEAN_IS_IN_ORDER(bean, env)\
((bean)->ops->is_in_order(bean, env))
Modified: webservices/sandesha/trunk/c/include/sandesha2_msg_init.h
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/include/sandesha2_msg_init.h?rev=423915&r1=423914&r2=423915&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/include/sandesha2_msg_init.h (original)
+++ webservices/sandesha/trunk/c/include/sandesha2_msg_init.h Thu Jul 20 05:31:24 2006
@@ -30,7 +30,7 @@
#include <axis2_string.h>
#include <axis2_utils.h>
#include <sandesha2_storage_mgr.h>
-#include <sandesha2_msg_ctx.h>
+#include <sandesha2/sandesha2_msg_ctx.h>
#include <axis2_msg_ctx.h>
#ifdef __cplusplus
Modified: webservices/sandesha/trunk/c/include/sandesha2_sender.h
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/include/sandesha2_sender.h?rev=423915&r1=423914&r2=423915&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/include/sandesha2_sender.h (original)
+++ webservices/sandesha/trunk/c/include/sandesha2_sender.h Thu Jul 20 05:31:24 2006
@@ -54,7 +54,7 @@
const axis2_env_t *env);
axis2_status_t (AXIS2_CALL *
- stop_sender_for_seq) (
+ stop_for_seq) (
sandesha2_sender_t *sender,
const axis2_env_t *env,
axis2_char_t *seq_id);
@@ -97,7 +97,7 @@
#define SANDESHA2_SENDER_STOP_FOR_SEQ(sender, env, \
seq_id) \
(((sandesha2_sender_t *) sender)->ops->\
- stop_sender_for_seq (sender, env, seq_id))
+ stop_for_seq (sender, env, seq_id))
#define SANDESHA2_SENDER_STOP_SENDING(sender, env) \
(((sandesha2_sender_t *) sender)->ops->\
Modified: webservices/sandesha/trunk/c/src/util/Makefile.am
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/util/Makefile.am?rev=423915&r1=423914&r2=423915&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/src/util/Makefile.am (original)
+++ webservices/sandesha/trunk/c/src/util/Makefile.am Thu Jul 20 05:31:24 2006
@@ -10,7 +10,8 @@
seq_mgr.c \
terminate_mgr.c \
msg_init.c \
- msg_creator.c
+ msg_creator.c\
+ property_mgr.c
INCLUDES = -I$(top_builddir)/include \
-I$(top_builddir)/include/sandesha2 \
Modified: webservices/sandesha/trunk/c/src/workers/sender.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/workers/sender.c?rev=423915&r1=423914&r2=423915&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/src/workers/sender.c (original)
+++ webservices/sandesha/trunk/c/src/workers/sender.c Thu Jul 20 05:31:24 2006
@@ -30,6 +30,7 @@
#include <axiom_soap_const.h>
#include <axiom_soap_fault.h>
#include <axiom_soap_body.h>
+#include <sandesha2_msg_init.h>
/**
@@ -146,13 +147,13 @@
sender_impl->mutex = axis2_thread_mutex_create(env->allocator,
AXIS2_THREAD_MUTEX_DEFAULT);
- sender_impl->sender.ops->stop_sender_for_seq =
+ sender_impl->sender.ops->stop_for_seq =
sandesha2_sender_stop_sender_for_seq;
sender_impl->sender.ops->stop_sending =
sandesha2_sender_stop_sending;
sender_impl->sender.ops->is_sender_started =
sandesha2_sender_is_sender_started;
- sender_impl->sender.ops->run_sender_for_seq =
+ sender_impl->sender.ops->run_for_seq =
sandesha2_sender_run_sender_for_seq;
sender_impl->sender.ops->run = sandesha2_sender_run;
sender_impl->sender.ops->free = sandesha2_sender_free;
@@ -455,162 +456,83 @@
sandesha2_transaction_t *transaction = NULL;
/* Use when transaction handling is done
axis2_bool_t rollbacked = AXIS2_FALSE;*/
- sandesha2_next_msg_mgr_t *next_msg_mgr = NULL;
- sandesha2_sender_mgr_t *storage_map_mgr = NULL;
+ sandesha2_sender_mgr_t *mgr = NULL;
+ sandesha2_sender_bean_t *sender_bean = NULL;
sandesha2_seq_property_mgr_t *seq_prop_mgr = NULL;
- sandesha2_seq_property_bean_t *all_seq_bean = NULL;
- axis2_array_list_t *all_seq_list = NULL;
int i = 0;
+ axis2_char_t *key = NULL;
+ axis2_msg_ctx_t *msg_ctx = NULL;
+ axis2_property_t *property = NULL;
+ axis2_bool_t continue_sending = AXIS2_TRUE;
+ axis2_char_t *qualified_for_sending = NULL;
+ sandesha2_msg_ctx_t *rm_msg_ctx = NULL;
+ sandesha2_property_bean_t *prop_bean = NULL;
+ axis2_array_list_t *msgs_not_to_send = NULL;
-
- next_msg_mgr = SANDESHA2_STORAGE_MGR_GET_NEXT_MSG_MGR(
- storage_mgr, env);
- storage_map_mgr = SANDESHA2_STORAGE_MGR_GET_STORAGE_MAP_MGR
- (storage_mgr, env);
- seq_prop_mgr = SANDESHA2_STORAGE_MGR_GET_SEQ_PROPERTY_MGR(
- storage_mgr, env);
+ sleep(1);
transaction = SANDESHA2_STORAGE_MGR_GET_TRANSACTION(storage_mgr,
env);
- all_seq_bean = SANDESHA2_SEQ_PROPERTY_MGR_RETRIEVE(seq_prop_mgr,
- env, SANDESHA2_SEQ_PROP_ALL_SEQS,
- SANDESHA2_SEQ_PROP_INCOMING_SEQ_LIST);
- if(NULL == all_seq_bean)
+ mgr = SANDESHA2_STORAGE_MGR_GET_RETRANS_MGR(storage_mgr, env);
+ seq_prop_mgr = SANDESHA2_STORAGE_MGR_GET_SEQ_PROPERTY_MGR(
+ storage_mgr, env);
+
+ sender_bean = SANDESHA2_SENDER_MGR_GET_NEXT_MSG_TO_SEND(mgr, env);
+ if(NULL == sender_bean)
continue;
- all_seq_list = sandesha2_utils_get_array_list_from_string(env,
- SANDESHA2_SEQ_PROPERTY_BEAN_GET_VALUE(all_seq_bean, env));
- if(NULL == all_seq_list)
+
+ key = SANDESHA2_SENDER_BEAN_GET_MSG_CONTEXT_REF_KEY(sender_bean, env);
+ msg_ctx = SANDESHA2_STORAGE_MGR_RETRIEVE_MSG_CTX(storage_mgr, env, key,
+ sender_impl->conf_ctx);
+ if(NULL == msg_ctx)
+ {
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[sandesha2] msg_ctx is "
+ "not present in the store");
+ break;
+ }
+ property = axis2_property_create(env);
+ AXIS2_PROPERTY_SET_SCOPE(property, env, AXIS2_SCOPE_REQUEST);
+ AXIS2_PROPERTY_SET_VALUE(property, env, AXIS2_STRDUP(
+ SANDESHA2_VALUE_TRUE, env));
+ AXIS2_MSG_CTX_SET_PROPERTY(msg_ctx, env, SANDESHA2_WITHIN_TRANSACTION,
+ property, AXIS2_FALSE);
+ continue_sending = sandesha2_msg_retrans_adjuster_adjust_retrans(env,
+ sender, sender_impl->conf_ctx, storage_mgr);
+ if(AXIS2_FALSE == continue_sending)
continue;
+
+ property = AXIS2_MSG_CTX_GET_PROPERTY(msg_ctx, env,
+ SANDESHA2_QUALIFIED_FOR_SENDING, AXIS2_FALSE);
+ if(NULL != property)
+ qualified_for_sending = AXIS2_PROPERTY_GET_VALUE(property, env);
- for(i = 0; i < AXIS2_ARRAY_LIST_SIZE(all_seq_list, env); i++)
+ if(NULL != qualified_for_sending && 0 != AXIS2_STRCMP(
+ qualified_for_sending, SANDESHA2_VALUE_TRUE))
+ continue;
+ rm_msg_ctx = sandesha2_msg_init_init_msg(env, msg_ctx);
+
+ prop_bean = sandesha2_utils_get_property_bean_from_op(env,
+ AXIS2_MSG_CTX_GET_OP(msg_ctx, env));
+ if(NULL != prop_bean)
+ msgs_not_to_send = SANDESHA2_PROPERTY_BEAN_GET_MSG_TYPES_TO_DROP(
+ prop_bean, env);
+ if(NULL != msgs_not_to_send)
{
- axis2_char_t *seq_id = NULL;
- long next_msg_no = -1;
- sandesha2_next_msg_bean_t *next_msg_bean = NULL;
- axis2_array_list_t *st_map_list = NULL;
- sandesha2_sender_bean_t *find_bean = NULL;
- axis2_bool_t invoked = AXIS2_FALSE;
int j = 0;
- axis2_bool_t continue_seq = AXIS2_TRUE;
-
- seq_id = AXIS2_ARRAY_LIST_GET(all_seq_list, env, i);
- SANDESHA2_TRANSACTION_COMMIT(transaction, env);
- transaction = SANDESHA2_STORAGE_MGR_GET_TRANSACTION(
- storage_mgr, env);
- next_msg_bean = SANDESHA2_NEXT_MSG_MGR_RETRIEVE(
- next_msg_mgr, env, seq_id);
- if(NULL == next_msg_bean)
- {
- axis2_char_t *str_list = NULL;
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "Next message not set"
- " correctly. Removing invalid entry.");
- AXIS2_ARRAY_LIST_REMOVE(all_seq_list, env, i);
- /* We need to make sure we are not skipping element after
- * removing current element
- */
- i--;
- str_list = sandesha2_utils_array_list_to_string(env, all_seq_list,
- SANDESHA2_ARRAY_LIST_STRING);
- SANDESHA2_SEQ_PROPERTY_BEAN_SET_VALUE(all_seq_bean, env,
- str_list);
- SANDESHA2_SEQ_PROPERTY_MGR_UPDATE(seq_prop_mgr, env,
- all_seq_bean);
- continue;
- }
- next_msg_no = SANDESHA2_NEXT_MSG_BEAN_GET_NEXT_MSG_NO_TO_PROCESS(
- next_msg_bean, env);
- if(next_msg_no < 0)
+ for(j = 0; j < AXIS2_ARRAY_LIST_SIZE(msgs_not_to_send, env); j++)
{
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Invalid message number"
- " as the Next Message Number.");
- return data;
- }
- /*find_bean = sandesha2_sender_bean_create_with_data(env, NULL,
- next_msg_no, seq_id, AXIS2_FALSE);*/
- st_map_list = SANDESHA2_INVOKER_MGR_FIND(storage_map_mgr,
- env, find_bean);
- for(j = 0; j < AXIS2_ARRAY_LIST_SIZE(st_map_list, env); j++)
- {
- sandesha2_sender_bean_t *st_map_bean = NULL;
- axis2_char_t *key = NULL;
- axis2_msg_ctx_t *msg_to_invoke = NULL;
- sandesha2_msg_ctx_t *rm_msg_ctx = NULL;
- axis2_property_t *property = NULL;
- axis2_bool_t post_failure_invocation = AXIS2_FALSE;
- axis2_char_t *post_failure_str = NULL;
- axis2_msg_ctx_t *msg_ctx = NULL;
- axis2_engine_t *engine = NULL;
+ axis2_char_t *value = NULL;
+ int int_val = -1;
- st_map_bean = AXIS2_ARRAY_LIST_GET(st_map_list, env, j);
- key = SANDESHA2_INVOKER_BEAN_GET_MSG_CONTEXT_REF_KEY(st_map_bean,
- env);
- msg_to_invoke = SANDESHA2_STORAGE_MGR_RETRIEVE_MSG_CTX(
- storage_mgr, env, key, sender_impl->conf_ctx);
- rm_msg_ctx = sandesha2_msg_initilizer_init_msg(env,
- msg_to_invoke);
- /* have to commit the transaction before invoking. This may get
- * changed when WS-AT is available.
- */
- SANDESHA2_TRANSACTION_COMMIT(transaction, env);
- property = axis2_property_create(env);
- AXIS2_PROPERTY_SET_SCOPE(property, env, AXIS2_SCOPE_REQUEST);
- AXIS2_PROPERTY_SET_VALUE(property, env, AXIS2_STRDUP(
- SANDESHA2_VALUE_TRUE, env));
- AXIS2_MSG_CTX_SET_PROPERTY(msg_ctx, env,
- SANDESHA2_WITHIN_TRANSACTION, property, AXIS2_FALSE);
-
- property = AXIS2_MSG_CTX_GET_PROPERTY(msg_ctx, env,
- SANDESHA2_POST_FAILURE_MESSAGE, AXIS2_FALSE);
- if(NULL != property)
- post_failure_str = AXIS2_PROPERTY_GET_VALUE(property, env);
- if(NULL != post_failure_str && 0 == AXIS2_STRCMP(
- post_failure_str, SANDESHA2_VALUE_TRUE))
- post_failure_invocation = AXIS2_TRUE;
- engine = axis2_engine_create(env, sender_impl->conf_ctx);
- if(AXIS2_TRUE == post_failure_invocation)
- {
- sandesha2_sender_make_msg_ready_for_reinjection(
- sender, env, msg_to_invoke);
- AXIS2_ENGINE_RECIEVE(engine, env, msg_to_invoke);
- }
- else
- AXIS2_ENGINE_RESUME_RECIEVE(engine, env, msg_to_invoke);
- invoked = AXIS2_TRUE;
- transaction = SANDESHA2_STORAGE_MGR_GET_TRANSACTION(
- storage_mgr, env);
- SANDESHA2_STORAGE_MGR_DELETE(storage_mgr, env, key);
- msg_ctx = SANDESHA2_STORAGE_MGR_RETRIEVE_MSG_CTX(
- storage_mgr, env, key, sender_impl->conf_ctx);
- if(NULL != msg_ctx)
- SANDESHA2_STORAGE_MGR_REMOVE_MSG_CTX(storage_mgr,
- env, key);
- if(SANDESHA2_MSG_TYPE_APPLICATION ==
- SANDESHA2_MSG_CTX_GET_MSG_TYPE(rm_msg_ctx, env))
- {
- sandesha2_seq_t *seq = NULL;
- seq = (sandesha2_seq_t*)_MSG_CTX_GET_MSG_PART(
- rm_msg_ctx, env, SANDESHA2_MSG_PART_SEQ);
- if(NULL != SANDESHA2_SEQ_GET_LAST_MSG(seq, env))
- {
- sandesha2_terminate_mgr_clean_recv_side_after_invocation(
- env, sender_impl->conf_ctx, seq_id,
- storage_mgr);
- /* we are done with current seq */
- continue_seq = AXIS2_FALSE;
- break;
- }
- }
- }
- if(AXIS2_FALSE == continue_seq)
- break;
- if(AXIS2_TRUE == invoked)
- {
- next_msg_no++;
- SANDESHA2_NEXT_MSG_BEAN_SET_NEXT_MSG_NO_TO_PROCESS(next_msg_bean,
- env, next_msg_no);
- SANDESHA2_NEXT_MSG_BEAN_MGR_UPDATE(next_msg_mgr, env,
- next_msg_bean);
+ value = AXIS2_ARRAY_LIST_GET(msgs_not_to_send, env, j);
+ int_val = atoi(value);
+ if(SANDESHA2_MSG_CTX_GET_MSG_TYPE(rm_msg_ctx, env) == int_val)
+ continue_sending = AXIS2_FALSE;
}
+ if(AXIS2_FALSE == continue_sending)
+ continue;
}
+
+
SANDESHA2_TRANSACTION_COMMIT(transaction, env);
/* TODO make transaction handling effective */
Modified: webservices/sandesha/trunk/c/src/wsrm/rm_elements.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/wsrm/rm_elements.c?rev=423915&r1=423914&r2=423915&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/src/wsrm/rm_elements.c (original)
+++ webservices/sandesha/trunk/c/src/wsrm/rm_elements.c Thu Jul 20 05:31:24 2006
@@ -19,7 +19,10 @@
#include <axiom_soap_const.h>
#include <sandesha2/sandesha2_iom_rm_part.h>
#include <sandesha2/sandesha2_utils.h>
+#include <axiom_soap_header.h>
+#include <axiom_soap_body.h>
#include <stdio.h>
+#include <axis2_addr.h>
/**
@@ -165,6 +168,20 @@
(sandesha2_rm_elements_t *rm_elements,
const axis2_env_t *env);
+axis2_char_t* AXIS2_CALL
+sandesha2_rm_elements_get_rm_ns_val
+ (sandesha2_rm_elements_t *rm_elements,
+ const axis2_env_t *env,
+ axiom_soap_envelope_t *soap_envelope,
+ axis2_char_t *action);
+
+axis2_char_t* AXIS2_CALL
+sandesha2_rm_elements_get_addr_ns_val_from_env
+ (sandesha2_rm_elements_t *rm_elements,
+ const axis2_env_t *env,
+ axiom_soap_envelope_t *soap_envelope,
+ axis2_char_t *action);
+
axis2_status_t AXIS2_CALL
sandesha2_rm_elements_free(sandesha2_rm_elements_t *mgr,
const axis2_env_t *env);
@@ -291,10 +308,180 @@
axiom_soap_envelope_t *soap_envelope,
axis2_char_t *action)
{
+ int soap_version = -1;
+ sandesha2_rm_elements_impl_t *elements_impl = NULL;
+ 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;
+ axis2_qname_t *qname = NULL;
+ axis2_char_t *rm_ns_val = NULL;
+ axis2_char_t *addr_ns_val = NULL;
+
+
AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
AXIS2_PARAM_CHECK(env->error, soap_envelope, AXIS2_FAILURE);
AXIS2_PARAM_CHECK(env->error, action, AXIS2_FAILURE);
+ elements_impl = SANDESHA2_INTF_TO_IMPL(rm_elements);
+ soap_version = AXIOM_SOAP_ENVELOPE_GET_SOAP_VERSION(soap_envelope, env);
+
+ elements_impl->rm_ns_val = sandesha2_rm_elements_get_rm_ns_val(rm_elements,
+ env, soap_envelope, action);
+
+ if(NULL == elements_impl->rm_ns_val)
+ return AXIS2_SUCCESS;
+
+ elements_impl->addr_ns_val = sandesha2_rm_elements_get_addr_ns_val_from_env(
+ rm_elements, env, soap_envelope, action);
+
+ if(NULL == elements_impl->addr_ns_val)
+ {
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[sandesha2] Cant 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);
+
+
+
+ rm_ns_val = elements_impl->rm_ns_val;
+ addr_ns_val = elements_impl->addr_ns_val;
+
+ qname = axis2_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(NULL != seq_node)
+ {
+ elements_impl->seq = sandesha2_seq_create(env, rm_ns_val);
+ SANDESHA2_IOM_RM_ELEMENT_FROM_OM_NODE(elements_impl->seq, env,
+ header_node);
+ }
+ qname = axis2_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(NULL != seq_ack_element)
+ {
+ elements_impl->seq_ack = sandesha2_seq_ack_create(env, rm_ns_val);
+ SANDESHA2_IOM_RM_ELEMENT_FROM_OM_NODE(elements_impl->seq_ack, env,
+ header_node);
+ }
+ qname = axis2_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(NULL != create_seq_node)
+ {
+ elements_impl->create_seq = sandesha2_create_seq_create(env, rm_ns_val,
+ addr_ns_val);
+ SANDESHA2_IOM_RM_ELEMENT_FROM_OM_NODE(elements_impl->create_seq, env,
+ body_node);
+ }
+
+ qname = axis2_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(NULL != create_seq_res_node)
+ {
+ elements_impl->create_seq_res = sandesha2_create_seq_res_create(env,
+ rm_ns_val, addr_ns_val);
+ SANDESHA2_IOM_RM_ELEMENT_FROM_OM_NODE(elements_impl->create_seq_res, env,
+ body_node);
+ }
+
+ qname = axis2_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(NULL != terminate_seq_node)
+ {
+ elements_impl->terminate_seq = sandesha2_terminate_seq_create(env,
+ rm_ns_val);
+ SANDESHA2_IOM_RM_ELEMENT_FROM_OM_NODE(elements_impl->terminate_seq, env,
+ body_node);
+ }
+
+ qname = axis2_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(NULL != terminate_seq_res_node)
+ {
+ elements_impl->terminate_seq_res = sandesha2_terminate_seq_res_create(
+ env, rm_ns_val);
+ SANDESHA2_IOM_RM_ELEMENT_FROM_OM_NODE(elements_impl->terminate_seq_res,
+ env, body_node);
+ }
+
+ qname = axis2_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(NULL != close_seq_node)
+ {
+ elements_impl->close_seq = sandesha2_close_seq_create(env,
+ rm_ns_val);
+ SANDESHA2_IOM_RM_ELEMENT_FROM_OM_NODE(elements_impl->close_seq, env,
+ body_node);
+ }
+
+ qname = axis2_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(NULL != close_seq_res_node)
+ {
+ elements_impl->close_seq_res = sandesha2_close_seq_res_create(env,
+ rm_ns_val);
+ SANDESHA2_IOM_RM_ELEMENT_FROM_OM_NODE(elements_impl->close_seq_res, env,
+ body_node);
+ }
+
+ qname = axis2_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(NULL != ack_requested_node)
+ {
+ elements_impl->ack_requested = sandesha2_ack_requested_create(env,
+ rm_ns_val);
+ SANDESHA2_IOM_RM_ELEMENT_FROM_OM_NODE(elements_impl->ack_requested, env,
+ header_node);
+ }
return AXIS2_SUCCESS;
}
@@ -304,10 +491,61 @@
const axis2_env_t *env,
axiom_soap_envelope_t *soap_envelope)
{
+ sandesha2_rm_elements_impl_t *rm_elements_impl = NULL;
+ axiom_soap_header_t *soap_header = NULL;
+ axiom_soap_body_t *soap_body = NULL;
+ axiom_node_t *body_node = NULL;
+
+
AXIS2_ENV_CHECK(env, NULL);
AXIS2_PARAM_CHECK(env->error, soap_envelope, NULL);
- return NULL;
+ rm_elements_impl = SANDESHA2_INTF_TO_IMPL(rm_elements);
+ 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(NULL != rm_elements_impl->seq)
+ {
+ SANDESHA2_IOM_RM_ELEMENT_TO_OM_NODE(rm_elements_impl->seq, env,
+ soap_header);
+ }
+ if(NULL != rm_elements_impl->seq_ack)
+ {
+ SANDESHA2_IOM_RM_ELEMENT_TO_OM_NODE(rm_elements_impl->seq_ack, env,
+ soap_header);
+ }
+ if(NULL != rm_elements_impl->create_seq)
+ {
+ SANDESHA2_IOM_RM_ELEMENT_TO_OM_NODE(rm_elements_impl->create_seq, env,
+ body_node);
+ }
+ if(NULL != rm_elements_impl->create_seq_res)
+ {
+ SANDESHA2_IOM_RM_ELEMENT_TO_OM_NODE(rm_elements_impl->create_seq_res,
+ env, body_node);
+ }
+ if(NULL != rm_elements_impl->terminate_seq)
+ {
+ SANDESHA2_IOM_RM_ELEMENT_TO_OM_NODE(rm_elements_impl->terminate_seq,
+ env, body_node);
+ }
+ if(NULL != rm_elements_impl->terminate_seq_res)
+ {
+ SANDESHA2_IOM_RM_ELEMENT_TO_OM_NODE(rm_elements_impl->terminate_seq_res,
+ env, body_node);
+ }
+ if(NULL != rm_elements_impl->close_seq)
+ {
+ SANDESHA2_IOM_RM_ELEMENT_TO_OM_NODE(rm_elements_impl->close_seq,
+ env, body_node);
+ }
+ if(NULL != rm_elements_impl->close_seq_res)
+ {
+ SANDESHA2_IOM_RM_ELEMENT_TO_OM_NODE(rm_elements_impl->close_seq_res,
+ env, body_node);
+ }
+ return soap_envelope;
}
sandesha2_create_seq_t* AXIS2_CALL
@@ -516,4 +754,97 @@
AXIS2_ENV_CHECK(env, NULL);
return SANDESHA2_INTF_TO_IMPL(rm_elements)->addr_ns_val;
+}
+
+axis2_char_t* AXIS2_CALL
+sandesha2_rm_elements_get_rm_ns_val
+ (sandesha2_rm_elements_t *rm_elements,
+ const axis2_env_t *env,
+ axiom_soap_envelope_t *soap_envelope,
+ axis2_char_t *action)
+{
+ axiom_soap_header_t *soap_header = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ AXIS2_PARAM_CHECK(env->error, soap_envelope, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK(env->error, action, AXIS2_FAILURE);
+
+ soap_header = AXIOM_SOAP_ENVELOPE_GET_HEADER(soap_envelope, env);
+ if(NULL != soap_header)
+ {
+ axis2_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(NULL != headers && 0 < AXIS2_ARRAY_LIST_SIZE(headers, env))
+ return SANDESHA2_SPEC_2005_02_NS_URI;
+ headers = AXIOM_SOAP_HEADER_GET_HEADER_BLOCKS_WITH_NAMESPACE_URI(
+ soap_header, env, SANDESHA2_SPEC_2005_10_NS_URI);
+
+ if(NULL != headers && 0 < AXIS2_ARRAY_LIST_SIZE(headers, env))
+ return SANDESHA2_SPEC_2005_10_NS_URI;
+ }
+ if(NULL == action)
+ return NULL;
+
+ if(0 == AXIS2_STRCMP(action, SANDESHA2_SPEC_2005_02_ACTION_CREATE_SEQ))
+ return SANDESHA2_SPEC_2005_02_NS_URI;
+ if(0 == AXIS2_STRCMP(action, SANDESHA2_SPEC_2005_02_ACTION_CREATE_SEQ_RESPONSE))
+ return SANDESHA2_SPEC_2005_02_NS_URI;
+ if(0 == AXIS2_STRCMP(action, SANDESHA2_SPEC_2005_02_ACTION_SEQ_ACKNOWLEDGEMENT))
+ return SANDESHA2_SPEC_2005_02_NS_URI;
+ if(0 == AXIS2_STRCMP(action, SANDESHA2_SPEC_2005_02_ACTION_TERMINATE_SEQ))
+ return SANDESHA2_SPEC_2005_02_NS_URI;
+
+ if(0 == AXIS2_STRCMP(action, SANDESHA2_SPEC_2005_10_ACTION_CREATE_SEQ))
+ return SANDESHA2_SPEC_2005_10_NS_URI;
+ if(0 == AXIS2_STRCMP(action, SANDESHA2_SPEC_2005_10_ACTION_CREATE_SEQ_RESPONSE))
+ return SANDESHA2_SPEC_2005_10_NS_URI;
+ if(0 == AXIS2_STRCMP(action, SANDESHA2_SPEC_2005_10_ACTION_SEQ_ACKNOWLEDGEMENT))
+ return SANDESHA2_SPEC_2005_10_NS_URI;
+ if(0 == AXIS2_STRCMP(action, SANDESHA2_SPEC_2005_10_ACTION_TERMINATE_SEQ))
+ return SANDESHA2_SPEC_2005_10_NS_URI;
+ if(0 == AXIS2_STRCMP(action, SANDESHA2_SPEC_2005_10_ACTION_CLOSE_SEQ))
+ return SANDESHA2_SPEC_2005_10_NS_URI;
+ if(0 == AXIS2_STRCMP(action, SANDESHA2_SPEC_2005_10_ACTION_TERMINATE_SEQ_RESPONSE))
+ return SANDESHA2_SPEC_2005_10_NS_URI;
+ if(0 == AXIS2_STRCMP(action, SANDESHA2_SPEC_2005_10_ACTION_CLOSE_SEQ_RESPONSE))
+ return SANDESHA2_SPEC_2005_10_NS_URI;
+
+ return NULL;
+
+}
+
+axis2_char_t* AXIS2_CALL
+sandesha2_rm_elements_get_addr_ns_val_from_env
+ (sandesha2_rm_elements_t *rm_elements,
+ const axis2_env_t *env,
+ axiom_soap_envelope_t *soap_envelope,
+ axis2_char_t *action)
+{
+ axiom_soap_header_t *soap_header = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ AXIS2_PARAM_CHECK(env->error, soap_envelope, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK(env->error, action, AXIS2_FAILURE);
+
+ soap_header = AXIOM_SOAP_ENVELOPE_GET_HEADER(soap_envelope, env);
+ if(NULL != soap_header)
+ {
+ axis2_array_list_t *headers = NULL;
+
+ headers = AXIOM_SOAP_HEADER_GET_HEADER_BLOCKS_WITH_NAMESPACE_URI(
+ soap_header, env, AXIS2_WSA_NAMESPACE);
+ if(NULL != headers && 0 < AXIS2_ARRAY_LIST_SIZE(headers, env))
+ return AXIS2_WSA_NAMESPACE;
+
+ headers = AXIOM_SOAP_HEADER_GET_HEADER_BLOCKS_WITH_NAMESPACE_URI(
+ soap_header, env, AXIS2_WSA_NAMESPACE_SUBMISSION);
+
+ if(NULL != headers && 0 < AXIS2_ARRAY_LIST_SIZE(headers, env))
+ return AXIS2_WSA_NAMESPACE_SUBMISSION;
+ }
+ return NULL;
+
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org