[prev in list] [next in list] [prev in thread] [next in thread] 

List:       sandesha-dev
Subject:    svn commit: r292160 - in /webservices/sandesha/trunk: samples/interop/
From:       chamikara () apache ! org
Date:       2005-09-28 10:48:17
Message-ID: 20050928104819.89862.qmail () minotaur ! apache ! org
[Download RAW message or body]

Author: chamikara
Date: Wed Sep 28 03:47:35 2005
New Revision: 292160

URL: http://svn.apache.org/viewcvs?rev=292160&view=rev
Log:
Previously since the acks were set at the SandeshaOutHandler it didnt work when the \
msgReceiver was InOnly. Fixed this by setting the ack in the SandeshaInHandler. In \
handler sents the ack message and call engine.send ().

Modified:
    webservices/sandesha/trunk/samples/interop/services.xml
    webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgCreator.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/Sender.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/ServerOutHandler.java
  webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
  webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AcknowledgementRange.java
  webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/RMElements.java

Modified: webservices/sandesha/trunk/samples/interop/services.xml
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/samples/interop/services.xml?rev=292160&r1=292159&r2=292160&view=diff
 ==============================================================================
--- webservices/sandesha/trunk/samples/interop/services.xml (original)
+++ webservices/sandesha/trunk/samples/interop/services.xml Wed Sep 28 03:47:35 2005
@@ -8,7 +8,7 @@
     <module ref="sandesha" />
 
     <operation name="ping">  
-        <messageReceiver \
class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver" /> +        \
<messageReceiver class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver" />  \
</operation>  
     <operation name="echoString">

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgCreator.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgCreator.java?rev=292160&r1=292159&r2=292160&view=diff
 ==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgCreator.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgCreator.java Wed Sep 28 \
03:47:35 2005 @@ -24,6 +24,7 @@
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.addressing.MessageInformationHeaders;
 import org.apache.axis2.addressing.om.AddressingHeaders;
+import org.apache.axis2.clientapi.Call;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.OperationContext;
@@ -62,23 +63,56 @@
 
 	public static RMMsgContext createCreateSeqMsg(RMMsgContext applicationRMMsg)
 			throws SandeshaException {
-		ConfigurationContext context = applicationRMMsg.getMessageContext()
-				.getSystemContext();
+		MessageContext applicationMsgContext = applicationRMMsg
+				.getMessageContext();
+		if (applicationMsgContext == null)
+			throw new SandeshaException("Application message is null");
+		ConfigurationContext context = applicationMsgContext.getSystemContext();
 		if (context == null)
 			throw new SandeshaException("Configuration Context is null");
 
-		MessageContext msgContext;
+		MessageContext createSeqmsgContext;
 		try {
-			msgContext = new MessageContext(context, applicationRMMsg
-					.getMessageContext().getTransportIn(), applicationRMMsg
-					.getMessageContext().getTransportOut());
-		} catch (AxisFault e) {
+			//creating by copying common contents. (this will not set contexts
+			// except for configCtx).
+			createSeqmsgContext = SandeshaUtil
+					.shallowCopy(applicationMsgContext);
+		} catch (SandeshaException e) {
 			throw new SandeshaException(e.getMessage());
 		}
-		msgContext.setTo(applicationRMMsg.getTo());
-		msgContext.setReplyTo(applicationRMMsg.getReplyTo());
 
-		RMMsgContext createSeqRMMsg = new RMMsgContext(msgContext);
+		//setting contexts
+		createSeqmsgContext.setServiceGroupContext(applicationMsgContext
+				.getServiceGroupContext());
+		createSeqmsgContext.setServiceGroupContextId(applicationMsgContext
+				.getServiceGroupContextId());
+		createSeqmsgContext.setServiceContext(applicationMsgContext
+				.getServiceContext());
+		createSeqmsgContext.setServiceContextID(applicationMsgContext
+				.getServiceContextID());
+
+		try {
+			//TODO set a suitable ope. description
+			OperationContext createSeqOpContext = new OperationContext(
+					applicationMsgContext.getOperationDescription());
+			createSeqmsgContext.setOperationContext(createSeqOpContext);
+			createSeqOpContext.addMessageContext(createSeqmsgContext);
+
+			//Setting a new SOAP Envelop.
+			SOAPEnvelope envelope = SOAPAbstractFactory.getSOAPFactory(
+					Constants.DEFAULT_SOAP_VERSION).getDefaultEnvelope();
+
+			createSeqmsgContext.setEnvelope(envelope);
+			createSeqOpContext.addMessageContext(createSeqmsgContext);
+			createSeqmsgContext.setOperationContext(createSeqOpContext);
+		} catch (AxisFault e2) {
+			throw new SandeshaException(e2.getMessage());
+		}
+
+		createSeqmsgContext.setTo(applicationRMMsg.getTo());
+		createSeqmsgContext.setReplyTo(applicationRMMsg.getReplyTo());
+
+		RMMsgContext createSeqRMMsg = new RMMsgContext(createSeqmsgContext);
 
 		CreateSequence createSequencePart = new CreateSequence();
 
@@ -171,8 +205,8 @@
 	}
 
 	//Adds a ack message to the following message.
-	public static void addAckMessage(RMMsgContext applicationMsg)
-			throws SandeshaException {
+	public static void addAckMessage(RMMsgContext applicationMsg,
+			String sequenceId) throws SandeshaException {
 		SOAPEnvelope envelope = applicationMsg.getSOAPEnvelope();
 		if (envelope == null) {
 			SOAPEnvelope newEnvelope = SOAPAbstractFactory.getSOAPFactory(
@@ -181,30 +215,22 @@
 		}
 		envelope = applicationMsg.getSOAPEnvelope();
 
-		MessageContext requestMessage = null;
-
-		try {
-			requestMessage = applicationMsg.getMessageContext()
-					.getOperationContext().getMessageContext(
-							WSDLConstants.MESSAGE_LABEL_IN);
-		} catch (AxisFault e) {
-			throw new SandeshaException(e.getMessage());
-		}
-
-		if (requestMessage == null)
-			throw new SandeshaException("Request message is null");
-
-		RMMsgContext reqRMMsgCtx = null;
-
-		reqRMMsgCtx = MsgInitializer.initializeMessage(requestMessage);
-
-		Sequence reqSequence = (Sequence) reqRMMsgCtx
-				.getMessagePart(Constants.MESSAGE_PART_SEQUENCE);
-		if (reqSequence == null)
-			throw new SandeshaException(
-					"Sequence part of application message is null");
-
-		String sequenceId = reqSequence.getIdentifier().getIdentifier();
+//		MessageContext requestMessage = null;
+//
+//		try {
+//			requestMessage = applicationMsg.getMessageContext()
+//					.getOperationContext().getMessageContext(
+//							WSDLConstants.MESSAGE_LABEL_IN);
+//		} catch (AxisFault e) {
+//			throw new SandeshaException(e.getMessage());
+//		}
+//
+//		if (requestMessage == null)
+//			throw new SandeshaException("Request message is null");
+//
+//		RMMsgContext reqRMMsgCtx = null;
+//
+//		reqRMMsgCtx = MsgInitializer.initializeMessage(requestMessage);
 
 		SequenceAcknowledgement sequenceAck = new SequenceAcknowledgement();
 		Identifier id = new Identifier();
@@ -243,13 +269,13 @@
 
 	}
 
-	public static RMMsgContext createAckMessage(RMMsgContext applicationMsg)
+	public static RMMsgContext createAckMessage(RMMsgContext applicationRMMsgCtx)
 			throws SandeshaException {
 		try {
-			MessageContext applicationMsgCtx = applicationMsg
+			MessageContext applicationMsgCtx = applicationRMMsgCtx
 					.getMessageContext();
 			MessageContext ackMsgCtx = SandeshaUtil
-					.copyMessageContext(applicationMsgCtx);
+					.shallowCopy(applicationMsgCtx);
 			ackMsgCtx.setServiceGroupContext(applicationMsgCtx
 					.getServiceGroupContext());
 			ackMsgCtx.setServiceGroupContextId(applicationMsgCtx
@@ -257,21 +283,34 @@
 			ackMsgCtx.setServiceContext(applicationMsgCtx.getServiceContext());
 			ackMsgCtx.setServiceContextID(applicationMsgCtx
 					.getServiceContextID());
+
 			RMMsgContext ackRMMsgCtx = new RMMsgContext(ackMsgCtx);
 
-			OperationContext ackOpCtx = new OperationContext(ackMsgCtx
+			//TODO set a suitable description
+			OperationContext ackOpCtx = new OperationContext(applicationMsgCtx
 					.getOperationDescription());
-			MessageContext requestAppMsg = applicationMsgCtx
-					.getOperationContext().getMessageContext(
-							WSDLConstants.MESSAGE_LABEL_IN);
-			
-			//added request applicatin message as the request message for the newly created \
ack. +
+			//			//TODO set a suitable request msg (if required)
+			//			MessageContext requestAppMsg = applicationMsgCtx
+			//					.getOperationContext().getMessageContext(
+			//							WSDLConstants.MESSAGE_LABEL_IN);
+
+			//added request applicatin message as the request message for the
+			// newly created ack.
 			//this helps to tread addAck and createAck cases equally.
-			ackOpCtx.addMessageContext(requestAppMsg);
+			//ackOpCtx.addMessageContext(requestAppMsg);
 			ackMsgCtx.setOperationContext(ackOpCtx);
 			ackOpCtx.addMessageContext(ackMsgCtx);
 
-			addAckMessage(ackRMMsgCtx);
+			Sequence reqSequence = (Sequence) applicationRMMsgCtx
+					.getMessagePart(Constants.MESSAGE_PART_SEQUENCE);
+			if (reqSequence == null)
+				throw new SandeshaException(
+						"Sequence part of application message is null");
+
+			String sequenceId = reqSequence.getIdentifier().getIdentifier();
+
+			addAckMessage(ackRMMsgCtx, sequenceId);
 			return ackRMMsgCtx;
 		} catch (AxisFault e) {
 			throw new SandeshaException(e.getMessage());

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/Sender.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/Sender.java?rev=292160&r1=292159&r2=292160&view=diff
 ==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/Sender.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/Sender.java Wed Sep 28 \
03:47:35 2005 @@ -19,6 +19,11 @@
 import java.util.Collection;
 import java.util.Iterator;
 
+import javax.xml.stream.FactoryConfigurationError;
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.context.AbstractContext;
 import org.apache.axis2.context.ConfigurationContext;
@@ -45,6 +50,7 @@
 	public void run () {
 		
 		while (senderStarted) {
+			System.out.println ("|-|");
 			try {
 				if (context==null)
 					throw new SandeshaException ("Can't continue the Sender. Context is null");
@@ -60,11 +66,25 @@
 				 RetransmitterBean bean = (RetransmitterBean) iter.next();
 				 String key = (String) bean.getKey();
 				 MessageContext msgCtx = SandeshaUtil.getStoredMessageContext(key);
+				 
 				 try {
+					System.out.println ("SERIALIZATION BEFORE SENDING....");
+					 XMLStreamWriter writer = \
XMLOutputFactory.newInstance().createXMLStreamWriter(System.out); +					 \
msgCtx.getEnvelope().serialize(writer); +				} catch (XMLStreamException e2) {
+					// TODO Auto-generated catch block
+					e2.printStackTrace();
+				} catch (FactoryConfigurationError e2) {
+					// TODO Auto-generated catch block
+					e2.printStackTrace();
+				}
+				 
+				try {
 					new AxisEngine(context).send(msgCtx);
 				} catch (AxisFault e1) {
 					e1.printStackTrace();
 				}
+				
 			}
 			
 			try {

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/ServerOutHandler.java
                
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/ServerOutHandler.java?rev=292160&r1=292159&r2=292160&view=diff
 ==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/ServerOutHandler.java \
                (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/ServerOutHandler.java \
Wed Sep 28 03:47:35 2005 @@ -18,7 +18,9 @@
 package org.apache.sandesha2.handlers;
 
 import javax.xml.namespace.QName;
+import javax.xml.stream.FactoryConfigurationError;
 import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamWriter;
 
 import org.apache.axis2.AxisFault;
@@ -67,6 +69,12 @@
 		ConfigurationContext ctx = msgCtx.getSystemContext();
 		SandeshaUtil.startSenderIfStopped(ctx);
 
+		
+		
+		
+		
+
+		
 		//getting rm message
 		RMMsgContext rmMsgCtx;
 		try {
@@ -87,7 +95,7 @@
 				AbstractContext context = rmMsgCtx.getContext();
 				if (context == null)
 					throw new SandeshaException("Context is null");
-				
+
 				Sequence sequence = (Sequence) requestRMMsgCtx
 						.getMessagePart(Constants.MESSAGE_PART_SEQUENCE);
 				if (sequence == null)
@@ -131,50 +139,86 @@
 				if (!validResponse) { //TODO either change MsgReceiver or move
 					if (Constants.WSA.NS_URI_ANONYMOUS.equals(acksToEPR
 							.getAddress())) {
-						RMMsgCreator.addAckMessage(rmMsgCtx);
+						Sequence reqSequence = (Sequence) requestRMMsgCtx
+								.getMessagePart(Constants.MESSAGE_PART_SEQUENCE);
+						if (reqSequence == null)
+							throw new SandeshaException(
+									"Sequence part of application message is null");
+
+						String sequenceId = reqSequence.getIdentifier()
+								.getIdentifier();
+
+						RMMsgCreator.addAckMessage(rmMsgCtx, sequenceId);
 					}
 				} else {
 					//valid response
 
 					RMMsgContext ackRMMsgContext = RMMsgCreator
-							.createAckMessage(rmMsgCtx);
-					MessageContext ackMsgContext = ackRMMsgContext.getMessageContext();
-					ackMsgContext.setServiceGroupContext(msgCtx.getServiceGroupContext());
-					ackMsgContext.setServiceGroupContextId(msgCtx.getServiceGroupContextId());
+							.createAckMessage(requestRMMsgCtx);
+					MessageContext ackMsgContext = ackRMMsgContext
+							.getMessageContext();
+					ackMsgContext.setServiceGroupContext(msgCtx
+							.getServiceGroupContext());
+					ackMsgContext.setServiceGroupContextId(msgCtx
+							.getServiceGroupContextId());
 					ackMsgContext.setServiceContext(msgCtx.getServiceContext());
-					ackMsgContext.setServiceContextID(msgCtx.getServiceContextID());
-					OperationContext ackOpContext = new OperationContext \
(ackMsgContext.getOperationDescription()); \
+					ackMsgContext.setServiceContextID(msgCtx +							.getServiceContextID());
+					
+					//TODO set a suitable operation description
+					OperationContext ackOpContext = new OperationContext(
+							reqMsgCtx.getOperationDescription());
+					
 					ackOpContext.addMessageContext(ackMsgContext);
 					ackMsgContext.setOperationContext(ackOpContext);
-					RMMsgContext newRMMsgCtx = SandeshaUtil
-							.copyRMMessageContext(rmMsgCtx);
+					RMMsgContext newRMMsgCtx = SandeshaUtil.deepCopy(rmMsgCtx);
 					MessageContext newMsgCtx = newRMMsgCtx.getMessageContext();
 					rmMsgCtx.setSOAPEnvelop(ackRMMsgContext.getSOAPEnvelope());
 
 					//setting contexts
-					newMsgCtx.setServiceGroupContext(msgCtx.getServiceGroupContext());
-					newMsgCtx.setServiceGroupContextId(msgCtx.getServiceGroupContextId());
+					newMsgCtx.setServiceGroupContext(msgCtx
+							.getServiceGroupContext());
+					newMsgCtx.setServiceGroupContextId(msgCtx
+							.getServiceGroupContextId());
 					newMsgCtx.setServiceContext(msgCtx.getServiceContext());
 					newMsgCtx.setServiceContextID(msgCtx.getServiceContextID());
-				    OperationContext newOpContext = new OperationContext \
                (newMsgCtx.getOperationDescription());
-				    newOpContext.addMessageContext(newMsgCtx);
-				    newMsgCtx.setOperationContext(newOpContext);
-				    
+					OperationContext newOpContext = new OperationContext(
+							newMsgCtx.getOperationDescription());
+					newOpContext.addMessageContext(newMsgCtx);
+					newMsgCtx.setOperationContext(newOpContext);
+
 					//processing the response
 					processResponseMessage(newRMMsgCtx, requestRMMsgCtx);
+					//msgCtx.setTo(null);
+					msgCtx.setPausedTrue(getName());
+					
+
 				}
 			}
 		} catch (SandeshaException e) {
 			throw new AxisFault(e.getMessage());
 		}
+		
+		// serializing
+		try {
+			SOAPEnvelope env11 = msgCtx.getEnvelope();
+			XMLStreamWriter writer = \
XMLOutputFactory.newInstance().createXMLStreamWriter(System.out); \
+			env11.serialize(writer); +		} catch (XMLStreamException e1) {
+			// TODO Auto-generated catch block
+			e1.printStackTrace();
+		} catch (FactoryConfigurationError e1) {
+			// TODO Auto-generated catch block
+			e1.printStackTrace();
+		}
 	}
 
-	private void processResponseMessage(RMMsgContext msg, RMMsgContext reqMsg)
+	private void processResponseMessage(RMMsgContext rmMsg, RMMsgContext reqRMMsg)
 			throws SandeshaException {
-		if (msg == null || reqMsg == null)
+		if (rmMsg == null || reqRMMsg == null)
 			throw new SandeshaException("Message or reques message is null");
 
-		Sequence sequence = (Sequence) reqMsg
+		Sequence sequence = (Sequence) reqRMMsg
 				.getMessagePart(Constants.MESSAGE_PART_SEQUENCE);
 		if (sequence == null)
 			throw new SandeshaException("Sequence part is null");
@@ -183,7 +227,7 @@
 		if (incomingSeqId == null || incomingSeqId == "")
 			throw new SandeshaException("Invalid seqence Id");
 
-		AbstractContext context = msg.getContext();
+		AbstractContext context = rmMsg.getContext();
 		if (context == null)
 			throw new SandeshaException("Context is null");
 
@@ -193,7 +237,7 @@
 		SequencePropertyBean toBean = mgr.retrieve(incomingSeqId,
 				Constants.SEQ_PROPERTY_TO_EPR);
 		SequencePropertyBean replyToBean = mgr.retrieve(incomingSeqId,
-				Constants.SEQ_PROPERTY_ACKS_TO_EPR);
+				Constants.SEQ_PROPERTY_REPLY_TO_EPR);
 		SequencePropertyBean outSequenceBean = mgr.retrieve(incomingSeqId,
 				Constants.SEQ_PROPERTY_OUT_SEQUENCE_ID);
 
@@ -213,27 +257,58 @@
 				|| incomingReplyTo.getAddress() == "")
 			throw new SandeshaException("ReplyTo is not set correctly");
 
-		msg.setTo(incomingReplyTo);
-		msg.setReplyTo(incomingTo);
+		rmMsg.setTo(incomingReplyTo);
+		rmMsg.setReplyTo(incomingTo);
 
 		if (outSequenceBean == null || outSequenceBean.getValue() == null) {
 			RetransmitterBeanMgr retransmitterMgr = AbstractBeanMgrFactory
 					.getInstance(context).getRetransmitterBeanMgr();
 
-			msg.getMessageContext().setPausedTrue(getName());
+			rmMsg.getMessageContext().setPausedTrue(getName());
 
 			RetransmitterBean appMsgEntry = new RetransmitterBean();
-			String key = SandeshaUtil.storeMessageContext(msg
+			
+			RMMsgContext copiedRMMsgCtx = SandeshaUtil.deepCopy(rmMsg);
+			MessageContext copiedMsgCtx = copiedRMMsgCtx.getMessageContext();
+			MessageContext msg = rmMsg.getMessageContext();
+			//msg.setResponseWritten(false);
+			//msg.setOutPutWritten(true);
+			//msg.getOperationContext().setProperty(org.apache.axis2.Constants.RESPONSE_WRITTEN,org.apache.axis2.Constants.VALUE_TRUE);
 +
+			
+			Object val = msg.getOperationContext().getProperty \
(org.apache.axis2.Constants.RESPONSE_WRITTEN); \
+			copiedMsgCtx.setServiceGroupContext(msg +					.getServiceGroupContext());
+			copiedMsgCtx.setServiceGroupContextId(msg
+					.getServiceGroupContextId());
+			copiedMsgCtx.setServiceContext(msg
+					.getServiceContext());
+			copiedMsgCtx.setServiceContextID(msg
+					.getServiceContextID());
+			copiedMsgCtx.setOperationContext(msg.getOperationContext());
+			
+			//TODO IF - may not work when op context is changed
+			try {
+				msg.getOperationContext().addMessageContext(copiedMsgCtx);
+			} catch (AxisFault e) {
+				e.printStackTrace();
+			}
+			
+			String key = SandeshaUtil.storeMessageContext(rmMsg
 					.getMessageContext());
 			appMsgEntry.setKey(key);
 			appMsgEntry.setLastSentTime(0);
 			appMsgEntry.setTempSequenceId(incomingSeqId);
 			appMsgEntry.setSend(false);
-			appMsgEntry.setMessageId(msg.getMessageId());
+			appMsgEntry.setMessageId(rmMsg.getMessageId());
+
 			retransmitterMgr.insert(appMsgEntry);
 
-			addCreateSequenceMessage(msg);
+			addCreateSequenceMessage(rmMsg);
+			
+
 
+			
 		} else {
 			//Sequence id is present
 			//set sequence part
@@ -245,8 +320,8 @@
 	public void addCreateSequenceMessage(RMMsgContext applicationRMMsg)
 			throws SandeshaException {
 		MessageContext applicationMsg = applicationRMMsg.getMessageContext();
-		if (applicationMsg==null)
-			throw new SandeshaException ("Message context is null");
+		if (applicationMsg == null)
+			throw new SandeshaException("Message context is null");
 		RMMsgContext createSeqRMMessage = RMMsgCreator
 				.createCreateSeqMsg(applicationRMMsg);
 		MessageContext createSeqMsg = createSeqRMMessage.getMessageContext();

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
                
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2 \
/msgprocessors/ApplicationMsgProcessor.java?rev=292160&r1=292159&r2=292160&view=diff \
                ==============================================================================
                
--- webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java \
                (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java \
Wed Sep 28 03:47:35 2005 @@ -29,6 +29,7 @@
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.engine.AxisEngine;
 import org.apache.axis2.soap.SOAPEnvelope;
 import org.apache.sandesha2.Constants;
@@ -36,7 +37,9 @@
 import org.apache.sandesha2.MsgValidator;
 import org.apache.sandesha2.RMMsgContext;
 import org.apache.sandesha2.RMMsgCreator;
+import org.apache.sandesha2.SOAPAbstractFactory;
 import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.msgreceivers.RMMessageReceiver;
 import org.apache.sandesha2.storage.AbstractBeanMgrFactory;
 import org.apache.sandesha2.storage.beanmanagers.NextMsgBeanMgr;
 import org.apache.sandesha2.storage.beanmanagers.SequencePropertyBeanMgr;
@@ -59,6 +62,10 @@
 
 		System.out.println("Application msg processor called");
 
+		MessageContext msgCtx = rmMsgCtx.getMessageContext();
+		if (msgCtx==null)
+			throw new SandeshaException ("Message context is null");
+		
 		if (rmMsgCtx.getProperty(Constants.APPLICATION_PROCESSING_DONE) != null
 				&& rmMsgCtx.getProperty(Constants.APPLICATION_PROCESSING_DONE)
 						.equals("true")) {
@@ -123,28 +130,72 @@
 
 		if (acksToStr.equals(Constants.WSA.NS_URI_ANONYMOUS)) {
 
-			//Adding sync ack
-			//set acknowledgement
-			//TODO stop adding acks to every message. Add acks only when
-			// needed.
-			
-			
-//			try {
-//				MessageContext responseMsgCtx = \
rmMsgCtx.getMessageContext().getOperationContext().getMessageContext(WSDLConstants.MESSAGE_LABEL_OUT);		
                
-//				if (responseMsgCtx==null){
-//					responseMsgCtx = new MessageContext \
(configCtx,rmMsgCtx.getMessageContext().getTransportIn(),rmMsgCtx.getMessageContext().getTransportOut());
                
-//					rmMsgCtx.getMessageContext().getOperationContext().addMessageContext(responseMsgCtx);
                
-//					
-//					//TODO following line is due to a bug in Axis2. Remove this when it is fixed.
-//					responseMsgCtx.setOperationContext(rmMsgCtx.getMessageContext().getOperationContext());
                
-//				}
-//				
-//				RMMsgContext responseRMMsg = new RMMsgContext (responseMsgCtx);
-//				RMMsgCreator.addAckMessage(responseRMMsg);
-//				
-//			} catch (AxisFault af) {
-//				throw new SandeshaException (af.getMessage());
-//			} 
+//			//Adding sync ack
+//			//set acknowledgement
+//			//TODO stop adding acks to every message. Add acks only when
+//			// needed.
+//			
+//			
+////			try {
+////				MessageContext responseMsgCtx = \
rmMsgCtx.getMessageContext().getOperationContext().getMessageContext(WSDLConstants.MESSAGE_LABEL_OUT);		
 +////				if (responseMsgCtx==null){
+////					responseMsgCtx = new MessageContext \
(configCtx,rmMsgCtx.getMessageContext().getTransportIn(),rmMsgCtx.getMessageContext().getTransportOut());
 +////					rmMsgCtx.getMessageContext().getOperationContext().addMessageContext(responseMsgCtx);
 +////					
+////					//TODO following line is due to a bug in Axis2. Remove this when it is \
fixed. +////					responseMsgCtx.setOperationContext(rmMsgCtx.getMessageContext().getOperationContext());
 +////				}
+////				
+////				RMMsgContext responseRMMsg = new RMMsgContext (responseMsgCtx);
+////				RMMsgCreator.addAckMessage(responseRMMsg);
+////				
+////			} catch (AxisFault af) {
+////				throw new SandeshaException (af.getMessage());
+////			} 
+			
+			
+			RMMsgContext ackRMMsgCtx = SandeshaUtil.deepCopy(rmMsgCtx);
+			MessageContext ackMsgCtx = ackRMMsgCtx.getMessageContext();
+			ackMsgCtx.setServiceGroupContext(msgCtx
+					.getServiceGroupContext());
+			ackMsgCtx.setServiceGroupContextId(msgCtx
+					.getServiceGroupContextId());
+			ackMsgCtx.setServiceContext(msgCtx.getServiceContext());
+			ackMsgCtx.setServiceContextID(msgCtx
+					.getServiceContextID());
+			
+			//TODO set a suitable operation description
+			OperationContext ackOpContext = new OperationContext(
+					msgCtx.getOperationDescription());
+			
+			try {
+				ackOpContext.addMessageContext(ackMsgCtx);
+			} catch (AxisFault e2) {
+				throw new SandeshaException (e2.getMessage());
+			}
+			ackMsgCtx.setOperationContext(ackOpContext);
+			
+			//Set new envelope
+			SOAPEnvelope envelope = \
SOAPAbstractFactory.getSOAPFactory(Constants.DEFAULT_SOAP_VERSION).getDefaultEnvelope();
 +			try {
+				ackMsgCtx.setEnvelope(envelope);
+			} catch (AxisFault e3) {
+				throw new SandeshaException (e3.getMessage());
+			}
+			
+			//FIXME set acksTo instead of ReplyTo
+			ackMsgCtx.setTo(msgCtx.getReplyTo());
+			ackMsgCtx.setReplyTo(msgCtx.getTo());
+			RMMsgCreator.addAckMessage(ackRMMsgCtx,sequenceId);
+
+			
+		    AxisEngine engine = new AxisEngine(
+		     		ackRMMsgCtx.getMessageContext().getSystemContext());
+		    try {
+				engine.send(ackRMMsgCtx.getMessageContext());
+			} catch (AxisFault e1) {
+				throw new SandeshaException (e1.getMessage());
+			}
 
 		} else {
 			//TODO Add async Ack
@@ -207,6 +258,8 @@
 							"true");
 
 					System.out.println("paused");
+					
+					
 				} catch (Exception ex) {
 					throw new SandeshaException(ex.getMessage());
 				}

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java?rev=292160&r1=292159&r2=292160&view=diff
 ==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java \
                (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java Wed \
Sep 28 03:47:35 2005 @@ -22,14 +22,19 @@
 import java.util.StringTokenizer;
 
 import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.AddressingConstants;
 import org.apache.axis2.addressing.MessageInformationHeaders;
+import org.apache.axis2.addressing.miheaders.RelatesTo;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
 
 import org.apache.axis2.description.TransportInDescription;
 import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.engine.AxisEngine;
 import org.apache.axis2.om.impl.MIMEOutputUtils;
+import org.apache.axis2.transport.http.HTTPConstants;
 import org.apache.axis2.util.UUIDGenerator;
+import org.apache.sandesha2.Constants;
 import org.apache.sandesha2.RMMsgContext;
 import org.apache.sandesha2.SandeshaException;
 import org.apache.sandesha2.Sender;
@@ -44,8 +49,9 @@
 public class SandeshaUtil {
 
 	private static Hashtable storedMsgContexts = new Hashtable();
-	private static Sender sender = new Sender ();
-	
+
+	private static Sender sender = new Sender();
+
 	public static String getUUID() {
 		String uuid = "uuid:" + UUIDGenerator.getUUID();
 		return uuid;
@@ -151,70 +157,97 @@
 	//		getAckRangeArray( msgList);
 	//		
 	//	}
-	
-	public static MessageContext copyMessageContext (MessageContext msgCtx) throws \
                SandeshaException {
-		ConfigurationContext configCtx = msgCtx.getSystemContext();
-		TransportInDescription transportIn = msgCtx.getTransportIn();
-		TransportOutDescription transportOut = msgCtx.getTransportOut();
-		MessageInformationHeaders msgInfoHeaders = msgCtx.getMessageInformationHeaders();
-		
+
+	public static MessageContext deepCopy(MessageContext msgCtx)
+			throws SandeshaException {
+
 		try {
-			MessageContext newMessageContext = new MessageContext \
(configCtx,transportIn,transportOut); +			MessageContext newMessageContext = \
shallowCopy(msgCtx);  newMessageContext.setDoingMTOM(msgCtx.isDoingMTOM());
 			newMessageContext.setDoingREST(msgCtx.isDoingREST());
-			newMessageContext.setEnvelope(msgCtx.getEnvelope());
-			newMessageContext.setFaultTo(msgCtx.getFaultTo());
-			newMessageContext.setFrom(msgCtx.getFrom());
-			//newMessageContext.setInFaultFlow(msgCtx.geti);
 			newMessageContext.setMessageID(getUUID());
-			newMessageContext.setMessageInformationHeaders(msgCtx.getMessageInformationHeaders());
                
-			//newMessageContext.setOperationContext(msgCtx.getOperationContext());
-			newMessageContext.setOperationDescription(msgCtx.getOperationDescription());
 			newMessageContext.setOutPutWritten(msgCtx.isOutPutWritten());
 			newMessageContext.setParent(msgCtx.getParent());
 			newMessageContext.setPausedPhaseName(msgCtx.getPausedPhaseName());
-			newMessageContext.setProcessingFault(msgCtx.isProcessingFault() );
-			newMessageContext.setRelatesTo(msgCtx.getRelatesTo());
+			newMessageContext.setProcessingFault(msgCtx.isProcessingFault());
 			newMessageContext.setResponseWritten(msgCtx.isResponseWritten());
 			newMessageContext.setRestThroughPOST(msgCtx.isRestThroughPOST());
 			newMessageContext.setServerSide(msgCtx.isServerSide());
-			//newMessageContext.setServiceContext(msgCtx.getServiceContext());
-			//newMessageContext.setServiceContextID(msgCtx.getServiceContextID());
-			newMessageContext.setServiceDescription(msgCtx.getServiceDescription());
-			//newMessageContext.setServiceGroupContext(msgCtx.getServiceGroupContext());
-			//newMessageContext.setServiceGroupContextId(msgCtx.getServiceGroupContextId());
-			if (msgCtx.getServiceGroupDescription()!=null)
-				newMessageContext.setServiceGroupDescription(msgCtx.getServiceGroupDescription());
 +			newMessageContext.setOperationDescription(msgCtx
+					.getOperationDescription());
+
+			newMessageContext.setProperty(MessageContext.TRANSPORT_OUT, msgCtx
+					.getProperty(MessageContext.TRANSPORT_OUT));
+			newMessageContext.setProperty(HTTPConstants.HTTPOutTransportInfo,
+					msgCtx.getProperty(HTTPConstants.HTTPOutTransportInfo));
+
+			//Setting the charater set encoding
+			newMessageContext
+					.setProperty(MessageContext.CHARACTER_SET_ENCODING, msgCtx
+							.getProperty(MessageContext.CHARACTER_SET_ENCODING));
+
+			if (msgCtx.getEnvelope() != null)
+				newMessageContext.setEnvelope(msgCtx.getEnvelope());
+
+			//copying transport info. TODO remove http specific ness.
+			newMessageContext.setProperty(MessageContext.TRANSPORT_OUT, msgCtx
+					.getProperty(MessageContext.TRANSPORT_OUT));
+			newMessageContext.setProperty(HTTPConstants.HTTPOutTransportInfo,
+					msgCtx.getProperty(HTTPConstants.HTTPOutTransportInfo));
+			return newMessageContext;
+
+		} catch (AxisFault e) {
+			throw new SandeshaException("Cannot copy message");
+		}
+	}
+
+	public static MessageContext shallowCopy(MessageContext msgCtx)
+			throws SandeshaException {
+		ConfigurationContext configCtx = msgCtx.getSystemContext();
+		TransportInDescription transportIn = msgCtx.getTransportIn();
+		TransportOutDescription transportOut = msgCtx.getTransportOut();
+		MessageInformationHeaders msgInfoHeaders1 = new MessageInformationHeaders();
+		msgInfoHeaders1.setTo(msgCtx.getTo());
+		msgInfoHeaders1.setFrom(msgCtx.getFrom());
+		msgInfoHeaders1.setReplyTo(msgCtx.getReplyTo());
+		msgInfoHeaders1.setFaultTo(msgCtx.getFaultTo());
+		msgInfoHeaders1.setMessageId(getUUID());
+
+		try {
+			MessageContext newMessageContext = new MessageContext(configCtx,
+					transportIn, transportOut);
+			newMessageContext.setMessageInformationHeaders(msgInfoHeaders1);
+			newMessageContext.setServiceDescription(msgCtx
+					.getServiceDescription());
+			if (msgCtx.getServiceGroupDescription() != null)
+				newMessageContext.setServiceGroupDescription(msgCtx
+						.getServiceGroupDescription());
+
 			newMessageContext.setSoapAction(msgCtx.getSoapAction());
-			newMessageContext.setTo(msgCtx.getTo());
 			newMessageContext.setWSAAction(msgCtx.getWSAAction());
-			
-			if (msgCtx.getEnvelope()!=null)
-				newMessageContext.setEnvelope(msgCtx.getEnvelope());
-			
-			//newMessageContext.setServiceContext(msgCtx.getServiceContext());
-			//newMessageContext.setse
-			
+
 			return newMessageContext;
-			
+
 		} catch (AxisFault e) {
-			throw new SandeshaException ("Cannot copy message");
+			throw new SandeshaException("Cannot copy message");
 		}
+
 	}
-	
-	public static RMMsgContext copyRMMessageContext (RMMsgContext rmMsgContext) throws \
SandeshaException{ +
+	public static RMMsgContext deepCopy(RMMsgContext rmMsgContext)
+			throws SandeshaException {
 		MessageContext msgCtx = null;
-		if (rmMsgContext.getMessageContext()!=null)
-			msgCtx = copyMessageContext(rmMsgContext.getMessageContext());
-		
-	    RMMsgContext newRMMsgCtx = new RMMsgContext ();
-	    if (msgCtx!=null)
-	    	newRMMsgCtx.setMessageContext(msgCtx);
-	    
-	    return newRMMsgCtx;	
+		if (rmMsgContext.getMessageContext() != null)
+			msgCtx = deepCopy(rmMsgContext.getMessageContext());
+
+		RMMsgContext newRMMsgCtx = new RMMsgContext();
+		if (msgCtx != null)
+			newRMMsgCtx.setMessageContext(msgCtx);
+
+		return newRMMsgCtx;
 	}
-	
-	public static void startSenderIfStopped (ConfigurationContext context) {
+
+	public static void startSenderIfStopped(ConfigurationContext context) {
 		if (!sender.isSenderStarted()) {
 			sender.start(context);
 		}

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AcknowledgementRange.java
                
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AcknowledgementRange.java?rev=292160&r1=292159&r2=292160&view=diff
 ==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AcknowledgementRange.java \
                (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AcknowledgementRange.java \
Wed Sep 28 03:47:35 2005 @@ -19,7 +19,9 @@
 import java.util.Iterator;
 
 import javax.xml.namespace.QName;
+import javax.xml.stream.FactoryConfigurationError;
 import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamWriter;
 
 import org.apache.axis2.om.OMAbstractFactory;
@@ -70,10 +72,24 @@
 		if (ackRangePart == null)
 			throw new OMException("The passed element is null");
 
+		
+		// serializing
+		try {
+			XMLStreamWriter writer = \
XMLOutputFactory.newInstance().createXMLStreamWriter(System.out); \
+			ackRangePart.serialize(writer); +		} catch (XMLStreamException e1) {
+			// TODO Auto-generated catch block
+			e1.printStackTrace();
+		} catch (FactoryConfigurationError e1) {
+			// TODO Auto-generated catch block
+			e1.printStackTrace();
+		}
+		
+		
 		OMAttribute lowerAttrib = ackRangePart.getAttribute(new QName(
-				Constants.WSRM.LOWER));
+				Constants.WSRM.NS_URI_RM,Constants.WSRM.LOWER));
 		OMAttribute upperAttrib = ackRangePart.getAttribute(new QName(
-				Constants.WSRM.UPPER));
+				Constants.WSRM.NS_URI_RM,Constants.WSRM.UPPER));
 
 		if (lowerAttrib == null || upperAttrib == null)
 			throw new OMException(

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/RMElements.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/RMElements.java?rev=292160&r1=292159&r2=292160&view=diff
 ==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/RMElements.java \
                (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/RMElements.java Wed Sep \
28 03:47:35 2005 @@ -67,7 +67,7 @@
 								Constants.WSRM.SEQUENCE_ACK));
 		if (sequenceAckElement != null) {
 			sequenceAcknowledgement = new SequenceAcknowledgement();
-			sequence.fromOMElement(envelope.getHeader());
+			sequenceAcknowledgement.fromOMElement(envelope.getHeader());
 		}
 
 		OMElement createSeqElement = envelope.getBody().getFirstChildWithName(



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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic