Author: damitha
Date: Wed Jul 19 04:15:44 2006
New Revision: 423437

URL: http://svn.apache.org/viewvc?rev=423437&view=rev
Log:
New files added and more coding

Added:
    webservices/sandesha/trunk/c/include/sandesha2_msg_creator.h
    webservices/sandesha/trunk/c/include/sandesha2_msg_init.h
    webservices/sandesha/trunk/c/include/sandesha2_rm_elements.h
    webservices/sandesha/trunk/c/src/util/msg_init.c
Modified:
    webservices/sandesha/trunk/c/include/sandesha2/sandesha2_error.h
    webservices/sandesha/trunk/c/include/sandesha2_sender.h
    webservices/sandesha/trunk/c/src/util/Makefile.am
    webservices/sandesha/trunk/c/src/util/error.c
    webservices/sandesha/trunk/c/src/util/msg_creator.c

Modified: webservices/sandesha/trunk/c/include/sandesha2/sandesha2_error.h
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/include/sandesha2/sandesha2_error.h?rev=423437&r1=423436&r2=423437&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/include/sandesha2/sandesha2_error.h (original)
+++ webservices/sandesha/trunk/c/include/sandesha2/sandesha2_error.h Wed Jul 19 
04:15:44 2006
@@ -165,7 +165,14 @@
          * Can't decide the RM version
          */
         SANDESHA2_ERROR_CREATE_SEQ_MSG_DOES_NOT_HAVE_VALID_RM_NS_VALUE,
-        
+
+        /* Application message is NULL */
+        SANDESHA2_ERROR_APPLICATION_MSG_NULL, 
+        /* Configuration Context is NULL */
+        SANDESHA2_ERROR_CONF_CTX_NULL,
+        /* Cannot find the rmVersion of the given message */
+        SANDESHA2_ERROR_CANNOT_FIND_RM_VERSION_OF_GIVEN_MSG,
+
         /** The following has to be the last error value all the time.
             All other error codes should appear above this.
             SANDESHA_ERROR_LAST is used to track the number of error codes 
present

Added: webservices/sandesha/trunk/c/include/sandesha2_msg_creator.h
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/include/sandesha2_msg_creator.h?rev=423437&view=auto
==============================================================================
--- webservices/sandesha/trunk/c/include/sandesha2_msg_creator.h (added)
+++ webservices/sandesha/trunk/c/include/sandesha2_msg_creator.h Wed Jul 19 
04:15:44 2006
@@ -0,0 +1,96 @@
+/*
+ * 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.
+ */
+
+#ifndef SANDESHA2_MSG_CREATOR_H
+#define SANDESHA2_MSG_CREATOR_H
+
+/**
+ * @file sandesha2_msg_creator.h
+ * @brief Sandesha In Memory Message creator Interface
+ */
+
+#include <axis2_allocator.h>
+#include <axis2_env.h>
+#include <axis2_error.h>
+#include <axis2_string.h>
+#include <axis2_utils.h>
+#include <sandesha2_storage_mgr.h>
+#include <sandesha2_msg_ctx.h>
+#include <axis2_msg_ctx.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+typedef struct sandesha2_msg_creator sandesha2_msg_creator_t;
+typedef struct sandesha2_msg_creator_ops sandesha2_msg_creator_ops_t;
+
+/** @defgroup sandesha2_msg_creator In Memory Message creator
+  * @ingroup sandesha2
+  * @{
+  */
+
+/**
+ * Create a new create_seq_msg
+ * @param application_rm_msg
+ * @param internal_seq_id
+ * @param acks_to
+ * @return
+ */
+sandesha2_msg_ctx_t *AXIS2_CALL
+sandesha2_msg_creator_create_create_seq_msg(
+        const axis2_env_t *env,
+        sandesha2_msg_ctx_t *application_rm_msg, 
+        axis2_char_t *internal_seq_id,
+        axis2_char_t *acks_to,
+        sandesha2_storage_mgr_t *storage_mgr);
+
+/**
+ * Create a new create_seq_response message.
+ * @param create_seq_msg
+ * @param out_msg
+ * @param new_seq_id
+ * @return
+ */
+sandesha2_msg_ctx_t *
+sandesha2_msg_creator_create_create_seq_response_msg(
+        const axis2_env_t *env,
+        sandesha2_msg_ctx_t *create_seq_msg,
+        axis2_msg_ctx_t *out_msg,
+        axis2_char_t *new_seq_id,
+        sandesha2_storage_mgr_t *storage_mgr);
+ 
+/**
+ * Create a new close_seq_response message.
+ * @param close_seq_msg
+ * @param out_msg
+ * @param storage_mgr
+ * @return
+ */
+sandesha2_msg_ctx_t *
+sandesha2_msg_creator_create_close_seq_response_msg(
+        const axis2_env_t *env,
+        sandesha2_msg_ctx_t *close_seq_msg,
+        axis2_msg_ctx_t *out_msg,
+        sandesha2_storage_mgr_t *storage_mgr);
+
+
+/** @} */
+#ifdef __cplusplus
+}
+#endif
+#endif /* SANDESHA2_MSG_CREATOR_H */

Added: 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=423437&view=auto
==============================================================================
--- webservices/sandesha/trunk/c/include/sandesha2_msg_init.h (added)
+++ webservices/sandesha/trunk/c/include/sandesha2_msg_init.h Wed Jul 19 
04:15:44 2006
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+
+#ifndef SANDESHA2_MSG_INIT_H
+#define SANDESHA2_MSG_INIT_H
+
+/**
+ * @file sandesha2_msg_init.h
+ * @brief Sandesha Message init Interface
+ *  This class is used to create an RMMessageContext out of an MessageContext.
+ * 
+ */
+
+#include <axis2_allocator.h>
+#include <axis2_env.h>
+#include <axis2_error.h>
+#include <axis2_string.h>
+#include <axis2_utils.h>
+#include <sandesha2_storage_mgr.h>
+#include <sandesha2_msg_ctx.h>
+#include <axis2_msg_ctx.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+typedef struct sandesha2_msg_init sandesha2_msg_init_t;
+typedef struct sandesha2_msg_init_ops sandesha2_msg_init_ops_t;
+
+/** @defgroup sandesha2_msg_init In Memory Message init
+  * @ingroup sandesha2
+  * @{
+  */
+
+
+/** @} */
+#ifdef __cplusplus
+}
+#endif
+#endif /* SANDESHA2_MSG_INIT_H */

Added: webservices/sandesha/trunk/c/include/sandesha2_rm_elements.h
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/include/sandesha2_rm_elements.h?rev=423437&view=auto
==============================================================================
--- webservices/sandesha/trunk/c/include/sandesha2_rm_elements.h (added)
+++ webservices/sandesha/trunk/c/include/sandesha2_rm_elements.h Wed Jul 19 
04:15:44 2006
@@ -0,0 +1,287 @@
+/*
+ * 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.
+ */
+ 
+#ifndef SANDESHA2_RM_ELEMENTS_H
+#define SANDESHA2_RM_ELEMENTS_H
+
+/**
+  * @file sandesha2_rm_elements.h
+  * @brief 
+  */
+
+#include <axis2_utils_defines.h>
+#include <axis2_env.h>
+#include <axiom_envelope.h>
+#include <sandesha2_seq.h>
+#include <sandesha2_seq_ack.h>
+#include <sandesha2_create_seq.h>
+#include <sandesha2_create_seq_res.h>
+#include <sandesha2_terminate_seq.h>
+#include <sandesha2_terminate_seq_res.h>
+#include <sandesha2_close_seq.h>
+#include <sandesha2_close_seq_res.h>
+#include <sandesha2_ack_requested.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/** 
+ * @ingroup sandesha2_rm_elements
+ * @{
+ */
+ 
+ typedef struct sandesha2_rm_elements_ops sandesha2_rm_elements_ops_t;
+ typedef struct sandesha2_rm_elements sandesha2_rm_elements_t;
+ /**
+ * @brief Sandesha2 RM Elements ops struct
+ * Encapsulator struct for ops of sandesha2_rm_elements
+ */
+AXIS2_DECLARE_DATA struct sandesha2_rm_elements_ops
+{
+    axis2_status_t (AXIS2_CALL *
+    free) (
+        void *rm_elements,
+        const axis2_env_t *env);
+
+    axis2_status_t (AXIS2_CALL *
+    from_soap_envelope) (
+        sandesha2_rm_elements_t *rm_elements,
+        const axis2_env_t *env,
+        axiom_soap_envelope_t *envelope,
+        axis2_char_t *action);
+
+    axiom_soap_envelope_t *(AXIS2_CALL *
+    to_soap_envelope) (
+        sandesha2_rm_elements_t *rm_elements,
+        const axis2_env_t *env,
+        axiom_soap_envelope_t *envelope);
+       
+    sandesha2_create_seq_t *(AXIS2_CALL *
+    get_create_seq) (
+        sandesha2_rm_elements_t *rm_elements,
+        const axis2_env_t *env);
+
+    sandesha2_create_seq_res_t *(AXIS2_CALL *
+    get_create_seq_response) (
+        sandesha2_rm_elements_t *rm_elements,
+        const axis2_env_t *env);
+
+    sandesha22_seq_t *(AXIS2_CALL *
+    get_seq) (
+        sandesha2_rm_elements_t *rm_elements,
+        const axis2_env_t *env);
+
+    sandesha2_seq_ack_t *(AXIS2_CALL *
+    get_seq_ack) (
+        sandesha2_rm_elements_t *rm_elements,
+        const axis2_env_t *env);
+
+    sandesha2_terminate_seq_t *(AXIS2_CALL *
+    get_terminate_seq) (
+        sandesha2_rm_elements_t *rm_elements,
+        const axis2_env_t *env);
+
+    sandesha2_terminate_seq_res_t *(AXIS2_CALL *
+    get_terminate_seq_response) (
+        sandesha2_rm_elements_t *rm_elements,
+        const axis2_env_t *env);
+       
+    axis2_status_t (AXIS2_CALL *
+    set_create_seq) (
+        sandesha2_rm_elements_t *rm_elements,
+        const axis2_env_t *env,
+        sandesha2_create_seq_t *create_seq);
+
+    axis2_status_t (AXIS2_CALL *
+    set_create_seq_response) (
+        sandesha2_rm_elements_t *rm_elements,
+        const axis2_env_t *env,
+        sandesha2_create_seq_res_t *create_seq_res);
+
+    axis2_status_t (AXIS2_CALL *
+    set_seq) (
+        sandesha2_rm_elements_t *rm_elements,
+        const axis2_env_t *env,
+        sandesha2_seq_t *seq);
+
+    axis2_status_t (AXIS2_CALL *
+    set_seq_ack) (
+        sandesha2_rm_elements_t *rm_elements,
+        const axis2_env_t *env,
+        sandesha2_seq_ack_t *seq_ack);
+
+    axis2_status_t (AXIS2_CALL *
+    set_terminate_seq) (
+        sandesha2_rm_elements_t *rm_elements,
+        const axis2_env_t *env,
+        sandesha2_terminate_seq_t *terminate_seq);
+
+    axis2_status_t (AXIS2_CALL *
+    set_termiate_seq_response) (
+        sandesha2_rm_elements_t *rm_elements,
+        const axis2_env_t *env,
+        sandesha2_terminate_seq_res_t *terminate_seq_res);
+       
+    sandesha2_ack_requested_t *(AXIS2_CALL *
+    get_ack_requested) (
+        sandesha2_rm_elements_t *rm_elements,
+        const axis2_env_t *env);
+
+    axis2_status_t (AXIS2_CALL *
+    set_ack_requested) (
+        sandesha2_rm_elements_t *rm_elements,
+        const axis2_env_t *env,
+        sandesha2_ack_requested_t *ack_requested);
+
+    sandesha2_close_seq_t *(AXIS2_CALL *
+    get_close_seq) (
+        sandesha2_rm_elements_t *rm_elements,
+        const axis2_env_t *env);
+
+    axis2_status_t (AXIS2_CALL *
+    set_close_seq) (
+        sandesha2_rm_elements_t *rm_elements,
+        const axis2_env_t *env,
+        sandesha2_close_seq_t *close_seq);
+
+    sandesha2_close_seq_res_t *(AXIS2_CALL *
+    get_close_seq_response) (
+        sandesha2_rm_elements_t *rm_elements,
+        const axis2_env_t *env);
+
+    axis2_status_t (AXIS2_CALL *
+    set_close_seq_response) (
+        sandesha2_rm_elements_t *rm_elements,
+        const axis2_env_t *env,
+        sandesha2_close_seq_res_t *close_seq_res);
+
+    axis2_char_t *(AXIS2_CALL *
+    get_addressing_ns_value) (
+        sandesha2_rm_elements_t *rm_elements,
+        const axis2_env_t *env);
+};
+
+/**
+ * @brief sandesha2_rm_elements_ops
+ *    sandesha2_rm_elements_ops
+ */
+AXIS2_DECLARE_DATA struct sandesha2_rm_elements
+{
+    sandesha2_rm_elements_ops_t *ops;
+};
+
+AXIS2_EXTERN sandesha2_rm_elements_t* AXIS2_CALL
+sandesha2_rm_elements_create(
+        const axis2_env_t *env);
+
+/************************** Start of function macros 
**************************/
+#define SANDESHA2_RM_ELEMENTS_FREE(storage_man, env) \
+    (((sandesha2_rm_elements_t *) storage_man)->ops->free (storage_man, env))
+
+#define SANDESHA2_RM_ELEMENTS_FROM_SOAP_ENVELOPE(storage_man, env, envelope, 
env) \
+    (((sandesha2_rm_elements_t *) storage_man)->ops->\
+     from_soap_envelope (storage_man, env, envelope, env))
+
+#define SANDESHA2_RM_ELEMENTS_TO_SOAP_ENVELOPE(storage_man, env, envelope) \
+    (((sandesha2_rm_elements_t *) storage_man)->ops->\
+     to_soap_envelope (storage_man, env, envelope))
+
+#define SANDESHA2_RM_ELEMENTS_GET_CREATE_SEQ(storage_man, env) \
+    (((sandesha2_rm_elements_t *) storage_man)->ops->\
+     get_create_seq (storage_man, env))
+
+#define SANDESHA2_RM_ELEMENTS_GET_CREATE_SEQ_RESPONSE(storage_man, env) \
+    (((sandesha2_rm_elements_t *) storage_man)->ops->\
+     get_create_seq_response (storage_man, env))
+
+#define SANDESHA2_RM_ELEMENTS_GET_SEQ(storage_man, env) \
+    (((sandesha2_rm_elements_t *) storage_man)->ops->\
+     get_seq (storage_man, env))
+
+#define SANDESHA2_RM_ELEMENTS_GET_SEQ_ACK(storage_man, env) \
+    (((sandesha2_rm_elements_t *) storage_man)->ops->\
+     get_seq_ack (storage_man, env))
+
+#define SANDESHA2_RM_ELEMENTS_GET_TERMINATE_SEQ(storage_man, env) \
+    (((sandesha2_rm_elements_t *) storage_man)->ops->\
+     get_terminate_seq (storage_man, env))
+
+#define SANDESHA2_RM_ELEMENTS_GET_TERMINATE_SEQ_RESPONSE(storage_man, env) \
+    (((sandesha2_rm_elements_t *) storage_man)->ops->\
+     get_terminate_seq_response (storage_man, env))
+
+#define SANDESHA2_RM_ELEMENTS_SET_CREATE_SEQ(storage_man, env, create_seq) \
+    (((sandesha2_rm_elements_t *) storage_man)->ops->\
+     set_create_seq (storage_man, env, create_seq))
+
+#define SANDESHA2_RM_ELEMENTS_SET_CREATE_SEQ_RESPONSE(storage_man, env, 
create_seq_res) \
+    (((sandesha2_rm_elements_t *) storage_man)->ops->\
+     set_create_seq_response (storage_man, env, create_seq_res))
+
+#define SANDESHA2_RM_ELEMENTS_SET_SEQ(storage_man, env, seq) \
+    (((sandesha2_rm_elements_t *) storage_man)->ops->\
+     set_seq (storage_man, env, seq))
+
+#define SANDESHA2_RM_ELEMENTS_SET_SEQ_ACK(storage_man, env, seq_ack) \
+    (((sandesha2_rm_elements_t *) storage_man)->ops->\
+     set_seq_ack (storage_man, env, seq_ack))
+
+#define SANDESHA2_RM_ELEMENTS_SET_TERMINATE_SEQ(storage_man, env, 
terminate_seq) \
+    (((sandesha2_rm_elements_t *) storage_man)->ops->\
+     set_terminate_seq (storage_man, env, terminate_seq))
+
+#define SANDESHA2_RM_ELEMENTS_SET_TERMINATE_SEQ_RESPONSE(storage_man, env, 
terminate_seq_ack) \
+    (((sandesha2_rm_elements_t *) storage_man)->ops->\
+     set_terminate_seq_response (storage_man, env, terminate_seq_ack))
+
+#define SANDESHA2_RM_ELEMENTS_GET_ACK_REQUESTED(storage_man, env) \
+    (((sandesha2_rm_elements_t *) storage_man)->ops->\
+     get_ack_requested (storage_man, env))
+
+#define SANDESHA2_RM_ELEMENTS_SET_ACK_REQUESTED(storage_man, env, 
ack_requested) \
+    (((sandesha2_rm_elements_t *) storage_man)->ops->\
+     set_ack_requested (storage_man, env, ack_requested))
+
+#define SANDESHA2_RM_ELEMENTS_GET_CLOSE_SEQ(storage_man, env) \
+    (((sandesha2_rm_elements_t *) storage_man)->ops->\
+     get_close_seq (storage_man, env))
+
+#define SANDESHA2_RM_ELEMENTS_SET_CLOSE_SEQ(storage_man, env, close_seq) \
+    (((sandesha2_rm_elements_t *) storage_man)->ops->\
+     set_close_seq (storage_man, env, close_seq))
+
+#define SANDESHA2_RM_ELEMENTS_GET_CLOSE_SEQ_RESPONSE(storage_man, env) \
+    (((sandesha2_rm_elements_t *) storage_man)->ops->\
+     get_close_seq_response (storage_man, env))
+
+#define SANDESHA2_RM_ELEMENTS_SET_CLOSE_SEQ_RESPONSE(storage_man, env, 
close_seq_res) \
+    (((sandesha2_rm_elements_t *) storage_man)->ops->\
+     set_close_seq_response (storage_man, env, close_seq_res))
+
+#define SANDESHA2_RM_ELEMENTS_GET_ADDRESSING_NS_VALUE(storage_man, env) \
+    (((sandesha2_rm_elements_t *) storage_man)->ops->\
+     get_addressing_ns_value (storage_man, env))
+
+/************************** End of function macros 
****************************/
+
+/** @} */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*SANDESHA2_RM_ELEMENTS_H*/

Modified: webservices/sandesha/trunk/c/include/sandesha2_sender.h
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/include/sandesha2_sender.h?rev=423437&r1=423436&r2=423437&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/include/sandesha2_sender.h (original)
+++ webservices/sandesha/trunk/c/include/sandesha2_sender.h Wed Jul 19 04:15:44 
2006
@@ -75,7 +75,7 @@
             const axis2_env_t *env);
 
     axis2_status_t (AXIS2_CALL *
-    run_sender_for_seq) (
+    run_for_seq) (
             sandesha2_sender_t *sender,
             const axis2_env_t *env,
             axis2_conf_ctx_t *conf_ctx,

Modified: webservices/sandesha/trunk/c/src/util/Makefile.am
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/util/Makefile.am?rev=423437&r1=423436&r2=423437&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/src/util/Makefile.am (original)
+++ webservices/sandesha/trunk/c/src/util/Makefile.am Wed Jul 19 04:15:44 2006
@@ -7,7 +7,8 @@
                             fault_data.c\
                             fault_mgr.c\
                             ack_mgr.c \
-                                                       seq_mgr.c\
+                                                       seq_mgr.c \
+                                                       msg_creator.c \
                             terminate_mgr.c
 
 INCLUDES = -I$(top_builddir)/include \

Modified: webservices/sandesha/trunk/c/src/util/error.c
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/util/error.c?rev=423437&r1=423436&r2=423437&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/src/util/error.c (original)
+++ webservices/sandesha/trunk/c/src/util/error.c Wed Jul 19 04:15:44 2006
@@ -150,10 +150,15 @@
         "AcksTo is NULL";
     
sandesha2_error_messages[SANDESHA2_ERROR_CREATE_SEQ_MSG_DOES_NOT_HAVE_WSA_ACTION_VALUE]
 = 
         "Create sequence message does not have the WSA:Action value";
-    SANDESHA2_ERROR_CREATE_SEQ_MSG_DOES_NOT_HAVE_VALID_RM_NS_VALUE,
+    
sandesha2_error_messages[SANDESHA2_ERROR_CREATE_SEQ_MSG_DOES_NOT_HAVE_VALID_RM_NS_VALUE]=
         "Create sequence message does not has a valid RM namespace value. \
         Can't decide the RM version";
-        
+    sandesha2_error_messages[SANDESHA2_ERROR_APPLICATION_MSG_NULL]=
+        "Application message is NULL";
+    sandesha2_error_messages[SANDESHA2_ERROR_CONF_CTX_NULL]=
+        "Configuration Context is NULL";
+    
sandesha2_error_messages[SANDESHA2_ERROR_CANNOT_FIND_RM_VERSION_OF_GIVEN_MSG]=
+        "Cannot find the rmVersion of the given message";
 
     return AXIS2_SUCCESS;
 }

Modified: webservices/sandesha/trunk/c/src/util/msg_creator.c
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/util/msg_creator.c?rev=423437&r1=423436&r2=423437&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/src/util/msg_creator.c (original)
+++ webservices/sandesha/trunk/c/src/util/msg_creator.c Wed Jul 19 04:15:44 2006
@@ -28,6 +28,7 @@
 #include <sandesha2_address.h>
 #include <sandesha2_seq_offer.h>
 #include <sandesha2_accept.h>
+#include "../client/sandesha2_client_constants.h"
 
 #include <axis2_conf_ctx.h>
 #include <axis2_ctx.h>
@@ -36,6 +37,9 @@
 #include <axis2_log.h>
 #include <axis2_uuid_gen.h>
 #include <axis2_addr.h>
+#include <axiom_soap_envelope.h>
+#include <axiom_soap_body.h>
+#include <axiom_node.h>
 
 /**
  * Create a new create_seq_msg
@@ -94,7 +98,7 @@
         AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_CONF_CTX_NULL, 
AXIS2_FAILURE);
         return NULL;
     }
-    seq_pro_mgr = SANDESHA2_STORAGE_MGR_GET_SEQ_PROPERTY_MGR(storage_mgr, env);
+    seq_prop_mgr = SANDESHA2_STORAGE_MGR_GET_SEQ_PROPERTY_MGR(storage_mgr, 
env);
     /* Creating by copying common contents. (This will not see contexts except
      * for conf_ctx)
      */
@@ -104,7 +108,7 @@
     sandesha2_msg_creator_init_creation(env, application_msg_ctx, 
             create_seq_msg_ctx);
     create_seq_op_ctx = AXIS2_MSG_CTX_GET_OP_CTX(create_seq_msg_ctx, env);
-    create_seq_msg_id = sandesha2_uuid_gen(env);
+    create_seq_msg_id = axis2_uuid_gen(env);
     AXIS2_MSG_CTX_SET_MSG_ID(create_seq_msg_ctx, env, create_seq_msg_id);
     AXIS2_CONF_CTX_REGISTER_OP_CTX(ctx, env, create_seq_msg_id, 
             create_seq_op_ctx);
@@ -118,7 +122,7 @@
         axis2_array_list_t *outflow = NULL;
         axis2_array_list_t *out_fault_flow = NULL;
         axis2_array_list_t *in_fault_flow = NULL;
-        axis2_array_list_t *in_flow = NULL;
+        axis2_array_list_t *inflow = NULL;
 
         outflow = AXIS2_OP_GET_PHASES_OUTFLOW(app_msg_op_desc, env);
         AXIS2_OP_SET_PHASES_OUTFLOW(create_seq_op, env, outflow);
@@ -131,9 +135,9 @@
     }
     AXIS2_MSG_CTX_SET_OP(create_seq_msg_ctx, env, create_seq_op);
     temp_to = SANDESHA2_MSG_CTX_GET_TO(application_rm_msg, env); 
-    AXIS2_MSG_CTX_SET_TO(create_seq_msg_ctx, env, create_seq_op, temp_to);
+    AXIS2_MSG_CTX_SET_TO(create_seq_msg_ctx, env, temp_to);
     temp_reply_to = SANDESHA2_MSG_CTX_GET_REPLY_TO(application_rm_msg, env); 
-    AXIS2_MSG_CTX_SET_REPLY_TO(create_seq_msg_ctx, env, create_seq_op, 
temp_reply_to);
+    AXIS2_MSG_CTX_SET_REPLY_TO(create_seq_msg_ctx, env, temp_reply_to);
     create_seq_rm_msg = sandesha2_msg_ctx_create(env, create_seq_msg_ctx);
     rm_version = sandesha2_utils_get_rm_version(env, internal_seq_id, 
storage_mgr);
     if(rm_version == NULL)
@@ -153,14 +157,16 @@
     {
         axis2_char_t *offered_seq = NULL;
         axis2_property_t *property = NULL;
+        axis2_ctx_t *ctx = NULL;
 
-        property = AXIS2_MSG_CTX_GET_PROPERTY(application_msg_ctx, env, 
+        ctx = AXIS2_MSG_CTX_GET_BASE(application_msg_ctx, env);
+        property = AXIS2_CTX_GET_PROPERTY(ctx, env, 
                 SANDESHA2_CLIENT_OFFERED_SEQ_ID, AXIS2_FALSE);
         offered_seq = AXIS2_PROPERTY_GET_VALUE(property, env);
         if(offered_seq && 0 != AXIS2_STRCMP("", offered_seq))
         {
             sandesha2_seq_offer_t *offer_part = NULL;
-            sandesha2_identifer_t *identifier = NULL;
+            sandesha2_identifier_t *identifier = NULL;
 
             offer_part = sandesha2_seq_offer_create(env, rm_ns_value);
             identifier = sandesha2_identifier_create(env, rm_ns_value);
@@ -205,7 +211,8 @@
             addressing_ns_value);
     SANDESHA2_CREATE_SEQ_SET_ACKS_TO(create_seq_part, env,  temp_acks_to);
     SANDESHA2_MSG_CTX_SET_MSG_PART(create_seq_rm_msg, env, 
-            SANDESHA2_MSG_PART_CREATE_SEQ, create_seq_part);
+            SANDESHA2_MSG_PART_CREATE_SEQ, (sandesha2_iom_rm_part_t *) 
+            create_seq_part);
     SANDESHA2_MSG_CTX_ADD_SOAP_ENVELOPE(create_seq_rm_msg, env);
     temp_action = sandesha2_spec_specific_consts_get_create_seq_action(env, 
             rm_version);
@@ -231,34 +238,33 @@
         sandesha2_msg_ctx_t *create_seq_msg,
         axis2_msg_ctx_t *out_msg,
         axis2_char_t *new_seq_id,
-        axis2_storage_mgr_t *storage_mgr)
+        sandesha2_storage_mgr_t *storage_mgr)
 {
     axis2_conf_ctx_t *conf_ctx = NULL;
     axis2_ctx_t *ctx = NULL;
     axis2_msg_ctx_t *temp_msg_ctx = NULL;
     axis2_property_t *prop = NULL;
-    sandesha2_iom_rm_element_t *msg_part = NULL;
-    sandesha2_create_seq_t *cs = NULL;
     axis2_char_t *rm_version = NULL;
     axis2_char_t *rm_ns_value = NULL;
     axis2_char_t *addressing_ns_value = NULL;
+    axis2_char_t *new_msg_id = NULL;
     axis2_char_t *temp_action = NULL;
-    sandesha2_create_seq_res_t *response = NULL;
-    sandesha2_identifier_t *identifier = NULL;
-    sandesha2_seq_offer_t *offer = NULL;
     axiom_soap_envelope_t *envelope = NULL;
     axiom_soap_envelope_t *temp_envelope = NULL;
     axiom_soap_body_t *temp_soap_body = NULL;
     axiom_node_t *temp_om_node = NULL;
-    axis2_char_t *new_msg_id = NULL;
+    sandesha2_create_seq_res_t *response = NULL;
+    sandesha2_identifier_t *identifier = NULL;
+    sandesha2_seq_offer_t *offer = NULL;
     sandesha2_msg_ctx_t *create_seq_response = NULL;
-    axis2_msg_ctx_t *temp_msg_ctx = NULL;
+    sandesha2_iom_rm_element_t *msg_part = NULL;
+    sandesha2_create_seq_t *cs = NULL;
     int soap_version = -1;
 
     temp_msg_ctx = SANDESHA2_MSG_CTX_GET_MSG_CTX(create_seq_msg, env);
     conf_ctx = AXIS2_MSG_CTX_GET_CONF_CTX(temp_msg_ctx, env);
-    msg_part = SANDESHA2_MSG_CTX_GET_MSG_PART(create_seq_msg, env, 
-            SANDESHA2_MSG_PART_CREATE_SEQ);
+    msg_part = (sandesha2_iom_rm_element_t *) SANDESHA2_MSG_CTX_GET_MSG_PART(
+            create_seq_msg, env, SANDESHA2_MSG_PART_CREATE_SEQ);
     cs = (sandesha2_create_seq_t *) msg_part;
     rm_version = sandesha2_utils_get_rm_version(env, new_seq_id, storage_mgr);
     if(rm_version == NULL)
@@ -271,7 +277,8 @@
     rm_ns_value = sandesha2_spec_specific_consts_get_rm_ns_val(env, 
rm_version);
     addressing_ns_value = sandesha2_utils_get_seq_property(env, new_seq_id, 
             SANDESHA2_SEQ_PROP_ADDRESSING_NAMESPACE_VALUE, storage_mgr);
-    response = sandesha2_create_seq_res(env, rm_ns_value, addressing_ns_value);
+    response = sandesha2_create_seq_res_create(env, rm_ns_value, 
+            addressing_ns_value);
     identifier = sandesha2_identifier_create(env, rm_ns_value);
     SANDESHA2_IDENTIFIER_SET_IDENTIFIER(identifier, env, new_seq_id);
     SANDESHA2_CREATE_SEQ_RES_SET_IDENTIFIER(response, env, identifier);
@@ -287,13 +294,13 @@
         {
             sandesha2_accept_t *accept = NULL;
             axis2_endpoint_ref_t *acks_to_epr = NULL;
-            sandesha2_acks_to = NULL;
+            sandesha2_acks_to_t *acks_to = NULL;
             sandesha2_address_t *address = NULL;
 
             accept = sandesha2_accept_create(env, rm_ns_value, 
addressing_ns_value);
             acks_to_epr = SANDESHA2_MSG_CTX_GET_TO(create_seq_msg, env);
-            acks_to = sandesha2_acks_to_create(env, rm_ns_value, 
addressing_ns_value);
-            address = sandesha2_address_create(env, addressing_ns_value);
+            address = sandesha2_address_create(env, addressing_ns_value, 
acks_to_epr);
+            acks_to = sandesha2_acks_to_create(env, address, rm_ns_value, 
addressing_ns_value);
             SANDESHA2_ADDRESS_SET_EPR(address, env, acks_to_epr);
             SANDESHA2_ACKS2_TO_SET_ADDRESS(acks_to, env, address);
             SANDESHA2_ACCEPT_SET_ACKS_TO(accept, env, acks_to);
@@ -345,7 +352,7 @@
         const axis2_env_t *env,
         sandesha2_msg_ctx_t *close_seq_msg,
         axis2_msg_ctx_t *out_msg,
-        axis2_storage_mgr_t *storage_mgr)
+        sandesha2_storage_mgr_t *storage_mgr)
 {
     axis2_conf_ctx_t *conf_ctx = NULL;
     axis2_ctx_t *ctx = NULL;

Added: webservices/sandesha/trunk/c/src/util/msg_init.c
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/util/msg_init.c?rev=423437&view=auto
==============================================================================
--- webservices/sandesha/trunk/c/src/util/msg_init.c (added)
+++ webservices/sandesha/trunk/c/src/util/msg_init.c Wed Jul 19 04:15:44 2006
@@ -0,0 +1,235 @@
+/*
+ * 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_msg_init.h>
+#include <sandesha2_storage_mgr.h>
+#include <sandesha2_seq_property_mgr.h>
+#include <sandesha2_spec_specific_consts.h>
+#include <sandesha2_utils.h>
+#include <sandesha2_ack_mgr.h>
+#include <sandesha2_constants.h>
+#include <sandesha2_msg_ctx.h>
+#include <sandesha2_create_seq.h>
+#include <sandesha2_create_seq_res.h>
+#include <sandesha2_acks_to.h>
+#include <sandesha2_address.h>
+#include <sandesha2_seq_offer.h>
+#include <sandesha2_accept.h>
+#include "../client/sandesha2_client_constants.h"
+
+#include <axis2_conf_ctx.h>
+#include <axis2_ctx.h>
+#include <axis2_msg_ctx.h>
+#include <axis2_property.h>
+#include <axis2_log.h>
+#include <axis2_uuid_gen.h>
+#include <axis2_addr.h>
+#include <axiom_soap_envelope.h>
+#include <axiom_soap_body.h>
+#include <axiom_node.h>
+
+
+/**
+ * Called to create a rmMessageContext out of an message context. Finds out 
things like rm version and message type
+ * as well.
+ * 
+ * @param ctx
+ * @param assumedRMNamespace
+ * this is used for validation (to find out weather the rmNamespace of the 
current message
+ * is equal to the regietered rmNamespace of the sequence). 
+ * If null validation will not happen.
+ * 
+ * @return
+ * @throws SandeshaException
+ */
+public static RMMsgContext initializeMessage(MessageContext ctx)
+        throws SandeshaException {
+    RMMsgContext rmMsgCtx = new RMMsgContext(ctx);
+    
+    populateRMMsgContext(ctx, rmMsgCtx);
+    validateMessage(rmMsgCtx);
+    return rmMsgCtx;
+}
+
+       /**
+        * Adds the message parts the the RMMessageContext.
+        * 
+        * @param msgCtx
+        * @param rmMsgContext
+        */
+       private static void populateRMMsgContext(MessageContext msgCtx,
+                       RMMsgContext rmMsgContext) throws SandeshaException {
+
+               //if client side and the addressing version is not set. 
assuming the default addressing version
+               String addressingNamespace = (String) 
msgCtx.getProperty(AddressingConstants.WS_ADDRESSING_VERSION);
+               if (addressingNamespace==null && !msgCtx.isServerSide())
+                       addressingNamespace = 
AddressingConstants.Final.WSA_NAMESPACE;
+               
+               RMElements elements = new RMElements(addressingNamespace);
+               elements.fromSOAPEnvelope(msgCtx.getEnvelope(), 
msgCtx.getWSAAction());
+
+               String rmNamespace = null;
+               
+               if (elements.getCreateSequence() != null) {
+                       
rmMsgContext.setMessagePart(Sandesha2Constants.MessageParts.CREATE_SEQ,
+                                       elements.getCreateSequence());
+                       rmNamespace = 
elements.getCreateSequence().getNamespaceValue();
+               }
+
+               if (elements.getCreateSequenceResponse() != null) {
+                       rmMsgContext.setMessagePart(
+                                       
Sandesha2Constants.MessageParts.CREATE_SEQ_RESPONSE, elements
+                                                       
.getCreateSequenceResponse());
+                       rmNamespace = 
elements.getCreateSequenceResponse().getNamespaceValue();
+               }
+
+               if (elements.getSequence() != null) {
+                       
rmMsgContext.setMessagePart(Sandesha2Constants.MessageParts.SEQUENCE,
+                                       elements.getSequence());
+                       rmNamespace = 
elements.getSequence().getNamespaceValue();       
+               }
+
+               if (elements.getSequenceAcknowledgement() != null) {
+                       rmMsgContext.setMessagePart(
+                                       
Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT, elements
+                                                       
.getSequenceAcknowledgement());
+                       rmNamespace = 
elements.getSequenceAcknowledgement().getNamespaceValue();
+               }
+
+               if (elements.getTerminateSequence() != null) {
+                       
rmMsgContext.setMessagePart(Sandesha2Constants.MessageParts.TERMINATE_SEQ,
+                                       elements.getTerminateSequence());
+                       rmNamespace = 
elements.getTerminateSequence().getNamespaceValue();
+               }
+               
+               if (elements.getTerminateSequenceResponse() != null) {
+                       
rmMsgContext.setMessagePart(Sandesha2Constants.MessageParts.TERMINATE_SEQ_RESPONSE,
+                                       
elements.getTerminateSequenceResponse());
+                       rmNamespace = 
elements.getTerminateSequenceResponse().getNamespaceValue();
+               }
+
+               if (elements.getAckRequested() != null) {
+                       
rmMsgContext.setMessagePart(Sandesha2Constants.MessageParts.ACK_REQUEST,
+                                       elements.getAckRequested());
+                       rmNamespace = 
elements.getAckRequested().getNamespaceValue();
+               }
+               
+               if (elements.getCloseSequence() != null) {
+                       
rmMsgContext.setMessagePart(Sandesha2Constants.MessageParts.CLOSE_SEQUENCE,
+                                       elements.getCloseSequence());
+                       rmNamespace = 
elements.getCloseSequence().getNamespaceValue();
+               }
+               
+               if (elements.getCloseSequenceResponse() != null) {
+                       
rmMsgContext.setMessagePart(Sandesha2Constants.MessageParts.CLOSE_SEQUENCE_RESPONSE,
+                                       elements.getCloseSequenceResponse());
+                       rmNamespace = 
elements.getCloseSequenceResponse().getNamespaceValue();
+               }
+               
+               rmMsgContext.setRMNamespaceValue(rmNamespace);
+               
+               String addressingNamespaceValue = 
elements.getAddressingNamespaceValue();
+               if (addressingNamespaceValue!=null)
+                       
rmMsgContext.setAddressingNamespaceValue(addressingNamespaceValue);
+       }
+
+       /**
+        * This is used to validate the message.
+        * Also set an Message type. Possible types are given in the 
Sandesha2Constants.MessageTypes interface.
+        * 
+        * @param rmMsgCtx
+        * @return
+        * @throws SandeshaException
+        */
+       private static boolean validateMessage(RMMsgContext rmMsgCtx)
+                       throws SandeshaException {
+
+               ConfigurationContext configContext = 
rmMsgCtx.getMessageContext().getConfigurationContext();
+               AxisConfiguration axisConfiguration = 
configContext.getAxisConfiguration();
+               StorageManager storageManager = 
SandeshaUtil.getSandeshaStorageManager(configContext,axisConfiguration);
+               SequencePropertyBeanMgr sequencePropertyBeanMgr = 
storageManager.getSequencePropertyBeanMgr();
+               
+               String sequenceID = null;
+               
+               CreateSequence createSequence = (CreateSequence) 
rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.CREATE_SEQ);
+               CreateSequenceResponse createSequenceResponse = 
(CreateSequenceResponse) 
rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.CREATE_SEQ_RESPONSE);
+               TerminateSequence terminateSequence = (TerminateSequence) 
rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.TERMINATE_SEQ);
+               TerminateSequenceResponse terminateSequenceResponse = 
(TerminateSequenceResponse) 
rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.TERMINATE_SEQ_RESPONSE);
+               SequenceAcknowledgement sequenceAcknowledgement = 
(SequenceAcknowledgement) 
rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT);
+               Sequence sequence = (Sequence) 
rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
+               AckRequested ackRequest = (AckRequested) 
rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.ACK_REQUEST);
+               CloseSequence closeSequence = (CloseSequence) 
rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.CLOSE_SEQUENCE);
+               CloseSequenceResponse closeSequenceResponse = 
(CloseSequenceResponse) 
rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.CLOSE_SEQUENCE_RESPONSE);
+               
+               //Setting message type.
+               if (createSequence != null) {
+                       
rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.CREATE_SEQ);
+               }else if (createSequenceResponse != null) {
+                       
rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.CREATE_SEQ_RESPONSE);
+                       sequenceID = 
createSequenceResponse.getIdentifier().getIdentifier();
+               }else if (terminateSequence != null) {
+                       
rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.TERMINATE_SEQ);
+                       sequenceID = 
terminateSequence.getIdentifier().getIdentifier();
+               }else if (terminateSequenceResponse != null) {
+                       
rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.TERMINATE_SEQ_RESPONSE);
+                       sequenceID = 
terminateSequenceResponse.getIdentifier().getIdentifier();
+               }else if 
(rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE) != null) {
+                       
rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.APPLICATION);
+                       sequenceID = sequence.getIdentifier().getIdentifier();
+               } else if (sequenceAcknowledgement != null) {
+                       
rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.ACK);
+                       sequenceID = 
sequenceAcknowledgement.getIdentifier().getIdentifier();
+               } else if (ackRequest != null) {
+                       
rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.ACK_REQUEST);
+                       sequenceID = 
ackRequest.getIdentifier().getIdentifier(); 
+               } else if (closeSequence != null) {
+                       
rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.CLOSE_SEQUENCE);
+                       sequenceID = 
closeSequence.getIdentifier().getIdentifier(); 
+               } else if (closeSequenceResponse != null) {
+                       
rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.CLOSE_SEQUENCE_RESPONSE);
+                       sequenceID = 
closeSequenceResponse.getIdentifier().getIdentifier(); 
+               } else
+                       
rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.UNKNOWN);
+
+               String propertyKey = null;
+               if 
(rmMsgCtx.getMessageContext().getFLOW()==MessageContext.IN_FLOW) {
+                       propertyKey = sequenceID;
+               } else {
+                       SequencePropertyBean internalSequenceIDBean = 
sequencePropertyBeanMgr.retrieve(sequenceID,Sandesha2Constants.SequenceProperties.INTERNAL_SEQUENCE_ID);
+                       if (internalSequenceIDBean!=null) {
+                               propertyKey = internalSequenceIDBean.getValue();
+                       }
+               }
+               
+        String rmNamespace = rmMsgCtx.getRMNamespaceValue();
+        if (sequenceID!=null) {
+               String specVersion = 
SandeshaUtil.getRMVersion(propertyKey,storageManager);
+               
+               String sequenceRMNamespace = null;
+               if (specVersion!=null)
+                       sequenceRMNamespace = 
SpecSpecificConstants.getRMNamespaceValue(specVersion);
+               if (sequenceRMNamespace!=null && rmNamespace!=null) {
+                       if (!sequenceRMNamespace.equals(rmNamespace)) {
+                               throw new SandeshaException ("Given message has 
rmNamespace value, which is different from the " +
+                                               "reqistered namespace for the 
sequence");
+                       }
+               }
+        }
+               
+               return true;
+       }
+
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to