chamikara    2005/04/27 00:08:50

  Modified:    sandesha/src/org/apache/sandesha RMMessageContext.java
               sandesha/src/org/apache/sandesha/client
                        ClientStorageManager.java
               sandesha/src/org/apache/sandesha/server RMInvoker.java
                        ServerStorageManager.java
               sandesha/src/org/apache/sandesha/storage/dao
                        ISandeshaDAO.java SandeshaDatabaseDAO.java
                        SandeshaQueueDAO.java
               sandesha/src/org/apache/sandesha/storage/queue
                        SandeshaQueue.java
               sandesha/src/org/apache/sandesha/util RMMessageCreator.java
  Log:
  The classes were changed to set different message ids for different 
retransmissions of the create seq message.
  
  Revision  Changes    Path
  1.27      +12 -1     
ws-fx/sandesha/src/org/apache/sandesha/RMMessageContext.java
  
  Index: RMMessageContext.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/RMMessageContext.java,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- RMMessageContext.java     26 Apr 2005 03:24:50 -0000      1.26
  +++ RMMessageContext.java     27 Apr 2005 07:08:49 -0000      1.27
  @@ -23,6 +23,7 @@
   import org.apache.commons.logging.Log;
   import org.apache.sandesha.ws.rm.RMHeaders;
   
  +import java.util.ArrayList;
   import java.util.Iterator;
   
   /**
  @@ -50,12 +51,22 @@
       private String replyTo = null;
       private boolean responseReceived = false;
       private boolean ackReceived = false;
  +    
   
   
       private String acksTo = null;
       private String to = null;
       private static final Log log = 
LogFactory.getLog(RMMessageContext.class.getName());
  -
  +    private ArrayList msgIdList = new ArrayList ();
  +    
  +    public void addToMsgIdList(String msgId){
  +        msgIdList.add(msgId);
  +    }
  +    
  +    public ArrayList getMessageIdList(){
  +        return msgIdList;
  +    }
  +    
       public String getTo() {
           return to;
       }
  
  
  
  1.27      +9 -2      
ws-fx/sandesha/src/org/apache/sandesha/client/ClientStorageManager.java
  
  Index: ClientStorageManager.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/client/ClientStorageManager.java,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- ClientStorageManager.java 7 Mar 2005 05:34:34 -0000       1.26
  +++ ClientStorageManager.java 27 Apr 2005 07:08:49 -0000      1.27
  @@ -162,11 +162,17 @@
        * This will be used by the SimpleAxisServer and the Sender to set the
        * proper sequenceID
        */
  -    public boolean setApprovedOutSequence(String oldOutsequenceId, String 
newOutSequenceId) {
  +    public boolean setApprovedOutSequence(String createSeqId, String 
newOutSequenceId) {
   
           boolean done = false;
  -        String sequenceID = 
accessor.getSequenceOfOutSequence(oldOutsequenceId);
  +        String oldOutsequenceId = 
accessor.getFirstCreateSequenceMsgId(createSeqId);
   
  +        if(oldOutsequenceId==null){
  +            return false;
  +        }
  +        
  +        String sequenceID = 
accessor.getSequenceOfOutSequence(oldOutsequenceId);
  +        
           if (sequenceID == null) {
               log.error(Constants.ErrorMessages.SET_APPROVED_OUT_SEQ);
               return false;
  @@ -175,6 +181,7 @@
           accessor.setOutSequenceApproved(sequenceID, true);
           accessor.removeCreateSequenceMsg(oldOutsequenceId);
           return true;
  +    
       }
   
       /**
  
  
  
  1.22      +6 -1      
ws-fx/sandesha/src/org/apache/sandesha/server/RMInvoker.java
  
  Index: RMInvoker.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/RMInvoker.java,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- RMInvoker.java    12 Apr 2005 02:15:32 -0000      1.21
  +++ RMInvoker.java    27 Apr 2005 07:08:50 -0000      1.22
  @@ -101,7 +101,12 @@
                               UUIDGen uuid = UUIDGenFactory.getUUIDGen();
                               String id = uuid.nextUUID();
   
  -                            
storageManager.setTemporaryOutSequence(rmMsgContext.getSequenceID(), 
Constants.UUID + id);
  +
  +                            String msgIdStr = Constants.UUID + id;
  +                            rmMsgContext.addToMsgIdList(msgIdStr);
  +
  +
  +                            
storageManager.setTemporaryOutSequence(rmMsgContext.getSequenceID(), msgIdStr);
                               SOAPEnvelope createSequenceEnvelope = 
EnvelopeCreator.createCreateSequenceEnvelope(id,
                                       rmMsgContext, Constants.SERVER);
   
  
  
  
  1.24      +4 -6      
ws-fx/sandesha/src/org/apache/sandesha/server/ServerStorageManager.java
  
  Index: ServerStorageManager.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/ServerStorageManager.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- ServerStorageManager.java 7 Mar 2005 05:34:35 -0000       1.23
  +++ ServerStorageManager.java 27 Apr 2005 07:08:50 -0000      1.24
  @@ -202,19 +202,17 @@
           accessor.setOutSequenceApproved(sequenceId, false);
       }
   
  -    public boolean setApprovedOutSequence(String oldOutsequenceId, String 
newOutSequenceId) {
  +    public boolean setApprovedOutSequence(String createSeqId, String 
newOutSequenceId) {
   
  -        boolean done = false;
  -        String sequenceID = 
accessor.getSequenceOfOutSequence(oldOutsequenceId);
  +        String oldOutsequenceId = 
accessor.getFirstCreateSequenceMsgId(createSeqId);
  +                         String sequenceID = 
accessor.getSequenceOfOutSequence(oldOutsequenceId);
   
           if (sequenceID == null) {
  -
  +            log.error(Constants.ErrorMessages.SET_APPROVED_OUT_SEQ);
               return false;
           }
           accessor.setOutSequence(sequenceID, newOutSequenceId);
           accessor.setOutSequenceApproved(sequenceID, true);
  -
  -        //Deleting create sequence message from the priority queue.
           accessor.removeCreateSequenceMsg(oldOutsequenceId);
           return true;
       }
  
  
  
  1.8       +2 -0      
ws-fx/sandesha/src/org/apache/sandesha/storage/dao/ISandeshaDAO.java
  
  Index: ISandeshaDAO.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/storage/dao/ISandeshaDAO.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ISandeshaDAO.java 28 Feb 2005 13:26:06 -0000      1.7
  +++ ISandeshaDAO.java 27 Apr 2005 07:08:50 -0000      1.8
  @@ -119,5 +119,7 @@
       public boolean isAllOutgoingTerminateSent();
   
       public boolean isAllIncommingTerminateReceived();
  +    
  +    public String getFirstCreateSequenceMsgId(String createSeqId);
   
   }
  \ No newline at end of file
  
  
  
  1.8       +7 -0      
ws-fx/sandesha/src/org/apache/sandesha/storage/dao/SandeshaDatabaseDAO.java
  
  Index: SandeshaDatabaseDAO.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/storage/dao/SandeshaDatabaseDAO.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SandeshaDatabaseDAO.java  28 Feb 2005 13:26:06 -0000      1.7
  +++ SandeshaDatabaseDAO.java  27 Apr 2005 07:08:50 -0000      1.8
  @@ -30,6 +30,13 @@
   
   public class SandeshaDatabaseDAO implements ISandeshaDAO {
   
  +    /* (non-Javadoc)
  +     * @see 
org.apache.sandesha.storage.dao.ISandeshaDAO#getFirstCreateSequenceMsgId(java.lang.String)
  +     */
  +    public String getFirstCreateSequenceMsgId(String createSeqId) {
  +        // TODO Auto-generated method stub
  +        return null;
  +    }
       private static final Log log = 
LogFactory.getLog(SandeshaDatabaseDAO.class.getName());
   
       public void setAckReceived(String seqId, long msgNo) {
  
  
  
  1.9       +5 -0      
ws-fx/sandesha/src/org/apache/sandesha/storage/dao/SandeshaQueueDAO.java
  
  Index: SandeshaQueueDAO.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/storage/dao/SandeshaQueueDAO.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- SandeshaQueueDAO.java     28 Feb 2005 13:26:06 -0000      1.8
  +++ SandeshaQueueDAO.java     27 Apr 2005 07:08:50 -0000      1.9
  @@ -468,5 +468,10 @@
           SandeshaQueue sq = SandeshaQueue.getInstance();
           sq.setTerminateReceived(seqId);
       }
  +    
   
  +    public String getFirstCreateSequenceMsgId(String createSeqId) {
  +        SandeshaQueue sq = SandeshaQueue.getInstance();
  +        return sq.getFirstCreateSequenceMsgId(createSeqId);
  +    }
   }
  
  
  
  1.11      +84 -12    
ws-fx/sandesha/src/org/apache/sandesha/storage/queue/SandeshaQueue.java
  
  Index: SandeshaQueue.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/storage/queue/SandeshaQueue.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- SandeshaQueue.java        12 Apr 2005 02:15:33 -0000      1.10
  +++ SandeshaQueue.java        27 Apr 2005 07:08:50 -0000      1.11
  @@ -18,19 +18,19 @@
   package org.apache.sandesha.storage.queue;
   
   import org.apache.axis.components.logger.LogFactory;
  +import org.apache.axis.components.uuid.UUIDGen;
  +import org.apache.axis.components.uuid.UUIDGenFactory;
  +import org.apache.axis.message.addressing.AddressingHeaders;
  +import org.apache.axis.message.addressing.MessageID;
  +import org.apache.axis.types.URI;
   import org.apache.commons.logging.Log;
   import org.apache.sandesha.Constants;
   import org.apache.sandesha.RMMessageContext;
   import org.apache.sandesha.ws.rm.AcknowledgementRange;
   import org.apache.sandesha.ws.rm.SequenceAcknowledgement;
   
  -import java.util.ArrayList;
  -import java.util.Date;
  -import java.util.HashMap;
  -import java.util.Iterator;
  -import java.util.List;
  -import java.util.Set;
  -import java.util.Vector;
  +import java.util.*;
  +
   
   /*
    * Created on Aug 4, 2004 at 4:49:49 PM
  @@ -285,11 +285,63 @@
                                   Date d = new Date();
                                   long currentTime = d.getTime();
                                   if (currentTime >= lastSentTime + 
Constants.RETRANSMISSION_INTERVAL) {
  -                                    tempMsg.setLastSentTime(currentTime);
  -                                    msg = tempMsg;
  -                                    break forLoop;
  +
  +                                    //EDITED FOR MSG NO REPITITION
  +                                    String oldOutSeqId, newOutSeqId;
  +
  +                                    String oldCreateSeqId = 
tempMsg.getMessageID().toString();
  +                                    UUIDGen uuidGen = 
UUIDGenFactory.getUUIDGen();
  +                                    String uuid = uuidGen.nextUUID();
  +
  +
  +                                    String newCreateSeqId = Constants.UUID + 
uuid;
  +                                    tempMsg.setMessageID(newCreateSeqId);
  +
  +                                    oldOutSeqId = oldCreateSeqId;
  +                                    newOutSeqId = newCreateSeqId;
  +
  +
  +                                    //MessageContext msgContext = 
tempMsg.getMsgContext();
  +                                    //String toAddress = 
tempMsg.getOutGoingAddress();
  +
  +                                    try {
  +                                        AddressingHeaders addrHeaders = new 
AddressingHeaders(tempMsg.getMsgContext().getRequestMessage().getSOAPEnvelope());
  +                                        addrHeaders.setMessageID(new 
MessageID(new URI(newCreateSeqId)));
  +                                        
addrHeaders.toEnvelope(tempMsg.getMsgContext().getRequestMessage().getSOAPEnvelope());
  +
  +
  +
  +                                        //SOAPEnvelope resEnvelope = 
EnvelopeCreator.createCreateSequenceEnvelope(uuid, tempMsg, Constants.CLIENT);
  +                                        //MessageContext createSeqMsgContext 
= tempMsg.getMsgContext(); //new MessageContext(msgContext.getAxisEngine());
  +
  +                                        
//createSeqMsgContext.setRequestMessage(new Message(resEnvelope));
  +                                        
//tempMsg.setMsgContext(createSeqMsgContext);
  +
  +                                        //changing the out sequence to the 
messageid of new create sequence.
  +                                        //String seqId = 
getSequenceOfOutSequence(oldOutSeqId);
  +                                        //setOutSequence(seqId,newOutSeqId);
  +                                        tempMsg.setLastSentTime(currentTime);
  +                                        msg = tempMsg;
  +
  +                                        if (msg != null) {
  +                                            
msg.addToMsgIdList(msg.getMessageID().toString());
  +                                            List msgIdList = 
msg.getMessageIdList();
  +                                            Iterator it = 
msgIdList.iterator();
  +
  +                                        }
  +
  +                                        break forLoop;
  +
  +                                    } catch (Exception ex) {
  +                                        ex.printStackTrace();
  +                                    }
  +
  +                                    //END EDITED
  +
  +
                                   }
                                   break;
  +
                               default:
                                   highPriorityQueue.remove(i);
                                   queueBin.put(tempMsg.getMessageID(), 
tempMsg);
  @@ -299,6 +351,8 @@
                       }
                   }
               }
  +
  +
               return msg;
   
           }
  @@ -423,7 +477,6 @@
       }
   
       public String getSequenceOfOutSequence(String outSequence) {
  -
           if (outSequence == null) {
               return null;
           }
  @@ -547,7 +600,8 @@
               int size = highPriorityQueue.size();
               for (int i = 0; i < size; i++) {
                   RMMessageContext msg = (RMMessageContext) 
highPriorityQueue.get(i);
  -                if (msg.getMessageID().equals(messageId)) {
  +                String tempMsgId = (String) msg.getMessageIdList().get(0);
  +                if (tempMsgId.equals(messageId)) {
                       highPriorityQueue.remove(i);
                       queueBin.put(messageId, msg);
                       return;
  @@ -886,6 +940,24 @@
           ics.setTerminateReceived(true);
       }
   
  +    public String getFirstCreateSequenceMsgId(String createSeqId) {
  +
  +        synchronized (highPriorityQueue) {
  +
  +            Iterator it = highPriorityQueue.iterator();
  +            while (it.hasNext()) {
  +                RMMessageContext msg = (RMMessageContext) it.next();
  +                boolean contains = 
msg.getMessageIdList().contains(createSeqId);
  +                if (contains) {
  +                    return ((String) msg.getMessageIdList().get(0));
  +                }
  +            }
  +        }
  +
  +        return null;
  +
  +    }
  +
   
   }
   
  
  
  
  1.10      +5 -1      
ws-fx/sandesha/src/org/apache/sandesha/util/RMMessageCreator.java
  
  Index: RMMessageCreator.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/util/RMMessageCreator.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- RMMessageCreator.java     26 Apr 2005 03:24:50 -0000      1.9
  +++ RMMessageCreator.java     27 Apr 2005 07:08:50 -0000      1.10
  @@ -42,8 +42,12 @@
   
           //Create the RMMessageContext to hold the create Sequence Request.
           RMMessageContext createSeqRMMsgContext = new RMMessageContext();
  -        createSeqRMMsgContext.setMessageID(Constants.UUID + uuid);
  +        
  +        String msgId = Constants.UUID + uuid;
  +        createSeqRMMsgContext.setMessageID(msgId);
   
  +        createSeqRMMsgContext.addToMsgIdList(msgId);
  +        
           MessageContext msgContext = rmMsgCtx.getMsgContext();
           String toAddress = rmMsgCtx.getOutGoingAddress();
   
  
  
  

Reply via email to