You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fx-dev@ws.apache.org by ja...@apache.org on 2005/03/04 08:56:57 UTC

cvs commit: ws-fx/sandesha/src/org/apache/sandesha/ws/rm/handlers RMServerRequestHandler.java RMHandler.java

jaliya      2005/03/03 23:56:57

  Modified:    sandesha/src/org/apache/sandesha/client RMSender.java
               sandesha/src/org/apache/sandesha/server
                        MessageValidator.java Sender.java
               sandesha/src/org/apache/sandesha/ws/rm RMHeaders.java
               sandesha/src/org/apache/sandesha/ws/rm/handlers
                        RMServerRequestHandler.java
  Removed:     sandesha/src/org/apache/sandesha/ws/rm/handlers
                        RMHandler.java
  Log:
  Now the WS-RM headers and Addressing headers are not going passing the RMSender at the client side
  
  Revision  Changes    Path
  1.31      +8 -9      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.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- RMSender.java	2 Mar 2005 15:15:29 -0000	1.30
  +++ RMSender.java	4 Mar 2005 07:56:56 -0000	1.31
  @@ -18,12 +18,15 @@
   
   import org.apache.axis.AxisFault;
   import org.apache.axis.MessageContext;
  +import org.apache.axis.Message;
   import org.apache.axis.components.logger.LogFactory;
   import org.apache.axis.message.SOAPHeaderElement;
  +import org.apache.axis.message.addressing.AddressingHeaders;
   import org.apache.axis.handlers.BasicHandler;
   import org.apache.sandesha.Constants;
   import org.apache.sandesha.IStorageManager;
   import org.apache.sandesha.RMMessageContext;
  +import org.apache.sandesha.ws.rm.RMHeaders;
   import org.apache.sandesha.storage.dao.SandeshaQueueDAO;
   import org.apache.sandesha.util.RMMessageCreator;
   import org.apache.commons.logging.Log;
  @@ -63,17 +66,13 @@
                       responseMessageContext = checkTheQueueForResponse(sequenceID, requestMesssageContext.getMessageID());
                       Thread.sleep(Constants.CLIENT_RESPONSE_CHECKING_INTERVAL);
                   }
  -            Vector headers=responseMessageContext.getMsgContext().getRequestMessage().getSOAPEnvelope().getHeaders();
  -            Iterator ite=headers.iterator();
   
  -            while(ite.hasNext()){
  -                SOAPHeaderElement headerElement = (SOAPHeaderElement)ite.next();
  -                headerElement.setMustUnderstand(false);
  -                headerElement.setProcessed(true);
  -            }
  +                //We need these steps to filter all addressing and rm related headers.
  +                Message resMsg=responseMessageContext.getMsgContext().getRequestMessage();
  +                RMHeaders.removeHeaders(resMsg.getSOAPEnvelope());
  +                AddressingHeaders addHeaders= new AddressingHeaders(resMsg.getSOAPEnvelope(),null,true,false,false, null);
   
  -            msgContext.setResponseMessage(responseMessageContext.getMsgContext()
  -                        .getRequestMessage());
  +            msgContext.setResponseMessage(resMsg);
               } else {
                   boolean gotAck = false;
                   while (!gotAck) {
  
  
  
  1.11      +2 -0      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.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- MessageValidator.java	2 Mar 2005 15:15:29 -0000	1.10
  +++ MessageValidator.java	4 Mar 2005 07:56:56 -0000	1.11
  @@ -43,6 +43,8 @@
           } catch (SOAPException e) {
             log.error(e);
               //TODO Do we need to throw a Sequence Fault at this level.
  +        } catch (Exception e) {
  +           log.error(e);
           }
       }
   
  
  
  
  1.28      +30 -33    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.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- Sender.java	2 Mar 2005 15:15:29 -0000	1.27
  +++ Sender.java	4 Mar 2005 07:56:56 -0000	1.28
  @@ -82,11 +82,11 @@
                           try {
                               sendMessage(rmMessageContext);
                           } catch (AxisFault e) {
  -                           log.error(e);
  +                            log.error(e);
                           } catch (SOAPException e) {
  -                           log.error(e);
  +                            log.error(e);
                           } catch (Exception e) {
  -                           log.error(e);
  +                            log.error(e);
                           }
                       } else {
                           //TODO REPORT ERROR
  @@ -100,7 +100,7 @@
                       //System.out.print("|"); //Sender THREAD IS SLEEPING
                       Thread.sleep(Constants.SENDER_SLEEP_TIME - timeGap);
                   } catch (Exception ex) {
  -                  log.error(ex);
  +                    log.error(ex);
                   }
               }
           }
  @@ -199,14 +199,14 @@
           call.setTargetEndpointAddress(rmMessageContext.getOutGoingAddress());
   
           //We need these two handlers in our
  -        SimpleChain sc = new SimpleChain();
  -        Handler serverRequestHandler = new RMServerRequestHandler();
  -        Handler addressingHandler = new AddressingHandler();
  +        //SimpleChain sc = new SimpleChain();
  +        //Handler serverRequestHandler = new RMServerRequestHandler();
  +       // Handler addressingHandler = new AddressingHandler();
   
  -        sc.addHandler(addressingHandler);
  -        sc.addHandler(serverRequestHandler);
  +       // sc.addHandler(addressingHandler);
  +        //sc.addHandler(serverRequestHandler);
   
  -        call.setClientHandlers(null, sc);
  +        //call.setClientHandlers(null, sc);
   
           if (rmMessageContext.getMsgContext().getRequestMessage() != null) {
               String soapMsg = rmMessageContext.getMsgContext().getRequestMessage().getSOAPPartAsString();
  @@ -216,33 +216,30 @@
       }
   
       private void sendServiceRequest(RMMessageContext rmMessageContext) throws Exception {
  -        if (rmMessageContext.getMsgContext().getRequestMessage() == null) {
  -            log.error("ERROR : NULL REQUEST MESSAGE");
  -        } else {
  -            SOAPEnvelope requestEnvelope = null;
  -            //Need to create the response envelope.
  -            requestEnvelope = EnvelopeCreator.createServiceRequestEnvelope(rmMessageContext);
  -            rmMessageContext.getMsgContext().setRequestMessage(new Message(requestEnvelope));
  -            rmMessageContext.setLastPrecessedTime(System.currentTimeMillis());
  -            rmMessageContext.setReTransmissionCount(rmMessageContext.getReTransmissionCount() + 1);
  -            if (rmMessageContext.getSync()) {
  -                Call call;
  -                call = prepareCall(rmMessageContext);
  -                //CHECK THIS
  -                storageManager.addSendMsgNo(rmMessageContext.getSequenceID(), rmMessageContext.getMsgNumber());
  -                call.invoke();
  -                processResponseMessage(call, rmMessageContext);
  -
  -            } else {
  -                Call call = prepareCall(rmMessageContext);
  -                //Send the createSequnceRequest Asynchronously.
  -                storageManager.addSendMsgNo(rmMessageContext.getSequenceID(), rmMessageContext.getMsgNumber());
  -                call.invoke();
   
  -            }
  +        SOAPEnvelope requestEnvelope = null;
  +        //Need to create the response envelope.
  +        requestEnvelope = EnvelopeCreator.createServiceRequestEnvelope(rmMessageContext);
  +        rmMessageContext.getMsgContext().setRequestMessage(new Message(requestEnvelope));
  +        rmMessageContext.setLastPrecessedTime(System.currentTimeMillis());
  +        rmMessageContext.setReTransmissionCount(rmMessageContext.getReTransmissionCount() + 1);
  +        if (rmMessageContext.getSync()) {
  +            Call call;
  +            call = prepareCall(rmMessageContext);
  +            //CHECK THIS
  +            storageManager.addSendMsgNo(rmMessageContext.getSequenceID(), rmMessageContext.getMsgNumber());
  +            call.invoke();
  +            processResponseMessage(call, rmMessageContext);
  +
  +        } else {
  +            Call call = prepareCall(rmMessageContext);
  +            //Send the createSequnceRequest Asynchronously.
  +            storageManager.addSendMsgNo(rmMessageContext.getSequenceID(), rmMessageContext.getMsgNumber());
  +            call.invoke();
   
           }
   
  +
       }
   
       private void sendMessage(RMMessageContext rmMessageContext) throws Exception {
  
  
  
  1.13      +27 -2     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.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- RMHeaders.java	28 Feb 2005 13:26:08 -0000	1.12
  +++ RMHeaders.java	4 Mar 2005 07:56:57 -0000	1.13
  @@ -22,7 +22,6 @@
   import org.apache.axis.message.SOAPEnvelope;
   import org.apache.axis.message.SOAPHeaderElement;
   
  -import javax.xml.soap.SOAPException;
   import java.util.Iterator;
   
   /**
  @@ -109,7 +108,7 @@
        * @return RMHeaders
        * @throws AxisFault
        */
  -    public RMHeaders fromSOAPEnvelope(SOAPEnvelope env) throws SOAPException, AxisFault {
  +    public RMHeaders fromSOAPEnvelope(SOAPEnvelope env) throws Exception, AxisFault {
   
           if (env != null) {
               Iterator iterator = env.getHeaders().iterator();
  @@ -120,18 +119,21 @@
   
                   if (headerElement.getName().equals("Sequence")) {
                       sequence = new Sequence();
  +                    headerElement.setProcessed(true);
                       headerElement.setMustUnderstand(false);
                       sequence.fromSOAPEnveploe(headerElement);
                   }
   
                   if (headerElement.getName().equals("SequenceAcknowledgement")) {
                       sequenceAcknowledgement = new SequenceAcknowledgement();
  +                    headerElement.setProcessed(true);
                       headerElement.setMustUnderstand(false);
                       sequenceAcknowledgement.fromSOAPEnveploe(headerElement);
                   }
   
                   if (headerElement.getName().equals("AckRequested")) {
                       ackRequest = new AckRequested();
  +                    headerElement.setProcessed(true);
                       headerElement.setMustUnderstand(false);
                       ackRequest.fromSOAPEnveploe(headerElement);
                   }
  @@ -274,4 +276,27 @@
       public CreateSequence getCreateSequence() {
           return createSequence;
       }
  +
  +    public static void removeHeaders(SOAPEnvelope env) throws AxisFault {
  +        if (env != null) {
  +            Iterator iterator = env.getHeaders().iterator();
  +            SOAPHeaderElement headerElement;
  +
  +            while (iterator.hasNext()) {
  +                headerElement = (SOAPHeaderElement) iterator.next();
  +
  +                if (headerElement.getName().equals("Sequence")) {
  +                    headerElement.detachNode();
  +                }
  +
  +                if (headerElement.getName().equals("SequenceAcknowledgement")) {
  +                    headerElement.detachNode();
  +                }
  +
  +                if (headerElement.getName().equals("AckRequested")) {
  +                    headerElement.detachNode();
  +                }
  +            }
  +        }
  +    }
   }
  \ No newline at end of file
  
  
  
  1.15      +7 -14     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.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- RMServerRequestHandler.java	2 Mar 2005 03:16:31 -0000	1.14
  +++ RMServerRequestHandler.java	4 Mar 2005 07:56:57 -0000	1.15
  @@ -18,11 +18,10 @@
   
   import org.apache.axis.AxisFault;
   import org.apache.axis.MessageContext;
  -import org.apache.axis.message.SOAPHeaderElement;
  -import org.apache.sandesha.Constants;
  +import org.apache.axis.handlers.BasicHandler;
  +import org.apache.sandesha.ws.rm.RMHeaders;
   
   import javax.xml.soap.SOAPException;
  -import java.util.Iterator;
   
   /**
    * class RMServerRequestHandler
  @@ -31,7 +30,7 @@
    * @author Jaliya Ekanayaka
    * @author Sudar Nimalan
    */
  -public class RMServerRequestHandler extends RMHandler {
  +public class RMServerRequestHandler extends BasicHandler {
   
       /*
        * (non-Javadoc)
  @@ -47,19 +46,13 @@
        */
       public void invoke(MessageContext msgContext) throws AxisFault {
           try {
  -            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);
  +            RMHeaders rmHeaders = new RMHeaders();
  +            rmHeaders.fromSOAPEnvelope(msgContext.getRequestMessage().getSOAPEnvelope());
   
           } catch (SOAPException e) {
               throw AxisFault.makeFault(e);
  +        } catch (Exception e) {
  +            throw AxisFault.makeFault(e);
           }
       }