Author: gatfora
Date: Fri Feb  2 07:38:00 2007
New Revision: 502628

URL: http://svn.apache.org/viewvc?view=rev&rev=502628
Log:
Add support for generating the MessageRolledOver Fault

Modified:
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/FaultData.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SOAPFaultEnvelopeCreator.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/FaultCode.java
    
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/faulttests/InvalidAcknowledgementTest.java

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/FaultData.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/FaultData.java?view=diff&rev=502628&r1=502627&r2=502628
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/FaultData.java 
(original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/FaultData.java Fri 
Feb  2 07:38:00 2007
@@ -36,12 +36,15 @@
 
        private OMElement detail;
        
+       private OMElement detail2;
+
        private String detailString;
 
        private String sequenceId;
        
        private String exceptionString;
 
+
        public OMElement getDetail() {
                return detail;
        }
@@ -50,6 +53,14 @@
                this.detail = detail;
        }
 
+       public void setDetail2(OMElement detail2) {
+               this.detail2 = detail2;
+  }
+
+       public OMElement getDetail2() {
+               return detail2;
+       }
+       
        public String getReason() {
                return reason;
        }
@@ -105,4 +116,5 @@
        public void setExceptionString(String exceptionString) {
        this.exceptionString = exceptionString;
   }
+
 }

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java?view=diff&rev=502628&r1=502627&r2=502628
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
 Fri Feb  2 07:38:00 2007
@@ -156,6 +156,8 @@
 
                String IDENTIFIER = "Identifier";
 
+               String MAX_MSG_NUMBER = "MaxMessageNumber";
+
                String ACCEPT = "Accept";
                
                String NONE = "None";

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java?view=diff&rev=502628&r1=502627&r2=502628
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
 Fri Feb  2 07:38:00 2007
@@ -290,5 +290,6 @@
        
        public final static String createSequenceRefused = 
"createSequenceRefused";
        public final static String referencedMessageNotFound = 
"referencedMessageNotFound";
+       public final static String messageNumberRollover = 
"messageNumberRollover";
 
 }

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties?view=diff&rev=502628&r1=502627&r2=502628
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties
 Fri Feb  2 07:38:00 2007
@@ -299,3 +299,4 @@
 
 createSequenceRefused=The Create Sequence request has been refused by the RM 
Destination
 referencedMessageNotFound = Reference message is not present for the sequence 
with property key {0}
+messageNumberRollover=The maximum value for wsrm:MessageNumber has been 
exceeded.

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/SequenceProcessor.java?view=diff&rev=502628&r1=502627&r2=502628
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
 Fri Feb  2 07:38:00 2007
@@ -124,6 +124,7 @@
                                log.debug("Exit: 
SequenceProcessor::processReliableMessage, Unknown sequence");
                        return InvocationResponse.ABORT;
                }
+               
 
                // setting mustUnderstand to false.
                sequence.setMustUnderstand(false);
@@ -132,8 +133,17 @@
                // throwing a fault if the sequence is closed.
                FaultManager.checkForSequenceClosed(rmMsgCtx, sequenceId, bean);
                FaultManager.checkForLastMsgNumberExceeded(rmMsgCtx, 
storageManager);
-
+               
                long msgNo = sequence.getMessageNumber().getMessageNumber();
+               
+               if (FaultManager.checkForMessageRolledOver(rmMsgCtx, 
sequenceId, msgNo)) {
+                       
+                       if (log.isDebugEnabled())
+                               log.debug("Exit: 
SequenceProcessor::processReliableMessage, Message rolled over " + msgNo);
+                       
+                       return InvocationResponse.ABORT;
+               }
+
                if (msgNo == 0) {
                        String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.invalidMsgNumber, Long
                                        .toString(msgNo));

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java?view=diff&rev=502628&r1=502627&r2=502628
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java 
(original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java 
Fri Feb  2 07:38:00 2007
@@ -296,7 +296,7 @@
                if (log.isDebugEnabled())
                        log.debug("Enter: 
FaultManager::makeCreateSequenceRefusedFault, " + detail);
                
-               // Return an UnknownSequence error
+               // Return a CreateSequenceRefused error
                MessageContext messageContext = 
rmMessageContext.getMessageContext();
 
                int SOAPVersion = 
SandeshaUtil.getSOAPVersion(messageContext.getEnvelope());
@@ -541,5 +541,49 @@
 
                return axisFault;
        }
+
+       /** 
+        * Checks to see if the message number received is == to the 
Long.MAX_VALUE
+        * 
+        * Throws and AxisFault, or sends a Fault message if the condition is 
met.
+        * @throws AxisFault 
+        */
+       public static boolean checkForMessageRolledOver(RMMsgContext 
rmMessageContext, String sequenceId, long msgNo)
+       
+       throws AxisFault {
+               if (msgNo == Long.MAX_VALUE) {
+                       if (log.isDebugEnabled()) 
+                               log.debug("Max message number reached " + 
msgNo);
+                       // Return a CreateSequenceRefused error
+                       MessageContext messageContext = 
rmMessageContext.getMessageContext();
+
+                       int SOAPVersion = 
SandeshaUtil.getSOAPVersion(messageContext.getEnvelope());
+
+                       FaultData data = new FaultData();
+                       data.setCode(SOAP11Constants.FAULT_CODE_SENDER);
+                       
data.setSubcode(Sandesha2Constants.SOAPFaults.Subcodes.MESSAGE_NUMBER_ROLEOVER);
+
+                       SOAPFactory factory = 
SOAPAbstractFactory.getSOAPFactory(SOAPVersion);
+                       OMElement identifierElement = 
factory.createOMElement(Sandesha2Constants.WSRM_COMMON.IDENTIFIER,
+                                       rmMessageContext.getRMNamespaceValue(), 
Sandesha2Constants.WSRM_COMMON.NS_PREFIX_RM);
+                       identifierElement.setText(sequenceId);
+                       
+                       OMElement maxMsgNumber = 
factory.createOMElement(Sandesha2Constants.WSRM_COMMON.MAX_MSG_NUMBER,
+                                       rmMessageContext.getRMNamespaceValue(), 
Sandesha2Constants.WSRM_COMMON.NS_PREFIX_RM);
+                       maxMsgNumber.setText(Long.toString(msgNo));
+                       
+                       data.setDetail(identifierElement);
+                       data.setDetail2(maxMsgNumber);
+
+                       
data.setReason(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.messageNumberRollover));
+                       
+                       
data.setType(Sandesha2Constants.SOAPFaults.FaultType.MESSAGE_NUMBER_ROLLOVER);
+
+                       getOrSendFault(rmMessageContext, data);
+                       
+                       return true;
+               }
+         return false;
+  }
 
 }

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SOAPFaultEnvelopeCreator.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SOAPFaultEnvelopeCreator.java?view=diff&rev=502628&r1=502627&r2=502628
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SOAPFaultEnvelopeCreator.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SOAPFaultEnvelopeCreator.java
 Fri Feb  2 07:38:00 2007
@@ -90,11 +90,11 @@
 
                if (faultType == 
Sandesha2Constants.SOAPFaults.FaultType.CREATE_SEQUENCE_REFUSED)
                        sequenceFault = true;
-
-               if (faultType == 
Sandesha2Constants.SOAPFaults.FaultType.UNKNOWN_SEQUENCE)
+               else if (faultType == 
Sandesha2Constants.SOAPFaults.FaultType.UNKNOWN_SEQUENCE)
                        sequenceFault = true;
-
-               if (faultType == 
Sandesha2Constants.SOAPFaults.FaultType.INVALID_ACKNOWLEDGEMENT)
+               else if (faultType == 
Sandesha2Constants.SOAPFaults.FaultType.INVALID_ACKNOWLEDGEMENT)
+                       sequenceFault = true;
+               else if (faultType == 
Sandesha2Constants.SOAPFaults.FaultType.MESSAGE_NUMBER_ROLLOVER)
                        sequenceFault = true;
 
                return sequenceFault;
@@ -118,8 +118,10 @@
                faultCode.setFaultCode(faultData.getSubcode());
                if (faultData.getDetailString() != null)
                        faultCode.setDetail(faultData.getDetailString());
-               else
+               else {
                        faultCode.setDetailOMElement(faultData.getDetail());
+                       
faultCode.setExtendedDetailOMElement(faultData.getDetail2());
+               }
                sequenceFault.setFaultCode(faultCode);
                
                
sequenceFault.toOMElement(faultMessageContext.getEnvelope().getHeader());

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/FaultCode.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/FaultCode.java?view=diff&rev=502628&r1=502627&r2=502628
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/FaultCode.java 
(original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/FaultCode.java 
Fri Feb  2 07:38:00 2007
@@ -41,6 +41,8 @@
        private String detail;
        
        private OMElement detailOMElement;
+
+       private OMElement extendedDetailOMElement;
        
        public FaultCode(String namespaceValue) throws SandeshaException {
                if (!isNamespaceSupported(namespaceValue))
@@ -113,6 +115,10 @@
                if (detail != null)
                        detailElement.setText(detail);
                
+               if (extendedDetailOMElement != null) {
+                       detailElement.addChild(extendedDetailOMElement);
+               }
+               
                sequenceFault.addChild(detailElement);
                
                return sequenceFault;
@@ -142,6 +148,14 @@
        this.detailOMElement = detailOMElement;
     }
 
+       public void setExtendedDetailOMElement(OMElement detail2) {
+       this.extendedDetailOMElement = detail2;
+    }
+
+       public OMElement getExtendedDetailOMElement() {
+       return extendedDetailOMElement;
+    }
+               
        public boolean isNamespaceSupported (String namespaceName) {
                if 
(Sandesha2Constants.SPEC_2005_02.NS_URI.equals(namespaceName))
                        return true;
@@ -151,5 +165,6 @@
                
                return false;
        }
+
 
 }

Modified: 
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/faulttests/InvalidAcknowledgementTest.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/faulttests/InvalidAcknowledgementTest.java?view=diff&rev=502628&r1=502627&r2=502628
==============================================================================
--- 
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/faulttests/InvalidAcknowledgementTest.java
 (original)
+++ 
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/faulttests/InvalidAcknowledgementTest.java
 Fri Feb  2 07:38:00 2007
@@ -143,8 +143,6 @@
         */
        public void testInvalidAcknowledgementFromBeanNotSentSOAPFault() throws 
Exception {
                
-               org.apache.log4j.BasicConfigurator.configure();
-               
                // Create an RMS on the service.
                StorageManager storageManager = 
                        
SandeshaUtil.getSandeshaStorageManager(serverConfigContext, 
serverConfigContext.getAxisConfiguration());
@@ -276,4 +274,5 @@
                return bean;
        }
 }
+
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to