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 da...@apache.org on 2006/07/20 06:52:44 UTC

svn commit: r423763 - in /webservices/sandesha/trunk/c: include/sandesha2/sandesha2_error.h include/sandesha2_rm_elements.h src/util/Makefile.am src/util/error.c src/util/msg_init.c

Author: damitha
Date: Wed Jul 19 21:52:43 2006
New Revision: 423763

URL: http://svn.apache.org/viewvc?rev=423763&view=rev
Log:
More work on msg_init. added more error codes

Modified:
    webservices/sandesha/trunk/c/include/sandesha2/sandesha2_error.h
    webservices/sandesha/trunk/c/include/sandesha2_rm_elements.h
    webservices/sandesha/trunk/c/src/util/Makefile.am
    webservices/sandesha/trunk/c/src/util/error.c
    webservices/sandesha/trunk/c/src/util/msg_init.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=423763&r1=423762&r2=423763&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/include/sandesha2/sandesha2_error.h (original)
+++ webservices/sandesha/trunk/c/include/sandesha2/sandesha2_error.h Wed Jul 19 21:52:43 2006
@@ -172,7 +172,10 @@
         SANDESHA2_ERROR_CONF_CTX_NULL,
         /* Cannot find the rmVersion of the given message */
         SANDESHA2_ERROR_CANNOT_FIND_RM_VERSION_OF_GIVEN_MSG,
-
+        /* Given message has rmNamespace value, which is different from the
+         * reqistered namespace for the sequence
+         */
+        SANDESHA2_ERROR_RM_NS_VALUE_IS_DIFFERENT_FROM_REGISTERED_NS_FOR_SEQ,
         /** 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

Modified: 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=423763&r1=423762&r2=423763&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/include/sandesha2_rm_elements.h (original)
+++ webservices/sandesha/trunk/c/include/sandesha2_rm_elements.h Wed Jul 19 21:52:43 2006
@@ -217,7 +217,7 @@
     ((rm_elements)->ops->set_create_seq_res (rm_elements, env, element))
     
 #define SANDESHA2_RM_ELEMENTS_GET_SEQ(rm_elements, env) \
-    ((rm_elements)->ops->get_sequence (rm_elements, env))
+    ((rm_elements)->ops->get_seq (rm_elements, env))
     
 #define SANDESHA2_RM_ELEMENTS_SET_SEQ(rm_elements, env, element) \
     ((rm_elements)->ops->set_sequence (rm_elements, env, element))
@@ -241,7 +241,7 @@
     ((rm_elements)->ops->set_terminate_seq_res (rm_elements, env, element))
     
 #define SANDESHA2_RM_ELEMENTS_GET_ACK_REQUESTED(rm_elements, env) \
-    ((rm_elements)->ops->get_ack_reqested (rm_elements, env))
+    ((rm_elements)->ops->get_ack_requested (rm_elements, env))
     
 #define SANDESHA2_RM_ELEMENTS_SET_ACK_REQUESTED(rm_elements, env, element) \
     ((rm_elements)->ops->set_ack_reqested (rm_elements, env, element)

Modified: webservices/sandesha/trunk/c/src/util/Makefile.am
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/util/Makefile.am?rev=423763&r1=423762&r2=423763&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/src/util/Makefile.am (original)
+++ webservices/sandesha/trunk/c/src/util/Makefile.am Wed Jul 19 21:52:43 2006
@@ -8,7 +8,8 @@
                             fault_mgr.c\
                             ack_mgr.c \
 							seq_mgr.c \
-                            terminate_mgr.c
+                            terminate_mgr.c \
+							msg_init.c
 
 INCLUDES = -I$(top_builddir)/include \
 			-I$(top_builddir)/include/sandesha2 \

Modified: webservices/sandesha/trunk/c/src/util/error.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/util/error.c?rev=423763&r1=423762&r2=423763&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/src/util/error.c (original)
+++ webservices/sandesha/trunk/c/src/util/error.c Wed Jul 19 21:52:43 2006
@@ -159,7 +159,9 @@
         "Configuration Context is NULL";
     sandesha2_error_messages[SANDESHA2_ERROR_CANNOT_FIND_RM_VERSION_OF_GIVEN_MSG]=
         "Cannot find the rmVersion of the given message";
-
+    sandesha2_error_messages[SANDESHA2_ERROR_RM_NS_VALUE_IS_DIFFERENT_FROM_REGISTERED_NS_FOR_SEQ]=
+        "Given message has rmNamespace value, which is different from the \
+                        reqistered namespace for the sequence";
     return AXIS2_SUCCESS;
 }
 

Modified: 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=423763&r1=423762&r2=423763&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/src/util/msg_init.c (original)
+++ webservices/sandesha/trunk/c/src/util/msg_init.c Wed Jul 19 21:52:43 2006
@@ -22,12 +22,19 @@
 #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 <sandesha2_create_seq.h>
+#include <sandesha2_create_seq_res.h>
+#include <sandesha2_seq.h>
+#include <sandesha2_terminate_seq.h>
+#include <sandesha2_terminate_seq_res.h>
+#include <sandesha2_ack_requested.h>
+#include <sandesha2_close_seq.h>
+#include <sandesha2_close_seq_res.h>
+#include <sandesha2_rm_elements.h>
 #include "../client/sandesha2_client_constants.h"
 
 #include <axis2_conf_ctx.h>
@@ -41,195 +48,346 @@
 #include <axiom_soap_body.h>
 #include <axiom_node.h>
 
+/**
+ * Adds the message parts to the sandesha2_msg_ctx.
+ * 
+ * @param msg_ctx
+ * @param rm_msg_ctx
+ */
+static axis2_status_t
+populate_rm_msg_ctx(
+        const axis2_env_t *env,
+        axis2_msg_ctx_t *msg_ctx,
+        sandesha2_msg_ctx_t *rm_msg_ctx);
+
+/**
+ * This is used to validate the message.
+ * Also set an Message type. Possible types are given in the sandesha2_constants
+ * 
+ * @param rm_msg_ctx
+ * @return
+ */
+static axis2_bool_t validate_msg(
+        const axis2_env_t *env,
+        sandesha2_msg_ctx_t *rm_msg_ctx);
 
 /**
- * Called to create a rmMessageContext out of an message context. Finds out things like rm version and message type
- * as well.
+ * Called to create a rm_msg_ctx 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.
+ * @param assumed_rm_ns
+ * this is used for validation (to find out weather the rm_ns of the current 
+ * message is equal to the regietered rm_ns 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);
+sandesha2_msg_ctx_t *
+sandesha2_msg_init_init_msg(
+        const axis2_env_t *env,
+        axis2_msg_ctx_t *ctx)
+{
+    sandesha2_msg_ctx_t *rm_msg_ctx = NULL;
+
+    rm_msg_ctx = sandesha2_msg_ctx_create(env, ctx);
+    populate_rm_msg_ctx(env, ctx, rm_msg_ctx);
+    validate_msg(env, rm_msg_ctx);
+    return rm_msg_ctx;
+}
+
+static axis2_status_t
+populate_rm_msg_ctx(
+        const axis2_env_t *env,
+        axis2_msg_ctx_t *msg_ctx,
+        sandesha2_msg_ctx_t *rm_msg_ctx)
+{
+    axis2_char_t *addressing_ns = NULL;
+    axis2_char_t *addressing_ns_value = NULL;
+    axis2_char_t *rm_ns = NULL;
+    axis2_char_t *action = NULL;
+    axis2_property_t *prop = NULL;
+    axiom_soap_envelope_t *envelope = NULL;
+    sandesha2_rm_elements_t *elements = NULL;
+    sandesha2_create_seq_t *create_seq = NULL;
+    sandesha2_create_seq_res_t *create_seq_res = NULL;
+    sandesha2_seq_t *seq = NULL;
+    sandesha2_seq_ack_t *seq_ack = NULL;
+    sandesha2_terminate_seq_t *terminate_seq = NULL;
+    sandesha2_terminate_seq_res_t *terminate_seq_res = NULL;
+    sandesha2_ack_requested_t *ack_request = NULL;
+    sandesha2_close_seq_t *close_seq = NULL;
+    sandesha2_close_seq_res_t *close_seq_res = NULL;
     
-    populateRMMsgContext(ctx, rmMsgCtx);
-    validateMessage(rmMsgCtx);
-    return rmMsgCtx;
+    /* If client side and the addressing version is not set. 
+     * Assuming the default addressing version.
+     */
+    prop = AXIS2_CTX_GET_PROPERTY(msg_ctx, env, AXIS2_WSA_VERSION, AXIS2_FALSE);
+    addressing_ns = (axis2_char_t *) AXIS2_PROPERTY_GET_VALUE(prop, env);
+    if(addressing_ns == NULL && AXIS2_TRUE != AXIS2_MSG_CTX_IS_SERVER_SIDE(msg_ctx, env))
+    {
+        addressing_ns = AXIS2_STRDUP(AXIS2_WSA_NAMESPACE, env);
+    }
+    elements = sandesha2_rm_elements_create(env, addressing_ns);
+    envelope = AXIS2_MSG_CTX_GET_SOAP_ENVELOPE(msg_ctx, env);
+    action = AXIS2_MSG_CTX_GET_WSA_ACTION(msg_ctx, env);
+    SANDESHA2_RM_ELEMENTS_FROM_SOAP_ENVELOPE(elements, env, envelope, action);
+    create_seq = SANDESHA2_RM_ELEMENTS_GET_CREATE_SEQ(elements, env);
+    if(create_seq)
+    {
+        SANDESHA2_MSG_CTX_SET_MSG_PART(rm_msg_ctx, env, 
+                SANDESHA2_MSG_PART_CREATE_SEQ, (sandesha2_iom_rm_part_t *) 
+                create_seq);
+        rm_ns = SANDESHA2_IOM_RM_ELEMENT_GET_NAMESPACE_VALUE(
+                (sandesha2_iom_rm_element_t *) create_seq, env);
+    }
+    create_seq_res = SANDESHA2_RM_ELEMENTS_GET_CREATE_SEQ_RES(elements, env);
+    if(create_seq_res)
+    {
+        SANDESHA2_MSG_CTX_SET_MSG_PART(rm_msg_ctx, env, 
+                SANDESHA2_MSG_PART_CREATE_SEQ_RESPONSE, 
+                (sandesha2_iom_rm_part_t *) create_seq_res);
+        rm_ns = SANDESHA2_IOM_RM_ELEMENT_GET_NAMESPACE_VALUE(
+                (sandesha2_iom_rm_element_t *) create_seq_res, env);
+    }
+    seq = SANDESHA2_RM_ELEMENTS_GET_SEQ(elements, env);
+    if(seq)
+    {
+        SANDESHA2_MSG_CTX_SET_MSG_PART(rm_msg_ctx, env, 
+                SANDESHA2_MSG_PART_SEQ, (sandesha2_iom_rm_part_t *) seq);
+        rm_ns = SANDESHA2_IOM_RM_ELEMENT_GET_NAMESPACE_VALUE(
+                (sandesha2_iom_rm_element_t *) seq, env);
+    }
+    seq_ack = SANDESHA2_RM_ELEMENTS_GET_SEQ_ACK(elements, env);
+    if(seq_ack)
+    {
+        SANDESHA2_MSG_CTX_SET_MSG_PART(rm_msg_ctx, env, 
+                SANDESHA2_MSG_PART_SEQ_ACKNOWLEDGEMENT, 
+                (sandesha2_iom_rm_part_t *) seq_ack);
+        rm_ns = SANDESHA2_IOM_RM_ELEMENT_GET_NAMESPACE_VALUE(
+                (sandesha2_iom_rm_element_t *) seq_ack, env);
+    }
+    terminate_seq = SANDESHA2_RM_ELEMENTS_GET_TERMINATE_SEQ(elements, env);
+    if(terminate_seq)
+    {
+        SANDESHA2_MSG_CTX_SET_MSG_PART(rm_msg_ctx, env, 
+                SANDESHA2_MSG_PART_TERMINATE_SEQ, 
+                (sandesha2_iom_rm_part_t *) terminate_seq);
+        rm_ns = SANDESHA2_IOM_RM_ELEMENT_GET_NAMESPACE_VALUE(
+                (sandesha2_iom_rm_element_t *) terminate_seq, env);
+    }
+    terminate_seq_res = SANDESHA2_RM_ELEMENTS_GET_TERMINATE_SEQ_RES(elements, env);
+    if(terminate_seq_res)
+    {
+        SANDESHA2_MSG_CTX_SET_MSG_PART(rm_msg_ctx, env, 
+                SANDESHA2_MSG_PART_TERMINATE_SEQ_RESPONSE, 
+                (sandesha2_iom_rm_part_t *) terminate_seq_res);
+        rm_ns = SANDESHA2_IOM_RM_ELEMENT_GET_NAMESPACE_VALUE(
+                (sandesha2_iom_rm_element_t *) terminate_seq_res, env);
+    }
+    ack_request = SANDESHA2_RM_ELEMENTS_GET_ACK_REQUESTED(elements, env);
+    if(ack_request)
+    {
+        SANDESHA2_MSG_CTX_SET_MSG_PART(rm_msg_ctx, env, 
+                SANDESHA2_MSG_PART_ACK_REQUEST, 
+                (sandesha2_iom_rm_part_t *) ack_request);
+        rm_ns = SANDESHA2_IOM_RM_ELEMENT_GET_NAMESPACE_VALUE(
+                (sandesha2_iom_rm_element_t *) ack_request, env);
+    }
+    close_seq = SANDESHA2_RM_ELEMENTS_GET_CLOSE_SEQ(elements, env);
+    if(close_seq)
+    {
+        SANDESHA2_MSG_CTX_SET_MSG_PART(rm_msg_ctx, env, 
+                SANDESHA2_MSG_PART_CLOSE_SEQ, 
+                (sandesha2_iom_rm_part_t *) close_seq);
+        rm_ns = SANDESHA2_IOM_RM_ELEMENT_GET_NAMESPACE_VALUE(
+                (sandesha2_iom_rm_element_t *) close_seq, env);
+    }
+    close_seq_res = SANDESHA2_RM_ELEMENTS_GET_CLOSE_SEQ_RES(elements, env);
+    if(close_seq_res)
+    {
+        SANDESHA2_MSG_CTX_SET_MSG_PART(rm_msg_ctx, env, 
+                SANDESHA2_MSG_PART_CLOSE_SEQ_RESPONSE, 
+                (sandesha2_iom_rm_part_t *) close_seq_res);
+        rm_ns = SANDESHA2_IOM_RM_ELEMENT_GET_NAMESPACE_VALUE(
+                (sandesha2_iom_rm_element_t *) close_seq_res, env);
+    }
+    SANDESHA2_MSG_CTX_SET_RM_NS_VALUE(rm_msg_ctx, env, rm_ns);
+    addressing_ns_value = SANDESHA2_RM_ELEMENTS_GET_ADDR_NS_VAL(
+            elements, env);
+    if(addressing_ns_value)
+    {
+        SANDESHA2_RM_ELEMENTS_SET_ADDRESSING_NS_VALUE(elements, env, 
+                addressing_ns_value);
+    }
+    return AXIS2_SUCCESS;
 }
 
-	/**
-	 * 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");
-    			}
-    		}
+static axis2_bool_t validate_msg(
+        const axis2_env_t *env,
+        sandesha2_msg_ctx_t *rm_msg_ctx)
+{
+    axis2_conf_ctx_t *conf_ctx = NULL;
+    axis2_conf_t *conf = NULL;
+    axis2_msg_ctx_t *temp_msg_ctx = NULL;
+    axis2_char_t *seq_id = NULL;
+    axis2_char_t *rm_ns = NULL;
+    axis2_char_t *prop_key = NULL;
+    sandesha2_storage_mgr_t *storage_mgr = NULL;
+    sandesha2_seq_property_mgr_t *seq_prop_mgr = NULL;
+    sandesha2_create_seq_t *create_seq = NULL;
+    sandesha2_create_seq_res_t *create_seq_res = NULL;
+    sandesha2_terminate_seq_t *terminate_seq = NULL;
+    sandesha2_terminate_seq_res_t *terminate_seq_res = NULL;
+    sandesha2_seq_ack_t *seq_ack = NULL;
+    sandesha2_seq_t *seq = NULL;
+    sandesha2_ack_requested_t *ack_request = NULL;
+    sandesha2_close_seq_t *close_seq = NULL;
+    sandesha2_close_seq_res_t *close_seq_res = NULL;
+    int temp_flow = -1;
+
+    temp_msg_ctx = SANDESHA2_MSG_CTX_GET_MSG_CTX(rm_msg_ctx, env);
+    conf_ctx = AXIS2_MSG_CTX_GET_CONF_CTX(temp_msg_ctx, env);
+    conf = AXIS2_CONF_CTX_GET_CONF(conf_ctx, env);
+    storage_mgr = sandesha2_utils_get_storage_mgr(env, conf_ctx, conf);
+    seq_prop_mgr = SANDESHA2_STORAGE_MGR_GET_SEQ_PROPERTY_MGR(storage_mgr, env);
+    create_seq = (sandesha2_create_seq_t *) SANDESHA2_MSG_CTX_GET_MSG_PART(
+            rm_msg_ctx, env, SANDESHA2_MSG_PART_CREATE_SEQ);
+    create_seq_res = (sandesha2_create_seq_res_t *) 
+        SANDESHA2_MSG_CTX_GET_MSG_PART(rm_msg_ctx, env, 
+                SANDESHA2_MSG_PART_CREATE_SEQ_RESPONSE);
+    terminate_seq = (sandesha2_terminate_seq_t *) 
+        SANDESHA2_MSG_CTX_GET_MSG_PART(rm_msg_ctx, env, 
+                SANDESHA2_MSG_PART_TERMINATE_SEQ);
+    terminate_seq_res = (sandesha2_terminate_seq_res_t *) 
+        SANDESHA2_MSG_CTX_GET_MSG_PART(rm_msg_ctx, env, 
+                SANDESHA2_MSG_PART_TERMINATE_SEQ_RESPONSE);
+    seq_ack = (sandesha2_seq_ack_t *) 
+        SANDESHA2_MSG_CTX_GET_MSG_PART(rm_msg_ctx, env, 
+                SANDESHA2_MSG_PART_SEQ_ACKNOWLEDGEMENT);
+    seq = (sandesha2_seq_t *) SANDESHA2_MSG_CTX_GET_MSG_PART(
+            rm_msg_ctx, env, SANDESHA2_MSG_PART_SEQ);
+    ack_request = (sandesha2_ack_requested_t *) 
+        SANDESHA2_MSG_CTX_GET_MSG_PART(rm_msg_ctx, env, 
+                SANDESHA2_MSG_PART_ACK_REQUEST);
+    close_seq = (sandesha2_close_seq_t *) SANDESHA2_MSG_CTX_GET_MSG_PART(
+            rm_msg_ctx, env, SANDESHA2_MSG_PART_CLOSE_SEQ);
+    close_seq_res = (sandesha2_close_seq_res_t *) SANDESHA2_MSG_CTX_GET_MSG_PART(
+            rm_msg_ctx, env, SANDESHA2_MSG_PART_CLOSE_SEQ_RESPONSE);
+    /* Setting message type */
+    if(create_seq)
+    {
+        SANDESHA2_MSG_CTX_SET_MSG_TYPE(rm_msg_ctx, env, 
+                SANDESHA2_MSG_TYPE_CREATE_SEQ);
+    }
+    else if(create_seq_res)
+    {
+        sandesha2_identifier_t *idf = NULL;
+        SANDESHA2_MSG_CTX_SET_MSG_TYPE(rm_msg_ctx, env, 
+                SANDESHA2_MSG_TYPE_CREATE_SEQ_RESPONSE);
+        idf = SANDESHA2_CREATE_SEQ_RES_GET_IDENTIFIER(create_seq_res, env);
+        seq_id = SANDESHA2_IDENTIFIER_GET_IDENTIFIER(idf, env);
+    }
+    else if(terminate_seq)
+    {
+        sandesha2_identifier_t *idf = NULL;
+        SANDESHA2_MSG_CTX_SET_MSG_TYPE(rm_msg_ctx, env, 
+                SANDESHA2_MSG_TYPE_TERMINATE_SEQ);
+        idf = SANDESHA2_TERMINATE_SEQ_GET_IDENTIFIER(terminate_seq, env);
+        seq_id = SANDESHA2_IDENTIFIER_GET_IDENTIFIER(idf, env);
+    }
+    else if(terminate_seq_res)
+    {
+        sandesha2_identifier_t *idf = NULL;
+        SANDESHA2_MSG_CTX_SET_MSG_TYPE(rm_msg_ctx, env, 
+                SANDESHA2_MSG_TYPE_TERMINATE_SEQ_RESPONSE);
+        idf = SANDESHA2_TERMINATE_SEQ_RES_GET_IDENTIFIER(terminate_seq_res, env);
+        seq_id = SANDESHA2_IDENTIFIER_GET_IDENTIFIER(idf, env);
+    }
+    else if(seq)
+    {
+        sandesha2_identifier_t *idf = NULL;
+        SANDESHA2_MSG_CTX_SET_MSG_TYPE(rm_msg_ctx, env, 
+                SANDESHA2_MSG_TYPE_APPLICATION);
+        idf = SANDESHA2_SEQ_GET_IDENTIFIER(seq, env);
+        seq_id = SANDESHA2_IDENTIFIER_GET_IDENTIFIER(idf, env);
+    }
+    else if(seq_ack)
+    {
+        sandesha2_identifier_t *idf = NULL;
+        SANDESHA2_MSG_CTX_SET_MSG_TYPE(rm_msg_ctx, env, 
+                SANDESHA2_MSG_TYPE_ACK);
+        idf = SANDESHA2_SEQ_ACK_GET_IDENTIFIER(seq_ack, env);
+        seq_id = SANDESHA2_IDENTIFIER_GET_IDENTIFIER(idf, env);
+    }
+    else if(ack_request)
+    {
+        sandesha2_identifier_t *idf = NULL;
+        SANDESHA2_MSG_CTX_SET_MSG_TYPE(rm_msg_ctx, env, 
+                SANDESHA2_MSG_TYPE_ACK_REQUEST);
+        idf = SANDESHA2_ACK_REQUESTED_GET_IDENTIFIER(ack_request, env);
+        seq_id = SANDESHA2_IDENTIFIER_GET_IDENTIFIER(idf, env);
+    }
+    else if(close_seq)
+    {
+        sandesha2_identifier_t *idf = NULL;
+        SANDESHA2_MSG_CTX_SET_MSG_TYPE(rm_msg_ctx, env, 
+                SANDESHA2_MSG_TYPE_CLOSE_SEQ);
+        idf = SANDESHA2_CLOSE_SEQ_GET_IDENTIFIER(close_seq, env);
+        seq_id = SANDESHA2_IDENTIFIER_GET_IDENTIFIER(idf, env);
+    }
+    else if(close_seq_res)
+    {
+        sandesha2_identifier_t *idf = NULL;
+        SANDESHA2_MSG_CTX_SET_MSG_TYPE(rm_msg_ctx, env, 
+                SANDESHA2_MSG_TYPE_CLOSE_SEQ_RESPONSE);
+        idf = SANDESHA2_CLOSE_SEQ_RES_GET_IDENTIFIER(close_seq_res, env);
+        seq_id = SANDESHA2_IDENTIFIER_GET_IDENTIFIER(idf, env);
+    }
+    else
+    {
+        SANDESHA2_MSG_CTX_SET_MSG_TYPE(rm_msg_ctx, env, SANDESHA2_MSG_TYPE_UNKNOWN);
+    }
+    temp_flow = AXIS2_MSG_CTX_GET_FLOW(temp_msg_ctx, env);
+    if(temp_flow == AXIS2_IN_FLOW)
+    {
+        prop_key = AXIS2_STRDUP(seq_id, env);
+    }
+    else
+    {
+        sandesha2_seq_property_bean_t *internal_seq_id_bean = NULL;
+
+        internal_seq_id_bean = SANDESHA2_SEQ_PROPERTY_MGR_RETRIEVE(seq_prop_mgr, 
+                env, seq_id, SANDESHA2_SEQ_PROP_INTERNAL_SEQ_ID);
+        if(internal_seq_id_bean)
+        {
+            prop_key = SANDESHA2_SEQ_PROPERTY_BEAN_GET_VALUE(
+                    internal_seq_id_bean, env);
         }
-		
-		return true;
-	}
-
+    }
+    rm_ns = SANDESHA2_MSG_CTX_GET_RM_NS_VAL(rm_msg_ctx, env);
+    if(seq_id)
+    {
+        axis2_char_t *spec_version = NULL;
+        axis2_char_t *seq_rm_ns = NULL;
+        
+        spec_version = sandesha2_utils_get_rm_version(env, prop_key, storage_mgr);
+        if(spec_version)
+        {
+            seq_rm_ns = sandesha2_spec_specific_consts_get_rm_ns_val(env, 
+                    spec_version);
+        }
+        if(seq_rm_ns && rm_ns)
+        {
+            if(0 != AXIS2_STRCMP(seq_rm_ns, rm_ns))
+            {
+                AXIS2_ERROR_SET(env->error, 
+                    SANDESHA2_ERROR_RM_NS_VALUE_IS_DIFFERENT_FROM_REGISTERED_NS_FOR_SEQ, 
+                    AXIS2_FAILURE);
+                return AXIS2_FALSE;
+            }
+        }
+    }
+    return AXIS2_TRUE; 
 }
+    



---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org