You are viewing a plain text version of this content. The canonical link for it is here.
Posted to sandesha-dev@ws.apache.org by ga...@apache.org on 2007/02/02 16:38:01 UTC

svn commit: r502628 - in /webservices/sandesha/trunk/java: src/org/apache/sandesha2/ src/org/apache/sandesha2/i18n/ src/org/apache/sandesha2/msgprocessors/ src/org/apache/sandesha2/util/ src/org/apache/sandesha2/wsrm/ test/src/org/apache/sandesha2/faul...

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: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org