jaliya      2005/02/02 05:41:55

  Modified:    sandesha/interop/org/apache/sandesha/samples/interop
                        EchoStringService.java
               sandesha/src/org/apache/sandesha EnvelopeCreator.java
                        IStorageManager.java
               sandesha/src/org/apache/sandesha/client RMSender.java
               sandesha/src/org/apache/sandesha/server
                        AcknowledgementProcessor.java
                        CompositeProcessor.java
                        CreateSequenceProcessor.java RMInvoker.java
                        Sender.java ServerStorageManager.java
               sandesha/src/org/apache/sandesha/server/queue
                        ResponseSequenceHash.java ServerQueue.java
               sandesha/src/org/apache/sandesha/ws/rm RMHeaders.java
               sandesha/src/org/apache/sandesha/ws/rm/handlers
                        RMHandler.java RMServerRequestHandler.java
               sandesha/src/org/apache/sandesha/ws/rm/providers
                        RMProvider.java
  Log:
  Fixed some bugs in the code, by testing the inter-op with IBM end point
  
  Revision  Changes    Path
  1.4       +14 -0     
ws-fx/sandesha/interop/org/apache/sandesha/samples/interop/EchoStringService.java
  
  Index: EchoStringService.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/interop/org/apache/sandesha/samples/interop/EchoStringService.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- EchoStringService.java    7 May 2004 15:18:20 -0000       1.3
  +++ EchoStringService.java    2 Feb 2005 13:41:55 -0000       1.4
  @@ -33,6 +33,20 @@
               sequences.put(sequence,(new String(text)));
   
           }
  +        System.out.println("ECHO-STRING SERVICE "+ text);
           return text;
       }
  +
  +     public void pingString(String text,String sequence){
  +
  +        if(sequences.get(sequence)!=null){
  +            text=(String) sequences.get(sequence)+text;
  +            sequences.put(sequence,new String(text));
  +        }else{
  +            sequences.put(sequence,(new String(text)));
  +
  +        }
  +        System.out.println("PING-STRING SERVICE "+ text);
  +
  +    }
   }
  
  
  
  1.14      +64 -75    
ws-fx/sandesha/src/org/apache/sandesha/EnvelopeCreator.java
  
  Index: EnvelopeCreator.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/EnvelopeCreator.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- EnvelopeCreator.java      10 Jan 2005 12:11:26 -0000      1.13
  +++ EnvelopeCreator.java      2 Feb 2005 13:41:55 -0000       1.14
  @@ -1,19 +1,19 @@
   /*
  - * Copyright  1999-2004 The Apache Software Foundation.
  - *
  - *  Licensed under the Apache License, Version 2.0 (the "License");
  - *  you may not use this file except in compliance with the License.
  - *  You may obtain a copy of the License at
  - *
  - *      http://www.apache.org/licenses/LICENSE-2.0
  - *
  - *  Unless required by applicable law or agreed to in writing, software
  - *  distributed under the License is distributed on an "AS IS" BASIS,
  - *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  - *  See the License for the specific language governing permissions and
  - *  limitations under the License.
  - *
  - */
  +* Copyright  1999-2004 The Apache Software Foundation.
  +*
  +*  Licensed under the Apache License, Version 2.0 (the "License");
  +*  you may not use this file except in compliance with the License.
  +*  You may obtain a copy of the License at
  +*
  +*      http://www.apache.org/licenses/LICENSE-2.0
  +*
  +*  Unless required by applicable law or agreed to in writing, software
  +*  distributed under the License is distributed on an "AS IS" BASIS,
  +*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  +*  See the License for the specific language governing permissions and
  +*  limitations under the License.
  +*
  +*/
   package org.apache.sandesha;
   
   import java.net.URL;
  @@ -27,13 +27,7 @@
   import org.apache.axis.components.uuid.UUIDGenFactory;
   import org.apache.axis.message.SOAPBody;
   import org.apache.axis.message.SOAPEnvelope;
  -import org.apache.axis.message.addressing.Action;
  -import org.apache.axis.message.addressing.Address;
  -import org.apache.axis.message.addressing.AddressingHeaders;
  -import org.apache.axis.message.addressing.From;
  -import org.apache.axis.message.addressing.MessageID;
  -import org.apache.axis.message.addressing.ReplyTo;
  -import org.apache.axis.message.addressing.To;
  +import org.apache.axis.message.addressing.*;
   import org.apache.axis.types.URI;
   import org.apache.axis.types.URI.MalformedURIException;
   import org.apache.sandesha.ws.rm.CreateSequence;
  @@ -71,14 +65,12 @@
   
           try {
   
  -            AddressingHeaders outGoingAddressingHaders = new 
AddressingHeaders(
  -                    envelope, null, true, false, true, false, null);
  +            AddressingHeaders outGoingAddressingHaders = new 
AddressingHeaders(envelope);
   
               Action action = new Action(new URI(
                       Constants.ACTION_CREATE_SEQUENCE_RESPONSE));
  -
  -            SOAPHeaderElement actionElement = action
  -                    .toSOAPHeaderElement(envelope);
  +            //TODO actor??
  +            SOAPHeaderElement actionElement = 
action.toSOAPHeaderElement(envelope,null);
               //actionElement.setMustUnderstand(true);
               outGoingAddressingHaders.setAction(action);
   
  @@ -102,12 +94,13 @@
                       incommingMessageId.toString(), new QName(
                               Constants.WSA_PREFIX, Constants.WSA_NS));
   
  -            //Setting the <To>
  -            ReplyTo incommingReplyTo = (ReplyTo) 
addressingHeaders.getReplyTo();
  -            Address incommingAddress = incommingReplyTo.getAddress();
  -            To to = new To(new URI(incommingAddress.toString()));
  -            outGoingAddressingHaders.setTo(to);
  -
  +            //SettingTo
  +            if(!rmMessageContext.getSync()){
  +                ReplyTo incommingReplyTo = (ReplyTo) 
addressingHeaders.getReplyTo();
  +                AttributedURI incommingAddress = 
incommingReplyTo.getAddress();
  +                To to = new To(new URI(incommingAddress.toString()));
  +                outGoingAddressingHaders.setTo(to);
  +            }
               outGoingAddressingHaders.toEnvelope(envelope, null);
   
               //now set the body elements
  @@ -135,17 +128,16 @@
       //Constants.SERVER
   
       public static SOAPEnvelope createCreateSequenceEnvelope(String uuid,
  -            RMMessageContext message, int endPoint) {
  +                                                            RMMessageContext 
message, int endPoint) {
   
           AddressingHeaders addressingHeaders = message.getAddressingHeaders();
           SOAPEnvelope envelope = createBasicEnvelop();
   
           try {
  -            AddressingHeaders outGoingAddressingHaders = new 
AddressingHeaders(
  -                    envelope, null, true, false, true, false, null);
  +            AddressingHeaders outGoingAddressingHaders = new 
AddressingHeaders(envelope);
   
               Action action = new Action( new 
URI(Constants.ACTION_CREATE_SEQUENCE));
  -            SOAPHeaderElement acionElement = 
action.toSOAPHeaderElement(envelope);
  +            SOAPHeaderElement acionElement = 
action.toSOAPHeaderElement(envelope,null);
               outGoingAddressingHaders.setAction(action);
   
               MessageID messageId = new MessageID(new URI("uuid:" + uuid));
  @@ -159,9 +151,9 @@
                       outGoingAddressingHaders.setReplyTo(new ReplyTo(new 
Address(Constants.ANONYMOUS_URI)));
                   }
                   else{
  -                if (addressingHeaders.getReplyTo() != null)
  -                    outGoingAddressingHaders.setReplyTo(addressingHeaders
  -                            .getReplyTo());
  +                    if (addressingHeaders.getReplyTo() != null)
  +                        outGoingAddressingHaders.setReplyTo(addressingHeaders
  +                                .getReplyTo());
                   }
               } else if (endPoint == 1) {
                   //Setting from the Server
  @@ -177,7 +169,7 @@
                   //Setting To
                   ReplyTo incommingReplyTo = (ReplyTo) addressingHeaders
                           .getReplyTo();
  -                Address incommingAddress = incommingReplyTo.getAddress();
  +                AttributedURI incommingAddress = 
incommingReplyTo.getAddress();
                   To to = new To(new URI(incommingAddress.toString()));
                   outGoingAddressingHaders.setTo(to);
               }
  @@ -232,14 +224,13 @@
                   .getAddressingHeaders();
           SOAPEnvelope envelope = createBasicEnvelop();
           try {
  -            AddressingHeaders outGoingAddressingHaders = new 
AddressingHeaders(
  -                    envelope, null, true, false, true, false, null);
  +            AddressingHeaders outGoingAddressingHaders = new 
AddressingHeaders(envelope);
               //Action for sequence acknowledgement.
               Action action = new Action(new URI(
                       Constants.RM_SEQUENCE_ACKNOWLEDMENT_ACTION));
   
               SOAPHeaderElement actionElement = action
  -                    .toSOAPHeaderElement(envelope);
  +                    .toSOAPHeaderElement(envelope,null);
               //actionElement.setMustUnderstand(true);
               outGoingAddressingHaders.setAction(action);
   
  @@ -258,7 +249,7 @@
               outGoingAddressingHaders.setFrom(from);
   
               //Add to <To>
  -            Address inFrom = addressingHeaders.getFrom().getAddress();
  +            AttributedURI inFrom = addressingHeaders.getFrom().getAddress();
               To to = new To(new URI(inFrom.toString()));
               outGoingAddressingHaders.setTo(to);
   
  @@ -289,8 +280,7 @@
                   .getAddressingHeaders();
           SOAPEnvelope responseEnvelope = createBasicEnvelop();
           try {
  -            AddressingHeaders outGoingAddressingHaders = new 
AddressingHeaders(
  -                    responseEnvelope, null, true, false, true, false, null);
  +            AddressingHeaders outGoingAddressingHaders = new 
AddressingHeaders(responseEnvelope);
               //TODO Action for RESPONSE MESSAGE
               //Do we need this????
               Identifier seqId = new Identifier();
  @@ -311,7 +301,7 @@
               //outGoingAddressingHaders.setRelatesTo(relatesToList);
               ///RelatesTo relatesTo = new RelatesTo();
               if (rmMessageContext.getOldSequenceID() != null)
  -                //Needs to verify the relatesTo Header.
  +            //Needs to verify the relatesTo Header.
                   outGoingAddressingHaders.addRelatesTo(rmMessageContext
                           .getMessageID(), new QName("aa", "bb"));
   
  @@ -332,13 +322,13 @@
               //TODO
               //HARD CODED REPLYTO
               //THIS SHOULD BE SET USING A PROPERTY FOR THE SEVER SIDE
  -            ReplyTo replyTo = new ReplyTo(
  -                    new Address(
  -                            
"http://localhost:8080/axis/services/EchoStringService?wsdl";));
  +          //  ReplyTo replyTo = new ReplyTo(
  +            //        new Address(
  +             //               
"http://localhost:8080/axis/services/EchoStringService?wsdl";));
               outGoingAddressingHaders.setReplyTo(from);
   
               //Add to <To>
  -            Address inFrom = addressingHeaders.getFrom().getAddress();
  +            AttributedURI inFrom = addressingHeaders.getFrom().getAddress();
               To to = new To(new URI(inFrom.toString()));
               outGoingAddressingHaders.setTo(to);
   
  @@ -352,10 +342,11 @@
                   e.printStackTrace();
               }
   
  +
               //Set the addressing headers to the SOAPEnvelope.
               outGoingAddressingHaders.toEnvelope(responseEnvelope, null);
  -            responseEnvelope.setBody((SOAPBody) 
rmMessageContext.getMsgContext().getResponseMessage().getSOAPBody());
  -               
  +            responseEnvelope.setBody((SOAPBody) 
rmMessageContext.getMsgContext().getResponseMessage().getSOAPEnvelope().getBody());
  +
   
           } catch (SOAPException e) {
               // TODO Auto-generated catch block
  @@ -390,9 +381,9 @@
           Identifier id = new Identifier();
           id.setIdentifier(rmMessageContext.getSequenceID());
           seq.setIdentifier(id);
  -        
  +
           if(rmMessageContext.isLastMessage()){
  -        seq.setLastMessage(new LastMessage());        
  +            seq.setLastMessage(new LastMessage());
           }
   
           //Message Number for the new message.
  @@ -402,8 +393,8 @@
   
           rmHeaders.setSequence(seq);
           rmMessageContext.setRMHeaders(rmHeaders);
  -        
  -   
  +
  +
   
           try {
   
  @@ -412,8 +403,7 @@
                       .getRequestMessage().getSOAPEnvelope();
   
               rmMessageContext.getRMHeaders().toSoapEnvelop(requestEnvelope);
  -            AddressingHeaders outGoingAddressingHaders = new 
AddressingHeaders(
  -                    requestEnvelope, null, true, false, true, false, null);
  +            AddressingHeaders outGoingAddressingHaders = new 
AddressingHeaders(requestEnvelope);
   
               //Set the messageID
               //UUIDGen uuidGen = UUIDGenFactory.getUUIDGen();
  @@ -430,7 +420,7 @@
               outGoingAddressingHaders.setFrom(addressingHeaders.getFrom());
               outGoingAddressingHaders.setTo(addressingHeaders.getTo());
               if(addressingHeaders.getReplyTo()!=null)
  -            
outGoingAddressingHaders.setReplyTo(addressingHeaders.getReplyTo());
  +                
outGoingAddressingHaders.setReplyTo(addressingHeaders.getReplyTo());
   
               //TODO
               //Action should be taken from the server-config.wsdd.
  @@ -440,8 +430,8 @@
               } catch (Exception e) {
                   e.printStackTrace();
               }
  -        
  -          
  +
  +
               //Set the addressing headers to the SOAPEnvelope.
               outGoingAddressingHaders.toEnvelope(requestEnvelope, null);
               //System.out.println(requestEnvelope.toString());
  @@ -464,33 +454,32 @@
           AddressingHeaders addressingHeaders = 
rmMessageContext.getAddressingHeaders();
           SOAPEnvelope terSeqEnv = createBasicEnvelop();
           try {
  -            AddressingHeaders outGoingAddressingHaders = new 
AddressingHeaders(terSeqEnv,
  -                    null, true, false, true, false, null);
  +            AddressingHeaders outGoingAddressingHaders = new 
AddressingHeaders(terSeqEnv);
               Identifier seqId = new Identifier();
               seqId.setIdentifier(rmMessageContext.getSequenceID());
               Sequence seq = new Sequence();
               seq.setIdentifier(seqId);
               seq.toSoapEnvelop(terSeqEnv);
  -            
  -            
  +
  +
               Action terSeqAction = new Action(new 
URI(Constants.ACTION_TERMINATE_SEQUENCE));
               outGoingAddressingHaders.setAction(terSeqAction);
  -            
  +
               UUIDGen uuidGen = UUIDGenFactory.getUUIDGen();
               MessageID messageId = new MessageID(new URI("uuid:"+ 
uuidGen.nextUUID()));
               outGoingAddressingHaders.setMessageID(messageId);
  -            
  +
               outGoingAddressingHaders.setFrom(addressingHeaders.getFrom());
               outGoingAddressingHaders.setTo(addressingHeaders.getTo());
  -            
  +
               outGoingAddressingHaders.toEnvelope(terSeqEnv, null);
  -            
  -            
  +
  +
               TerminateSequence terSeq= new TerminateSequence();
               terSeq.toSoapEnvelop( terSeqEnv);
  -            
  -            
  -            
  +
  +
  +
           } catch (Exception e) {
               e.printStackTrace();
           }
  
  
  
  1.12      +1 -1      
ws-fx/sandesha/src/org/apache/sandesha/IStorageManager.java
  
  Index: IStorageManager.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/IStorageManager.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- IStorageManager.java      11 Jan 2005 13:49:34 -0000      1.11
  +++ IStorageManager.java      2 Feb 2005 13:41:55 -0000       1.12
  @@ -67,7 +67,7 @@
       public void addAcknowledgement(RMMessageContext rmMessageContext);
   
       //Need to implement this
  -    public boolean isMessageExist(String sequenceID, long messageNumber);
  +    public boolean  isMessageExist(String sequenceID, long messageNumber);
   
       //Try to send me a sorted map as we disucssed.
       public Map getListOfMessageNumbers(String sequenceID);
  
  
  
  1.20      +16 -1     
ws-fx/sandesha/src/org/apache/sandesha/client/RMSender.java
  
  Index: RMSender.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/client/RMSender.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- RMSender.java     19 Jan 2005 06:50:25 -0000      1.19
  +++ RMSender.java     2 Feb 2005 13:41:55 -0000       1.20
  @@ -18,6 +18,8 @@
   
   import java.io.IOException;
   import java.net.ServerSocket;
  +import java.util.Vector;
  +import java.util.Iterator;
   
   import javax.wsdl.extensions.soap.SOAPFault;
   import javax.xml.namespace.QName;
  @@ -35,6 +37,7 @@
   import org.apache.axis.handlers.BasicHandler;
   import org.apache.axis.handlers.soap.SOAPService;
   import org.apache.axis.message.SOAPEnvelope;
  +import org.apache.axis.message.SOAPHeaderElement;
   import org.apache.axis.message.addressing.Action;
   import org.apache.axis.message.addressing.Address;
   import org.apache.axis.message.addressing.AddressingHeaders;
  @@ -104,7 +107,19 @@
                               requestMesssageContext.getMessageID());
                       
Thread.sleep(Constants.CLIENT_RESPONSE_CHECKING_INTERVAL);
                   }
  -                
msgContext.setResponseMessage(responseMessageContext.getMsgContext()
  +
  +
  +            Vector 
headers=responseMessageContext.getMsgContext().getRequestMessage().getSOAPEnvelope().getHeaders();
  +            Iterator ite=headers.iterator();
  +
  +            while(ite.hasNext()){
  +                System.out.println("HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH");
  +                SOAPHeaderElement headerElement = 
(SOAPHeaderElement)ite.next();
  +                headerElement.setMustUnderstand(false);
  +                headerElement.setProcessed(true);
  +            }
  +
  +            
msgContext.setResponseMessage(responseMessageContext.getMsgContext()
                           .getRequestMessage());
               } else {
                   boolean gotAck = false;
  
  
  
  1.14      +16 -19    
ws-fx/sandesha/src/org/apache/sandesha/server/AcknowledgementProcessor.java
  
  Index: AcknowledgementProcessor.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/AcknowledgementProcessor.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- AcknowledgementProcessor.java     12 Jan 2005 12:19:31 -0000      1.13
  +++ AcknowledgementProcessor.java     2 Feb 2005 13:41:55 -0000       1.14
  @@ -33,14 +33,14 @@
   /**
    * @author
    */
  -public class AcknowledgementProcessor implements IRMMessageProcessor {
  -    IStorageManager storageManger = null;
  +public final class AcknowledgementProcessor implements 
org.apache.sandesha.server.IRMMessageProcessor {
  +    private IStorageManager storageManger = null;
   
       public AcknowledgementProcessor(IStorageManager storageManger) {
           this.storageManger = storageManger;
       }
   
  -      public boolean processMessage(RMMessageContext rmMessageContext) 
throws RMException {
  +      public final boolean processMessage(RMMessageContext rmMessageContext) 
throws RMException {
           SequenceAcknowledgement seqAcknowledgement = rmMessageContext
                   .getRMHeaders().getSequenceAcknowledgement();
           String seqID = seqAcknowledgement.getIdentifier().getIdentifier();
  @@ -72,7 +72,7 @@
           //Assume that the list is sorted and in the ascending order.
           Map listOfMsgNumbers = storageManger.getListOfMessageNumbers(seqID);
           
  -        if(listOfMsgNumbers == null)
  +        if(null == listOfMsgNumbers)
               System.out.println("MSG Number list is NULL");
           else{        
               Iterator ite = listOfMsgNumbers.keySet().iterator();
  @@ -93,22 +93,20 @@
   
           //FIX THIS FIX THIS //FIX THIS FIX THIS //FIX THIS FIX THIS
           //Need to change this to the new Anonymous URI.
  -        if (((rmMessageContext.getAddressingHeaders().getFrom().getAddress()
  -                .toString()
  -                
.equals(org.apache.axis.message.addressing.Constants.NS_URI_ANONYMOUS)) == true)
  -                || (rmMessageContext.getAddressingHeaders().getFrom()
  -                        .getAddress().toString()
  -                        
.equals("http://schemas.xmlsoap.org/ws/2003/03/addressing/role/anonymous";))) {
  +        if ((true == 
(rmMessageContext.getAddressingHeaders().getFrom().getAddress().toString()
  +                
.equals(org.apache.axis.message.addressing.Constants.NS_URI_ANONYMOUS)))
  +                || 
("http://schemas.xmlsoap.org/ws/2003/03/addressing/role/anonymous".equals(rmMessageContext.getAddressingHeaders().getFrom()
  +                .getAddress().toString()))) {
               //Now we have synchronized ack.
               //The original message context is used to send the ack
               // asynchronously to the client.
               //So the response message is replaced by the new ack message.
               try{
  -            rmMessageContext.getMsgContext().setResponseMessage(
  -                    new 
Message(rmMsgContext.getMsgContext().getResponseMessage().getSOAPEnvelope()));
  +              String 
soapMsg=rmMsgContext.getMsgContext().getResponseMessage().getSOAPPartAsString();
  +              rmMessageContext.getMsgContext().setResponseMessage(new 
Message(soapMsg));
                 }  catch(Exception e ){
                       throw new RMException(e.getLocalizedMessage());
  -                }
  +              }
   
               return true;
           } else {
  @@ -121,9 +119,9 @@
   
       }
   
  -    private RMMessageContext getAckRMMsgCtx(RMMessageContext 
rmMessageContext, Vector ackRangeVector){
  +    private static RMMessageContext getAckRMMsgCtx(RMMessageContext 
rmMessageContext, Vector ackRangeVector){
   
  -            SOAPEnvelope ackEnvelope = EnvelopeCreator
  +         SOAPEnvelope ackEnvelope = EnvelopeCreator
                   .createAcknowledgementEnvelope(rmMessageContext, 
ackRangeVector);
           //Add the envelope to the response message of the messageContext.
           //rmMessageContext.getMsgContext().setResponseMessage(new
  @@ -134,8 +132,7 @@
               Message resMsg = new Message(ackEnvelope);
   
               //Create a new message context to store the ack message.
  -            MessageContext msgContext = new MessageContext(rmMessageContext
  -                    .getMsgContext().getAxisEngine());
  +            MessageContext msgContext = new 
MessageContext(rmMessageContext.getMsgContext().getAxisEngine());
               //Copy the contents of the rmMessageContext to the rmMsgContext.
               rmMessageContext.copyContents(rmMsgContext);
               //Set the response message using the Ack message
  @@ -183,9 +180,9 @@
                               .longValue();
                   } else {
   
  -                    if ((((Long) listOfMsgNumbers.get(new Long(i + 1)))
  +                    if (1 == (((Long) listOfMsgNumbers.get(new Long(i + 1)))
                               .longValue() - ((Long) listOfMsgNumbers
  -                            .get(new Long(i))).longValue()) == 1) {
  +                            .get(new Long(i))).longValue())) {
                           max = ((Long) listOfMsgNumbers.get(new Long(i + 1)))
                                   .longValue();
                           found = true;
  
  
  
  1.14      +20 -33    
ws-fx/sandesha/src/org/apache/sandesha/server/CompositeProcessor.java
  
  Index: CompositeProcessor.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/CompositeProcessor.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- CompositeProcessor.java   12 Jan 2005 12:19:31 -0000      1.13
  +++ CompositeProcessor.java   2 Feb 2005 13:41:55 -0000       1.14
  @@ -39,62 +39,48 @@
       public boolean processMessage(RMMessageContext rmMessageContext) throws 
RMException{
   
           //if the message is and Ack then process the ack
  -        //if the message has a body then insert it to the inqueue
  +        //if the message has a body then insert it to the queue
   
           RMHeaders rmHeaders = rmMessageContext.getRMHeaders();
  -        AcknowledgementProcessor ackProcessor = new AcknowledgementProcessor(
  -                this.storageManger);
  +        AcknowledgementProcessor ackProcessor = new 
AcknowledgementProcessor(this.storageManger);
           if (rmHeaders.getSequenceAcknowledgement() != null) {
  -
  -            ackProcessor.processMessage(rmMessageContext);
  +           ackProcessor.processMessage(rmMessageContext);
           }
   
           if (rmHeaders.getSequence() != null) {
               if (rmHeaders.getSequence().getMessageNumber() != null) {
  -                String sequenceID = rmHeaders.getSequence().getIdentifier()
  -                        .getIdentifier();
  -                long messageNumber = 
rmHeaders.getSequence().getMessageNumber()
  -                        .getMessageNumber();
  +                String sequenceID = 
rmHeaders.getSequence().getIdentifier().getIdentifier();
  +                long messageNumber = 
rmHeaders.getSequence().getMessageNumber().getMessageNumber();
                   if (storageManger.isMessageExist(sequenceID, messageNumber) 
!= true) {
                       //Create a copy of the RMMessageContext.
                       RMMessageContext rmMsgContext = new RMMessageContext();
  -                    
  -                   System.out.println("SETTING THE RESPONSE "+sequenceID+"  
"+messageNumber) ;
  +                    //Copy the RMMEssageContext
  +                    rmMessageContext.copyContents(rmMsgContext);
  +                    System.out.println("SETTING THE RESPONSE "+sequenceID+"  
"+messageNumber) ;
                       rmMsgContext.setSequenceID(sequenceID);
                       rmMsgContext.setMsgNumber(messageNumber);
  -
                       try {
  +                        //Create a new MessageContext, by pasing the axis 
engine.
  +                        MessageContext msgContext = new 
MessageContext(rmMessageContext.getMsgContext().getAxisEngine());
  +                       //Copy the existing message context to the new 
message context.
  +                        
RMMessageContext.copyMessageContext(rmMessageContext.getMsgContext(), 
msgContext);
                           //Copy the request and response messages.
  -                        Message reqMsg = new Message(rmMessageContext
  -                                .getMsgContext().getRequestMessage()
  -                                .getSOAPPartAsString());
  -                        Message resMsg = new Message(rmMessageContext
  -                                .getMsgContext().getResponseMessage()
  -                                .getSOAPPartAsString());
  -
  -                        //Create a new MessageContext, by pasing the axis
  -                        // engine.
  -                        MessageContext msgContext = new MessageContext(
  -                                rmMessageContext.getMsgContext()
  -                                        .getAxisEngine());
  -                        //Copy the existing message context to the new 
message
  -                        // context.
  -                        RMMessageContext.copyMessageContext(rmMessageContext
  -                                .getMsgContext(), msgContext);
  -                        //Copy the RMMEssageContext
  -                        rmMessageContext.copyContents(rmMsgContext);
  +                        String 
soapMsg=rmMessageContext.getMsgContext().getRequestMessage().getSOAPPartAsString();
  +                        Message reqMsg = new Message(soapMsg);
  +                        //Message resMsg = new Message(rmMessageContext
  +                        //        .getMsgContext().getResponseMessage()
  +                        //        .getSOAPPartAsString());
                           //Set the request and response messages of the 
message
                           // context.
                           msgContext.setRequestMessage(reqMsg);
  -                        msgContext.setResponseMessage(resMsg);
  +                        //msgContext.setResponseMessage(resMsg);
   
                           //rmMsgContext.setReqEnv(reqMsg.getSOAPEnvelope());
                           //rmMsgContext.setResEnv(resMsg.getSOAPEnvelope());
   
                           rmMsgContext.setMsgContext(msgContext);
                           //Set the message type for this message.
  -                        rmMsgContext
  -                                
.setMessageType(Constants.MSG_TYPE_SERVICE_REQUEST);
  +                        
rmMsgContext.setMessageType(Constants.MSG_TYPE_SERVICE_REQUEST);
                       } catch (Exception e) {
                           e.printStackTrace();
                           //TODO: Add to log.
  @@ -110,6 +96,7 @@
                   return ackProcessor.sendAcknowledgement(rmMessageContext);
               }
           }
  +        //If we don't have the sequence in the message then we have to send 
some errors.
           return false;
       }
   
  
  
  
  1.13      +10 -12    
ws-fx/sandesha/src/org/apache/sandesha/server/CreateSequenceProcessor.java
  
  Index: CreateSequenceProcessor.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/CreateSequenceProcessor.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- CreateSequenceProcessor.java      12 Jan 2005 12:19:31 -0000      1.12
  +++ CreateSequenceProcessor.java      2 Feb 2005 13:41:55 -0000       1.13
  @@ -46,7 +46,10 @@
           AddressingHeaders addrHeaders = 
rmMessageContext.getAddressingHeaders();
           RMHeaders rmHeaders = rmMessageContext.getRMHeaders();
   
  -        if (addrHeaders.getReplyTo() != null) {
  +        if (addrHeaders.getReplyTo() == null)
  +                rmMessageContext.setSync(true);
  +           else
  +            rmMessageContext.setSync(false);
   
               /*
                * We may let the user to decide on the UUID generation process. 
If
  @@ -76,12 +79,12 @@
               //FIX THIS FIX THIS
               //Need to change the ANONYMOUS URI to the new one after 
completion.
               //We have some synchronous stuff here
  -
  -            if ((addrHeaders.getReplyTo().getAddress().toString()
  -                          
  -                    
.equals("http://schemas.xmlsoap.org/ws/2003/03/addressing/role/anonymous";))
  -                    || (addrHeaders.getReplyTo().getAddress().toString()
  -                            .equals(Constants.NS_URI_ANONYMOUS))) {
  +            //TODO  Do we need to support the null replyZo case?
  +            //If the from is also missing, and the reply to is alos null 
then we will assume it is
  +            //synchornous.
  +            if (addrHeaders.getReplyTo() == null || 
addrHeaders.getReplyTo().getAddress().toString()
  +                    
.equals("http://schemas.xmlsoap.org/ws/2003/03/addressing/role/anonymous";) || 
addrHeaders.getReplyTo().getAddress().toString()
  +                    .equals(Constants.NS_URI_ANONYMOUS)) {
                 
                   //Inform that we have a synchronous response.
                   rmMessageContext.getMsgContext().setResponseMessage(
  @@ -89,8 +92,6 @@
                   rmMessageContext.setSync(true);
                   return true;
               } else {
  -                //FIX THIS FIX THIS
  -                //This should be storageManger.addCreateSequenceResponse();
   
                   MessageContext msgContext = new 
MessageContext(rmMessageContext
                           .getMsgContext().getAxisEngine());
  @@ -104,9 +105,6 @@
                   return false;
               }
   
  -        } else {
  -            throw new RMException("REPLY TO CANNOT BE NULL!");
  -        }
   
       }
   
  
  
  
  1.9       +7 -10     
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.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- RMInvoker.java    11 Jan 2005 13:51:57 -0000      1.8
  +++ RMInvoker.java    2 Feb 2005 13:41:55 -0000       1.9
  @@ -58,8 +58,7 @@
                   //Get the next message to invoke.
                   //storeManager is responsible of giving the correct message 
to
                   // invoke.
  -                RMMessageContext rmMessageContext = storageManager
  -                        .getNextMessageToProcess();
  +                RMMessageContext rmMessageContext = 
storageManager.getNextMessageToProcess();
   
                   //If not return is null then proceed with invokation.
                   if (rmMessageContext != null) {
  @@ -78,11 +77,10 @@
                           
storageManager.insertTerminateSeqMessage(getTerminateSeqMessage(rmMessageContext));
                       }
                       rpcProvider.invoke(rmMessageContext.getMsgContext());
  -
  +                
                       //Check whether we have an output (response) or not.
   
  -                    if (rmMessageContext.getMsgContext().getOperation()
  -                            .getMethod().getReturnType() != Void.TYPE) {
  +                    if 
(rmMessageContext.getMsgContext().getOperation().getMethod().getReturnType() != 
Void.TYPE) {
                           //System.out
                           //        .println("STORING THE RESPONSE 
MESSAGE.....\n");
                           //Store the message in the response queue.
  @@ -91,8 +89,7 @@
                           //a new HTTP connection and the <replyTo> header is
                           // used in this case.
                           //This is done by the RMSender.
  -                        rmMessageContext
  -                                
.setMessageType(Constants.MSG_TYPE_SERVICE_RESPONSE);
  +                        
rmMessageContext.setMessageType(Constants.MSG_TYPE_SERVICE_RESPONSE);
   
                           //System.out.println("TESTING FOR RESPONSE 
SEQUENCE");
                           boolean firstMsgOfResponseSeq = !storageManager
  @@ -124,9 +121,9 @@
                               MessageContext msgContext = new MessageContext(
                                       rmMessageContext.getMsgContext()
                                               .getAxisEngine());
  -                            // RMMessageContext.copyMessageContext(
  -                            //         rmMessageContext.getMsgContext(),
  -                            //         msgContext);
  +                             RMMessageContext.copyMessageContext(
  +                                     rmMessageContext.getMsgContext(),
  +                                     msgContext);
                               //Set this new msgContext to the rmMsgContext.
   
                               rmMsgContext.setMsgContext(msgContext);
  
  
  
  1.20      +39 -10    ws-fx/sandesha/src/org/apache/sandesha/server/Sender.java
  
  Index: Sender.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/Sender.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- Sender.java       12 Jan 2005 12:19:31 -0000      1.19
  +++ Sender.java       2 Feb 2005 13:41:55 -0000       1.20
  @@ -22,15 +22,20 @@
   
   import org.apache.axis.AxisFault;
   import org.apache.axis.Message;
  +import org.apache.axis.SimpleChain;
  +import org.apache.axis.Handler;
   import org.apache.axis.client.Call;
   import org.apache.axis.client.Service;
   import org.apache.axis.message.addressing.AddressingHeaders;
  +import org.apache.axis.message.addressing.handler.AddressingHandler;
   import org.apache.sandesha.Constants;
   import org.apache.sandesha.EnvelopeCreator;
   import org.apache.sandesha.IStorageManager;
   import org.apache.sandesha.RMException;
   import org.apache.sandesha.RMMessageContext;
   import org.apache.sandesha.ws.rm.RMHeaders;
  +import org.apache.sandesha.ws.rm.handlers.RMHandler;
  +import org.apache.sandesha.ws.rm.handlers.RMServerRequestHandler;
   
   /**
    * @author JEkanayake
  @@ -193,9 +198,11 @@
   
       private void sendServiceResponse(RMMessageContext rmMessageContext) {
           SOAPEnvelope responseEnvelope = null;
  -        //This sho
           responseEnvelope = 
EnvelopeCreator.createServiceResponseEnvelope(rmMessageContext);
  -        rmMessageContext.getMsgContext().setRequestMessage(new 
Message(responseEnvelope));
  +        //org.apache.axis.MessageContext resMsgCtx=new 
org.apache.axis.MessageContext(rmMessageContext.getMsgContext().getAxisEngine());
  +         rmMessageContext.getMsgContext().setRequestMessage(new 
Message(responseEnvelope));
  +        rmMessageContext.getMsgContext().setResponseMessage(new 
Message(responseEnvelope));
  +        //resMsgCtx.setRequestMessage(new Message(responseEnvelope));
           try {
               Service service = new Service();
               Call call = (Call) service.createCall();
  @@ -203,8 +210,9 @@
               
call.setTargetEndpointAddress(rmMessageContext.getAddressingHeaders().getReplyTo()
                       .getAddress().toString());
               //NOTE: WE USE THE REQUEST MESSAGE TO SEND THE RESPONSE.
  -            
call.setRequestMessage(rmMessageContext.getMsgContext().getRequestMessage());
  -            try {
  +            String 
soapMsg=rmMessageContext.getMsgContext().getRequestMessage().getSOAPPartAsString();
  +            call.setRequestMessage(new Message(soapMsg));
  +
                   
rmMessageContext.setLastPrecessedTime(System.currentTimeMillis());
                   rmMessageContext
                           
.setReTransmissionCount(rmMessageContext.getReTransmissionCount() + 1);
  @@ -212,14 +220,17 @@
                   // same HTTP connection.
                   call.invoke();
                   
//System.out.println(call.getResponseMessage().getSOAPPartAsString());
  -            } catch (AxisFault e) {
  -                e.printStackTrace();
  -            }
  +
   
           } catch (ServiceException e1) {
               System.err.println("ERROR: SENDING RESPONSE MESSAGE ....");
               e1.printStackTrace();
           }
  +        catch(AxisFault af){
  +            af.printStackTrace();
  +        }
  +
  +
       }
   
       private void sendCreateSequenceRequest(RMMessageContext 
rmMessageContext) {
  @@ -274,6 +285,7 @@
                   Call call = prepareCall(rmMessageContext);
                   
call.setRequestMessage(rmMessageContext.getMsgContext().getResponseMessage());
                   call.invoke();
  +
               } catch (ServiceException e) {
                   e.printStackTrace();
               } catch (AxisFault e) {
  @@ -294,6 +306,10 @@
                   Call call = prepareCall(rmMessageContext);
                   
call.setRequestMessage(rmMessageContext.getMsgContext().getResponseMessage());
                   call.invoke();
  +                 if (call.getResponseMessage() != null) {
  +                        System.out.println("RESPONSE MESSAGE IS NOT NULL");
  +                     
System.out.println(call.getResponseMessage().getSOAPEnvelope().toString());
  +                 }
               } catch (ServiceException e1) {
                   System.err.println("ERROR: SERVICE EXCEPTION WHEN SENDING 
RESPONSE");
                   e1.printStackTrace();
  @@ -307,10 +323,23 @@
           Service service = new Service();
           Call call = (Call) service.createCall();
           call.setTargetEndpointAddress(rmMessageContext.getOutGoingAddress());
  +
  +       //We need these two handlers in our
  +        SimpleChain sc= new SimpleChain();
  +        Handler serverRequestHandler= new RMServerRequestHandler();
  +        Handler addressingHandler = new AddressingHandler();
  +
  +        sc.addHandler(addressingHandler);
  +        sc.addHandler(serverRequestHandler);
  +
  +        call.setClientHandlers(null,sc);
  +
           
//call.setRequestMessage(rmMessageContext.getMsgContext().getRequestMessage());
  -        if (rmMessageContext.getMsgContext().getRequestMessage() != null)
  -            call.setRequestMessage(new 
Message(rmMessageContext.getMsgContext().getRequestMessage()
  -                    .getSOAPPartAsString()));
  +
  +        if (rmMessageContext.getMsgContext().getRequestMessage() != null){
  +            String 
soapMsg=rmMessageContext.getMsgContext().getRequestMessage().getSOAPPartAsString();
  +            call.setRequestMessage(new Message(soapMsg));
  +        }
           return call;
       }
   
  
  
  
  1.15      +4 -2      
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.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- ServerStorageManager.java 11 Jan 2005 13:51:57 -0000      1.14
  +++ ServerStorageManager.java 2 Feb 2005 13:41:55 -0000       1.15
  @@ -174,9 +174,11 @@
           return results;
       }
   
  -    public boolean isMessageExist(String sequenceID, long messageNumber) {
  -        return accessor.isIncomingMessageExists(sequenceID, new Long(
  +    public boolean  isMessageExist(String sequenceID, long messageNumber) {
  +        synchronized(accessor){
  +         return accessor.isIncomingMessageExists(sequenceID, new Long(
                   messageNumber));
  +        }
       }
   
       /*
  
  
  
  1.14      +0 -2      
ws-fx/sandesha/src/org/apache/sandesha/server/queue/ResponseSequenceHash.java
  
  Index: ResponseSequenceHash.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/queue/ResponseSequenceHash.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- ResponseSequenceHash.java 11 Jan 2005 13:52:01 -0000      1.13
  +++ ResponseSequenceHash.java 2 Feb 2005 13:41:55 -0000       1.14
  @@ -23,8 +23,6 @@
   import java.util.Set;
   import java.util.Vector;
   
  -import java_cup.version;
  -
   import org.apache.sandesha.Constants;
   import org.apache.sandesha.RMMessageContext;
   
  
  
  
  1.14      +2 -0      
ws-fx/sandesha/src/org/apache/sandesha/server/queue/ServerQueue.java
  
  Index: ServerQueue.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/queue/ServerQueue.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- ServerQueue.java  11 Jan 2005 13:52:01 -0000      1.13
  +++ ServerQueue.java  2 Feb 2005 13:41:55 -0000       1.14
  @@ -867,10 +867,12 @@
                    if(complete)
                       //lowPriorityQueue.remove(i);
                       terminateMsg = temp;
  +                    if(terminateMsg!=null){
                       terminateMsg.setSequenceID(hash.getOutSequenceId());
                       lowPriorityQueue.remove(i);
                       break;
               }
  +            }
               
           }
           
  
  
  
  1.9       +3 -3      
ws-fx/sandesha/src/org/apache/sandesha/ws/rm/RMHeaders.java
  
  Index: RMHeaders.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/RMHeaders.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- RMHeaders.java    13 Sep 2004 11:25:01 -0000      1.8
  +++ RMHeaders.java    2 Feb 2005 13:41:55 -0000       1.9
  @@ -133,13 +133,13 @@
   
                   if 
(headerElement.getName().equals("SequenceAcknowledgement")) {
                       sequenceAcknowledgement = new SequenceAcknowledgement();
  -
  +                     headerElement.setMustUnderstand(false);
                       sequenceAcknowledgement.fromSOAPEnveploe(headerElement);
                   }
   
                   if (headerElement.getName().equals("AckRequested")) {
                       ackRequest = new AckRequested();
  -
  +                     headerElement.setMustUnderstand(false);
                       ackRequest.fromSOAPEnveploe(headerElement);
                   }
               }
  @@ -153,7 +153,7 @@
   
                   if (bodyElement.getName().equals("CreateSequence")) {
                       createSequence = new CreateSequence();
  -
  +                   
                       createSequence.fromSOAPEnveploe(bodyElement);
                   }
   
  
  
  
  1.8       +2 -0      
ws-fx/sandesha/src/org/apache/sandesha/ws/rm/handlers/RMHandler.java
  
  Index: RMHandler.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/handlers/RMHandler.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- RMHandler.java    13 Sep 2004 11:25:45 -0000      1.7
  +++ RMHandler.java    2 Feb 2005 13:41:55 -0000       1.8
  @@ -46,6 +46,7 @@
   
           RMHeaders rmHeaders = new RMHeaders();
   
  +        if(msgContext.getCurrentMessage()!=null){
           rmHeaders.fromSOAPEnvelope(msgContext.getCurrentMessage()
                   .getSOAPEnvelope());
           if ((rmHeaders.getAckRequest() != null)
  @@ -56,6 +57,7 @@
                   || (rmHeaders.getTerminateSequence() != null)) {
               msgContext.setProperty(property, rmHeaders);
           }
  +        }
   
       }
   
  
  
  
  1.12      +4 -5      
ws-fx/sandesha/src/org/apache/sandesha/ws/rm/handlers/RMServerRequestHandler.java
  
  Index: RMServerRequestHandler.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/handlers/RMServerRequestHandler.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- RMServerRequestHandler.java       13 Sep 2004 11:25:45 -0000      1.11
  +++ RMServerRequestHandler.java       2 Feb 2005 13:41:55 -0000       1.12
  @@ -48,17 +48,16 @@
        */
       public void invoke(MessageContext msgContext) throws AxisFault {
           try {
  -
  -            Iterator iterator = msgContext.getRequestMessage()
  +     Iterator iterator = msgContext.getRequestMessage()
                       .getSOAPEnvelope().getHeader().getChildElements();
               SOAPHeaderElement elements;
               while (iterator.hasNext()) {
                   elements = (SOAPHeaderElement) iterator.next();
                   elements.setProcessed(true);
  -            }
  +              }
  +
  +            setPropertyToMessageContext(msgContext, 
Constants.ENV_RM_REQUEST_HEADERS);
   
  -            setPropertyToMessageContext(msgContext,
  -                    Constants.ENV_RM_REQUEST_HEADERS);
           } catch (SOAPException e) {
               throw AxisFault.makeFault(e);
           }
  
  
  
  1.26      +6 -0      
ws-fx/sandesha/src/org/apache/sandesha/ws/rm/providers/RMProvider.java
  
  Index: RMProvider.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/providers/RMProvider.java,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- RMProvider.java   12 Jan 2005 12:30:22 -0000      1.25
  +++ RMProvider.java   2 Feb 2005 13:41:55 -0000       1.26
  @@ -19,6 +19,7 @@
   import org.apache.axis.MessageContext;
   import org.apache.axis.AxisFault;
   import org.apache.axis.message.SOAPEnvelope;
  +import org.apache.axis.message.SOAPHeaderElement;
   import org.apache.axis.message.addressing.AddressingHeaders;
   import org.apache.axis.providers.java.RPCProvider;
   import org.apache.sandesha.IStorageManager;
  @@ -29,6 +30,9 @@
   import org.apache.sandesha.server.RMMessageProcessorIdentifier;
   import org.apache.sandesha.ws.rm.RMHeaders;
   
  +import java.util.Vector;
  +import java.util.Iterator;
  +
   /**
    * class RMProvider
    *
  @@ -60,6 +64,7 @@
   
           /** 
********************************************************************* */
           System.out.println("RMProvider GOT SOAP REQUEST.....\n");
  +
           // System.out.println(reqEnv.toString());
           //Initiates the StorageManager
           IStorageManager storageManager = RMInitiator.init(client);
  @@ -74,6 +79,7 @@
           RMHeaders rmHeaders = new RMHeaders();
           rmHeaders.fromSOAPEnvelope(reqEnv);
   
  +
           //Set the RMMessageContext
           RMMessageContext rmMessageContext = new RMMessageContext();
   
  
  
  

Reply via email to