Author: chamikara
Date: Tue Nov  8 14:15:32 2005
New Revision: 331906

URL: http://svn.apache.org/viewcvs?rev=331906&view=rev
Log:
Added facility to eccept empty-body last messages.
Made sure that the terminate message is sent only once.
Some bug fixes

Modified:
    webservices/sandesha/trunk/src/org/apache/sandesha2/Constants.java
    
webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
    
webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
    
webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java
    
webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
    
webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/workers/Sender.java

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/Constants.java
URL: 
http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/Constants.java?rev=331906&r1=331905&r2=331906&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/Constants.java 
(original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/Constants.java Tue Nov  
8 14:15:32 2005
@@ -116,7 +116,7 @@
        }

 

        public interface WSP {

-               long RETRANSMISSION_INTERVAL = 10000;

+               long RETRANSMISSION_INTERVAL = 500000;

                long ACKNOWLEDGEMENT_INTERVAL = 3000;

                boolean EXPONENTION_BACKOFF = false;

                long INACTIVITY_TIMEOUT_INTERVAL = 5000000;

@@ -190,6 +190,8 @@
                String CHECK_RESPONSE = "CheckResponse";

                

                String OFFERED_SEQUENCE = "OfferedSequence";

+               

+               String TERMINATE_ADDED = "TerminateAdded";

        }

 

        public interface SOAPVersion {


Modified: 
webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
URL: 
http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java?rev=331906&r1=331905&r2=331906&view=diff
==============================================================================
--- 
webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
 (original)
+++ 
webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
 Tue Nov  8 14:15:32 2005
@@ -23,6 +23,7 @@
 import org.apache.axis2.context.ConfigurationContext;

 import org.apache.axis2.context.MessageContext;

 import org.apache.axis2.handlers.AbstractHandler;

+import org.apache.axis2.soap.SOAPBody;

 import org.apache.sandesha2.Constants;

 import org.apache.sandesha2.RMMsgContext;

 import org.apache.sandesha2.SandeshaException;

@@ -83,6 +84,7 @@
                boolean drop = false;

 

                if (rmMsgContext.getMessageType() == 
Constants.MessageTypes.APPLICATION) {

+                       

                        Sequence sequence = (Sequence) rmMsgContext

                                        
.getMessagePart(Constants.MessageParts.SEQUENCE);

                        String sequenceId = null;

@@ -112,6 +114,43 @@
                                                drop = true;

                                        }

                                }

+                               

+                               

+                               if (drop==false) {

+                                       //Checking for RM specific EMPTY_BODY 
LASTMESSAGE.

+                                       SOAPBody body = 
rmMsgContext.getSOAPEnvelope().getBody();

+                                       boolean emptyBody = false;

+                                       if 
(body.getChildElements().hasNext()==false) {

+                                               emptyBody = true;       

+                                       }

+                               

+                                       if (emptyBody) {

+                                               boolean lastMessage = false;

+                                               if 
(sequence.getLastMessage()!=null) {

+                                                       
System.out.println("Empty Body Last Message Received");

+                                                       drop = true;

+                                               

+                                                       if 
(receivedMsgsBean==null) {

+                                                               
receivedMsgsBean = new SequencePropertyBean 
(sequenceId,Constants.SequenceProperties.RECEIVED_MESSAGES,"");

+                                                               
seqPropMgr.insert(receivedMsgsBean);

+                                                       }

+                                                       

+                                                       String receivedMsgStr = 
(String) receivedMsgsBean.getValue();

+                                                       if (receivedMsgStr != 
"" && receivedMsgStr != null)

+                                                               receivedMsgStr 
= receivedMsgStr + "," + Long.toString(msgNo);

+                                                       else

+                                                               receivedMsgStr 
= Long.toString(msgNo);

+                                                               

+                                                       
receivedMsgsBean.setValue(receivedMsgStr);

+                                                       
seqPropMgr.update(receivedMsgsBean);

+                                                               

+                                                       
//ApplicationMsgProcessor ackProcessor = new ApplicationMsgProcessor ();

+                                                       
//ackProcessor.sendAckIfNeeded(rmMsgContext,receivedMsgStr);

+                                                       

+                                       }

+                               }

+                               }

+                               //if (rmMsgContext.get)

                        }

                }

 


Modified: 
webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
URL: 
http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaInHandler.java?rev=331906&r1=331905&r2=331906&view=diff
==============================================================================
--- 
webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
 (original)
+++ 
webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
 Tue Nov  8 14:15:32 2005
@@ -49,6 +49,12 @@
                if (context == null)

                        throw new AxisFault("ConfigurationContext is null");

 

+               String DONE = (String) 
msgCtx.getProperty(Constants.APPLICATION_PROCESSING_DONE);

+               if (null != DONE && "true".equals(DONE))

+                       return;

+               

+               //Shouldnt set app-processing-done here SINCE - 

+

                AxisService axisService = msgCtx.getAxisService();

                if (axisService == null)

                        throw new AxisFault("AxisService is null");


Modified: 
webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java
URL: 
http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java?rev=331906&r1=331905&r2=331906&view=diff
==============================================================================
--- 
webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java
 (original)
+++ 
webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java
 Tue Nov  8 14:15:32 2005
@@ -398,6 +398,7 @@
                        throw new SandeshaException(

                                        "Create Sequence part is null for a 
CreateSequence message");

 

+       

                SequenceOffer offer = createSequencePart.getSequenceOffer();

                if (offer != null) {

                        //Offer processing

@@ -444,6 +445,10 @@
                                createSeqMsg.getMessageID(), null);

                createSeqMgr.insert(createSeqBean);

 

+               if (createSeqMsg.getReplyTo()==null)

+                       createSeqMsg.setReplyTo(new EndpointReference 
(Constants.WSA.NS_URI_ANONYMOUS));

+               

+               

                RetransmitterBeanMgr retransmitterMgr = storageManager

                                .getRetransmitterBeanMgr();

 

@@ -597,8 +602,8 @@
 

                //TODO do this based on policies.

                boolean addAckRequested = false;

-//             if (!lastMessage)

-//                     addAckRequested = true;

+               if (!lastMessage)

+                       addAckRequested = true;

 

                //setting the Sequnece id.

                //Set send = true/false depending on the availability of the out


Modified: 
webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
URL: 
http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java?rev=331906&r1=331905&r2=331906&view=diff
==============================================================================
--- 
webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
 Tue Nov  8 14:15:32 2005
@@ -83,7 +83,9 @@
                //Because of this dispatching may go wrong.

                //So we set relatesTo value to null for ackMessages. (this 
happens in

                // the SandeshaGlobal handler)

-               rmMsgCtx.setRelatesTo(null);

+               //Do this only if this is a standalone ACK.

+               if (rmMsgCtx.getMessageType()==Constants.MessageTypes.ACK)

+                       rmMsgCtx.setRelatesTo(null);

 

                RetransmitterBean input = new RetransmitterBean();

                input.setTempSequenceId(tempSequenceId);

@@ -166,15 +168,25 @@
        public void addTerminateSequenceMessage(RMMsgContext incomingAckRMMsg,

                        String outSequenceId, String tempSequenceId)

                        throws SandeshaException {

+               

+               StorageManager storageManager = SandeshaUtil

+               .getSandeshaStorageManager(incomingAckRMMsg.getMessageContext()

+                               .getSystemContext());

+               

+               SequencePropertyBeanMgr seqPropMgr = storageManager

+               .getSequencePropretyBeanMgr();

+               

+               SequencePropertyBean terminated = 
seqPropMgr.retrieve(outSequenceId,Constants.SequenceProperties.TERMINATE_ADDED);

+               

+               if (terminated!=null && terminated.getValue()!=null && 
"true".equals(terminated.getValue())) {

+                       System.out.println("TERMINATE WAS ADDED 
PREVIOUSLY....");

+                       return;

+               }

+               

                RMMsgContext terminateRMMessage = RMMsgCreator

                                
.createTerminateSequenceMessage(incomingAckRMMsg, outSequenceId);

 

-               //detting addressing headers.

-               StorageManager storageManager = SandeshaUtil

-                               
.getSandeshaStorageManager(incomingAckRMMsg.getMessageContext()

-                                               .getSystemContext());

-               SequencePropertyBeanMgr seqPropMgr = storageManager

-                               .getSequencePropretyBeanMgr();

+

 

                //SequencePropertyBean replyToBean =

                // 
seqPropMgr.retrieve(tempSequenceId,Constants.SequenceProperties.REPLY_TO_EPR);

@@ -220,6 +232,14 @@
 

                RetransmitterBeanMgr retramsmitterMgr = storageManager

                                .getRetransmitterBeanMgr();

+               

+               SequencePropertyBean terminateAdded = new SequencePropertyBean 
();

+               
terminateAdded.setName(Constants.SequenceProperties.TERMINATE_ADDED);

+               terminateAdded.setSequenceId(outSequenceId);

+               terminateAdded.setValue("true");

+           

+               seqPropMgr.insert(terminateAdded);

+               

                retramsmitterMgr.insert(terminateBean);

 

        }


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=331906&r1=331905&r2=331906&view=diff
==============================================================================
--- 
webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
 Tue Nov  8 14:15:32 2005
@@ -59,6 +59,8 @@
 

        public void processMessage(RMMsgContext rmMsgCtx) throws 
SandeshaException {

 

+               //Object obj = 
rmMsgCtx.getProperty(Constants.APPLICATION_PROCESSING_DONE);

+               

                //Processing for ack if any

                SequenceAcknowledgement sequenceAck = (SequenceAcknowledgement) 
rmMsgCtx

                                
.getMessagePart(Constants.MessageParts.SEQ_ACKNOWLEDGEMENT);

@@ -356,8 +358,8 @@
                                throw new SandeshaException(e1.getMessage());

                        }

                } else {

-                       
rmMsgCtx.getMessageContext().getOperationContext().setProperty(

-                                       
org.apache.axis2.Constants.RESPONSE_WRITTEN, "false");

+                       
//rmMsgCtx.getMessageContext().getOperationContext().setProperty(

+                               //      
org.apache.axis2.Constants.RESPONSE_WRITTEN, "false");

                        

                        RetransmitterBeanMgr retransmitterBeanMgr = 
storageManager

                                        .getRetransmitterBeanMgr();


Modified: 
webservices/sandesha/trunk/src/org/apache/sandesha2/workers/Sender.java
URL: 
http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/workers/Sender.java?rev=331906&r1=331905&r2=331906&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/workers/Sender.java 
(original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/workers/Sender.java Tue 
Nov  8 14:15:32 2005
@@ -83,6 +83,7 @@
                                                                                
                        .getMessageType())

                                                                        + "' 
message.");

                                                }

+                                               

 

                                                new 
AxisEngine(context).send(msgCtx);

 




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

Reply via email to