jaliya      2005/02/17 22:57:18

  Modified:    sandesha/src/org/apache/sandesha Constants.java
               sandesha/src/org/apache/sandesha/server
                        MessageValidator.java
               sandesha/src/org/apache/sandesha/server/msgprocessors
                        AcknowledgementProcessor.java
                        CompositeProcessor.java
                        CreateSequenceProcessor.java
                        CreateSequenceResponseProcessor.java
                        FaultProcessor.java IRMMessageProcessor.java
                        ReTransmissionProcessor.java
                        TerminateSequenceProcessor.java
               sandesha/src/org/apache/sandesha/ws/rm AckRequested.java
                        CreateSequence.java MessageNumber.java
                        RMHeaders.java Sequence.java
               sandesha/src/org/apache/sandesha/ws/rm/providers
                        RMProvider.java
  Removed:     sandesha/src/org/apache/sandesha/server
                        IRMMessageProcessor.java
  Log:
  Modified code to handle wsrmFaults
  
  Revision  Changes    Path
  1.25      +11 -2     ws-fx/sandesha/src/org/apache/sandesha/Constants.java
  
  Index: Constants.java
  ===================================================================
  RCS file: /home/cvs/ws-fx/sandesha/src/org/apache/sandesha/Constants.java,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- Constants.java    16 Feb 2005 04:21:20 -0000      1.24
  +++ Constants.java    18 Feb 2005 06:57:17 -0000      1.25
  @@ -272,15 +272,24 @@
   
           public static final String NO_RM_HEADES="No RM Headers Available in 
this Message";
   
  -        public static final String UNKNOWN_SEQUENCE="Sequence Does Not 
Exist";
  +        public static final String UNKNOWN_SEQUENCE="The value of 
wsrm:Identifier is not a known Sequence identifier.";
  +        public static final String MSG_NO_ROLLOVER="The maximum value for 
wsrm:MessageNumber has been exceeded.";
  +
   
       }
   
       public interface FaultCodes {
  +        public static final String 
WSRM_SERVER_INTERNAL_ERROR="ServerInternalError";
  +
  +
           public static final String IN_CORRECT_MESSAGE = "Incorrect Message";
  -        public static final String WSRM_FAULT_UNKNOWN_SEQUENCE="Unknown 
Sequence";
  +        public static final String 
WSRM_FAULT_UNKNOWN_SEQUENCE="wsrm:UnknownSequence";
  +        public static final String 
WSRM_FAULT_MSG_NO_ROLLOVER="wsrm:MessageNumberRollover";
       }
   
   
  +    public static final double MAX_MSG_NO=18446744073709551615d;
  +
  +
   }
   
  
  
  
  1.4       +10 -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.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- MessageValidator.java     16 Feb 2005 11:37:29 -0000      1.3
  +++ MessageValidator.java     18 Feb 2005 06:57:17 -0000      1.4
  @@ -39,6 +39,7 @@
               validateForFaults(rmMsgContext);
           } catch (SOAPException e) {
               e.printStackTrace();
  +            //TODO Do we need to throw a Sequence Fault at this level.
           }
       }
   
  @@ -68,10 +69,18 @@
           if (sequence != null) {
               if 
(!storageMgr.isSequenceExist(sequence.getIdentifier().getIdentifier()))
                   throw new AxisFault(new 
QName(Constants.FaultCodes.WSRM_FAULT_UNKNOWN_SEQUENCE), 
Constants.FaultMessages.UNKNOWN_SEQUENCE, null, null);
  -        
  +
  +        }
  +
  +        if (rmHeaders.getSequenceAcknowledgement() != null) {
  +           // if 
(!storageMgr.isSequenceExist(sequence.getIdentifier().getIdentifier()))
  +           //     throw new AxisFault(new 
QName(Constants.FaultCodes.WSRM_FAULT_UNKNOWN_SEQUENCE), 
Constants.FaultMessages.UNKNOWN_SEQUENCE, null, null);
  +
           }
   
   
  +
  +
       }
   
       private static void validateAddrHeaders(AddressingHeaders addrHeaders) 
throws AxisFault {
  
  
  
  1.2       +8 -5      
ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/AcknowledgementProcessor.java
  
  Index: AcknowledgementProcessor.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/AcknowledgementProcessor.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AcknowledgementProcessor.java     16 Feb 2005 05:07:16 -0000      1.1
  +++ AcknowledgementProcessor.java     18 Feb 2005 06:57:17 -0000      1.2
  @@ -18,9 +18,11 @@
   
   import org.apache.axis.Message;
   import org.apache.axis.MessageContext;
  +import org.apache.axis.AxisFault;
   import org.apache.sandesha.*;
   import org.apache.sandesha.ws.rm.AcknowledgementRange;
   import org.apache.sandesha.ws.rm.SequenceAcknowledgement;
  +import org.apache.xml.utils.QName;
   
   import javax.xml.soap.SOAPEnvelope;
   import java.util.Iterator;
  @@ -38,7 +40,7 @@
           this.storageManger = storageManger;
       }
   
  -    public final boolean processMessage(RMMessageContext rmMessageContext) 
throws RMException {
  +    public final boolean processMessage(RMMessageContext rmMessageContext) 
throws AxisFault {
           SequenceAcknowledgement seqAcknowledgement = rmMessageContext
                   .getRMHeaders().getSequenceAcknowledgement();
           String seqID = seqAcknowledgement.getIdentifier().getIdentifier();
  @@ -59,7 +61,7 @@
       }
   
   
  -    public boolean sendAcknowledgement(RMMessageContext rmMessageContext) 
throws RMException {
  +    public boolean sendAcknowledgement(RMMessageContext rmMessageContext) 
throws AxisFault {
           //EnvelopCreater createAcknowledgement
           //if async then add message to the queue
           //else set the response env of the messageContext.
  @@ -99,11 +101,12 @@
               //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 {
  +            try{
                   String soapMsg = 
rmMsgContext.getMsgContext().getResponseMessage().getSOAPPartAsString();
                   rmMessageContext.getMsgContext().setResponseMessage(new 
Message(soapMsg));
  -            } catch (Exception e) {
  -                throw new RMException(e.getLocalizedMessage());
  +            }catch(AxisFault af){
  +                
af.setFaultCodeAsString(Constants.FaultCodes.WSRM_SERVER_INTERNAL_ERROR);
  +                throw af;
               }
   
               return true;
  
  
  
  1.2       +2 -1      
ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/CompositeProcessor.java
  
  Index: CompositeProcessor.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/CompositeProcessor.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- CompositeProcessor.java   16 Feb 2005 05:07:16 -0000      1.1
  +++ CompositeProcessor.java   18 Feb 2005 06:57:17 -0000      1.2
  @@ -18,6 +18,7 @@
   
   import org.apache.axis.Message;
   import org.apache.axis.MessageContext;
  +import org.apache.axis.AxisFault;
   import org.apache.sandesha.Constants;
   import org.apache.sandesha.IStorageManager;
   import org.apache.sandesha.RMException;
  @@ -35,7 +36,7 @@
           this.storageManger = storageManger;
       }
   
  -    public boolean processMessage(RMMessageContext rmMessageContext) throws 
RMException {
  +    public boolean processMessage(RMMessageContext rmMessageContext) throws 
AxisFault {
   
           //if the message is and Ack then process the ack
           //if the message has a body then insert it to the queue
  
  
  
  1.3       +7 -1      
ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/CreateSequenceProcessor.java
  
  Index: CreateSequenceProcessor.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/CreateSequenceProcessor.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- CreateSequenceProcessor.java      16 Feb 2005 11:39:03 -0000      1.2
  +++ CreateSequenceProcessor.java      18 Feb 2005 06:57:17 -0000      1.3
  @@ -18,6 +18,7 @@
   
   import org.apache.axis.Message;
   import org.apache.axis.MessageContext;
  +import org.apache.axis.AxisFault;
   import org.apache.axis.components.uuid.UUIDGen;
   import org.apache.axis.components.uuid.UUIDGenFactory;
   import org.apache.axis.message.SOAPEnvelope;
  @@ -40,7 +41,7 @@
           this.storageManager = storageManager;
       }
   
  -    public boolean processMessage(RMMessageContext rmMessageContext) throws 
RMException {
  +    public boolean processMessage(RMMessageContext rmMessageContext) throws 
AxisFault  {
   
           AddressingHeaders addrHeaders = 
rmMessageContext.getAddressingHeaders();
           RMHeaders rmHeaders = rmMessageContext.getRMHeaders();
  @@ -50,6 +51,11 @@
           else
               rmMessageContext.setSync(false);
   
  +        //TODO This should be sent by looking at the offer and the rest
  +        //wsrm:CreateSequenceRefused
  +        if(rmHeaders.getCreateSequence()!=null)
  +            throw new AxisFault();
  +
           /*
            * We may let the user to decide on the UUID generation process. If
            * the user specify a method or service for generating UUIDs then
  
  
  
  1.2       +2 -1      
ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/CreateSequenceResponseProcessor.java
  
  Index: CreateSequenceResponseProcessor.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/CreateSequenceResponseProcessor.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- CreateSequenceResponseProcessor.java      16 Feb 2005 05:07:16 -0000      
1.1
  +++ CreateSequenceResponseProcessor.java      18 Feb 2005 06:57:17 -0000      
1.2
  @@ -17,6 +17,7 @@
   package org.apache.sandesha.server.msgprocessors;
   
   import org.apache.axis.message.addressing.RelatesTo;
  +import org.apache.axis.AxisFault;
   import org.apache.sandesha.IStorageManager;
   import org.apache.sandesha.RMException;
   import org.apache.sandesha.RMMessageContext;
  @@ -32,7 +33,7 @@
           this.storageManager = storageManger;
       }
   
  -    public boolean processMessage(RMMessageContext rmMessageContext) throws 
RMException {
  +    public boolean processMessage(RMMessageContext rmMessageContext) throws 
AxisFault {
   
           CreateSequenceResponse createSeqRes = rmMessageContext.getRMHeaders()
                   .getCreateSequenceResponse();
  
  
  
  1.2       +1 -1      
ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/FaultProcessor.java
  
  Index: FaultProcessor.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/FaultProcessor.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- FaultProcessor.java       16 Feb 2005 05:07:16 -0000      1.1
  +++ FaultProcessor.java       18 Feb 2005 06:57:17 -0000      1.2
  @@ -53,7 +53,7 @@
        * 
        * @see 
org.apache.sandesha.server.msgprocessors.IRMMessageProcessor#processMessage(org.apache.sandesha.RMMessageContext)
        */
  -    public boolean processMessage(RMMessageContext rmMessageContext) throws 
RMException {
  +    public boolean processMessage(RMMessageContext rmMessageContext) throws 
AxisFault {
   
           //Check the fault type.
           //Create the fault envelop
  
  
  
  1.2       +2 -2      
ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/IRMMessageProcessor.java
  
  Index: IRMMessageProcessor.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/IRMMessageProcessor.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- IRMMessageProcessor.java  16 Feb 2005 05:07:16 -0000      1.1
  +++ IRMMessageProcessor.java  18 Feb 2005 06:57:17 -0000      1.2
  @@ -18,6 +18,7 @@
   
   import org.apache.sandesha.RMException;
   import org.apache.sandesha.RMMessageContext;
  +import org.apache.axis.AxisFault;
   
   /**
    * @author
  @@ -25,7 +26,6 @@
   public interface IRMMessageProcessor {
   
       //Returns true if the message has a synchronous response or ack.
  -    public boolean processMessage(RMMessageContext rmMessageContext)
  -            throws RMException;
  +    public boolean processMessage(RMMessageContext rmMessageContext) throws 
AxisFault;
   
   }
  \ No newline at end of file
  
  
  
  1.2       +2 -1      
ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/ReTransmissionProcessor.java
  
  Index: ReTransmissionProcessor.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/ReTransmissionProcessor.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ReTransmissionProcessor.java      16 Feb 2005 05:07:16 -0000      1.1
  +++ ReTransmissionProcessor.java      18 Feb 2005 06:57:17 -0000      1.2
  @@ -18,6 +18,7 @@
   
   import org.apache.sandesha.RMException;
   import org.apache.sandesha.RMMessageContext;
  +import org.apache.axis.AxisFault;
   
   /**
    * @author
  @@ -29,7 +30,7 @@
        * 
        * @see 
org.apache.sandesha.server.RMMessageProcessor#processMessage(org.apache.sandesha.RMMessageContext)
        */
  -    public boolean processMessage(RMMessageContext rmMessageContext) throws 
RMException {
  +    public boolean processMessage(RMMessageContext rmMessageContext) throws 
AxisFault {
           // TODO Auto-generated method stub
           return false;
       }
  
  
  
  1.2       +2 -1      
ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/TerminateSequenceProcessor.java
  
  Index: TerminateSequenceProcessor.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/TerminateSequenceProcessor.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TerminateSequenceProcessor.java   16 Feb 2005 05:07:16 -0000      1.1
  +++ TerminateSequenceProcessor.java   18 Feb 2005 06:57:17 -0000      1.2
  @@ -20,6 +20,7 @@
   import org.apache.sandesha.RMException;
   import org.apache.sandesha.RMMessageContext;
   import org.apache.sandesha.ws.rm.TerminateSequence;
  +import org.apache.axis.AxisFault;
   
   /**
    * @author
  @@ -32,7 +33,7 @@
           this.storageManger = storageManger;
       }
   
  -    public boolean processMessage(RMMessageContext rmMessageContext) throws 
RMException {
  +    public boolean processMessage(RMMessageContext rmMessageContext) throws 
AxisFault {
   
           TerminateSequence terminateSeq = 
rmMessageContext.getRMHeaders().getTerminateSequence();
   
  
  
  
  1.13      +2 -1      
ws-fx/sandesha/src/org/apache/sandesha/ws/rm/AckRequested.java
  
  Index: AckRequested.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/AckRequested.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- AckRequested.java 16 Feb 2005 04:21:21 -0000      1.12
  +++ AckRequested.java 18 Feb 2005 06:57:18 -0000      1.13
  @@ -20,6 +20,7 @@
   import org.apache.axis.message.MessageElement;
   import org.apache.axis.message.SOAPEnvelope;
   import org.apache.axis.message.SOAPHeaderElement;
  +import org.apache.axis.AxisFault;
   import org.apache.sandesha.Constants;
   import org.apache.sandesha.ws.utility.Identifier;
   
  @@ -127,7 +128,7 @@
        * @param headerElement
        * @return AckRequested
        */
  -    public AckRequested fromSOAPEnveploe(SOAPHeaderElement headerElement) {
  +    public AckRequested fromSOAPEnveploe(SOAPHeaderElement headerElement) 
throws AxisFault{
   
           Iterator iterator = headerElement.getChildElements();
           MessageElement childElement;
  
  
  
  1.12      +2 -4      
ws-fx/sandesha/src/org/apache/sandesha/ws/rm/CreateSequence.java
  
  Index: CreateSequence.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/CreateSequence.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- CreateSequence.java       16 Feb 2005 04:21:21 -0000      1.11
  +++ CreateSequence.java       18 Feb 2005 06:57:18 -0000      1.12
  @@ -80,10 +80,8 @@
               env.addBody();
           }
   
  -        Name name = env.createName("", Constants.NS_PREFIX_RM,
  -                Constants.NS_URI_RM);
  -        SOAPBodyElement bodyElement = (SOAPBodyElement) env.getBody()
  -                .addBodyElement(name);
  +        Name name = env.createName("", Constants.NS_PREFIX_RM, 
Constants.NS_URI_RM);
  +        SOAPBodyElement bodyElement = (SOAPBodyElement) env.getBody() 
.addBodyElement(name);
   
           bodyElement.setName("CreateSequence");
   
  
  
  
  1.10      +7 -3      
ws-fx/sandesha/src/org/apache/sandesha/ws/rm/MessageNumber.java
  
  Index: MessageNumber.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/MessageNumber.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- MessageNumber.java        16 Feb 2005 04:21:21 -0000      1.9
  +++ MessageNumber.java        18 Feb 2005 06:57:18 -0000      1.10
  @@ -18,9 +18,11 @@
   package org.apache.sandesha.ws.rm;
   
   import org.apache.axis.message.MessageElement;
  +import org.apache.axis.AxisFault;
   import org.apache.sandesha.Constants;
   
   import javax.xml.soap.SOAPException;
  +import javax.xml.namespace.QName;
   
   /**
    * class MessageNumber
  @@ -76,7 +78,6 @@
   
           // create the soap element for the message no
           messageNoElement.addTextNode((new Long(messageNumber)).toString());
  -
           return messageNoElement;
       }
   
  @@ -86,10 +87,13 @@
        * @param element
        * @return MessageNumber
        */
  -    public MessageNumber fromSOAPEnvelope(MessageElement element) {
  +    public MessageNumber fromSOAPEnvelope(MessageElement element) throws 
AxisFault{
   
  -        messageNumber = (new Long(element.getValue())).longValue();
  +        double tempMsgNo=(new Double(element.getValue())).doubleValue();
  +        if(tempMsgNo>=Constants.MAX_MSG_NO)
  +            throw new AxisFault(new 
QName(Constants.FaultCodes.WSRM_FAULT_MSG_NO_ROLLOVER), 
Constants.FaultMessages.MSG_NO_ROLLOVER, null, null);
   
  +        messageNumber = (new Long(element.getValue())).longValue();
           return this;
       }
   
  
  
  
  1.11      +2 -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.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- RMHeaders.java    16 Feb 2005 04:21:21 -0000      1.10
  +++ RMHeaders.java    18 Feb 2005 06:57:18 -0000      1.11
  @@ -108,10 +108,9 @@
        * @param env
        * @return RMHeaders
        * @throws AxisFault
  -     * @throws SOAPException
        */
  -    public RMHeaders fromSOAPEnvelope(SOAPEnvelope env) throws AxisFault,
  -            SOAPException {
  +    public RMHeaders fromSOAPEnvelope(SOAPEnvelope env) throws 
SOAPException,AxisFault
  +             {
   
           if (env != null) {
               Iterator iterator = env.getHeaders().iterator();
  
  
  
  1.11      +2 -1      
ws-fx/sandesha/src/org/apache/sandesha/ws/rm/Sequence.java
  
  Index: Sequence.java
  ===================================================================
  RCS file: 
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/Sequence.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Sequence.java     16 Feb 2005 04:21:21 -0000      1.10
  +++ Sequence.java     18 Feb 2005 06:57:18 -0000      1.11
  @@ -20,6 +20,7 @@
   import org.apache.axis.message.MessageElement;
   import org.apache.axis.message.SOAPEnvelope;
   import org.apache.axis.message.SOAPHeaderElement;
  +import org.apache.axis.AxisFault;
   import org.apache.sandesha.Constants;
   import org.apache.sandesha.ws.utility.Identifier;
   
  @@ -130,7 +131,7 @@
        * @param headerElement
        * @return Sequence
        */
  -    public Sequence fromSOAPEnveploe(SOAPHeaderElement headerElement) {
  +    public Sequence fromSOAPEnveploe(SOAPHeaderElement headerElement) throws 
AxisFault{
   
           Iterator iterator = headerElement.getChildElements();
           MessageElement childElement;
  
  
  
  1.31      +10 -3     
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.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- RMProvider.java   16 Feb 2005 11:36:07 -0000      1.30
  +++ RMProvider.java   18 Feb 2005 06:57:18 -0000      1.31
  @@ -94,9 +94,16 @@
               if (!rmMessageProcessor.processMessage(rmMessageContext)) {
                   msgContext.setResponseMessage(null);
               }
  -        } catch (RMException rmEx) {
  -            rmEx.printStackTrace();
  -            RMProvider.log.error(rmEx);
  +         } catch (AxisFault af) {
  +            RMProvider.log.error(af);
  +
  +             FaultProcessor faultProcessor = new 
FaultProcessor(storageManager, af);
  +
  +            if (!faultProcessor.processMessage(rmMessageContext)) {
  +                msgContext.setResponseMessage(null);
  +                return;
  +            }
  +            return;
           }
           
           SandeshaQueue sq = SandeshaQueue.getInstance();
  
  
  

Reply via email to