jaliya      2005/05/04 23:06:30

  Modified:    sandesha/src/org/apache/sandesha EnvelopeCreator.java
               sandesha/src/org/apache/sandesha/client
                        ClientPropertyValidator.java RMSender.java
               sandesha/src/org/apache/sandesha/server
                        MessageValidator.java RMInvoker.java
               sandesha/src/org/apache/sandesha/util RMMessageCreator.java
  Log:
  Change the addressing header processing parts to reflect the changes made 
during the interop tests
  
  Revision  Changes    Path
  1.34      +2 -1      
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.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- EnvelopeCreator.java      2 May 2005 08:38:09 -0000       1.33
  +++ EnvelopeCreator.java      5 May 2005 06:06:29 -0000       1.34
  @@ -296,7 +296,8 @@
           //Setting from the Client
           outGoingAddressingHaders.setFrom(addressingHeaders.getFrom());
           outGoingAddressingHaders.setTo(addressingHeaders.getTo());
  -        if (addressingHeaders.getReplyTo() != null && 
rmMessageContext.isHasResponse())
  +        //if (addressingHeaders.getReplyTo() != null && 
rmMessageContext.isHasResponse())
  +         if (addressingHeaders.getReplyTo() != null )//&& 
rmMessageContext.isHasResponse())
               
outGoingAddressingHaders.setReplyTo(addressingHeaders.getReplyTo());
           try {
               Action action = new Action(new 
URI(rmMessageContext.getAction()));
  
  
  
  1.18      +2 -3      
ws-fx/sandesha/src/org/apache/sandesha/client/ClientPropertyValidator.java
  
  Index: ClientPropertyValidator.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/client/ClientPropertyValidator.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- ClientPropertyValidator.java      2 May 2005 04:17:09 -0000       1.17
  +++ ClientPropertyValidator.java      5 May 2005 06:06:30 -0000       1.18
  @@ -53,8 +53,7 @@
               else
                   sourceURL = from;
           } catch (UnknownHostException e) {
  -            // TODO Auto-generated catch block
  -            throw new AxisFault(e.getMessage());
  +              throw new AxisFault(e.getMessage());
           }
   
           String errorMsg = getValidated(msgNumber, action, replyTo, sync, 
inOut);
  @@ -93,7 +92,7 @@
           if (to != null)
               return to;
           else
  -            return null;
  +            return call.getTargetEndpointAddress();
       }
   
   
  
  
  
  1.37      +31 -6     
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.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- RMSender.java     2 May 2005 04:17:09 -0000       1.36
  +++ RMSender.java     5 May 2005 06:06:30 -0000       1.37
  @@ -19,6 +19,7 @@
   import org.apache.axis.AxisFault;
   import org.apache.axis.Message;
   import org.apache.axis.MessageContext;
  +import org.apache.axis.client.Call;
   import org.apache.axis.components.logger.LogFactory;
   import org.apache.axis.handlers.BasicHandler;
   import org.apache.axis.message.addressing.AddressingHeaders;
  @@ -40,7 +41,7 @@
           storageManager = new ClientStorageManager();
   
           try {
  -            RMMessageContext reqMsgCtx = 
RMMessageCreator.createServiceRequestMsg(msgContext);
  +            RMMessageContext reqMsgCtx = getRMMessageContext(msgContext);
               String tempSeqID = reqMsgCtx.getSequenceID();
   
               long msgNo = reqMsgCtx.getMsgNumber();
  @@ -52,7 +53,7 @@
               }
   
               if (reqMsgCtx.isLastMessage()) {
  -                
storageManager.insertTerminateSeqMessage(RMMessageCreator.createTerminateSeqMsg(reqMsgCtx));
  +                
storageManager.insertTerminateSeqMessage(RMMessageCreator.createTerminateSeqMsg(reqMsgCtx,
 Constants.CLIENT));
               }
   
   
  @@ -62,7 +63,6 @@
                       responseMessageContext = 
checkTheQueueForResponse(tempSeqID, reqMsgCtx.getMessageID());
                       
Thread.sleep(Constants.CLIENT_RESPONSE_CHECKING_INTERVAL);
                   }
  -
                   //We need these steps to filter all addressing and rm 
related headers.
                   Message resMsg = 
responseMessageContext.getMsgContext().getRequestMessage();
                   RMHeaders.removeHeaders(resMsg.getSOAPEnvelope());
  @@ -80,7 +80,7 @@
   
   
       private RMMessageContext processFirstRequestMessage(RMMessageContext 
reqRMMsgContext, boolean sync) throws Exception {
  -        RMMessageContext createSeqRMMsgContext = 
RMMessageCreator.createCreateSeqMsg(reqRMMsgContext,Constants.CLIENT);
  +        RMMessageContext createSeqRMMsgContext = 
RMMessageCreator.createCreateSeqMsg(reqRMMsgContext, Constants.CLIENT);
           storageManager.addOutgoingSequence(reqRMMsgContext.getSequenceID());
           
storageManager.setTemporaryOutSequence(reqRMMsgContext.getSequenceID(), 
createSeqRMMsgContext.getMessageID());
   
  @@ -88,12 +88,16 @@
           createSeqRMMsgContext.setSync(sync);
   
           storageManager.addCreateSequenceRequest(createSeqRMMsgContext);
  -        processRequestMessage(reqRMMsgContext);
  +
  +        RMMessageContext serviceRequestMsg = 
RMMessageCreator.createServiceRequestMessage(reqRMMsgContext);
  +
  +        processRequestMessage(serviceRequestMsg);
           return reqRMMsgContext;
       }
   
       private RMMessageContext processRequestMessage(RMMessageContext 
reqRMMsgContext) throws Exception {
  -        storageManager.insertOutgoingMessage(reqRMMsgContext);
  +        RMMessageContext serviceRequestMsg = 
RMMessageCreator.createServiceRequestMessage(reqRMMsgContext);
  +        storageManager.insertOutgoingMessage(serviceRequestMsg);
           return reqRMMsgContext;
       }
   
  @@ -106,6 +110,27 @@
           return storageManager.checkForResponseMessage(sequenceId, 
reqMessageID);
       }
   
  +    private RMMessageContext getRMMessageContext(MessageContext msgCtx) 
throws Exception {
  +        //Get a copy of the MessageContext. This is required when sending 
multiple messages from
  +        //one call object
  +        MessageContext newMsgContext = 
RMMessageCreator.cloneMsgContext(msgCtx);
  +        RMMessageContext requestMesssageContext = new RMMessageContext();
  +        //Get the message information from the client.
  +        Call call = (Call) newMsgContext.getProperty(MessageContext.CALL);
  +        //If the property specified by the client is not valid an AxisFault 
will be sent at this point.
  +        requestMesssageContext = ClientPropertyValidator.validate(call);
  +        requestMesssageContext.setOutGoingAddress((String) 
msgCtx.getProperty(MessageContext.TRANS_URL));
  +        requestMesssageContext.setMsgContext(newMsgContext);
  +        /*     AddressingHeaders addrHeaders = 
RMMessageCreator.getAddressingHeaders(requestMesssageContext);
  +            if (requestMesssageContext.getAction() != null)
  +                 addrHeaders.setAction(new Action(new 
URI(requestMesssageContext.getAction())));
  +             requestMesssageContext.setAddressingHeaders(addrHeaders);
  +             
requestMesssageContext.setMessageType(Constants.MSG_TYPE_SERVICE_REQUEST);
  +             requestMesssageContext.setMessageID(Constants.UUID + 
uuidGen.nextUUID());*/
  +        return requestMesssageContext;
  +    }
  +
  +
   }
   
   
  
  
  
  1.16      +2 -1      
ws-fx/sandesha/src/org/apache/sandesha/server/MessageValidator.java
  
  Index: MessageValidator.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/MessageValidator.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- MessageValidator.java     2 May 2005 04:17:09 -0000       1.15
  +++ MessageValidator.java     5 May 2005 06:06:30 -0000       1.16
  @@ -45,7 +45,8 @@
   
           MessageContext msgContext = rmMsgContext.getMsgContext();
           try {
  -            AddressingHeaders addrHeaders = (AddressingHeaders) 
msgContext.getProperty(org.apache.axis.message.addressing.Constants.ENV_ADDRESSING_REQUEST_HEADERS);
  +            AddressingHeaders addrHeaders=new 
AddressingHeaders(msgContext.getRequestMessage().getSOAPEnvelope());
  +            //ddressingHeaders addrHeaders = (AddressingHeaders) 
msgContext.getProperty(org.apache.axis.message.addressing.Constants.ENV_ADDRESSING_REQUEST_HEADERS);
               validateAddrHeaders(addrHeaders);
               rmMsgContext.setAddressingHeaders(addrHeaders);
   
  
  
  
  1.24      +1 -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.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- RMInvoker.java    2 May 2005 04:17:09 -0000       1.23
  +++ RMInvoker.java    5 May 2005 06:06:30 -0000       1.24
  @@ -64,7 +64,7 @@
                               AddressingHeaders addrHeaders = 
rmMessageContext.getAddressingHeaders();
                               if (addrHeaders.getReplyTo() != null) {
                                   String replyTo = 
addrHeaders.getReplyTo().getAddress().toString();
  -                                RMMessageContext terminateMsg = 
RMMessageCreator.createTerminateSeqMsg(rmMessageContext);
  +                                RMMessageContext terminateMsg = 
RMMessageCreator.createTerminateSeqMsg(rmMessageContext,Constants.SERVER);
                                   terminateMsg.setOutGoingAddress(replyTo);
                                   
storageManager.insertTerminateSeqMessage(terminateMsg);
                               } else {
  
  
  
  1.14      +160 -37   
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.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- RMMessageCreator.java     2 May 2005 08:38:09 -0000       1.13
  +++ RMMessageCreator.java     5 May 2005 06:06:30 -0000       1.14
  @@ -20,14 +20,13 @@
   import org.apache.axis.AxisFault;
   import org.apache.axis.Message;
   import org.apache.axis.MessageContext;
  -import org.apache.axis.client.Call;
   import org.apache.axis.components.uuid.UUIDGen;
   import org.apache.axis.components.uuid.UUIDGenFactory;
  +import org.apache.axis.message.SOAPEnvelope;
   import org.apache.axis.message.addressing.*;
   import org.apache.axis.types.URI;
   import org.apache.sandesha.Constants;
   import org.apache.sandesha.RMMessageContext;
  -import org.apache.sandesha.client.ClientPropertyValidator;
   import org.apache.sandesha.ws.rm.AcksTo;
   import org.apache.sandesha.ws.rm.CreateSequence;
   import org.apache.sandesha.ws.rm.RMHeaders;
  @@ -71,7 +70,7 @@
       public static RMMessageContext createCreateSeqMsg(RMMessageContext 
rmMsgCtx, byte endPoint) throws Exception {
           RMMessageContext createSeqRMMsgContext = new RMMessageContext();
           rmMsgCtx.copyContents(createSeqRMMsgContext);
  -        AddressingHeaders addrHeaders = getAddressingHeaders(rmMsgCtx);
  +        //AddressingHeaders addrHeaders = getAddressingHeaders(rmMsgCtx);
   
           RMHeaders rmHeaders = new RMHeaders();
   
  @@ -81,17 +80,19 @@
           rmHeaders.setCreateSequence(createSeq);
           createSeqRMMsgContext.setRMHeaders(rmHeaders);
   
  -        AddressingHeaders csAddrHeaders = new AddressingHeaders();
  -        if (endPoint == Constants.CLIENT) {
  -            csAddrHeaders.setTo(addrHeaders.getTo());
  -            csAddrHeaders.setFaultTo(addrHeaders.getFaultTo());
  -            csAddrHeaders.setReplyTo(addrHeaders.getReplyTo());
  -            csAddrHeaders.setFrom(addrHeaders.getFrom());
  -        } else {
  -            csAddrHeaders.setTo(new 
To(addrHeaders.getReplyTo().getAddress().toString()));
  -            csAddrHeaders.setFaultTo(new FaultTo(new 
Address(rmMsgCtx.getAddressingHeaders().getTo().toString())));
  -            csAddrHeaders.setFrom(new From(new 
Address(rmMsgCtx.getAddressingHeaders().getTo().toString())));
  -        }
  +        //AddressingHeaders csAddrHeaders = new AddressingHeaders();
  +
  +        AddressingHeaders csAddrHeaders = 
getAddressingHeaedersForCreateSequenceRequest(rmMsgCtx, endPoint);
  +        /*  if (endPoint == Constants.CLIENT) {
  +              csAddrHeaders.setTo(addrHeaders.getTo());
  +              csAddrHeaders.setFaultTo(addrHeaders.getFaultTo());
  +              csAddrHeaders.setReplyTo(addrHeaders.getReplyTo());
  +              csAddrHeaders.setFrom(addrHeaders.getFrom());
  +          } else {
  +              csAddrHeaders.setTo(new 
To(addrHeaders.getReplyTo().getAddress().toString()));
  +              csAddrHeaders.setFaultTo(new FaultTo(new 
Address(rmMsgCtx.getAddressingHeaders().getTo().toString())));
  +              csAddrHeaders.setFrom(new From(new 
Address(rmMsgCtx.getAddressingHeaders().getTo().toString())));
  +          }*/
           csAddrHeaders.setAction(new Action(new 
URI(Constants.WSRM.ACTION_CREATE_SEQUENCE)));
   
           createSeqRMMsgContext.setAddressingHeaders(csAddrHeaders);
  @@ -114,6 +115,42 @@
           return createSeqRMMsgContext;
       }
   
  +    private static AddressingHeaders 
getAddressingHeaedersForCreateSequenceRequest(RMMessageContext rmMsgCtx, byte 
endPoint) throws Exception {
  +        //AddressingHeaders addrHeaders = rmMsgCtx.getAddressingHeaders();
  +        AddressingHeaders csAddrHeaders = new AddressingHeaders();
  +        if (endPoint == Constants.SERVER) {
  +            AddressingHeaders ah = rmMsgCtx.getAddressingHeaders();
  +            csAddrHeaders.setFrom(new 
EndpointReference(ah.getTo().toString()));
  +            csAddrHeaders.setReplyTo(new 
EndpointReference(ah.getTo().toString()));
  +            csAddrHeaders.setFaultTo(new 
EndpointReference(ah.getTo().toString()));
  +            csAddrHeaders.setTo(ah.getReplyTo().getAddress());
  +        } else {
  +            csAddrHeaders.setTo(new To(rmMsgCtx.getTo()));
  +            if (rmMsgCtx.getSync()) {
  +                csAddrHeaders.setFrom(new 
EndpointReference(Constants.WSA.NS_ADDRESSING_ANONYMOUS));
  +                csAddrHeaders.setFaultTo(new 
EndpointReference(Constants.WSA.NS_ADDRESSING_ANONYMOUS));
  +                csAddrHeaders.setReplyTo(new 
EndpointReference(Constants.WSA.NS_ADDRESSING_ANONYMOUS));
  +            } else {
  +                String sourceURL = rmMsgCtx.getSourceURL();
  +
  +                if (rmMsgCtx.getFrom() != null)
  +                    csAddrHeaders.setFrom(new 
EndpointReference(rmMsgCtx.getFrom()));
  +                else
  +                    csAddrHeaders.setFrom(new EndpointReference(sourceURL));
  +                if (rmMsgCtx.getReplyTo() != null)
  +                    csAddrHeaders.setReplyTo(new 
EndpointReference(rmMsgCtx.getReplyTo()));
  +                else
  +                    csAddrHeaders.setReplyTo(new 
EndpointReference(sourceURL));
  +                if (rmMsgCtx.getFaultTo() != null)
  +                    csAddrHeaders.setFaultTo(new 
EndpointReference(rmMsgCtx.getFaultTo()));
  +                else
  +                    csAddrHeaders.setFaultTo(new 
EndpointReference(sourceURL));
  +
  +            }
  +        }
  +        return csAddrHeaders;
  +    }
  +
   
       private static AcksTo getAcksTo(RMMessageContext rmMsgCtx, byte 
endPoint) throws Exception {
           AcksTo acksTo = null;
  @@ -142,47 +179,116 @@
           return new RMMessageContext();
       }
   
  -    public static RMMessageContext createTerminateSeqMsg(RMMessageContext 
rmMsgCtx) throws Exception {
  +    public static RMMessageContext createTerminateSeqMsg(RMMessageContext 
rmMsgCtx, byte endPoint) throws Exception {
  +
           RMMessageContext terSeqRMMsgContext = new RMMessageContext();
           MessageContext terSeqMsgContext = new 
MessageContext(rmMsgCtx.getMsgContext().getAxisEngine());
           terSeqRMMsgContext.setSequenceID(rmMsgCtx.getSequenceID());
  -        
terSeqRMMsgContext.setAddressingHeaders(rmMsgCtx.getAddressingHeaders());
  +
  +        //Fix me, Need to clone the addressing headers.
  +        AddressingHeaders addHeaders = 
getAddressingHeadersForTerminateSequence(rmMsgCtx, endPoint);
  +        SOAPEnvelope soe = new SOAPEnvelope();
  +        addHeaders.toEnvelope(soe);
  +        AddressingHeaders terSqAddrHeaders = new AddressingHeaders(soe);
  +        terSqAddrHeaders.setAction(new Action(new 
URI(Constants.WSRM.ACTION_TERMINATE_SEQUENCE)));
  +
  +        terSeqRMMsgContext.setAddressingHeaders(terSqAddrHeaders);
           terSeqRMMsgContext.setOutGoingAddress(rmMsgCtx.getOutGoingAddress());
           terSeqRMMsgContext.setMsgContext(terSeqMsgContext);
           
terSeqRMMsgContext.setMessageType(Constants.MSG_TYPE_TERMINATE_SEQUENCE);
           return terSeqRMMsgContext;
       }
   
  +    private static AddressingHeaders 
getAddressingHeadersForTerminateSequence(RMMessageContext rmMsgCtx, byte 
endPoint) throws Exception {
  +        AddressingHeaders csAddrHeaders = new AddressingHeaders();
  +
  +        if (endPoint == Constants.SERVER) {
  +            AddressingHeaders ah = rmMsgCtx.getAddressingHeaders();
  +            csAddrHeaders.setTo(ah.getReplyTo().getAddress());
  +            csAddrHeaders.setFrom(new 
EndpointReference(ah.getTo().toString()));
  +        } else {
  +            csAddrHeaders.setTo(new To(rmMsgCtx.getTo()));
  +            String sourceURL = rmMsgCtx.getSourceURL();
  +            if (rmMsgCtx.getFrom() != null)
  +                csAddrHeaders.setFrom(new 
EndpointReference(rmMsgCtx.getFrom()));
  +            else
  +                csAddrHeaders.setFrom(new EndpointReference(sourceURL));
  +            if (rmMsgCtx.getFaultTo() != null)
  +                csAddrHeaders.setFaultTo(new 
EndpointReference(rmMsgCtx.getFaultTo()));
  +            else
  +                csAddrHeaders.setFaultTo(new EndpointReference(sourceURL));
  +        }
  +        return csAddrHeaders;
  +    }
  +
       public static RMMessageContext createAcknowledgementMsg(RMMessageContext 
rmMessageContext) throws Exception {
           return new RMMessageContext();
       }
   
  -    public static RMMessageContext createServiceResponseMsg(RMMessageContext 
rmMsgCtx) throws Exception {
  +    public static RMMessageContext 
createServiceResponseMessage(RMMessageContext rmMsgCtx) throws Exception {
           return new RMMessageContext();
       }
   
  -    public static RMMessageContext createServiceRequestMsg(MessageContext 
msgCtx) throws Exception {
  -        //Get a copy of the MessageContext. This is required when sending 
multiple messages from
  -        //one call object
  -        MessageContext newMsgContext = cloneMsgContext(msgCtx);
  -        RMMessageContext requestMesssageContext = new RMMessageContext();
  -        //Get the message information from the client.
  -        Call call = (Call) newMsgContext.getProperty(MessageContext.CALL);
  -        //If the property specified by the client is not valid an AxisFault 
will be sent at this point.
  -        requestMesssageContext = ClientPropertyValidator.validate(call);
  -        requestMesssageContext.setOutGoingAddress((String) 
msgCtx.getProperty(MessageContext.TRANS_URL));
  -        requestMesssageContext.setMsgContext(newMsgContext);
  -        AddressingHeaders addrHeaders = 
getAddressingHeaders(requestMesssageContext);
  -        if (requestMesssageContext.getAction() != null)
  -            addrHeaders.setAction(new Action(new 
URI(requestMesssageContext.getAction())));
  -        requestMesssageContext.setAddressingHeaders(addrHeaders);
  -        
requestMesssageContext.setMessageType(Constants.MSG_TYPE_SERVICE_REQUEST);
  -        requestMesssageContext.setMessageID(Constants.UUID + 
uuidGen.nextUUID());
  -        return requestMesssageContext;
  +    public static RMMessageContext 
createServiceRequestMessage(RMMessageContext rmMsgCtx) throws Exception {
  +        /* //Get a copy of the MessageContext. This is required when sending 
multiple messages from
  +         //one call object
  +         MessageContext newMsgContext = cloneMsgContext(msgCtx);
  +         RMMessageContext requestMesssageContext = new RMMessageContext();
  +         //Get the message information from the client.
  +         Call call = (Call) newMsgContext.getProperty(MessageContext.CALL);
  +         //If the property specified by the client is not valid an AxisFault 
will be sent at this point.
  +         requestMesssageContext = ClientPropertyValidator.validate(call);
  +         requestMesssageContext.setOutGoingAddress((String) 
msgCtx.getProperty(MessageContext.TRANS_URL));
  +         requestMesssageContext.setMsgContext(newMsgContext);
  +         AddressingHeaders addrHeaders = 
getAddressingHeaders(requestMesssageContext);*/
  +
  +        AddressingHeaders addrHeaders = 
getAddressingHeaedersForServiceRequest(rmMsgCtx);
  +        if (rmMsgCtx.getAction() != null)
  +            addrHeaders.setAction(new Action(new URI(rmMsgCtx.getAction())));
  +        rmMsgCtx.setAddressingHeaders(addrHeaders);
  +        rmMsgCtx.setMessageType(Constants.MSG_TYPE_SERVICE_REQUEST);
  +        rmMsgCtx.setMessageID(Constants.UUID + uuidGen.nextUUID());
  +        return rmMsgCtx;
  +
  +    }
  +
  +    private static AddressingHeaders 
getAddressingHeaedersForServiceRequest(RMMessageContext rmMsgCtx) throws 
Exception {
  +
  +
  +        AddressingHeaders csAddrHeaders = new AddressingHeaders();
  +        csAddrHeaders.setTo(new To(rmMsgCtx.getTo()));
  +        if (rmMsgCtx.getSync()) {
  +            csAddrHeaders.setFrom(new 
EndpointReference(Constants.WSA.NS_ADDRESSING_ANONYMOUS));
  +            csAddrHeaders.setFaultTo(new 
EndpointReference(Constants.WSA.NS_ADDRESSING_ANONYMOUS));
  +            if (rmMsgCtx.isHasResponse())
  +                csAddrHeaders.setReplyTo(new 
EndpointReference(Constants.WSA.NS_ADDRESSING_ANONYMOUS));
  +        } else {
  +            String sourceURL = rmMsgCtx.getSourceURL();
  +
  +            if (rmMsgCtx.getFrom() != null)
  +                csAddrHeaders.setFrom(new 
EndpointReference(rmMsgCtx.getFrom()));
  +            else
  +                csAddrHeaders.setFrom(new EndpointReference(sourceURL));
  +
  +            if (rmMsgCtx.isHasResponse()) {
  +                if (rmMsgCtx.getReplyTo() != null)
  +
  +                    csAddrHeaders.setReplyTo(new 
EndpointReference(rmMsgCtx.getReplyTo()));
  +                else
  +                    csAddrHeaders.setReplyTo(new 
EndpointReference(sourceURL));
  +            }
  +            if (rmMsgCtx.getFaultTo() != null)
  +                csAddrHeaders.setFaultTo(new 
EndpointReference(rmMsgCtx.getFaultTo()));
  +            else
  +                csAddrHeaders.setFaultTo(new EndpointReference(sourceURL));
  +
  +        }
  +        return csAddrHeaders;
  +
   
       }
   
  -    private static MessageContext cloneMsgContext(MessageContext msgContext) 
throws AxisFault {
  +    public static MessageContext cloneMsgContext(MessageContext msgContext) 
throws AxisFault {
           MessageContext clone = new 
MessageContext(msgContext.getAxisEngine());
           String str = msgContext.getRequestMessage().getSOAPPartAsString();
           Message msg = new Message(str);
  @@ -209,6 +315,22 @@
               String fromURL = rmMsgContext.getFrom();
               String faultToURL = rmMsgContext.getFaultTo();
   
  +            if (replyToURL != null)
  +                addrHeaders.setReplyTo(new ReplyTo(new 
EndpointReference(replyToURL)));
  +            if (fromURL != null)
  +                addrHeaders.setFrom(new From(new 
EndpointReference(fromURL)));
  +            if (faultToURL != null)
  +                addrHeaders.setFaultTo(new FaultTo(new 
EndpointReference(faultToURL)));
  +            if (rmMsgContext.getTo() != null) {
  +                To to = new To(new Address(rmMsgContext.getTo()));
  +                addrHeaders.setTo(to);
  +            } else {
  +                To to = new To(new 
Address(rmMsgContext.getOutGoingAddress()));
  +                addrHeaders.setTo(to);
  +            }
  +
  +
  +/*
               //Need to use the anonymous_URI if the client is synchronous.
               if (!sync) {
                   if (fromURL != null) {
  @@ -254,7 +376,8 @@
               } else {
                   To to = new To(new 
Address(rmMsgContext.getOutGoingAddress()));
                   addrHeaders.setTo(to);
  -            }
  +            }*/
  +
   
               return addrHeaders;
           }
  
  
  

Reply via email to